openapi: 3.1.0 info: description: Loopback-only HTTP surface served by the Go daemon. Generated from Go (code-first) — do not edit by hand; run `go generate ./...`. title: Agent Orchestrator HTTP daemon version: 0.1.0-route-shell servers: - description: Local daemon (loopback only) url: http://127.0.0.1:3001 paths: /api/v1/agents: get: operationId: listAgents responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListAgentsResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Return cached supported and locally installed agent adapters tags: - agents /api/v1/agents/{agent}/auth: post: operationId: startAgentAuth parameters: - description: Agent adapter identifier. in: path name: agent required: true schema: description: Agent adapter identifier. type: string responses: "201": content: application/json: schema: $ref: '#/components/schemas/StartAgentAuthResponse' description: Created "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Open the fixed native authentication flow for one agent tags: - agents /api/v1/agents/{agent}/install: get: operationId: getAgentInstallStatus parameters: - description: Agent adapter identifier. in: path name: agent required: true schema: description: Agent adapter identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/InstallJob' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Get the current or last install job for one agent harness tags: - agents post: operationId: startAgentInstall parameters: - description: Agent adapter identifier. in: path name: agent required: true schema: description: Agent adapter identifier. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StartAgentInstallRequest' responses: "202": content: application/json: schema: $ref: '#/components/schemas/InstallJob' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Start an asynchronous install for one fixed agent harness tags: - agents /api/v1/agents/{agent}/models: get: operationId: getAgentModels parameters: - description: Agent adapter identifier. in: path name: agent required: true schema: description: Agent adapter identifier. type: string - description: Optional project identifier used as the model-catalog cache scope. in: query name: projectId schema: description: Optional project identifier used as the model-catalog cache scope. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/AgentModelsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Return the cached model picker for one agent, discovering it on first use tags: - agents /api/v1/agents/{agent}/models/refresh: post: operationId: refreshAgentModels parameters: - description: Agent adapter identifier. in: path name: agent required: true schema: description: Agent adapter identifier. type: string - description: Optional project identifier used as the model-catalog cache scope. in: query name: projectId schema: description: Optional project identifier used as the model-catalog cache scope. type: string - description: When true, compare executable and config metadata before running discovery. in: query name: revalidate schema: description: When true, compare executable and config metadata before running discovery. type: boolean responses: "200": content: application/json: schema: $ref: '#/components/schemas/AgentModelsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Refresh and cache the model picker for one agent tags: - agents /api/v1/agents/{agent}/probe: post: operationId: probeAgent parameters: - description: Agent adapter identifier. in: path name: agent required: true schema: description: Agent adapter identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ProbeAgentResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Ensure launch-fresh readiness for one agent adapter tags: - agents /api/v1/agents/{agent}/verify: post: operationId: verifyAgentInstall parameters: - description: Agent adapter identifier. in: path name: agent required: true schema: description: Agent adapter identifier. type: string responses: "202": content: application/json: schema: $ref: '#/components/schemas/InstallJob' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Verify an installed harness without reinstalling or probing authentication tags: - agents /api/v1/agents/auth-plans: get: operationId: listAgentAuthPlans responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListAgentAuthPlansResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Return display-safe native authentication plans for supported agents tags: - agents /api/v1/agents/codex/account-switches: post: operationId: startCodexAccountSwitch requestBody: content: application/json: schema: $ref: '#/components/schemas/StartCodexAccountSwitchRequest' required: true responses: "202": content: application/json: schema: $ref: '#/components/schemas/CodexAccountSwitchResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Start a global AO Codex account switch tags: - agents /api/v1/agents/codex/account-switches/{switchId}: get: operationId: getCodexAccountSwitch parameters: - description: Durable Codex account switch identifier. in: path name: switchId required: true schema: description: Durable Codex account switch identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/CodexAccountSwitchResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Read one durable Codex account switch tags: - agents /api/v1/agents/codex/accounts: get: operationId: getCodexAccounts responses: "200": content: application/json: schema: $ref: '#/components/schemas/CodexAccountsResponse' description: OK "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Return cached AO Codex accounts and active-account state tags: - agents /api/v1/agents/codex/accounts/{accountId}: delete: operationId: deleteCodexAccount parameters: - description: AO Codex account identifier. in: path name: accountId required: true schema: description: AO Codex account identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/CodexAccountsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Delete one inactive signed-out Codex account tags: - agents /api/v1/agents/codex/accounts/{accountId}/login-terminal: post: operationId: openCodexAccountReauthenticationTerminal parameters: - description: AO Codex account identifier. in: path name: accountId required: true schema: description: AO Codex account identifier. type: string responses: "202": content: application/json: schema: $ref: '#/components/schemas/OpenCodexAccountLoginTerminalResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Open native Codex sign-in for one retained account tags: - agents /api/v1/agents/codex/accounts/{accountId}/logout: post: operationId: logoutCodexAccount parameters: - description: AO Codex account identifier. in: path name: accountId required: true schema: description: AO Codex account identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/CodexAccountsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Log out one retained Codex account tags: - agents /api/v1/agents/codex/accounts/{accountId}/reset-credit/consume: post: operationId: consumeCodexAccountResetCredit parameters: - description: AO Codex account identifier. in: path name: accountId required: true schema: description: AO Codex account identifier. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConsumeCodexAccountResetCreditRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/CodexAccountsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Consume one provider-reported Codex usage-limit reset credit tags: - agents /api/v1/agents/codex/accounts/ensure: post: operationId: ensureCodexAccounts requestBody: content: application/json: schema: $ref: '#/components/schemas/EnsureCodexAccountsRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/CodexAccountsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Discover Codex accounts and ensure authentication, capacity, and optional usage tags: - agents /api/v1/agents/codex/accounts/events: get: operationId: streamCodexAccounts responses: "200": content: text/event-stream: schema: $ref: '#/components/schemas/CodexAccountsResponse' description: OK "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Stream cached and live Codex account state tags: - agents /api/v1/agents/codex/accounts/login-operations/{operationId}/cancel: post: operationId: cancelCodexAccountLogin parameters: - description: In-memory Codex account login operation identifier. in: path name: operationId required: true schema: description: In-memory Codex account login operation identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/CodexAccountLoginResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Cancel one native Codex account login operation tags: - agents /api/v1/agents/codex/accounts/login-operations/{operationId}/verify: post: operationId: verifyCodexAccountLogin parameters: - description: In-memory Codex account login operation identifier. in: path name: operationId required: true schema: description: In-memory Codex account login operation identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/CodexAccountLoginResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Verify one native Codex account login operation tags: - agents /api/v1/agents/codex/accounts/login-terminal: post: operationId: openCodexAccountLoginTerminal responses: "202": content: application/json: schema: $ref: '#/components/schemas/OpenCodexAccountLoginTerminalResponse' description: Accepted "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Open an inline native login terminal for a new AO Codex account tags: - agents /api/v1/agents/install-jobs: get: operationId: listAgentInstallJobs responses: "200": content: application/json: schema: $ref: '#/components/schemas/AgentInstallJobsResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Return the latest durable install job for every agent harness tags: - agents /api/v1/agents/installers: get: operationId: listAgentInstallers responses: "200": content: application/json: schema: $ref: '#/components/schemas/AgentInstallerCatalogResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Resolve the safe installation plan for every supported agent harness tags: - agents /api/v1/agents/readiness: get: operationId: getAgentReadiness responses: "200": content: application/json: schema: $ref: '#/components/schemas/AgentReadinessResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Return cached normalized agent readiness without running native checks tags: - agents /api/v1/agents/readiness/ensure: post: operationId: ensureAgentReadiness requestBody: content: application/json: schema: $ref: '#/components/schemas/EnsureAgentReadinessRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AgentReadinessResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Ensure normalized readiness for selected agent adapters tags: - agents /api/v1/agents/refresh: post: operationId: refreshAgents responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListAgentsResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Refresh the cached local agent adapter catalog tags: - agents /api/v1/automations: get: operationId: listAutomations parameters: - in: query name: projectId schema: type: string - in: query name: enabled schema: type: - "null" - boolean - in: query name: limit schema: maximum: 100 minimum: 1 type: integer - in: query name: cursor schema: type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListAutomationsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List recurring automations tags: - automations post: operationId: createAutomation requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateAutomationRequest' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/AutomationEnvelope' description: Created "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Create a recurring automation tags: - automations /api/v1/automations/{automationId}: delete: operationId: deleteAutomation parameters: - description: Automation identifier. in: path name: automationId required: true schema: description: Automation identifier. type: string responses: "204": description: No Content "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Delete an automation and its run history tags: - automations get: operationId: getAutomation parameters: - description: Automation identifier. in: path name: automationId required: true schema: description: Automation identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/AutomationEnvelope' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Get one recurring automation tags: - automations patch: operationId: updateAutomation parameters: - description: Automation identifier. in: path name: automationId required: true schema: description: Automation identifier. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateAutomationRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AutomationEnvelope' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Update a recurring automation tags: - automations /api/v1/automations/{automationId}/runs: get: operationId: listAutomationRuns parameters: - description: Automation identifier. in: path name: automationId required: true schema: description: Automation identifier. type: string - in: query name: limit schema: maximum: 100 minimum: 1 type: integer - in: query name: cursor schema: type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListAutomationRunsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List durable automation run history tags: - automations /api/v1/browser/commands: post: operationId: executeBrowserCommand parameters: - description: Opaque browser capability injected into the owning AO worker. in: header name: X-AO-Browser-Capability schema: description: Opaque browser capability injected into the owning AO worker. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BrowserCommandRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/BrowserCommandResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Execute a target-scoped command in a session's desktop browser tags: - browser /api/v1/browser/status: get: operationId: getBrowserStatus parameters: - description: AO session identifier. in: query name: sessionId schema: description: AO session identifier. type: string - description: Opaque browser capability injected into the owning AO worker. in: header name: X-AO-Browser-Capability schema: description: Opaque browser capability injected into the owning AO worker. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/BrowserStatusResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Check whether the desktop browser runtime is connected for a session tags: - browser /api/v1/cues/{cueId}: delete: operationId: deleteCue parameters: - description: Cue identifier. in: path name: cueId required: true schema: description: Cue identifier. type: string responses: "204": description: No Content "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Delete a cue tags: - cues get: operationId: getCue parameters: - description: Cue identifier. in: path name: cueId required: true schema: description: Cue identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/CueEnvelope' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Get a cue tags: - cues patch: operationId: updateCue parameters: - description: Cue identifier. in: path name: cueId required: true schema: description: Cue identifier. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CueDefinitionRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/CueEnvelope' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "413": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Request Entity Too Large "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Replace a cue's definition tags: - cues /api/v1/cues/{cueId}/invoke: post: operationId: invokeCue parameters: - description: Cue identifier. in: path name: cueId required: true schema: description: Cue identifier. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/InvokeCueRequest' responses: "200": content: application/json: schema: $ref: '#/components/schemas/InvokeCueResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "413": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Request Entity Too Large "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Dispatch an agent cue to a session or send a command cue to a scoped shell terminal tags: - cues /api/v1/desktop/sessions/{sessionId}/workspace: get: operationId: getDesktopSessionWorkspace parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/DesktopWorkspaceLocationResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Resolve a session workspace for the loopback desktop supervisor tags: - sessions /api/v1/dev/import-projects: post: operationId: runDevImportProjects requestBody: content: application/json: schema: $ref: '#/components/schemas/DevImportProjectsRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/DevImportProjectsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Run the developer project-registry import through the daemon store tags: - dev /api/v1/endpoints: get: operationId: getEndpoints responses: "200": content: application/json: schema: $ref: '#/components/schemas/EndpointsResponse' description: OK "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List the ways this daemon can currently be reached tags: - identity /api/v1/events: get: operationId: streamEvents parameters: - description: Replay events after a non-negative sequence, or use latest to start at the current head. Last-Event-ID overrides latest on reconnect. in: query name: after schema: description: Replay events after a non-negative sequence, or use latest to start at the current head. Last-Event-ID overrides latest on reconnect. type: - "null" - string responses: "200": content: text/event-stream: schema: type: string description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Stream CDC events with durable replay tags: - events /api/v1/fs/dirs: get: operationId: listDirs parameters: - description: Absolute directory on the daemon host to list. When omitted, the daemon user's home directory. in: query name: path schema: description: Absolute directory on the daemon host to list. When omitted, the daemon user's home directory. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListDirsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: List the subdirectories of a directory on the daemon host tags: - fs /api/v1/github/pat: delete: operationId: deleteGitHubPAT responses: "200": content: application/json: schema: additionalProperties: type: string type: object description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Remove the stored GitHub personal access token tags: - github put: operationId: putGitHubPAT requestBody: content: application/json: schema: $ref: '#/components/schemas/PutGitHubPATRequest' required: true responses: "200": content: application/json: schema: additionalProperties: type: string type: object description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Store a GitHub personal access token locally tags: - github /api/v1/github/repos: get: operationId: listGitHubRepos responses: "200": content: application/json: schema: additionalProperties: items: $ref: '#/components/schemas/GitHubRepo' type: array type: object description: OK "401": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unauthorized "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: List repositories accessible with the stored GitHub token tags: - github /api/v1/github/status: get: operationId: getGitHubStatus responses: "200": content: application/json: schema: additionalProperties: type: boolean type: object description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Check whether a GitHub personal access token is stored locally tags: - github /api/v1/identity: get: operationId: getIdentity responses: "200": content: application/json: schema: $ref: '#/components/schemas/IdentityResponse' description: OK "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Identify the daemon so a client can confirm which machine answered tags: - identity /api/v1/import: get: operationId: getImportStatus responses: "200": content: application/json: schema: $ref: '#/components/schemas/ImportStatusResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Check whether a legacy AO install is available to import tags: - import post: operationId: runImport responses: "200": content: application/json: schema: $ref: '#/components/schemas/ImportRunResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Run the legacy AO project import through the daemon store tags: - import /api/v1/imports/prepare-git: post: operationId: prepareImportGit requestBody: content: application/json: schema: $ref: '#/components/schemas/GitPreparationInput' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/GitPreparationResult' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Run approved Git preparation actions for project import onboarding tags: - import /api/v1/imports/validate: post: operationId: validateImport requestBody: content: application/json: schema: $ref: '#/components/schemas/ImportValidationInput' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ImportValidationResult' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Validate a selected folder for project import onboarding tags: - import /api/v1/link-preview: get: operationId: getLinkPreview parameters: - description: Absolute http(s) URL of the page to preview. in: query name: url schema: description: Absolute http(s) URL of the page to preview. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/LinkPreviewResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented "502": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Gateway summary: Fetch link-preview metadata (Open Graph) for an external URL tags: - link-preview /api/v1/mobile/devices: get: operationId: listMobileDevices responses: "200": content: application/json: schema: $ref: '#/components/schemas/MobileDevicesResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: List paired mobile devices with their live/muted status tags: - mobile /api/v1/mobile/devices/{installId}: delete: operationId: removeMobileDevice parameters: - description: The device's stable install id. in: path name: installId required: true schema: description: The device's stable install id. type: string responses: "204": description: No Content "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Remove a paired device from the roster tags: - mobile patch: operationId: muteMobileDevice parameters: - description: The device's stable install id. in: path name: installId required: true schema: description: The device's stable install id. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MuteDeviceRequest' required: true responses: "200": content: application/json: schema: additionalProperties: type: boolean type: object description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Mute or unmute push notifications for a paired device tags: - mobile /api/v1/mobile/disable: post: operationId: disableMobile responses: "200": content: application/json: schema: $ref: '#/components/schemas/MobileStatusResponse' description: OK "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Disable the Connect Mobile LAN bridge tags: - mobile /api/v1/mobile/enable: post: operationId: enableMobile responses: "200": content: application/json: schema: $ref: '#/components/schemas/MobileStatusResponse' description: OK "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Enable the Connect Mobile LAN bridge and issue a fresh password tags: - mobile /api/v1/mobile/enable-lan-only: post: operationId: enableMobileLANOnly responses: "200": content: application/json: schema: $ref: '#/components/schemas/MobileStatusResponse' description: OK "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Enable the authenticated LAN bridge without a managed public tunnel tags: - mobile /api/v1/mobile/enable-tunnel-only: post: operationId: enableMobileTunnelOnly responses: "200": content: application/json: schema: $ref: '#/components/schemas/MobileStatusResponse' description: OK "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict summary: Enable the authenticated listener on loopback for a managed tunnel tags: - mobile /api/v1/mobile/keep-awake: post: operationId: setMobileKeepAwake requestBody: content: application/json: schema: $ref: '#/components/schemas/ControllersSetKeepAwakeRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/MobileStatusResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Keep this Mac from idle-sleeping while Connect Mobile is on tags: - mobile /api/v1/mobile/regenerate: post: operationId: regenerateMobile responses: "200": content: application/json: schema: $ref: '#/components/schemas/MobileStatusResponse' description: OK "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Rotate the Connect Mobile password, dropping any connected phone tags: - mobile /api/v1/mobile/remote-access: post: operationId: startMobileRemoteAccess responses: "200": content: application/json: schema: $ref: '#/components/schemas/MobileStatusResponse' description: OK "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Look for a connector again and start it, without rotating the password tags: - mobile /api/v1/mobile/secure-pairing: post: operationId: setMobileSecurePairing requestBody: content: application/json: schema: $ref: '#/components/schemas/ControllersSetSecurePairingRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/MobileStatusResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Turn TLS-over-Tailscale secure pairing on or off tags: - mobile /api/v1/mobile/status: get: operationId: getMobileStatus responses: "200": content: application/json: schema: $ref: '#/components/schemas/MobileStatusResponse' description: OK "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden summary: Check whether Connect Mobile's LAN bridge is enabled tags: - mobile /api/v1/notifications: delete: operationId: clearNotifications responses: "200": content: application/json: schema: $ref: '#/components/schemas/ClearNotificationsResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Clear all notifications tags: - notifications get: operationId: listNotifications parameters: - description: Notification filter. Defaults to unread (unseen); unresolved returns notifications whose underlying issue is still open; all includes read history. in: query name: status schema: description: Notification filter. Defaults to unread (unseen); unresolved returns notifications whose underlying issue is still open; all includes read history. enum: - unread - all - unresolved type: string - description: Maximum notifications to return. Defaults to 100. in: query name: limit schema: description: Maximum notifications to return. Defaults to 100. maximum: 100 minimum: 1 type: integer - description: Opaque cursor returned by the previous page. in: query name: cursor schema: description: Opaque cursor returned by the previous page. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListNotificationsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List notification history tags: - notifications /api/v1/notifications/{id}: delete: operationId: deleteNotification parameters: - description: Notification identifier. in: path name: id required: true schema: description: Notification identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/NotificationEnvelope' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Delete a notification tags: - notifications patch: operationId: markNotificationRead parameters: - description: Notification identifier. in: path name: id required: true schema: description: Notification identifier. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MarkNotificationReadRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/NotificationEnvelope' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Mark a notification read tags: - notifications /api/v1/notifications/read-all: post: operationId: markAllNotificationsRead requestBody: content: application/json: schema: $ref: '#/components/schemas/MarkAllNotificationsReadRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/MarkAllNotificationsReadResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Mark notifications read tags: - notifications /api/v1/notifications/stream: get: operationId: streamNotifications parameters: - description: Optional project id filter for live notifications. in: query name: projectId schema: description: Optional project id filter for live notifications. type: string responses: "200": content: text/event-stream: schema: type: string description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Stream notification changes tags: - notifications /api/v1/orchestrators: get: operationId: listOrchestrators responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListSessionsResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List orchestrator sessions across projects tags: - sessions post: operationId: spawnOrchestrator requestBody: content: application/json: schema: $ref: '#/components/schemas/SpawnOrchestratorRequest' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/SpawnOrchestratorResponse' description: Created "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Spawn an orchestrator session tags: - sessions /api/v1/orchestrators/{id}: get: operationId: getOrchestrator parameters: - description: Orchestrator session identifier, e.g. project-orchestrator. in: path name: id required: true schema: description: Orchestrator session identifier, e.g. project-orchestrator. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/SessionResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Fetch one orchestrator session tags: - sessions /api/v1/orchestrators/delegate: post: operationId: delegateTask requestBody: content: application/json: schema: $ref: '#/components/schemas/DelegateTaskRequest' required: true responses: "202": content: application/json: schema: $ref: '#/components/schemas/DelegateTaskResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Start a worker task and refine its title in the background tags: - sessions /api/v1/projects: get: operationId: listProjects responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListProjectsResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: List all registered projects (active + degraded) tags: - projects post: operationId: addProject requestBody: content: application/json: schema: $ref: '#/components/schemas/AddProjectInput' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/ProjectResponse' description: Created "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Register a new project from a git repository path tags: - projects /api/v1/projects/{id}: delete: operationId: removeProject parameters: - description: Project identifier (registry key). in: path name: id required: true schema: description: Project identifier (registry key). type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/RemoveProjectResult' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Remove a project; stops sessions, cleans workspaces, unregisters tags: - projects get: operationId: getProject parameters: - description: Project identifier (registry key). in: path name: id required: true schema: description: Project identifier (registry key). type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ProjectGetResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Fetch one project; discriminates ok vs degraded tags: - projects put: operationId: updateProjectSettings parameters: - description: Project identifier (registry key). in: path name: id required: true schema: description: Project identifier (registry key). type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateProjectSettingsInput' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ProjectResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Atomically replace a project's display name and config tags: - projects /api/v1/projects/{id}/config: put: operationId: setProjectConfig parameters: - description: Project identifier (registry key). in: path name: id required: true schema: description: Project identifier (registry key). type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetProjectConfigInput' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ProjectResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Replace a project's per-project config tags: - projects /api/v1/projects/{id}/permissions: patch: operationId: setProjectPermissions parameters: - description: Project identifier (registry key). in: path name: id required: true schema: description: Project identifier (registry key). type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetProjectPermissionsInput' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ProjectResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Remember project permissions for future sessions tags: - projects /api/v1/projects/{id}/tasks/prepare: post: operationId: prepareTask parameters: - description: Project identifier (registry key). in: path name: id required: true schema: description: Project identifier (registry key). type: string responses: "202": content: application/json: schema: $ref: '#/components/schemas/PrepareTaskResponse' description: Accepted "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Speculatively create the next task's worktree tags: - projects /api/v1/projects/{projectId}/cues: get: operationId: listProjectCues parameters: - description: Project whose cues are listed or extended. in: path name: projectId required: true schema: description: Project whose cues are listed or extended. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListCuesResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List a project's cues in name order tags: - cues post: operationId: createCue parameters: - description: Project whose cues are listed or extended. in: path name: projectId required: true schema: description: Project whose cues are listed or extended. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CueDefinitionRequest' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/CueEnvelope' description: Created "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "413": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Request Entity Too Large "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Create a cue for a project tags: - cues /api/v1/projects/clone: post: operationId: cloneProject requestBody: content: application/json: schema: $ref: '#/components/schemas/CloneProjectInput' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/ProjectResponse' description: Created "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Clone and register a project from a git repository URL tags: - projects /api/v1/projects/clone/cleanup: post: operationId: cleanupPreparedClone requestBody: content: application/json: schema: $ref: '#/components/schemas/ProjectClonePreparationCleanupInput' required: true responses: "204": description: No Content "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Remove an abandoned clone created for project preparation tags: - projects /api/v1/projects/clone/prepare: post: operationId: prepareCloneProject requestBody: content: application/json: schema: $ref: '#/components/schemas/CloneProjectInput' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ClonePreparationResult' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Clone a project without registering it so Git setup can be completed tags: - projects /api/v1/projects/initialize: post: operationId: initializeProjectRepository requestBody: content: application/json: schema: $ref: '#/components/schemas/InitializeRepositoryInput' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/InitializeRepositoryResult' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Initialize a selected folder as a Git repository with an initial commit tags: - projects /api/v1/prs/{id}/merge: post: operationId: mergePR parameters: - description: PR number. in: path name: id required: true schema: description: PR number. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MergePRRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/MergePRResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Squash-merge a pull request tags: - prs /api/v1/prs/{id}/resolve-comments: post: operationId: resolveComments parameters: - description: PR number. in: path name: id required: true schema: description: PR number. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ResolveCommentsResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Resolve review threads on a pull request tags: - prs /api/v1/push/devices: post: operationId: registerPushDevice requestBody: content: application/json: schema: $ref: '#/components/schemas/RegisterPushDeviceRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/PushDeviceEnvelope' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Register (upsert) a phone's Expo push token tags: - push /api/v1/push/devices/{token}: delete: operationId: unregisterPushDevice parameters: - description: Expo push token (URL-encoded) identifying the device. in: path name: token required: true schema: description: Expo push token (URL-encoded) identifying the device. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/UnregisterPushDeviceResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Unregister a phone's Expo push token, leaving it paired tags: - push /api/v1/push/pairings/{id}: delete: operationId: unpairPushDevice parameters: - description: The phone's install id, or its push token for older builds. in: path name: id required: true schema: description: The phone's install id, or its push token for older builds. type: string responses: "204": description: No Content "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Unpair this phone from the daemon, removing it from the roster tags: - push /api/v1/reports: get: operationId: listReports parameters: - description: Stable project identifier. in: query name: projectId required: true schema: description: Stable project identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListReportsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List persisted project reports without changing delivery state tags: - reports post: operationId: createReport requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateReportRequest' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/CreateReportResponse' description: Created "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Persist a worker report for later orchestrator delivery tags: - reports /api/v1/reviews/{reviewId}/conversation: get: operationId: getReviewerConversation parameters: - description: Reviewer conversation identifier. in: path name: reviewId required: true schema: description: Reviewer conversation identifier. type: string - description: Read items older than this conversation sequence. Omit for the newest page. in: query name: beforeSequence schema: description: Read items older than this conversation sequence. Omit for the newest page. minimum: 1 type: - "null" - integer - description: Maximum combined messages and activities to return. Defaults to 200. in: query name: limit schema: description: Maximum combined messages and activities to return. Defaults to 200. maximum: 500 minimum: 1 type: - "null" - integer responses: "200": content: application/json: schema: $ref: '#/components/schemas/ConversationSnapshotResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Read a reviewer's durable Chat conversation tags: - conversations /api/v1/reviews/{reviewId}/conversation/approvals/{requestId}/resolve: post: operationId: resolveReviewerConversationApproval parameters: - description: Reviewer conversation identifier. in: path name: reviewId required: true schema: description: Reviewer conversation identifier. type: string - description: Provider approval request identifier. Zero is a legitimate value. in: path name: requestId required: true schema: description: Provider approval request identifier. Zero is a legitimate value. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ResolveConversationApprovalRequest' required: true responses: "204": description: No Content "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Answer a pending approval in a reviewer conversation tags: - conversations /api/v1/reviews/{reviewId}/conversation/inputs/{requestId}/resolve: post: operationId: resolveReviewerConversationInput parameters: - description: Reviewer conversation identifier. in: path name: reviewId required: true schema: description: Reviewer conversation identifier. type: string - description: Provider approval request identifier. Zero is a legitimate value. in: path name: requestId required: true schema: description: Provider approval request identifier. Zero is a legitimate value. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ResolveConversationInputRequest' required: true responses: "204": description: No Content "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Answer a structured reviewer input request tags: - conversations /api/v1/reviews/{reviewId}/conversation/interrupt: post: operationId: interruptReviewerConversationTurn parameters: - description: Reviewer conversation identifier. in: path name: reviewId required: true schema: description: Reviewer conversation identifier. type: string responses: "204": description: No Content "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Cancel the in-flight reviewer turn tags: - conversations /api/v1/reviews/{reviewId}/conversation/messages: post: operationId: sendReviewerConversationMessage parameters: - description: Reviewer conversation identifier. in: path name: reviewId required: true schema: description: Reviewer conversation identifier. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SendConversationMessageRequest' required: true responses: "202": content: application/json: schema: $ref: '#/components/schemas/SendConversationMessageResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Send a message to a Chat reviewer tags: - conversations /api/v1/reviews/{reviewId}/conversation/models: get: operationId: listReviewerConversationModels parameters: - description: Reviewer conversation identifier. in: path name: reviewId required: true schema: description: Reviewer conversation identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ConversationModelsResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List the models offered for a Chat reviewer tags: - conversations /api/v1/reviews/{reviewId}/conversation/settings: patch: operationId: setReviewerConversationSettings parameters: - description: Reviewer conversation identifier. in: path name: reviewId required: true schema: description: Reviewer conversation identifier. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConversationTurnSettingsPayload' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ConversationTurnSettingsPayload' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Select model and effort for the reviewer's next Chat turn tags: - conversations /api/v1/reviews/{reviewSessionID}/activity: post: operationId: setReviewActivity parameters: - description: Reviewer session identifier, currently the per-harness review row id. in: path name: reviewSessionID required: true schema: description: Reviewer session identifier, currently the per-harness review row id. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetReviewActivityRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/SetReviewActivityResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Report a reviewer-owned hook signal tags: - reviews /api/v1/sessions: get: operationId: listSessions parameters: - description: Project id filter. in: query name: project schema: description: Project id filter. type: string - description: When true, return non-terminated sessions; when false, return terminated sessions. in: query name: active schema: description: When true, return non-terminated sessions; when false, return terminated sessions. type: - "null" - boolean - description: When true, return only orchestrator sessions. in: query name: orchestratorOnly schema: description: When true, return only orchestrator sessions. type: - "null" - boolean - description: When true, return only fresh non-terminated sessions. in: query name: fresh schema: description: When true, return only fresh non-terminated sessions. type: - "null" - boolean responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListSessionsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: List sessions tags: - sessions post: operationId: spawnSession requestBody: content: application/json: schema: $ref: '#/components/schemas/SpawnSessionRequest' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/SpawnSessionResponse' description: Created "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Spawn a new agent session tags: - sessions /api/v1/sessions/{sessionId}: get: operationId: getSession parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/SessionResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Fetch one session tags: - sessions patch: operationId: renameSession parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/RenameSessionRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/RenameSessionResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Rename a session display name tags: - sessions /api/v1/sessions/{sessionId}/activity: post: operationId: setSessionActivity parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetActivityRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/SetActivityResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Report an agent activity-state signal for a session tags: - sessions /api/v1/sessions/{sessionId}/agent-switches: get: operationId: listSessionAgentSwitches parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListAgentSwitchesResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List a session's durable agent-switch history tags: - sessions /api/v1/sessions/{sessionId}/agent-switches/{switchId}/handoff: post: operationId: submitSessionAgentHandoff parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Durable agent-switch identifier. in: path name: switchId required: true schema: description: Durable agent-switch identifier. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SubmitAgentHandoffRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/AgentSwitchResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Submit a generation-fenced source-agent handoff tags: - sessions /api/v1/sessions/{sessionId}/agent-switches/{switchId}/recover: post: operationId: recoverSessionAgentSwitch parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Durable agent-switch identifier. in: path name: switchId required: true schema: description: Durable agent-switch identifier. type: string responses: "202": content: application/json: schema: $ref: '#/components/schemas/AgentSwitchResponse' description: Accepted "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Retry safe source restoration for an agent switch tags: - sessions /api/v1/sessions/{sessionId}/attachments: post: operationId: stageSessionAttachments parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StageSessionAttachmentsRequest' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/StageSessionAttachmentsResponse' description: Created "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Write images into a running session's worktree and return their paths tags: - sessions /api/v1/sessions/{sessionId}/auto-inject-ci: patch: operationId: setSessionAutoInjectCI parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetSessionAutoInjectCIRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/SetSessionAutoInjectCIResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Set automatic CI-failure injection for a session and its PRs tags: - sessions /api/v1/sessions/{sessionId}/auto-inject-review: patch: operationId: setSessionAutoInjectReview parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetSessionAutoInjectReviewRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/SetSessionAutoInjectReviewResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Set the auto-inject review setting for a session tags: - sessions /api/v1/sessions/{sessionId}/auto-review: put: operationId: setSessionAutoReview parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ControllersSetSessionAutoReviewRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/SessionResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Enable or disable automatic review for a session tags: - sessions /api/v1/sessions/{sessionId}/conversation: get: operationId: getSessionConversation parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Read items older than this conversation sequence. Omit for the newest page. in: query name: beforeSequence schema: description: Read items older than this conversation sequence. Omit for the newest page. minimum: 1 type: - "null" - integer - description: Maximum combined messages and activities to return. Defaults to 200. in: query name: limit schema: description: Maximum combined messages and activities to return. Defaults to 200. maximum: 500 minimum: 1 type: - "null" - integer responses: "200": content: application/json: schema: $ref: '#/components/schemas/ConversationSnapshotResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Read a chat session's durable conversation tags: - conversations /api/v1/sessions/{sessionId}/conversation/approvals/{requestId}/resolve: post: operationId: resolveSessionConversationApproval parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Provider approval request identifier. Zero is a legitimate value. in: path name: requestId required: true schema: description: Provider approval request identifier. Zero is a legitimate value. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ResolveConversationApprovalRequest' required: true responses: "204": description: No Content "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Answer a pending approval in a chat session tags: - conversations /api/v1/sessions/{sessionId}/conversation/branches/{branchId}/activate: post: operationId: activateSessionConversationBranch parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Conversation branch identifier, from a snapshot branch navigation point. in: path name: branchId required: true schema: description: Conversation branch identifier, from a snapshot branch navigation point. type: string responses: "202": content: application/json: schema: $ref: '#/components/schemas/ActivateConversationBranchResponse' description: Accepted "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Resume a durable conversation branch without sending tags: - conversations /api/v1/sessions/{sessionId}/conversation/compact: post: operationId: compactSessionConversation parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "202": content: application/json: schema: $ref: '#/components/schemas/CompactConversationResponse' description: Accepted "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Summarize earlier history to reclaim context in a chat session tags: - conversations /api/v1/sessions/{sessionId}/conversation/config-options: get: operationId: listSessionConversationConfigOptions parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ConversationConfigOptionsResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List the live session controls the provider advertises tags: - conversations /api/v1/sessions/{sessionId}/conversation/config-options/{configId}: patch: operationId: setSessionConversationConfigOption parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Provider session configuration option identifier. in: path name: configId required: true schema: description: Provider session configuration option identifier. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetConversationConfigOptionRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ConversationConfigOptionsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Choose one provider-advertised session configuration value tags: - conversations /api/v1/sessions/{sessionId}/conversation/inputs/{requestId}/resolve: post: operationId: resolveSessionConversationInput parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Provider approval request identifier. Zero is a legitimate value. in: path name: requestId required: true schema: description: Provider approval request identifier. Zero is a legitimate value. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ResolveConversationInputRequest' required: true responses: "204": description: No Content "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Answer a structured input request in a chat session tags: - conversations /api/v1/sessions/{sessionId}/conversation/interrupt: post: operationId: interruptSessionConversationTurn parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "204": description: No Content "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Cancel the in-flight turn in a chat session tags: - conversations /api/v1/sessions/{sessionId}/conversation/mcp/reload: post: operationId: reloadSessionConversationMcpServers parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ReloadConversationMCPServersResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Restart the tool servers a chat session can reach tags: - conversations /api/v1/sessions/{sessionId}/conversation/messages: post: operationId: sendSessionConversationMessage parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SendConversationMessageRequest' required: true responses: "202": content: application/json: schema: $ref: '#/components/schemas/SendConversationMessageResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Send a message to a chat session's agent tags: - conversations /api/v1/sessions/{sessionId}/conversation/models: get: operationId: listSessionConversationModels parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ConversationModelsResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List the models the provider offers for a chat session tags: - conversations /api/v1/sessions/{sessionId}/conversation/queue/reorder: post: operationId: reorderQueuedSessionConversationTurns parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ReorderQueuedConversationTurnsRequest' required: true responses: "204": description: No Content "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Rewrite the durable queue order for undispatched turns tags: - conversations /api/v1/sessions/{sessionId}/conversation/settings: patch: operationId: setSessionConversationTurnSettings parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConversationTurnSettingsPayload' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ConversationTurnSettingsPayload' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Choose the model, reasoning effort and approval mode for the next turn tags: - conversations /api/v1/sessions/{sessionId}/conversation/skills: get: operationId: listSessionConversationSkills parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ConversationSkillsResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List the named skills the provider offers for a chat session tags: - conversations /api/v1/sessions/{sessionId}/conversation/steer: post: operationId: steerSessionConversationTurn parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SteerConversationRequest' required: true responses: "202": content: application/json: schema: $ref: '#/components/schemas/SteerConversationResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Send guidance into the in-flight turn of a chat session tags: - conversations /api/v1/sessions/{sessionId}/conversation/steer-or-send: post: operationId: steerOrSendSessionConversationTurn parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SteerConversationRequest' required: true responses: "202": content: application/json: schema: $ref: '#/components/schemas/SteerOrSendConversationResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Steer the active turn or send a new turn when idle tags: - conversations /api/v1/sessions/{sessionId}/conversation/title: put: operationId: setSessionConversationTitle parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetConversationTitleRequest' required: true responses: "202": content: application/json: schema: $ref: '#/components/schemas/SetConversationTitleResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Name the provider's conversation thread tags: - conversations /api/v1/sessions/{sessionId}/conversation/turns/{turnId}/cancel: post: operationId: cancelQueuedSessionConversationTurn parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: AO conversation turn identifier, from the snapshot's turns array. in: path name: turnId required: true schema: description: AO conversation turn identifier, from the snapshot's turns array. type: string responses: "204": description: No Content "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Remove one queued message without stopping the running turn tags: - conversations /api/v1/sessions/{sessionId}/conversation/turns/{turnId}/edit: post: operationId: editSessionConversationMessage parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: AO conversation turn identifier, from the snapshot's turns array. in: path name: turnId required: true schema: description: AO conversation turn identifier, from the snapshot's turns array. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/EditConversationMessageRequest' required: true responses: "202": content: application/json: schema: $ref: '#/components/schemas/EditConversationMessageResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Branch before and replace an earlier human prompt tags: - conversations /api/v1/sessions/{sessionId}/conversation/turns/{turnId}/queue/edit: post: operationId: editQueuedSessionConversationTurn parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: AO conversation turn identifier, from the snapshot's turns array. in: path name: turnId required: true schema: description: AO conversation turn identifier, from the snapshot's turns array. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/EditQueuedConversationMessageRequest' required: true responses: "204": description: No Content "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Rewrite one queued message before it dispatches tags: - conversations /api/v1/sessions/{sessionId}/conversation/turns/{turnId}/retry: post: operationId: retrySessionConversationTurn parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: AO conversation turn identifier, from the snapshot's turns array. in: path name: turnId required: true schema: description: AO conversation turn identifier, from the snapshot's turns array. type: string responses: "202": content: application/json: schema: $ref: '#/components/schemas/RetryTurnResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Re-dispatch a failed turn's durable prompt as a new turn tags: - conversations /api/v1/sessions/{sessionId}/conversation/turns/{turnId}/rollback: post: operationId: rollbackSessionConversation parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: AO conversation turn identifier, from the snapshot's turns array. in: path name: turnId required: true schema: description: AO conversation turn identifier, from the snapshot's turns array. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/RollbackConversationResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Discard a turn and everything after it from the agent's memory tags: - conversations /api/v1/sessions/{sessionId}/conversation/turns/{turnId}/steer: post: operationId: promoteQueuedSessionConversationTurn parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: AO conversation turn identifier, from the snapshot's turns array. in: path name: turnId required: true schema: description: AO conversation turn identifier, from the snapshot's turns array. type: string responses: "202": content: application/json: schema: $ref: '#/components/schemas/PromoteQueuedTurnResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Promote a queued message into the in-flight turn tags: - conversations /api/v1/sessions/{sessionId}/exit-agent: post: operationId: exitAgent parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ExitAgentResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Exit the agent while preserving its AO session tags: - sessions /api/v1/sessions/{sessionId}/interface-transition: delete: operationId: cancelSessionInterfaceTransition parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "202": content: application/json: schema: $ref: '#/components/schemas/CancelSessionInterfaceTransitionResponse' description: Accepted "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Cancel an interface handoff before its source controller stops tags: - sessions get: operationId: getSessionInterfaceTransition parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/SessionInterfaceTransitionStatusResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Inspect TUI and Chat interface handoff support and progress tags: - sessions post: operationId: startSessionInterfaceTransition parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StartSessionInterfaceTransitionRequest' required: true responses: "202": content: application/json: schema: $ref: '#/components/schemas/StartSessionInterfaceTransitionResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Switch a live session between its TUI and Chat controllers tags: - sessions /api/v1/sessions/{sessionId}/interface-transition/{transitionId}/notice-acknowledgement: put: operationId: acknowledgeSessionInterfaceTransitionNotice parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Durable interface-transition identifier. in: path name: transitionId required: true schema: description: Durable interface-transition identifier. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/AcknowledgeSessionInterfaceTransitionNoticeResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Acknowledge a failed or recovered interface handoff notice tags: - sessions /api/v1/sessions/{sessionId}/kill: post: operationId: killSession parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/KillSessionResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Mark a session terminated and tear down runtime/workspace resources tags: - sessions /api/v1/sessions/{sessionId}/merge-policy: patch: operationId: setSessionMergePolicy parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetSessionMergePolicyRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/SetSessionMergePolicyResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Configure whether PR completion terminates the session tags: - sessions /api/v1/sessions/{sessionId}/pin: delete: operationId: unpinSession parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/SessionResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Unpin a session tags: - sessions post: operationId: pinSession parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/SessionResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Pin a session tags: - sessions /api/v1/sessions/{sessionId}/pr: get: operationId: listSessionPRs parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListSessionPRsResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List pull requests owned by a session tags: - sessions /api/v1/sessions/{sessionId}/pr/{prNumber}/file: get: operationId: getSessionPRFile parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Associated pull request number. in: path name: prNumber required: true schema: description: Associated pull request number. minimum: 1 type: integer - description: Repository-relative file path. in: query name: path required: true schema: description: Repository-relative file path. type: string - description: Previous repository-relative path supplied by the selected PR file summary for rename detection. in: query name: previousPath schema: description: Previous repository-relative path supplied by the selected PR file summary for rename detection. type: string - description: Stable URL of the selected associated pull request. in: query name: sourceUrl schema: description: Stable URL of the selected associated pull request. type: string - description: Exact SHA of one of the pull request's commits; reads that commit's change instead of the whole pull request. in: query name: commitSha schema: description: Exact SHA of one of the pull request's commits; reads that commit's change instead of the whole pull request. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/WorkspaceFileResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Read one file from an associated pull request base-to-head diff tags: - sessions /api/v1/sessions/{sessionId}/pr/{prNumber}/file/revision: get: operationId: getSessionPRFileRevision parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Associated pull request number. in: path name: prNumber required: true schema: description: Associated pull request number. minimum: 1 type: integer - description: Repository-relative file path. in: query name: path required: true schema: description: Repository-relative file path. type: string - description: Comparison side. Defaults to after. in: query name: side schema: description: Comparison side. Defaults to after. enum: - before - after type: string - description: Stable URL of the selected associated pull request. in: query name: sourceUrl schema: description: Stable URL of the selected associated pull request. type: string - description: Exact SHA of one of the pull request's commits; before is its first parent, after is the commit. in: query name: commitSha schema: description: Exact SHA of one of the pull request's commits; before is its first parent, after is the commit. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/WorkspaceFileRevisionResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Read one text-capable side of a pull request comparison tags: - sessions /api/v1/sessions/{sessionId}/pr/{prNumber}/files: get: operationId: listSessionPRFiles parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Associated pull request number. in: path name: prNumber required: true schema: description: Associated pull request number. minimum: 1 type: integer - description: Stable URL of the selected associated pull request. in: query name: sourceUrl schema: description: Stable URL of the selected associated pull request. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListPRFilesResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: List the exact base-to-head changed files for an associated pull request tags: - sessions /api/v1/sessions/{sessionId}/pr/claim: post: operationId: claimSessionPR parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ClaimPRRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ClaimPRResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented "503": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Service Unavailable summary: Claim an existing pull request for a session tags: - sessions /api/v1/sessions/{sessionId}/preview: delete: operationId: clearSessionPreview parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/SessionResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Clear the browser preview URL for a session tags: - sessions get: operationId: getSessionPreview parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/SessionPreviewResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Discover a browser preview URL for a session workspace tags: - sessions post: operationId: setSessionPreview parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetSessionPreviewRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/SessionResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Set (or autodetect) the browser preview URL for a session tags: - sessions /api/v1/sessions/{sessionId}/preview/app/*: delete: operationId: deleteSessionPreviewApp parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: type: string description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict summary: Send a request to the running session-owned application preview tags: - sessions get: operationId: getSessionPreviewApp parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: text/html: schema: type: string description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict summary: Proxy the running session-owned application preview tags: - sessions head: operationId: headSessionPreviewApp parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": description: OK "404": description: Not Found "409": description: Conflict summary: Read headers from the running session-owned application preview tags: - sessions patch: operationId: patchSessionPreviewApp parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: type: string description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict summary: Send a request to the running session-owned application preview tags: - sessions post: operationId: postSessionPreviewApp parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: type: string description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict summary: Send a request to the running session-owned application preview tags: - sessions put: operationId: putSessionPreviewApp parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: type: string description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict summary: Send a request to the running session-owned application preview tags: - sessions /api/v1/sessions/{sessionId}/preview/files/*: get: operationId: getSessionPreviewFile parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: text/html: schema: type: string description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Serve a static browser preview file from a session workspace tags: - sessions /api/v1/sessions/{sessionId}/preview/server: delete: operationId: stopSessionPreviewServer parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Opaque browser capability injected into the owning AO worker. in: header name: X-AO-Browser-Capability schema: description: Opaque browser capability injected into the owning AO worker. type: string - description: Opaque preview-only capability injected into a session-scoped user shell. in: header name: X-AO-Preview-Capability schema: description: Opaque preview-only capability injected into a session-scoped user shell. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/PreviewServerStatusResponse' description: OK "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Stop the managed preview server for a session tags: - sessions get: operationId: getSessionPreviewServer parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Opaque browser capability injected into the owning AO worker. in: header name: X-AO-Browser-Capability schema: description: Opaque browser capability injected into the owning AO worker. type: string - description: Opaque preview-only capability injected into a session-scoped user shell. in: header name: X-AO-Preview-Capability schema: description: Opaque preview-only capability injected into a session-scoped user shell. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/PreviewServerStatusResponse' description: OK "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Get the managed preview server status for a session tags: - sessions post: operationId: startSessionPreviewServer parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Opaque browser capability injected into the owning AO worker. in: header name: X-AO-Browser-Capability schema: description: Opaque browser capability injected into the owning AO worker. type: string - description: Opaque preview-only capability injected into a session-scoped user shell. in: header name: X-AO-Preview-Capability schema: description: Opaque preview-only capability injected into a session-scoped user shell. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/StartPreviewServerRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/PreviewServerStatusResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "403": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Forbidden "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "408": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Request Timeout "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented "504": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Gateway Timeout summary: Start a session-owned server from .ao/launch.json and open its application preview tags: - sessions /api/v1/sessions/{sessionId}/restore: post: operationId: restoreSession parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/RestoreSessionResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Restore a terminated session tags: - sessions /api/v1/sessions/{sessionId}/resume-agent: post: operationId: resumeAgent parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ResumeAgentResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Resume an exited agent in its existing session tags: - sessions /api/v1/sessions/{sessionId}/reviewer: put: operationId: setSessionReviewer parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetSessionReviewerRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/SessionResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Set the reviewer harness for a session tags: - sessions /api/v1/sessions/{sessionId}/reviews: get: operationId: listReviews parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListReviewsResponse' description: OK "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List a worker's code-review runs tags: - reviews /api/v1/sessions/{sessionId}/reviews/cancel: post: operationId: cancelReview parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/CancelReviewResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Cancel a running code review tags: - reviews /api/v1/sessions/{sessionId}/reviews/comments/resolve: post: operationId: resolveReviewComment parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ControllersResolveReviewCommentRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ControllersResolveReviewCommentResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Resolve an external review comment thread tags: - reviews /api/v1/sessions/{sessionId}/reviews/kill: post: operationId: killReviewSession parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/KillReviewResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Archive a worker's reviewer and hide its surface while retaining history tags: - reviews /api/v1/sessions/{sessionId}/reviews/rerequest: post: operationId: requestRereview parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ControllersRequestRereviewRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ControllersRequestRereviewResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Ask an external reviewer to re-review a worker's PR tags: - reviews /api/v1/sessions/{sessionId}/reviews/restore: post: operationId: restoreReviewSession parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/RestoreReviewResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Restore a worker's reviewer terminal session tags: - reviews /api/v1/sessions/{sessionId}/reviews/submit: post: operationId: submitReview parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SubmitReviewInput' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ReviewRunResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Record a reviewer's result for a worker's PR tags: - reviews /api/v1/sessions/{sessionId}/reviews/switch: post: operationId: switchReviewSession parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetSessionReviewerRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListReviewsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Switch a worker's reviewer harness tags: - reviews /api/v1/sessions/{sessionId}/reviews/trigger: post: operationId: triggerReview parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/TriggerReviewRequest' responses: "200": content: application/json: schema: $ref: '#/components/schemas/TriggerReviewResponse' description: OK "201": content: application/json: schema: $ref: '#/components/schemas/TriggerReviewResponse' description: Created "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "422": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Unprocessable Entity "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Trigger a code review of a worker's PR tags: - reviews /api/v1/sessions/{sessionId}/rollback: post: operationId: rollbackSession parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/RollbackSessionResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Undo a partially-completed spawn (delete seed row, or kill if spawn output exists) tags: - sessions /api/v1/sessions/{sessionId}/send: post: operationId: sendSessionMessage parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SendSessionMessageRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/SendSessionMessageResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error summary: Send a message to a running session's agent tags: - sessions /api/v1/sessions/{sessionId}/switch-agent: post: operationId: switchSessionAgent parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SwitchAgentRequest' required: true responses: "202": content: application/json: schema: $ref: '#/components/schemas/AgentSwitchResponse' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Switch a logical AO session to another agent harness tags: - sessions /api/v1/sessions/{sessionId}/workspace/diffs: post: operationId: getSessionWorkspaceDiffs parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/WorkspaceDiffRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/WorkspaceDiffsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Read grouped unified patches for a bounded set of workspace files tags: - sessions /api/v1/sessions/{sessionId}/workspace/events: get: operationId: streamSessionWorkspaceChanges parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: text/event-stream: schema: type: string description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Stream session workspace file changes tags: - sessions /api/v1/sessions/{sessionId}/workspace/file: get: operationId: getSessionWorkspaceFile parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Session-worktree-relative file path. in: query name: path schema: description: Session-worktree-relative file path. type: string - description: Git-state section the file was opened from (see WorkspaceFileSections). staged diffs the index against HEAD; unstaged diffs the worktree against the index; omitted/committed/untracked diff the worktree against the compare base. in: query name: section schema: description: Git-state section the file was opened from (see WorkspaceFileSections). staged diffs the index against HEAD; unstaged diffs the worktree against the index; omitted/committed/untracked diff the worktree against the compare base. enum: - committed - staged - unstaged - untracked type: string - description: Exact commit SHA to read as an immutable committed-scope snapshot. in: query name: commitSha schema: description: Exact commit SHA to read as an immutable committed-scope snapshot. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/WorkspaceFileResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Read one session workspace file and its git diff tags: - sessions put: operationId: updateSessionWorkspaceFile parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateWorkspaceFileRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/WorkspaceFileResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Replace one existing text file in a session workspace tags: - sessions /api/v1/sessions/{sessionId}/workspace/file/blob: get: operationId: getSessionWorkspaceFileBlob parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Session-worktree-relative file path. in: query name: path required: true schema: description: Session-worktree-relative file path. type: string - description: 'Which revision to read: the compare base (before) or the session worktree (after). Defaults to after.' in: query name: side schema: description: 'Which revision to read: the compare base (before) or the session worktree (after). Defaults to after.' enum: - before - after type: string - description: Cache-busting token. Ignored by the server; the response is never cached. in: query name: v schema: description: Cache-busting token. Ignored by the server; the response is never cached. type: string responses: "200": content: application/octet-stream: schema: type: string description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Read one side of a session workspace image file tags: - sessions /api/v1/sessions/{sessionId}/workspace/file/revision: get: operationId: getSessionWorkspaceFileRevision parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Session-worktree-relative file path. in: query name: path required: true schema: description: Session-worktree-relative file path. type: string - description: Comparison scope. Defaults to combined. in: query name: scope schema: description: Comparison scope. Defaults to combined. enum: - combined - committed - staged - unstaged - untracked type: string - description: Comparison side. Defaults to after. in: query name: side schema: description: Comparison side. Defaults to after. enum: - before - after type: string - description: Opaque workspace snapshot token used for consistency checks. in: query name: workspaceVersion schema: description: Opaque workspace snapshot token used for consistency checks. type: string - description: Opaque revision token used for optimistic consistency checks. in: query name: expectedRevision schema: description: Opaque revision token used for optimistic consistency checks. type: string - description: Exact commit SHA for a committed-scope comparison. in: query name: commitSha schema: description: Exact commit SHA for a committed-scope comparison. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/WorkspaceFileRevisionResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "409": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Conflict "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Read one text-capable side of a workspace comparison tags: - sessions /api/v1/sessions/{sessionId}/workspace/files: get: operationId: listSessionWorkspaceFiles parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListWorkspaceFilesResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List files in a session workspace with git change status tags: - sessions /api/v1/sessions/{sessionId}/workspace/history: get: operationId: getSessionWorkspaceHistory parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/WorkspaceHistoryResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Get lazy commit and upstream metadata for a workspace review tags: - sessions /api/v1/sessions/{sessionId}/workspace/manifest: get: operationId: getSessionWorkspaceManifest parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/WorkspaceManifestResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Get the compact changed-file manifest for the initial workspace review paint tags: - sessions /api/v1/sessions/{sessionId}/workspace/search: get: operationId: searchSessionWorkspaceFiles parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Case-insensitive path substring. in: query name: query required: true schema: description: Case-insensitive path substring. type: string - description: Opaque pagination cursor returned by the previous page. in: query name: cursor schema: description: Opaque pagination cursor returned by the previous page. type: string - description: Maximum results. Defaults to 50. in: query name: limit schema: description: Maximum results. Defaults to 50. maximum: 100 minimum: 1 type: integer responses: "200": content: application/json: schema: $ref: '#/components/schemas/WorkspaceFileSearchResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Search visible workspace file paths tags: - sessions /api/v1/sessions/{sessionId}/workspace/tree: get: operationId: listSessionWorkspaceTree parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string - description: Directory path relative to the session workspace root. Empty or omitted lists the root. in: query name: path schema: description: Directory path relative to the session workspace root. Empty or omitted lists the root. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListWorkspaceTreeResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List one directory level of a session workspace's full file tree, git-status decorated tags: - sessions /api/v1/sessions/cleanup: post: operationId: cleanupSessions parameters: - description: Project id filter. When omitted, clean terminated sessions across all projects. in: query name: project schema: description: Project id filter. When omitted, clean terminated sessions across all projects. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/CleanupSessionsResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Clean up terminated session workspaces tags: - sessions /api/v1/settings: get: operationId: getSettings responses: "200": content: application/json: schema: $ref: '#/components/schemas/SettingsResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Read the daemon-owned user preferences tags: - settings /api/v1/settings/cloud-offering: patch: operationId: updateCloudOffering requestBody: content: application/json: schema: $ref: '#/components/schemas/ControllersUpdateCloudOfferingRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/SettingsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Turn the cloud offering on or off for this machine tags: - settings /api/v1/settings/session-interface: patch: operationId: updateSessionInterface requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateSessionInterfaceRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/SettingsResponse' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Choose the default interface for new sessions tags: - settings /api/v1/shell-terminals: get: operationId: listShellTerminals responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListShellTerminalsResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List the standalone shell terminals owned by the current app run tags: - shellTerminals post: operationId: openShellTerminal requestBody: content: application/json: schema: $ref: '#/components/schemas/OpenShellTerminalRequest' required: true responses: "201": content: application/json: schema: $ref: '#/components/schemas/ShellTerminalEnvelope' description: Created "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Open a standalone shell terminal tags: - shellTerminals /api/v1/shell-terminals/{handleId}: delete: operationId: closeShellTerminal parameters: - description: Shell terminal runtime handle identifier. in: path name: handleId required: true schema: description: Shell terminal runtime handle identifier. type: string responses: "204": description: No Content "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Close a standalone shell terminal and destroy its PTY tags: - shellTerminals patch: operationId: renameShellTerminal parameters: - description: Shell terminal runtime handle identifier. in: path name: handleId required: true schema: description: Shell terminal runtime handle identifier. type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateShellTerminalRequest' required: true responses: "200": content: application/json: schema: $ref: '#/components/schemas/ShellTerminalEnvelope' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Rename a standalone shell terminal tab tags: - shellTerminals /api/v1/system/github-auth: get: operationId: getGitHubAuthRequirement responses: "200": content: application/json: schema: $ref: '#/components/schemas/SystemRequirement' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Check advisory GitHub CLI authentication without blocking startup tags: - system /api/v1/system/github-auth/terminal: post: operationId: openGitHubAuthTerminal responses: "201": content: application/json: schema: $ref: '#/components/schemas/ShellTerminalEnvelope' description: Created "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Open a trusted terminal running the GitHub CLI login flow tags: - system /api/v1/system/install/{target}: get: operationId: getSystemInstallStatus parameters: - description: 'Install target identifier: tmux, gh, claude, codex, opencode, opencode-v2, copilot, or cloudflared.' in: path name: target required: true schema: description: 'Install target identifier: tmux, gh, claude, codex, opencode, opencode-v2, copilot, or cloudflared.' enum: - tmux - gh - claude - codex - opencode - opencode-v2 - copilot - cloudflared type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/InstallJob' description: OK "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Get the current or last known install job status for a system target tags: - system post: operationId: startSystemInstall parameters: - description: 'Install target identifier: tmux, gh, claude, codex, opencode, opencode-v2, copilot, or cloudflared.' in: path name: target required: true schema: description: 'Install target identifier: tmux, gh, claude, codex, opencode, opencode-v2, copilot, or cloudflared.' enum: - tmux - gh - claude - codex - opencode - opencode-v2 - copilot - cloudflared type: string responses: "202": content: application/json: schema: $ref: '#/components/schemas/InstallJob' description: Accepted "400": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Bad Request "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Start (or return the already-running) install job for a fixed system target tags: - system /api/v1/system/requirements: get: operationId: getSystemRequirements responses: "200": content: application/json: schema: $ref: '#/components/schemas/SystemRequirementsResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Check local machine readiness (git, tmux, agent harness, gh) tags: - system /api/v1/task-preparations/{token}: delete: operationId: cancelTaskPreparation parameters: - description: Opaque speculative task-worktree token. in: path name: token required: true schema: description: Opaque speculative task-worktree token. type: string responses: "204": description: No Content "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Cancel an unclaimed speculative task worktree tags: - projects /api/v1/usage/memory/pressure: get: operationId: getMemoryPressure responses: "200": content: application/json: schema: $ref: '#/components/schemas/MemoryPressureResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Read the machine's memory-pressure verdict without sampling any process tags: - usage /api/v1/usage/sessions: get: operationId: listCompactSessionUsage parameters: - description: Optional project id filter for dashboard cards. in: query name: projectId schema: description: Optional project id filter for dashboard cards. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListCompactSessionUsageResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List compact token and estimated cost usage for session cards tags: - usage /api/v1/usage/sessions/{sessionId}: get: operationId: getSessionUsage parameters: - description: Session identifier, e.g. project-1. in: path name: sessionId required: true schema: description: Session identifier, e.g. project-1. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/SessionUsageResponse' description: OK "404": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Found "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: Get detailed token and estimated cost usage for one session tags: - usage /api/v1/usage/sessions/memory: get: operationId: listSessionMemory parameters: - description: Optional project id filter for dashboard cards. in: query name: projectId schema: description: Optional project id filter for dashboard cards. type: string responses: "200": content: application/json: schema: $ref: '#/components/schemas/ListSessionMemoryResponse' description: OK "500": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Internal Server Error "501": content: application/json: schema: $ref: '#/components/schemas/APIError' description: Not Implemented summary: List resident memory of each live session's runtime process tree tags: - usage components: schemas: APIError: properties: code: type: string details: additionalProperties: {} type: object error: type: string message: type: string reporting_owner: enum: - http - agent_switch_saga type: string requestId: type: string required: - error - code - message type: object AcknowledgeSessionInterfaceTransitionNoticeResponse: properties: ok: type: boolean sessionId: type: string transition: $ref: '#/components/schemas/SessionInterfaceTransition' required: - ok - sessionId - transition type: object ActivateConversationBranchResponse: properties: activeBranchId: type: string required: - activeBranchId type: object AddProjectInput: properties: asWorkspace: type: boolean clonePreparationId: type: string config: $ref: '#/components/schemas/ProjectConfig' name: type: - "null" - string path: type: string projectId: type: - "null" - string required: - path type: object AgentAuthPlan: properties: action: type: string agentId: type: string available: type: boolean displayCommand: type: string documentationUrl: type: string guidance: type: string launchMode: enum: - terminal - documentation type: string reason: type: string required: - agentId - action - launchMode - available - documentationUrl type: object AgentAuthenticationObservation: properties: attemptedAt: format: date-time type: - "null" - string checkedAt: format: date-time type: - "null" - string freshness: enum: - fresh - stale - checking type: string reason: type: string reasonCode: type: string state: enum: - authorized - unauthorized - unknown - not_applicable - configured type: string required: - state - freshness - checkedAt - attemptedAt - reasonCode - reason type: object AgentConfig: properties: effort: type: string mode: type: string model: type: string permissions: type: string type: object AgentInfo: properties: authStatus: description: Auth probe result. authorized means a provider round-trip accepted the credential; configured means a credential exists locally but was never validated, and must not be presented as ready; spawn remains the authoritative validation point. enum: - authorized - unauthorized - unknown - configured type: string id: type: string label: type: string lastUsedAt: description: Creation time of the newest retained session currently attributed to this agent. format: date-time type: - "null" - string usageCount: description: Number of retained sessions currently attributed to this agent. type: integer required: - id - label type: object AgentInstallJobsResponse: properties: jobs: items: $ref: '#/components/schemas/InstallJob' type: array required: - jobs type: object AgentInstallMethod: properties: available: type: boolean command: type: string expectedDestination: type: string id: type: string label: type: string notice: type: string reason: type: string recommended: type: boolean reinstallAvailable: type: boolean reinstallCommand: type: string reinstallReason: type: string required: - id - label - available - recommended - reinstallAvailable type: object AgentInstallPlan: properties: agentId: type: string automatic: type: boolean available: type: boolean command: type: string documentationUrl: type: string expectedDestination: type: string method: type: string methods: items: $ref: '#/components/schemas/AgentInstallMethod' type: array notice: type: string reason: type: string required: - agentId - available - automatic - method - documentationUrl - methods type: object AgentInstallationObservation: properties: attemptedAt: format: date-time type: - "null" - string checkedAt: format: date-time type: - "null" - string freshness: enum: - fresh - stale - checking type: string reason: type: string reasonCode: type: string state: enum: - installed - not_installed - unknown type: string required: - state - freshness - checkedAt - attemptedAt - reasonCode - reason type: object AgentInstallerCatalogResponse: properties: agents: items: $ref: '#/components/schemas/AgentInstallPlan' type: array required: - agents type: object AgentModelInfo: properties: defaultEffort: type: string efforts: items: type: string type: array id: type: string isDefault: type: boolean label: type: string provider: type: string required: - id - label type: object AgentModelsResponse: properties: agentId: type: string allowCustom: type: boolean binaryVersion: type: string customModelEntry: enum: - none - direct - configured type: string fetchedAt: format: date-time type: string inputFingerprint: type: string lastSuccessAt: format: date-time type: - "null" - string metadata: additionalProperties: type: string type: object models: items: $ref: '#/components/schemas/AgentModelInfo' type: array refreshError: type: string refreshRecommended: type: boolean refreshState: enum: - idle - queued - refreshing - error type: string retryAt: format: date-time type: - "null" - string selectionMode: enum: - catalog - text - mode type: string source: type: string stale: type: boolean validatedAt: format: date-time type: string warning: type: string required: - agentId - selectionMode - models - customModelEntry - allowCustom - source - fetchedAt - stale type: object AgentReadinessResponse: properties: agents: items: $ref: '#/components/schemas/AgentReadinessSnapshot' type: array required: - agents type: object AgentReadinessSnapshot: properties: authentication: $ref: '#/components/schemas/AgentAuthenticationObservation' effectiveReadiness: enum: - ready - not_ready - unknown type: string id: type: string installation: $ref: '#/components/schemas/AgentInstallationObservation' label: type: string lastUsedAt: format: date-time type: - "null" - string usageCount: type: integer required: - id - label - installation - authentication - effectiveReadiness - usageCount type: object AgentSwitch: properties: agentHandoffStatus: enum: - not_attempted - requested - received - unavailable - timed_out - failed - rejected type: string errorCode: enum: - daemon_restart_pre_stop - daemon_restart_post_stop - daemon_restart_unrecoverable_target - daemon_restart_before_delivery - delivery_unconfirmed - source_session_terminated - source_stop_unconfirmed - target_binary_missing - target_agent_unauthorized - target_start_unconfirmed - source_restore_unconfirmed - request_cancelled - source_blocked - failed_pre_stop - failed_post_stop - target_ready_failed - delivery_failed - switch_failed type: string fromHarness: type: string id: type: string requestedAt: format: date-time type: string semanticHandoffIncluded: type: boolean sessionId: type: string sourceTranscriptStatus: enum: - not_attempted - available - unavailable type: string state: enum: - preparing_handoff - stopping_source - source_stopped - starting_target - target_ready - delivering_context - completed - failed type: string targetHarness: type: string targetStartMode: enum: - fresh - resumed type: string updatedAt: format: date-time type: string required: - id - sessionId - fromHarness - targetHarness - state - agentHandoffStatus - semanticHandoffIncluded - requestedAt - updatedAt type: object AgentSwitchResponse: properties: switch: $ref: '#/components/schemas/AgentSwitch' required: - switch type: object AppMemoryResponse: properties: cpuMeasured: description: 'False when there was no earlier sample to measure against: cpuPercent is unknown, not zero.' type: boolean cpuPercent: format: double minimum: 0 type: number own: $ref: '#/components/schemas/SessionMemoryResponse' processCount: minimum: 0 type: integer reviewers: items: $ref: '#/components/schemas/ControllersReviewerMemoryResponse' type: array rssBytes: minimum: 0 type: integer required: - rssBytes - processCount - cpuPercent - cpuMeasured type: object AttachmentInput: properties: data: type: string mimeType: type: string required: - data type: object AutomationEnvelope: properties: automation: $ref: '#/components/schemas/AutomationResponse' required: - automation type: object AutomationResponse: properties: createdAt: format: date-time type: string displayName: type: string enabled: type: boolean harness: type: string id: type: string kind: enum: - worker - orchestrator type: string lastRunAt: format: date-time type: - "null" - string latestRun: $ref: '#/components/schemas/AutomationRunSummaryResponse' nextRunAt: format: date-time type: string projectId: type: string prompt: type: string rrule: type: string timezone: type: string updatedAt: format: date-time type: string required: - id - projectId - displayName - prompt - kind - rrule - timezone - enabled - nextRunAt - createdAt - updatedAt type: object AutomationRunResponse: properties: attemptCount: format: int64 type: integer automationId: type: string claimedAt: format: date-time type: - "null" - string createdAt: format: date-time type: string errorMessage: type: string finishedAt: format: date-time type: - "null" - string id: type: string leaseExpiresAt: format: date-time type: - "null" - string scheduledFor: format: date-time type: string sessionId: type: string startedAt: format: date-time type: - "null" - string status: enum: - pending - spawning - running - completed - failed type: string updatedAt: format: date-time type: string required: - id - automationId - scheduledFor - status - attemptCount - createdAt - updatedAt type: object AutomationRunSummaryResponse: properties: errorMessage: type: string finishedAt: format: date-time type: - "null" - string id: type: string scheduledFor: format: date-time type: string sessionId: type: string startedAt: format: date-time type: - "null" - string status: enum: - pending - spawning - running - completed - failed type: string required: - id - status - scheduledFor type: object BrowserCommandRequest: properties: action: type: string args: additionalProperties: {} type: object sessionId: type: string required: - sessionId - action type: object BrowserCommandResponse: properties: action: type: string requestId: type: string result: {} sessionId: type: string required: - requestId - sessionId - action - result type: object BrowserStatusResponse: properties: connected: type: boolean connectedAt: format: date-time type: string sessionId: type: string transport: type: string required: - sessionId - connected - transport type: object CancelReviewResponse: properties: reviewerHandleId: type: string reviews: items: $ref: '#/components/schemas/PRReviewState' type: array required: - reviewerHandleId - reviews type: object CancelSessionInterfaceTransitionResponse: properties: ok: type: boolean sessionId: type: string required: - ok - sessionId type: object ClaimPRRequest: properties: allowTakeover: type: - "null" - boolean pr: minLength: 1 type: string required: - pr type: object ClaimPRResponse: properties: branchChanged: type: boolean ok: type: boolean prs: items: $ref: '#/components/schemas/SessionPRFacts' type: array sessionId: type: string takenOverFrom: items: type: string type: array required: - ok - sessionId - prs - branchChanged - takenOverFrom type: object CleanupSessionsResponse: properties: alreadyGone: items: type: string type: array cleaned: items: type: string type: array ok: type: boolean skipped: items: $ref: '#/components/schemas/CleanupSkippedSession' type: array required: - ok - cleaned - alreadyGone - skipped type: object CleanupSkippedSession: properties: reason: type: string sessionId: type: string required: - sessionId - reason type: object ClearNotificationsResponse: properties: clearEpoch: description: Daemon epoch for ordering notification clears across one daemon lifetime. type: string clearId: description: Identifier shared with the ordered notification_cleared stream event. type: string clearSequence: description: Monotonic notification-clear sequence within clearEpoch. format: int64 type: integer clearedCount: description: Number of notifications deleted. format: int64 type: integer required: - clearedCount - clearId - clearEpoch - clearSequence type: object ClonePreparationResult: properties: path: type: string preparationId: type: string remoteUrl: type: string required: - path - remoteUrl - preparationId type: object CloneProjectInput: properties: config: $ref: '#/components/schemas/ProjectConfig' destinationParent: minLength: 1 type: string name: type: - "null" - string projectId: type: - "null" - string remoteUrl: minLength: 1 type: string required: - remoteUrl - destinationParent type: object CodexAccountCapabilitiesResponse: properties: globalSwitch: $ref: '#/components/schemas/CodexCapabilityObservationResponse' nativeLogin: $ref: '#/components/schemas/CodexCapabilityObservationResponse' resetCreditConsume: $ref: '#/components/schemas/CodexCapabilityObservationResponse' required: - nativeLogin - resetCreditConsume - globalSwitch type: object CodexAccountCapacityResponse: properties: additionalBuckets: items: $ref: '#/components/schemas/CodexCapacityBucketResponse' type: array attemptedAt: format: date-time type: - "null" - string checkedAt: format: date-time type: - "null" - string freshness: enum: - fresh - stale - checking type: string observedAt: format: date-time type: - "null" - string overall: $ref: '#/components/schemas/CodexCapacityBucketResponse' plan: type: - "null" - string reason: type: string reasonCode: type: string remainingPercent: maximum: 100 minimum: 0 type: - "null" - number resetCredits: $ref: '#/components/schemas/CodexResetCreditsSummaryResponse' resetsAt: format: date-time type: - "null" - string state: enum: - available - near_limit - exhausted - unknown - unsupported type: string usedPercent: maximum: 100 minimum: 0 type: - "null" - number required: - state - freshness - reasonCode - reason - additionalBuckets type: object CodexAccountLoginResponse: properties: account: $ref: '#/components/schemas/CodexAccountResponse' accountId: type: string expiresAt: format: date-time type: string operationId: type: string reason: type: string reasonCode: type: string status: enum: - pending - verifying - unauthorized - retryable - completed - cancelled - failed - expired type: string required: - operationId - status - reasonCode - reason - expiresAt type: object CodexAccountLoginTerminalResponse: properties: createdAt: format: date-time type: string handleId: type: string title: type: string required: - handleId - title - createdAt type: object CodexAccountResponse: properties: accountEmail: type: - "null" - string active: type: boolean authMethod: enum: - chatgpt - api_key - other - unknown type: string authentication: $ref: '#/components/schemas/CodexAuthenticationResponse' capacity: $ref: '#/components/schemas/CodexAccountCapacityResponse' createdAt: format: date-time type: string id: type: string label: type: string reason: type: string reasonCode: type: string status: enum: - valid - signed_out - broken type: string usageSummary: $ref: '#/components/schemas/CodexAccountUsageSummaryResponse' required: - id - label - status - reasonCode - reason - active - authentication - authMethod - capacity - createdAt type: object CodexAccountSwitchResponse: properties: completedAt: format: date-time type: - "null" - string createdAt: format: date-time type: string credentialsCommittedAt: format: date-time type: - "null" - string failureCode: type: string id: type: string phase: enum: - requested - checkpointing_source - activating_target - recovery_required - completed - failed type: string sourceAccountId: type: string sourceKind: enum: - managed - device - none type: string targetAccountId: type: string updatedAt: format: date-time type: string required: - id - sourceKind - targetAccountId - phase - createdAt - updatedAt type: object CodexAccountUsageSummaryResponse: properties: currentStreakDays: type: - "null" - integer latestDayStartDate: type: - "null" - string latestDayTokens: type: - "null" - integer lifetimeTokens: type: - "null" - integer longestRunningTurnSeconds: type: - "null" - integer longestStreakDays: type: - "null" - integer observedAt: format: date-time type: string peakDailyTokens: type: - "null" - integer required: - observedAt type: object CodexAccountsResponse: properties: accountRevision: format: int64 type: integer accounts: items: $ref: '#/components/schemas/CodexAccountResponse' type: array activeAccountId: type: string activeLogin: $ref: '#/components/schemas/CodexActiveLoginResponse' capabilities: $ref: '#/components/schemas/CodexAccountCapabilitiesResponse' currentSwitch: $ref: '#/components/schemas/CodexAccountSwitchResponse' deviceReconciliation: $ref: '#/components/schemas/CodexDeviceReconciliationResponse' required: - accountRevision - accounts - capabilities - deviceReconciliation type: object CodexActiveLoginResponse: properties: accountId: type: string expiresAt: format: date-time type: string operationId: type: string reason: type: string reasonCode: type: string shellTerminal: $ref: '#/components/schemas/CodexAccountLoginTerminalResponse' status: enum: - pending - verifying - unauthorized - retryable - completed - cancelled - failed - expired type: string required: - operationId - status - reasonCode - reason - expiresAt - shellTerminal type: object CodexAuthenticationResponse: properties: attemptedAt: format: date-time type: - "null" - string checkedAt: format: date-time type: - "null" - string freshness: enum: - fresh - stale - checking type: string reason: type: string reasonCode: type: string state: enum: - authorized - unauthorized - unknown - not_applicable type: string required: - state - freshness - checkedAt - attemptedAt - reasonCode - reason type: object CodexCapabilityObservationResponse: properties: reason: type: string reasonCode: type: string state: enum: - supported - unsupported - unknown type: string required: - state - reasonCode - reason type: object CodexCapacityBucketResponse: properties: displayName: type: - "null" - string primary: $ref: '#/components/schemas/CodexCapacityWindowResponse' reached: enum: - not_reached - reached - unknown type: string secondary: $ref: '#/components/schemas/CodexCapacityWindowResponse' required: - reached type: object CodexCapacityWindowResponse: properties: resetsAt: format: date-time type: - "null" - string usedPercent: format: double maximum: 100 minimum: 0 type: number windowDurationMinutes: type: - "null" - integer required: - usedPercent type: object CodexDeviceReconciliationResponse: properties: activeAccountVerified: type: boolean attemptedAt: format: date-time type: - "null" - string nextRetryAt: format: date-time type: - "null" - string reasonCode: type: string retryable: type: boolean status: enum: - not_checked - checking - verified - temporarily_unavailable - blocked type: string verifiedAt: format: date-time type: - "null" - string required: - status - activeAccountVerified - reasonCode - retryable type: object CodexResetCreditsSummaryResponse: properties: availableCount: format: int64 minimum: 0 type: integer nearestExpiresAt: format: date-time type: - "null" - string required: - availableCount type: object CompactConversationResponse: properties: tokensAfter: format: int64 type: integer tokensBefore: format: int64 type: integer type: object CompactSessionUsageResponse: properties: estimatedCost: anyOf: - type: "null" - $ref: '#/components/schemas/EstimatedCostResponse' type: object incomplete: type: boolean processedTokens: description: Canonical input plus output. Null when either component is unknown. minimum: 0 type: - "null" - integer sessionId: type: string totalTokens: description: Deprecated compatibility alias for processedTokens. format: int64 minimum: 0 type: integer required: - sessionId - processedTokens - totalTokens - incomplete - estimatedCost type: object ConsumeCodexAccountResetCreditRequest: properties: idempotencyKey: maxLength: 200 minLength: 1 type: string required: - idempotencyKey type: object ContainerReapConfig: properties: disabled: type: boolean type: object ControllersKeepAwakeStatus: properties: active: type: boolean enabled: type: boolean hasBattery: type: boolean supported: type: boolean required: - supported - enabled - active - hasBattery type: object ControllersRequestRereviewRequest: properties: pullRequestUrl: description: Tracked pull request URL. Required when the session has multiple PRs. type: string reviewerId: description: Provider login of the reviewer to ask for another review. type: string required: - reviewerId type: object ControllersRequestRereviewResponse: properties: ok: type: boolean required: - ok type: object ControllersResolveReviewCommentRequest: properties: commentUrl: description: Provider URL of the unresolved review comment to resolve. type: string pullRequestUrl: description: Tracked pull request URL. Required when the session has multiple PRs. type: string required: - commentUrl type: object ControllersResolveReviewCommentResponse: properties: ok: type: boolean required: - ok type: object ControllersReviewerMemoryResponse: properties: harness: type: string memory: $ref: '#/components/schemas/SessionMemoryResponse' reviewId: type: string sessionId: description: The worker session this reviewer reviews, not the reviewer's own identity. type: string required: - reviewId - sessionId - harness - memory type: object ControllersSecurePairingStatus: properties: active: type: boolean available: type: boolean enabled: type: boolean host: type: string port: type: integer reason: type: string required: - enabled - available - active - host - port - reason type: object ControllersSessionView: properties: activeAgentSwitch: $ref: '#/components/schemas/AgentSwitch' activity: $ref: '#/components/schemas/DomainActivity' autoInjectCI: type: boolean autoInjectReview: type: boolean autoReviewEnabled: type: boolean branch: type: string chatProviderPreserved: type: boolean createdAt: format: date-time type: string displayName: type: string displayStatus: enum: - Working - Blocked - Exited - No signal - Awaiting PR - Fixing CI failures - Addressing comments - Needs review - Review scheduled - Reviewing - Review failed - Review pending - Draft - CI failing - Commented - Changes requested - Needs human review - Mergeable - Approved - Merged - Closed without merge - Terminated type: string harness: type: string id: type: string isPinned: type: boolean isTerminated: type: boolean issueId: type: string kanbanColumn: enum: - building - validating - needs_review - ready - archive type: string kind: type: string lastUserMessageAt: format: date-time type: - "null" - string mode: enum: - chat - tui type: string model: type: string pinnedAt: format: date-time type: - "null" - string previewRevision: format: int64 type: integer previewUrl: type: string projectId: type: string provisionError: type: string provisionState: enum: - provisioning - ready - failed type: string prs: items: $ref: '#/components/schemas/SessionPRFacts' type: array reviewerConfig: $ref: '#/components/schemas/AgentConfig' reviewerHarness: enum: - claude-code - codex - copilot - cursor - kilocode - opencode - opencode-v2 - kiro - pi - agy - devin - droid - kimi - kimchi - muse - amp - aider - grok - crush - auggie - cline - autohand type: string scmStatus: enum: - pr_open - draft - ci_failed - review_pending - changes_requested - commented - approved - mergeable - merged type: string status: enum: - working - pr_open - draft - ci_failed - review_pending - changes_requested - commented - approved - mergeable - merged - needs_input - exited - idle - terminated - no_signal type: string statusReadiness: enum: - checking - ready - unavailable type: string terminalGeneration: type: string terminalHandleId: type: string terminateOnPrMerge: type: boolean updatedAt: format: date-time type: string required: - id - kind - autoReviewEnabled - mode - activity - isTerminated - terminateOnPrMerge - autoInjectReview - autoInjectCI - createdAt - updatedAt - isPinned - statusReadiness - chatProviderPreserved - status - kanbanColumn - displayStatus - prs type: object ControllersSetKeepAwakeRequest: properties: enabled: type: boolean required: - enabled type: object ControllersSetSecurePairingRequest: properties: enabled: type: boolean required: - enabled type: object ControllersSetSessionAutoReviewRequest: properties: enabled: type: boolean required: - enabled type: object ControllersUpdateCloudOfferingRequest: properties: enabled: type: - "null" - boolean required: - enabled type: object ConversationAccountPayload: properties: authFailureId: type: string authMode: type: string authVerifiedAt: type: - "null" - string authenticationState: enum: - unknown - required - authenticated type: string lastAuthFailureAt: type: - "null" - string lastAuthFailureReason: type: string planLabel: type: string reauthReason: type: string reauthRequiredAt: type: - "null" - string type: object ConversationActivityResponse: properties: activityKind: enum: - command - file_change - plan - reasoning - approval - usage - error - system - mcp_tool - auto_review - user_input type: string createdAt: type: string detail: additionalProperties: {} type: object id: type: string kind: enum: - activity type: string providerItemId: type: string requestId: type: string revision: format: int64 type: integer sequence: format: int64 type: integer status: enum: - running - completed - recovered - failed - cancelled - pending - resolved type: string summary: type: string turnId: type: string required: - kind - id - sequence - revision - activityKind - status - summary - createdAt type: object ConversationBranchMaterializationResponse: properties: replayTruncated: type: boolean strategy: enum: - native - approximate_context type: string required: - strategy - replayTruncated type: object ConversationBranchPointResponse: properties: nextBranchId: type: string position: type: integer previousBranchId: type: string total: type: integer turnId: type: string required: - turnId - position - total type: object ConversationConfigChoiceResponse: properties: description: type: string group: type: string groupName: type: string name: type: string permissionMode: enum: - default - accept-edits - auto - bypass-permissions type: string value: type: string required: - value - name type: object ConversationConfigOptionResponse: properties: category: type: string choices: items: $ref: '#/components/schemas/ConversationConfigChoiceResponse' type: array currentBoolean: type: - "null" - boolean currentValue: type: string description: type: string id: type: string name: type: string type: enum: - select - boolean type: string required: - id - name - type type: object ConversationConfigOptionsResponse: properties: options: items: $ref: '#/components/schemas/ConversationConfigOptionResponse' type: array required: - options type: object ConversationContentSummaryResponse: properties: mimeType: type: string name: type: string type: type: string uri: type: string required: - type type: object ConversationDiffFileResponse: properties: additions: type: integer deletions: type: integer oldPath: type: string path: type: string rolledBack: type: boolean status: enum: - added - modified - deleted - renamed type: string required: - path - additions - deletions - status type: object ConversationImageContentRequest: properties: data: type: string mimeType: type: string required: - mimeType - data type: object ConversationMCPServerPayload: properties: error: type: string failureReason: type: string name: type: string status: type: string required: - name - status type: object ConversationMessageResponse: properties: content: items: $ref: '#/components/schemas/ConversationContentSummaryResponse' type: array createdAt: type: string editAvailable: type: boolean id: type: string kind: enum: - message type: string origin: enum: - human - automation - daemon - provider type: string revision: format: int64 type: integer role: enum: - user - assistant type: string sequence: format: int64 type: integer streaming: type: boolean text: type: string turnId: type: string required: - kind - id - sequence - revision - role - origin - text - editAvailable - streaming - createdAt type: object ConversationModelReroutePayload: properties: at: type: string fromModel: type: string providerTurnId: type: string reason: type: string toModel: type: string required: - toModel - at type: object ConversationModelResponse: properties: default: type: boolean defaultEffort: type: string description: type: string displayName: type: string efforts: items: type: string type: array id: type: string required: - id - displayName - default type: object ConversationModelsResponse: properties: models: items: $ref: '#/components/schemas/ConversationModelResponse' type: array selected: $ref: '#/components/schemas/ConversationTurnSettingsPayload' required: - models - selected type: object ConversationPlanResponse: properties: explanation: type: string steps: items: $ref: '#/components/schemas/ConversationPlanStepResponse' type: array required: - steps type: object ConversationPlanStepResponse: properties: status: enum: - pending - in_progress - completed type: string text: type: string required: - text - status type: object ConversationRateLimitsPayload: properties: planLabel: type: string primaryResetsInSeconds: format: int64 type: integer primaryUsedPercent: format: double type: number secondaryResetsInSeconds: format: int64 type: integer secondaryUsedPercent: format: double type: number title: type: string required: - primaryUsedPercent - secondaryUsedPercent type: object ConversationResourceContentRequest: properties: mimeType: type: string name: type: string text: type: - "null" - string uri: type: string required: - uri - name type: object ConversationSkillResponse: properties: description: type: string displayName: type: string inputHint: type: string name: type: string source: type: string required: - name - displayName type: object ConversationSkillsResponse: properties: skills: items: $ref: '#/components/schemas/ConversationSkillResponse' type: array required: - skills type: object ConversationSnapshotResponse: properties: account: $ref: '#/components/schemas/ConversationAccountPayload' activeBranchId: type: string activities: items: $ref: '#/components/schemas/ConversationActivityResponse' type: array branchMaterialization: $ref: '#/components/schemas/ConversationBranchMaterializationResponse' branchPoints: items: $ref: '#/components/schemas/ConversationBranchPointResponse' type: array branchedFromEarlierMessage: type: boolean capabilities: items: type: string type: array compactedAt: type: - "null" - string controller: enum: - connecting - ready - busy - recovering - stopped type: string conversationId: type: string harness: type: string hasMoreBefore: type: boolean latestSequence: format: int64 type: integer mcpServers: items: $ref: '#/components/schemas/ConversationMCPServerPayload' type: array messages: items: $ref: '#/components/schemas/ConversationMessageResponse' type: array mode: enum: - chat - tui type: string modelReroute: $ref: '#/components/schemas/ConversationModelReroutePayload' nativeForkAvailableAfterSequence: format: int64 type: integer oldestSequence: format: int64 type: integer rateLimits: $ref: '#/components/schemas/ConversationRateLimitsPayload' sessionId: type: string settings: $ref: '#/components/schemas/ConversationTurnSettingsPayload' threadState: $ref: '#/components/schemas/ConversationThreadStatePayload' title: type: string turns: items: $ref: '#/components/schemas/ConversationTurnResponse' type: array usage: $ref: '#/components/schemas/ConversationUsagePayload' required: - conversationId - branchedFromEarlierMessage - sessionId - mode - controller - latestSequence - hasMoreBefore - nativeForkAvailableAfterSequence - turns - messages - activities - settings type: object ConversationThreadStatePayload: properties: archivedAt: type: - "null" - string closedAt: type: - "null" - string status: enum: - active - idle - not_loaded - system_error - closed type: string waitingOn: items: type: string type: array type: object ConversationTurnDiffResponse: properties: files: items: $ref: '#/components/schemas/ConversationDiffFileResponse' type: array truncated: type: boolean required: - files type: object ConversationTurnResponse: properties: completedAt: type: - "null" - string diff: $ref: '#/components/schemas/ConversationTurnDiffResponse' errorMessage: type: string hasRetryAttempt: type: boolean id: type: string plan: $ref: '#/components/schemas/ConversationPlanResponse' providerTurnId: type: string requestedAt: type: string retryOfTurnId: type: string rolledBack: type: boolean startedAt: type: - "null" - string state: enum: - queued - running - completed - recovered - interrupted - failed - cancelled type: string required: - id - state - requestedAt type: object ConversationTurnSettingsPayload: properties: approvalMode: enum: - default - accept-edits - auto - bypass-permissions type: string model: type: string reasoningEffort: type: string type: object ConversationUsagePayload: properties: cachedTokens: format: int64 type: integer contextUsed: format: int64 type: integer contextWindow: format: int64 type: integer cost: type: - "null" - number currency: type: string inputTokens: format: int64 type: integer outputTokens: format: int64 type: integer totalTokens: format: int64 type: integer required: - contextUsed - contextWindow - inputTokens - outputTokens - cachedTokens - totalTokens type: object CreateAutomationRequest: properties: cron: type: string displayName: type: string enabled: type: - "null" - boolean harness: type: string kind: enum: - worker - orchestrator type: string projectId: type: string prompt: type: string rrule: type: string timezone: type: string required: - projectId - displayName - prompt - kind - timezone type: object CreateReportRequest: properties: message: maxLength: 1000 type: string note: maxLength: 1000 type: string outputs: items: $ref: '#/components/schemas/ReportOutputRequest' type: array sessionId: type: string state: enum: - checkpoint - needs_input - stuck - done type: string required: - sessionId type: object CreateReportResponse: properties: id: type: string required: - id type: object CueDefinitionRequest: properties: command: description: Shell command for a command cue. At most 4096 bytes; cleared when saving agent cues. maxLength: 4096 type: string description: description: Optional human note about the cue, at most 240 bytes. maxLength: 240 type: string name: description: Short cue name, unique within the project. Trimmed; must be non-empty and at most 64 bytes. maxLength: 64 type: string prompt: description: Agent instruction for an agent cue. At most 16384 bytes; cleared when saving command cues. maxLength: 16384 type: string type: description: 'Cue kind: command sends to a project- or session-scoped shell terminal; agent sends an authored prompt. Definition body limit: 128 KiB.' type: string required: - name - type type: object CueEnvelope: properties: cue: $ref: '#/components/schemas/CueResponse' required: - cue type: object CueResponse: properties: command: type: string createdAt: format: date-time type: string description: type: string id: type: string name: type: string projectId: type: string prompt: type: string type: type: string updatedAt: format: date-time type: string required: - id - projectId - name - description - type - createdAt - updatedAt type: object DegradedProject: properties: id: type: string kind: enum: - single_repo - workspace - scratch type: string name: type: string path: type: string resolveError: type: string required: - id - name - kind - path - resolveError type: object DelegateTaskRequest: properties: agent: enum: - claude-code - codex - aider - opencode - opencode-v2 - grok - droid - amp - agy - crush - cursor - qwen - gemini - copilot - goose - auggie - continue - devin - cline - kimi - muse - kiro - kilocode - vibe - pi - kimchi - omp - fx - prime-agent - autohand - unreal-agent - mimo-code - deepseek-harness - fake type: string approvalMode: enum: - default - accept-edits - auto - bypass-permissions type: string attachments: items: $ref: '#/components/schemas/AttachmentInput' type: array brief: maxLength: 16384 type: string clientRequestId: maxLength: 128 type: string effort: maxLength: 64 type: - "null" - string mode: enum: - tui - chat type: string model: maxLength: 256 type: string projectId: type: string taskPreparation: type: string required: - projectId - brief type: object DelegateTaskResponse: properties: ok: type: boolean orchestratorId: type: string workerId: type: string required: - ok - workerId type: object DesktopWorkspaceLocationResponse: properties: sessionId: type: string workspacePath: type: string required: - sessionId - workspacePath type: object DevImportProjectsConflict: properties: path: type: string projectId: type: string reason: type: string targetId: type: string targetPath: type: string required: - projectId - path - reason type: object DevImportProjectsReport: properties: conflicts: items: $ref: '#/components/schemas/DevImportProjectsConflict' type: array dryRun: type: boolean inserted: type: integer skipped: type: integer sourceDataDir: type: string targetDataDir: type: string updated: type: integer required: - sourceDataDir - targetDataDir - dryRun - inserted - updated - skipped type: object DevImportProjectsRequest: properties: dryRun: type: boolean sourceDataDir: minLength: 1 type: string required: - sourceDataDir - dryRun type: object DevImportProjectsResponse: properties: report: $ref: '#/components/schemas/DevImportProjectsReport' required: - report type: object DomainActivity: properties: lastActivityAt: format: date-time type: string state: type: string required: - state - lastActivityAt type: object DomainReviewerConfig: properties: agentConfig: $ref: '#/components/schemas/AgentConfig' harness: type: string required: - harness type: object DomainReviewerSurface: properties: controllerError: type: string handleId: type: string harness: type: string mode: type: string reviewId: type: string required: - mode - reviewId - harness type: object EditConversationMessageRequest: properties: clientMessageId: type: string text: type: string required: - text type: object EditConversationMessageResponse: properties: activeBranchId: type: string providerTurnId: type: string sourceBranchId: type: string state: enum: - queued - running - completed - recovered - interrupted - failed type: string turnId: type: string required: - sourceBranchId - activeBranchId type: object EditQueuedConversationMessageRequest: properties: attachments: items: $ref: '#/components/schemas/ConversationImageContentRequest' type: array clientMessageId: type: string expectedRevision: type: - "null" - integer retainedContent: items: type: integer type: - "null" - array text: type: string required: - text type: object EndpointsResponse: properties: endpoints: items: $ref: '#/components/schemas/MobileEndpoint' type: array required: - endpoints type: object EnsureAgentReadinessRequest: properties: agentIds: items: type: string type: array purpose: enum: - display - launch type: string required: - purpose type: object EnsureCodexAccountsRequest: properties: accountIds: items: type: string type: array forceAuthentication: type: boolean forceDeviceReconciliation: type: boolean includeUsage: type: boolean type: object EstimatedCostResponse: properties: cachedInputNanos: format: int64 minimum: 0 type: - "null" - integer coverage: enum: - complete - partial type: string inputNanos: description: Every non-cache-read input charge, cache writes included. format: int64 minimum: 0 type: - "null" - integer outputNanos: format: int64 minimum: 0 type: - "null" - integer providerAttribution: description: Whether contributing billing providers were detected, inferred from model ownership, or both. enum: - observed - inferred - mixed type: string totalNanos: format: int64 minimum: 0 type: integer required: - totalNanos - inputNanos - cachedInputNanos - outputNanos - coverage - providerAttribution type: object ExitAgentResponse: properties: ok: type: boolean session: $ref: '#/components/schemas/ControllersSessionView' sessionId: type: string required: - ok - sessionId - session type: object FSEntry: properties: gitRepo: description: True when the directory carries a .git entry (clone or worktree checkout). type: boolean name: description: Directory name. type: string path: description: Absolute path of the directory on the daemon host. type: string required: - name - path - gitRepo type: object GitHubRepo: properties: clone_url: type: string default_branch: type: string full_name: type: string name: type: string private: type: boolean required: - name - full_name - private - default_branch - clone_url type: object GitHubRepositoryPreparation: properties: name: type: string owner: type: string private: type: - "null" - boolean type: object GitPreparationEvent: properties: action: enum: - git_init - git_commit - create_remote_repository - set_remote type: string error: type: string message: type: string repoPath: type: string state: enum: - pending - running - success - error type: string required: - action - repoPath - state type: object GitPreparationInput: properties: approvedActions: items: type: string type: array githubRepository: $ref: '#/components/schemas/GitHubRepositoryPreparation' importKind: enum: - project - workspace minLength: 1 type: string initialCommitMessage: type: string path: minLength: 1 type: string remoteUrl: type: string repositories: items: $ref: '#/components/schemas/GitRepositoryPreparationInput' type: array stepwise: type: boolean required: - importKind - path type: object GitPreparationResult: properties: events: items: $ref: '#/components/schemas/GitPreparationEvent' type: array validation: $ref: '#/components/schemas/ImportValidationResult' required: - events - validation type: object GitRepositoryPreparationInput: properties: approvedActions: items: type: string type: array githubRepository: $ref: '#/components/schemas/GitHubRepositoryPreparation' initialCommitMessage: type: string remoteUrl: type: string repoPath: minLength: 1 type: string required: - repoPath - approvedActions type: object IdentityResponse: properties: apiVersion: type: integer hostId: type: string required: - hostId - apiVersion type: object ImportReport: properties: dryRun: type: boolean notes: items: type: string type: array projectsImported: type: integer projectsSkipped: type: integer required: - dryRun - projectsImported - projectsSkipped type: object ImportRunResponse: properties: report: $ref: '#/components/schemas/ImportReport' required: - report type: object ImportStatusResponse: properties: available: type: boolean legacyRoot: type: string required: - available - legacyRoot type: object ImportValidationInput: properties: importKind: enum: - project - workspace minLength: 1 type: string path: minLength: 1 type: string required: - importKind - path type: object ImportValidationResult: properties: blockingErrors: items: type: string type: array childRepos: items: $ref: '#/components/schemas/RepoGitStatus' type: array importKind: type: string isValid: type: boolean nextStep: enum: - error - choose_import_kind - prepare_git - continue type: string root: $ref: '#/components/schemas/RepoGitStatus' warning: type: string required: - importKind - isValid - blockingErrors - root - nextStep type: object InitializeRepositoryInput: properties: path: type: string required: - path type: object InitializeRepositoryResult: properties: path: type: string required: - path type: object InstallJob: properties: command: description: Human-readable install command, e.g. "brew install tmux", for display even before/without output. type: string error: description: 'Set on failure or when the target is unsupported on this machine: the exec error, the Unsupported reason, or a timeout message.' type: string expectedDestination: description: Expected or adapter-resolved executable destination. type: string finishedAt: description: Absent until the job finishes. format: date-time type: - "null" - string method: description: Server-owned installation method selected for this harness job. type: string notice: description: Fixed user-visible consequence to acknowledge before running this install. type: string output: description: Combined stdout+stderr from the install command, tail-capped to the last ~4000 bytes. type: string startedAt: format: date-time type: - "null" - string status: description: Current lifecycle state of the job. enum: - idle - running - installing - verifying - succeeded - failed - unsupported - interrupted type: string target: description: Fixed install target this job ran (or is running) for. enum: - tmux - gh - claude - claude-code - codex - cursor - opencode - opencode-v2 - aider - copilot - grok - kimi - pi - amp - auggie - droid - crush - cline - goose - qwen - gemini - continue - devin - kiro - kilocode - vibe - muse - agy - autohand - kimchi - prime-agent - omp - fx - unreal-agent - mimo-code - deepseek-harness - cloudflared type: string updatedAt: format: date-time type: - "null" - string required: - target - status type: object InvokeCueRequest: properties: sessionId: description: 'Optional exact session target. Agent cues message it; command cues use its worktree. Omit it to spawn an agent worker or run a command in the project root. A supplied id must be non-blank and compatible, and never falls back to a replacement worker. Invocation body limit: 4 KiB.' type: string shell: description: Desktop shell selection used only for command cues. type: string type: object InvokeCueResponse: properties: kind: description: Invocation kind. enum: - agent - command type: string sessionId: description: For agent cues, the session that received the prompt or newly spawned worker. type: string shellTerminal: $ref: '#/components/schemas/ShellTerminalResponse' description: For command cues, the normal shell terminal that received the command. required: - kind type: object KillReviewResponse: properties: reviewerHandleId: type: string reviewerHarness: type: string reviews: items: $ref: '#/components/schemas/PRReviewState' type: array runs: items: $ref: '#/components/schemas/ReviewRun' type: array required: - reviewerHandleId - reviews - runs type: object KillSessionResponse: properties: freed: type: boolean ok: type: boolean sessionId: type: string required: - ok - sessionId type: object LinkPreviewResponse: properties: description: type: string faviconUrl: type: string imageUrl: type: string siteName: type: string title: type: string url: type: string required: - url type: object ListAgentAuthPlansResponse: properties: plans: items: $ref: '#/components/schemas/AgentAuthPlan' type: array required: - plans type: object ListAgentSwitchesResponse: properties: switches: items: $ref: '#/components/schemas/AgentSwitch' type: array required: - switches type: object ListAgentsResponse: properties: authorized: description: Compatibility list of installed agents whose local auth probe recently returned authorized. Advisory and stale-prone; spawn may still fail. items: $ref: '#/components/schemas/AgentInfo' type: array installed: description: Agents whose binary resolved during the latest best-effort local catalog probe. items: $ref: '#/components/schemas/AgentInfo' type: array supported: description: Agents supported by this daemon build. items: $ref: '#/components/schemas/AgentInfo' type: array required: - supported - installed - authorized type: object ListAutomationRunsResponse: properties: nextCursor: type: string runs: items: $ref: '#/components/schemas/AutomationRunResponse' type: array required: - runs type: object ListAutomationsResponse: properties: automations: items: $ref: '#/components/schemas/AutomationResponse' type: array nextCursor: type: string required: - automations type: object ListCompactSessionUsageResponse: properties: sessions: items: $ref: '#/components/schemas/CompactSessionUsageResponse' type: array required: - sessions type: object ListCuesResponse: properties: cues: items: $ref: '#/components/schemas/CueResponse' type: array required: - cues type: object ListDirsResponse: properties: entries: description: Subdirectories, excluding dotted names. items: $ref: '#/components/schemas/FSEntry' type: array parent: description: Absolute path of the listed directory's parent; equals path at the filesystem root. type: string path: description: Absolute path that was listed. type: string truncated: description: True when the listing hit the entry cap and more subdirectories exist. type: boolean required: - path - parent - entries type: object ListNotificationsResponse: properties: nextCursor: type: string notifications: items: $ref: '#/components/schemas/NotificationResponse' type: array unreadCount: type: integer unresolvedCount: type: integer required: - notifications - unreadCount - unresolvedCount type: object ListPRFilesResponse: properties: commits: items: $ref: '#/components/schemas/WorkspaceCommitSummary' type: array commitsTruncated: description: 'True when older commits were left out of commits: the list keeps the newest 250, and stops at the last commit whose changes fit the daemon''s size cap.' type: boolean files: items: $ref: '#/components/schemas/WorkspaceFileSummary' type: array sessionId: type: string summary: $ref: '#/components/schemas/WorkspaceSummary' truncated: type: boolean required: - sessionId - files - commits - truncated - summary type: object ListProjectsResponse: properties: projects: items: $ref: '#/components/schemas/ProjectSummary' type: array required: - projects type: object ListReportsResponse: properties: reports: items: $ref: '#/components/schemas/ReportResponse' type: array required: - reports type: object ListReviewsResponse: properties: activeReviewers: items: $ref: '#/components/schemas/DomainReviewerSurface' type: array reviewerActivityState: enum: - active - idle - waiting_input - blocked - exited type: string reviewerHandleId: type: string reviewerHarness: type: string reviewerSurface: $ref: '#/components/schemas/DomainReviewerSurface' reviews: items: $ref: '#/components/schemas/PRReviewState' type: array runs: items: $ref: '#/components/schemas/ReviewRun' type: array required: - reviewerHandleId - reviews - runs - activeReviewers type: object ListSessionMemoryResponse: properties: app: $ref: '#/components/schemas/AppMemoryResponse' sessions: items: $ref: '#/components/schemas/SessionMemoryResponse' type: array system: $ref: '#/components/schemas/SystemMemoryResponse' required: - sessions type: object ListSessionPRsResponse: properties: linkedPrs: items: $ref: '#/components/schemas/SessionPRReference' type: array prs: items: $ref: '#/components/schemas/SessionPRSummary' type: array sessionId: type: string required: - sessionId - prs - linkedPrs type: object ListSessionsResponse: properties: sessions: items: $ref: '#/components/schemas/ControllersSessionView' type: array required: - sessions type: object ListShellTerminalsResponse: properties: shellTerminals: items: $ref: '#/components/schemas/ShellTerminalResponse' type: array required: - shellTerminals type: object ListWorkspaceFilesResponse: properties: ahead: type: - "null" - integer behind: type: - "null" - integer commits: items: $ref: '#/components/schemas/WorkspaceCommitSummary' type: array commitsTruncated: description: 'True when older commits were left out of commits: the list keeps the newest 250, and stops at the last commit whose changes fit the daemon''s size cap.' type: boolean compareBaseRef: type: string compareBaseSha: type: string compareMode: enum: - base - head_fallback type: string degraded: type: boolean degradedCode: type: string files: items: $ref: '#/components/schemas/WorkspaceFileSummary' type: array sections: $ref: '#/components/schemas/WorkspaceFileSections' sessionId: type: string summary: $ref: '#/components/schemas/WorkspaceSummary' truncated: type: boolean workspaceVersion: type: string required: - sessionId - workspaceVersion - files - truncated - sections - commits - summary - degraded type: object ListWorkspaceTreeResponse: properties: entries: items: $ref: '#/components/schemas/WorkspaceTreeEntry' type: array path: type: string sessionId: type: string truncated: type: boolean required: - sessionId - path - entries - truncated type: object MarkAllNotificationsReadRequest: properties: ids: description: Acknowledge exactly these notifications. Omit to acknowledge every unread notification; paginating clients should send the ids they actually rendered so later pages stay unread. items: type: string type: array type: object MarkAllNotificationsReadResponse: properties: notifications: description: Deprecated compatibility field. Always empty so mark-all responses stay bounded. items: $ref: '#/components/schemas/NotificationResponse' type: array updatedCount: description: Number of notifications changed from unread to read. format: int64 type: integer required: - notifications - updatedCount type: object MarkNotificationReadRequest: properties: status: description: V1 supports only marking an unread notification read. enum: - read type: string required: - status type: object MemoryPressureResponse: properties: pressureRaw: format: double minimum: 0 type: number pressureSource: enum: - psi - available_pct - memorystatus type: string required: - pressureRaw - pressureSource type: object MergePRRequest: properties: expectedHeadSha: minLength: 40 type: string prUrl: minLength: 1 type: string required: - prUrl - expectedHeadSha type: object MergePRResponse: properties: method: type: string ok: type: boolean prNumber: type: integer required: - ok - prNumber - method type: object MobileDeviceResponse: properties: createdAt: format: date-time type: string deviceName: type: string installId: type: string lastSeenAt: format: date-time type: string live: description: True when the phone's app is open and polling. type: boolean muted: type: boolean notificationsEnabled: description: True when this device has a push token registered. type: boolean platform: enum: - ios - android type: string token: type: string required: - installId - muted - live - notificationsEnabled - createdAt - lastSeenAt type: object MobileDevicesResponse: properties: devices: items: $ref: '#/components/schemas/MobileDeviceResponse' type: array required: - devices type: object MobileEndpoint: properties: host: type: string kind: type: string port: type: integer secure: type: boolean required: - kind - host - port - secure type: object MobileStatusResponse: properties: enabled: type: boolean endpoints: items: $ref: '#/components/schemas/MobileEndpoint' type: array host: type: string hostId: type: string keepAwake: $ref: '#/components/schemas/ControllersKeepAwakeStatus' loopbackOnly: type: boolean password: type: string port: type: integer securePairing: $ref: '#/components/schemas/ControllersSecurePairingStatus' tailscaleHost: type: string tunnel: $ref: '#/components/schemas/MobileTunnelStatus' warning: type: string required: - enabled - loopbackOnly - endpoints - hostId - tunnel - host - tailscaleHost - port - password - warning - securePairing - keepAwake type: object MobileTunnelStatus: properties: hostname: type: string lastError: type: string location: type: string ready: type: boolean running: type: boolean supported: type: boolean required: - supported - running - ready - hostname - location - lastError type: object MuteDeviceRequest: properties: muted: description: True to stop sending push notifications to this device. type: boolean required: - muted type: object NotificationEnvelope: properties: notification: $ref: '#/components/schemas/NotificationResponse' required: - notification type: object NotificationResponse: properties: body: type: string createdAt: format: date-time type: string id: type: string prUrl: type: string projectId: type: string resolvedAt: format: date-time type: - "null" - string sessionId: type: string status: description: Seen state. unread means the user has not opened the notification panel since it arrived. enum: - unread - read type: string target: $ref: '#/components/schemas/NotificationTarget' title: type: string type: enum: - needs_input - ready_to_merge - pr_merged - pr_closed_unmerged - review_completed - review_changes_requested type: string required: - id - sessionId - projectId - prUrl - type - title - body - status - createdAt - target type: object NotificationTarget: properties: kind: enum: - session - pr type: string prUrl: type: string sessionId: type: string required: - kind - sessionId type: object OpenCodexAccountLoginTerminalResponse: properties: operation: $ref: '#/components/schemas/CodexAccountLoginResponse' shellTerminal: $ref: '#/components/schemas/CodexAccountLoginTerminalResponse' required: - operation - shellTerminal type: object OpenShellTerminalRequest: properties: projectId: description: Project whose root the shell starts in. Omitted opens the shell in the daemon data dir. type: string sessionId: description: Agent session the shell is scoped to, so it appears only in that session's tab strip. Omitted makes it a standalone shell. type: string shell: description: 'Windows shell selector: auto, git-bash, pwsh, powershell, cmd, or a custom executable path. Ignored on macOS and Linux.' type: string startOnAttach: description: Start the shell when the requesting client attaches with its terminal grid instead of immediately, so the shell starts at the size that client shows. Only for clients that attach as a sized viewer; omitted starts the shell immediately at the default grid. type: boolean title: description: Tab title for the new shell, for a client that already shows its tab. Trimmed; omitted or empty numbers it after the existing shells (Terminal N). type: string type: object OrchestratorResponse: properties: id: type: string projectId: type: string projectName: type: string required: - id - projectId type: object PRReviewState: properties: latestRun: $ref: '#/components/schemas/ReviewRun' prNumber: type: integer prUrl: type: string previousRun: $ref: '#/components/schemas/ReviewRun' status: enum: - needs_review - running - up_to_date - changes_requested - ineligible type: string targetSha: type: string title: type: string required: - prUrl - prNumber - title - targetSha - status type: object PrepareTaskResponse: properties: ok: type: boolean taskPreparation: type: string required: - ok type: object PreviewServerStatusResponse: properties: configuration: type: string error: type: string logs: items: type: string type: array port: type: integer sessionId: type: string startedAt: format: date-time type: string state: enum: - stopped - starting - ready - stopping - failed type: string targetKind: enum: - app - api type: string url: type: string required: - sessionId - state - logs type: object ProbeAgentResponse: properties: agent: $ref: '#/components/schemas/AgentInfo' installed: type: boolean supported: type: boolean required: - agent - supported - installed type: object Project: properties: agent: type: string config: $ref: '#/components/schemas/ProjectConfig' defaultBranch: type: string folderMissing: type: boolean id: type: string kind: enum: - single_repo - workspace - scratch type: string name: type: string path: type: string repo: type: string workspaceRepos: items: $ref: '#/components/schemas/WorkspaceRepo' type: array required: - id - name - kind - path - repo - defaultBranch - folderMissing type: object ProjectClonePreparationCleanupInput: properties: path: minLength: 1 type: string preparationId: minLength: 1 type: string required: - path - preparationId type: object ProjectConfig: properties: agentConfig: $ref: '#/components/schemas/AgentConfig' agentRules: type: string agentRulesFile: type: string autoReview: type: boolean canonicalRepoURL: type: string containerReap: $ref: '#/components/schemas/ContainerReapConfig' defaultBranch: type: string env: additionalProperties: type: string type: object orchestrator: $ref: '#/components/schemas/RoleOverride' orchestratorRules: type: string postCreate: items: type: string type: array reviewers: items: $ref: '#/components/schemas/DomainReviewerConfig' type: array sessionPrefix: type: string symlinks: items: type: string type: array trackerIntake: $ref: '#/components/schemas/TrackerIntakeConfig' worker: $ref: '#/components/schemas/RoleOverride' workersRequestReview: type: boolean type: object ProjectGetResponse: properties: project: $ref: '#/components/schemas/ProjectOrDegraded' status: enum: - ok - degraded type: string required: - status - project type: object ProjectOrDegraded: oneOf: - $ref: '#/components/schemas/Project' - $ref: '#/components/schemas/DegradedProject' type: object ProjectResponse: properties: project: $ref: '#/components/schemas/Project' required: - project type: object ProjectSummary: properties: folderMissing: type: boolean id: type: string kind: enum: - single_repo - workspace - scratch type: string name: type: string orchestratorAgent: type: string path: type: string resolveError: type: string sessionPrefix: type: string required: - id - name - path - kind - sessionPrefix - folderMissing type: object PromoteQueuedTurnResponse: properties: activityId: type: string providerTurnId: type: string sourceTurnId: type: string required: - sourceTurnId - providerTurnId - activityId type: object PushDeviceEnvelope: properties: device: $ref: '#/components/schemas/PushDeviceResponse' required: - device type: object PushDeviceResponse: properties: createdAt: format: date-time type: string deviceName: type: string lastSeenAt: format: date-time type: string platform: type: string token: type: string required: - createdAt - lastSeenAt type: object PutGitHubPATRequest: properties: expiresIn: type: integer pat: type: string refreshToken: type: string refreshTokenExpiresIn: type: integer required: - pat type: object RegisterPushDeviceRequest: properties: deviceName: description: Human-friendly device label. type: string hostName: description: This phone's label for the host; used in OS push notification titles. type: string installId: description: 'Stable per-install device id, keying the registry so a rotated push token updates the same row. Optional: older app builds omit it and the daemon synthesizes one.' type: string platform: description: Device platform. enum: - ios - android type: string token: description: 'Expo push token, e.g. ExponentPushToken[...]. Optional: omitted when the phone has no push token yet.' type: string type: object ReloadConversationMCPServersResponse: properties: servers: items: $ref: '#/components/schemas/ConversationMCPServerPayload' type: array required: - servers type: object RemoveProjectResult: properties: projectId: type: string removedStorageDir: type: boolean required: - projectId - removedStorageDir type: object RenameSessionRequest: properties: displayName: maxLength: 100 minLength: 1 type: string required: - displayName type: object RenameSessionResponse: properties: displayName: type: string ok: type: boolean sessionId: type: string required: - ok - sessionId - displayName type: object ReorderQueuedConversationTurnsRequest: properties: turnIds: items: type: string type: array required: - turnIds type: object RepoGitStatus: properties: blockingErrors: items: type: string type: array hasCommit: type: boolean hasOrigin: type: boolean isEmptyFolder: type: boolean isRepo: type: boolean needsGitInit: type: boolean repoPath: type: string requiredActions: items: type: string type: array required: - repoPath - isRepo - hasCommit - hasOrigin - isEmptyFolder - needsGitInit - requiredActions - blockingErrors type: object ReportOutputRequest: properties: kind: enum: - artifact - pr_created - pr_reviewed type: string label: type: string reference: minLength: 1 type: string required: - kind - reference type: object ReportOutputResponse: properties: kind: type: string label: type: string reference: type: string required: - kind - reference type: object ReportResponse: properties: createdAt: format: date-time type: string id: type: string message: type: string note: type: string outputs: items: $ref: '#/components/schemas/ReportOutputResponse' type: array projectId: type: string repeatCount: format: int64 type: integer sessionId: type: string state: type: string required: - id - sessionId - projectId - createdAt - repeatCount type: object ResolveCommentsResponse: properties: ok: type: boolean resolved: type: integer required: - ok - resolved type: object ResolveConversationApprovalRequest: properties: decisionId: type: string required: - decisionId type: object ResolveConversationInputRequest: properties: action: enum: - accept - decline - cancel type: string content: additionalProperties: {} type: object required: - action type: object RestoreReviewResponse: properties: reviewerHandleId: type: string reviewerHarness: type: string reviews: items: $ref: '#/components/schemas/PRReviewState' type: array runs: items: $ref: '#/components/schemas/ReviewRun' type: array required: - reviewerHandleId - reviews - runs type: object RestoreSessionResponse: properties: ok: type: boolean restoreMode: enum: - native - saved_prompt - fresh type: string session: $ref: '#/components/schemas/ControllersSessionView' sessionId: type: string required: - ok - sessionId - restoreMode - session type: object ResumeAgentResponse: properties: ok: type: boolean resumeMode: enum: - native - saved_prompt - fresh type: string session: $ref: '#/components/schemas/ControllersSessionView' sessionId: type: string required: - ok - sessionId - resumeMode - session type: object RetryTurnResponse: properties: providerTurnId: type: string state: enum: - queued - running - completed - recovered - interrupted - failed type: string turnId: type: string type: object ReviewRun: properties: autoInjectReview: type: boolean batchId: type: string body: type: string createdAt: format: date-time type: string deliveredAt: format: date-time type: - "null" - string githubReviewId: type: string harness: type: string id: type: string prUrl: type: string reviewId: type: string sessionId: type: string status: type: string targetSha: type: string triggerSource: enum: - manual - agent - auto type: string verdict: type: string required: - id - reviewId - sessionId - batchId - harness - triggerSource - prUrl - targetSha - status - verdict - body - githubReviewId - createdAt - autoInjectReview type: object ReviewRunResponse: properties: review: $ref: '#/components/schemas/ReviewRun' reviewerHandleId: type: string reviews: items: $ref: '#/components/schemas/ReviewRun' type: array required: - review - reviews - reviewerHandleId type: object RoleOverride: properties: agent: type: string agentConfig: $ref: '#/components/schemas/AgentConfig' type: object RollbackConversationResponse: properties: turnsDiscarded: type: integer required: - turnsDiscarded type: object RollbackSessionResponse: properties: deleted: type: boolean killed: type: boolean ok: type: boolean sessionId: type: string required: - ok - sessionId type: object SendConversationMessageRequest: properties: attachments: items: $ref: '#/components/schemas/ConversationImageContentRequest' type: array clientMessageId: type: string resources: items: $ref: '#/components/schemas/ConversationResourceContentRequest' type: array text: type: string required: - text type: object SendConversationMessageResponse: properties: duplicate: type: boolean providerTurnId: type: string state: enum: - queued - running - completed - recovered - interrupted - failed type: string turnId: type: string required: - duplicate type: object SendSessionMessageRequest: properties: attachment: $ref: '#/components/schemas/AttachmentInput' message: maxLength: 4096 minLength: 1 type: string userAuthored: type: boolean required: - message type: object SendSessionMessageResponse: properties: message: type: string ok: type: boolean sessionId: type: string required: - ok - sessionId - message type: object SessionActivityResponse: properties: current: $ref: '#/components/schemas/SessionStepResponse' recent: items: $ref: '#/components/schemas/SessionStepResponse' type: array required: - recent type: object SessionInterfaceTransition: properties: completedAt: format: date-time type: - "null" - string createdAt: format: date-time type: string errorCode: type: string errorDetail: type: string historyPolicy: enum: - strict - provider_history type: string id: type: string noticeAcknowledgedAt: format: date-time type: - "null" - string phase: enum: - requested - preflighting - draining - source_stopping - source_stopped - target_starting - activating - completed - failed - cancelled - recovery_required type: string policy: enum: - drain - interrupt type: string sessionId: type: string sourceMode: enum: - chat - tui type: string targetMode: enum: - chat - tui type: string updatedAt: format: date-time type: string required: - id - sessionId - sourceMode - targetMode - policy - historyPolicy - phase - createdAt - updatedAt type: object SessionInterfaceTransitionStatusResponse: properties: reason: type: string reasonCode: type: string supported: type: boolean targetMode: enum: - chat - tui type: string transition: $ref: '#/components/schemas/SessionInterfaceTransition' required: - supported - targetMode type: object SessionMemoryProcessResponse: properties: command: type: string cpuPercent: description: Share of one core used since the previous sample; zero on the first. format: double minimum: 0 type: number pid: type: integer ppid: type: integer rssBytes: minimum: 0 type: integer required: - pid - ppid - rssBytes - cpuPercent - command type: object SessionMemoryResponse: properties: activity: $ref: '#/components/schemas/SessionActivityResponse' cpuPercent: description: Share of one core the whole tree used since the previous sample; zero on the first. format: double minimum: 0 type: number processCount: minimum: 0 type: integer processes: items: $ref: '#/components/schemas/SessionMemoryProcessResponse' type: array rssBytes: description: Resident set size summed over the runtime process tree. minimum: 0 type: integer sampledAt: format: date-time type: string sessionId: type: string required: - sessionId - rssBytes - processCount - cpuPercent - sampledAt - processes type: object SessionPRCISummary: properties: autoInjectCI: type: boolean failingChecks: items: $ref: '#/components/schemas/SessionPRFailingCheck' type: array state: enum: - unknown - pending - passing - failing type: string required: - state - failingChecks - autoInjectCI type: object SessionPRConflictFile: properties: path: type: string url: type: string required: - path type: object SessionPRFacts: properties: ci: enum: - unknown - pending - passing - failing type: string mergeability: enum: - unknown - mergeable - conflicting - blocked - unstable type: string number: type: integer review: enum: - none - approved - changes_requested - review_required type: string reviewComments: type: boolean state: enum: - draft - open - merged - closed type: string updatedAt: format: date-time type: string url: type: string required: - url - number - state - ci - review - mergeability - reviewComments - updatedAt type: object SessionPRFailingCheck: properties: conclusion: type: string name: type: string status: enum: - failed - cancelled type: string url: type: string required: - name - status - conclusion type: object SessionPRMergeabilitySummary: properties: conflictFiles: items: $ref: '#/components/schemas/SessionPRConflictFile' type: array prUrl: type: string reasons: items: type: string type: array state: enum: - unknown - mergeable - conflicting - blocked - unstable type: string required: - state - reasons - prUrl type: object SessionPRReference: properties: host: type: string number: type: integer provider: enum: - github - gitlab type: string repo: type: string url: type: string required: - url - provider - host - repo - number type: object SessionPRReviewCommentLink: properties: autoInjectReview: type: boolean body: type: string file: type: string line: type: integer reviewId: type: string url: type: string required: - autoInjectReview type: object SessionPRReviewEntry: properties: autoInjectReview: type: boolean body: type: string isBot: type: boolean reviewUrl: type: string reviewerId: type: string submittedAt: format: date-time type: string verdict: enum: - none - approved - changes_requested - review_required type: string required: - reviewerId - verdict - submittedAt - autoInjectReview type: object SessionPRReviewSummary: properties: decision: enum: - none - approved - changes_requested - review_required type: string hasUnresolvedHumanComments: type: boolean resolvedBy: items: $ref: '#/components/schemas/SessionPRUnresolvedReviewer' type: array reviews: items: $ref: '#/components/schemas/SessionPRReviewEntry' type: array unresolvedBy: items: $ref: '#/components/schemas/SessionPRUnresolvedReviewer' type: array unresolvedThreadCount: type: - "null" - integer required: - decision - hasUnresolvedHumanComments - unresolvedBy type: object SessionPRSummary: properties: additions: type: integer author: type: string authorAvatarUrl: type: string changedFiles: type: integer ci: $ref: '#/components/schemas/SessionPRCISummary' ciObservedAt: format: date-time type: string createdAt: format: date-time type: - "null" - string deletions: type: integer headSha: type: string htmlUrl: type: string mergeability: $ref: '#/components/schemas/SessionPRMergeabilitySummary' number: type: integer observedAt: format: date-time type: string provider: enum: - github - gitlab type: string repo: type: string review: $ref: '#/components/schemas/SessionPRReviewSummary' reviewObservedAt: format: date-time type: string sourceBranch: type: string state: enum: - draft - open - merged - closed type: string stateChangedAt: format: date-time type: - "null" - string targetBranch: type: string title: type: string updatedAt: format: date-time type: string url: type: string required: - url - number - title - state - provider - repo - author - sourceBranch - targetBranch - headSha - additions - deletions - changedFiles - ci - review - mergeability - updatedAt type: object SessionPRUnresolvedReviewer: properties: count: type: integer isBot: type: boolean links: items: $ref: '#/components/schemas/SessionPRReviewCommentLink' type: array reviewUrl: type: string reviewerId: type: string required: - reviewerId - count - links type: object SessionPreviewResponse: properties: entry: type: string previewUrl: type: string sessionId: type: string required: - sessionId type: object SessionResponse: properties: session: $ref: '#/components/schemas/ControllersSessionView' required: - session type: object SessionStepResponse: properties: endedAt: description: Absent while the tool is still running. format: date-time type: - "null" - string failed: type: boolean startedAt: format: date-time type: string tool: type: string required: - tool - startedAt - failed type: object SessionUsageResponse: properties: harnesses: items: $ref: '#/components/schemas/UsageHarnessResponse' type: array incomplete: type: boolean sessionId: type: string totals: $ref: '#/components/schemas/UsageTotalsResponse' required: - sessionId - incomplete - totals - harnesses type: object SetActivityRequest: properties: agentSessionId: description: Native agent session identifier used to resume its transcript. type: string conversationCheckpointOrigin: description: Whether the main-turn boundary came from a human or AO coordination. enum: - human - coordination type: string coordinationId: description: Opaque identity of an AO-authored semantic prompt accepted by the native agent. type: string event: description: AO hook sub-command that produced this state (e.g. post-tool-use). type: string latestAssistantUpdate: description: Latest assistant update exposed by the provider hook. maxLength: 16384 type: string latestUserPrompt: description: Latest real user prompt exposed by the provider hook. maxLength: 16384 type: string launchId: description: AO process generation that produced the signal. type: string observedAt: description: Time the local hook process observed the event, before delivery to the daemon. format: date-time type: string providerTurnId: description: Native main-turn identity reported by the hook, when supported. type: string runningSubagentIds: description: Running Claude subagent ids observed in a parent Stop hook; empty means none, absent means no snapshot. items: type: string type: - "null" - array state: description: Agent activity state reported by an agent hook. Optional for metadata-only hooks. enum: - active - idle - waiting_input - blocked - exited type: string subagentId: description: Native child agent id for this hook event. type: string submissionId: description: AO prompt-hook context correlation UUID, when supported. maxLength: 36 type: string toolName: description: Native tool name, for tool-use hook events. type: string toolUseId: description: Native tool-use id, for tool-use hook events. type: string transcriptPath: description: Read-only provider-native transcript path exposed by the hook. maxLength: 4096 type: string usage: $ref: '#/components/schemas/UsageHookMetadata' description: Provider transcript metadata used by the local usage pipeline. type: object SetActivityResponse: properties: ok: type: boolean sessionId: type: string state: type: string required: - ok - sessionId - state type: object SetConversationConfigOptionRequest: properties: enabled: type: - "null" - boolean value: type: string type: object SetConversationTitleRequest: properties: title: type: string required: - title type: object SetConversationTitleResponse: properties: title: type: string required: - title type: object SetProjectConfigInput: properties: config: $ref: '#/components/schemas/ProjectConfig' required: - config type: object SetProjectPermissionsInput: properties: permissions: enum: - default - accept-edits - auto - bypass-permissions type: string sourceHarness: type: string required: - permissions type: object SetReviewActivityRequest: properties: agentSessionId: description: Native reviewer session identifier used to resume its transcript. type: string event: description: AO hook sub-command that produced this signal. type: string launchId: description: AO process generation that produced the signal. type: string state: description: Reviewer activity state reported by a hook. Used for reviewer-pane live status, not worker session state. enum: - active - idle - waiting_input - blocked - exited type: string type: object SetReviewActivityResponse: properties: ok: type: boolean reviewSessionId: type: string required: - ok - reviewSessionId type: object SetSessionAutoInjectCIRequest: properties: autoInjectCI: type: boolean required: - autoInjectCI type: object SetSessionAutoInjectCIResponse: properties: autoInjectCI: type: boolean ok: type: boolean session: $ref: '#/components/schemas/ControllersSessionView' sessionId: type: string required: - ok - sessionId - autoInjectCI - session type: object SetSessionAutoInjectReviewRequest: properties: autoInjectReview: type: boolean required: - autoInjectReview type: object SetSessionAutoInjectReviewResponse: properties: autoInjectReview: type: boolean ok: type: boolean session: $ref: '#/components/schemas/ControllersSessionView' sessionId: type: string required: - ok - sessionId - autoInjectReview - session type: object SetSessionMergePolicyRequest: properties: terminateOnPrMerge: type: boolean required: - terminateOnPrMerge type: object SetSessionMergePolicyResponse: properties: ok: type: boolean session: $ref: '#/components/schemas/ControllersSessionView' sessionId: type: string terminateOnPrMerge: type: boolean required: - ok - sessionId - terminateOnPrMerge - session type: object SetSessionPreviewRequest: properties: requireWorkspaceFile: description: Reject the target unless it resolves to an existing file in the session workspace. type: boolean url: description: Preview target URL. When empty, the daemon autodetects a static entry point in the session workspace. type: string type: object SetSessionReviewerRequest: properties: agentConfig: $ref: '#/components/schemas/AgentConfig' harness: enum: - claude-code - codex - copilot - cursor - kilocode - opencode - opencode-v2 - kiro - pi - agy - devin - droid - kimi - kimchi - muse - amp - aider - grok - crush - auggie - cline - autohand type: string type: object SettingsResponse: properties: chatHarnesses: items: type: string type: array client: type: string cloudControlPlaneUrl: type: string cloudEnabled: type: boolean cloudOffering: type: boolean defaultSessionMode: enum: - chat - tui type: string localEnabled: type: boolean trackerIntakeEnabled: type: boolean required: - defaultSessionMode - chatHarnesses - client - localEnabled - cloudOffering - cloudEnabled - cloudControlPlaneUrl - trackerIntakeEnabled type: object ShellTerminalEnvelope: properties: shellTerminal: $ref: '#/components/schemas/ShellTerminalResponse' required: - shellTerminal type: object ShellTerminalResponse: properties: createdAt: format: date-time type: string handleId: type: string projectId: type: string sessionId: type: string title: type: string workingDir: type: string required: - handleId - workingDir - title - createdAt type: object SpawnOrchestratorRequest: properties: approvalMode: enum: - default - accept-edits - auto - bypass-permissions type: string clean: type: boolean mode: enum: - chat - tui type: string projectId: type: string required: - projectId type: object SpawnOrchestratorResponse: properties: orchestrator: $ref: '#/components/schemas/OrchestratorResponse' required: - orchestrator type: object SpawnSessionRequest: properties: approvalMode: enum: - default - accept-edits - auto - bypass-permissions type: string attachments: items: $ref: '#/components/schemas/AttachmentInput' type: array branch: type: string clientRequestId: maxLength: 128 type: string displayName: maxLength: 100 type: string effort: maxLength: 32 type: string harness: enum: - claude-code - codex - aider - opencode - opencode-v2 - grok - droid - amp - agy - crush - cursor - qwen - gemini - copilot - goose - auggie - continue - devin - cline - kimi - muse - kiro - kilocode - vibe - pi - kimchi - omp - fx - prime-agent - autohand - unreal-agent - mimo-code - deepseek-harness type: string issueId: type: string kind: enum: - worker - orchestrator type: string mode: enum: - chat - tui type: string model: maxLength: 256 type: string parentSessionId: type: string projectId: type: string prompt: maxLength: 16384 type: string trackerProvider: enum: - github - gitlab type: string type: object SpawnSessionResponse: properties: promptBytes: type: integer session: $ref: '#/components/schemas/ControllersSessionView' systemPromptBytes: type: integer required: - session - promptBytes - systemPromptBytes type: object StageSessionAttachmentsRequest: properties: attachments: items: $ref: '#/components/schemas/AttachmentInput' type: array required: - attachments type: object StageSessionAttachmentsResponse: properties: paths: items: type: string type: array sessionId: type: string required: - sessionId - paths type: object StartAgentAuthResponse: properties: action: type: string agentId: type: string guidance: type: string terminal: $ref: '#/components/schemas/ShellTerminalResponse' terminalInput: type: string required: - agentId - action - terminal type: object StartAgentInstallRequest: properties: method: description: Server-issued installation method id. Omit to use the recommended viable method. type: string operation: description: Requested operation. Defaults to install for older clients. enum: - install - reinstall type: string type: object StartCodexAccountSwitchRequest: properties: expectedAccountRevision: deprecated: true minimum: 0 type: - "null" - integer idempotencyKey: minLength: 1 type: string targetAccountId: minLength: 1 type: string required: - targetAccountId - idempotencyKey type: object StartPreviewServerRequest: properties: configuration: description: Named preview configuration. Optional when exactly one configuration exists. type: string type: object StartSessionInterfaceTransitionRequest: properties: historyPolicy: enum: - strict - provider_history type: string policy: enum: - drain - interrupt type: string targetMode: enum: - chat - tui type: string required: - targetMode - policy type: object StartSessionInterfaceTransitionResponse: properties: ok: type: boolean sessionId: type: string transition: $ref: '#/components/schemas/SessionInterfaceTransition' required: - ok - sessionId - transition type: object SteerConversationRequest: properties: attachments: items: $ref: '#/components/schemas/ConversationImageContentRequest' type: array clientMessageId: type: string recoverOnly: type: boolean text: type: string required: - text type: object SteerConversationResponse: properties: activityId: type: string providerTurnId: type: string required: - providerTurnId type: object SteerOrSendConversationResponse: properties: activityId: type: string duplicate: type: boolean outcome: enum: - steered - sent type: string providerTurnId: type: string state: enum: - queued - running - completed - recovered - interrupted - failed type: string turnId: type: string required: - outcome - duplicate type: object SubmitAgentHandoffRequest: properties: handoff: description: Structured, source-agent-authored handoff enrichment. sourceGenerationId: description: Source invocation generation that authored this handoff. type: string required: - sourceGenerationId - handoff type: object SubmitReviewInput: properties: body: description: Review body recorded by AO. Required for changes_requested. type: string githubReviewId: description: Id of the GitHub PR review the reviewer posted, if any. type: string reviews: description: Batched review results recorded by one reviewer CLI command. items: $ref: '#/components/schemas/SubmitReviewItem' type: array runId: description: Review run id being completed. type: string verdict: description: 'Review verdict: approved or changes_requested.' type: string type: object SubmitReviewItem: properties: body: description: Review body recorded by AO. Required for changes_requested. type: string githubReviewId: description: Id of the GitHub PR review the reviewer posted, if any. type: string runId: description: Review run id being completed. type: string verdict: description: 'Review verdict: approved or changes_requested.' type: string required: - runId - verdict type: object SwitchAgentRequest: properties: idempotencyKey: description: Optional retry key. Reusing it with a different request is rejected. maxLength: 128 type: string model: description: Optional model override for the target agent launch or resume. maxLength: 256 type: string targetHarness: description: Agent harness to continue the logical AO session with. enum: - claude-code - codex - fx type: string required: - targetHarness type: object SystemMemoryResponse: properties: availableBytes: description: What the kernel would hand out without swapping (MemAvailable). minimum: 0 type: integer cpuCount: minimum: 0 type: integer cpuMeasured: type: boolean cpuPercent: format: double minimum: 0 type: number load1: format: double type: number pressureRaw: format: double minimum: 0 type: number pressureSource: enum: - psi - available_pct - memorystatus type: string swapBytesPerSec: format: double minimum: 0 type: number swapTotalBytes: minimum: 0 type: integer swapUsedBytes: minimum: 0 type: integer totalBytes: minimum: 0 type: integer required: - totalBytes - availableBytes - swapTotalBytes - swapUsedBytes - swapBytesPerSec - cpuCount - load1 - cpuPercent - cpuMeasured - pressureRaw - pressureSource type: object SystemRequirement: properties: detail: description: 'Extra context: the resolved path when satisfied, or why it is not.' type: string id: description: Stable requirement identifier. enum: - git - tmux - harness - gh - github-auth type: string label: description: Human-readable requirement name. type: string required: description: Whether this requirement blocks the overall Ready state. type: boolean satisfied: description: Whether this requirement is currently met. type: boolean required: - id - label - satisfied - required type: object SystemRequirementsResponse: properties: ready: description: True iff every requirement with Required=true is satisfied. Requirements with Required=false (e.g. gh) are advisory and never block readiness. type: boolean requirements: description: Individual checks in stable order for the selected probe. items: $ref: '#/components/schemas/SystemRequirement' type: array required: - ready - requirements type: object TrackerIntakeConfig: properties: assignee: type: string enabled: type: boolean provider: enum: - github - gitlab type: string repo: type: string type: object TriggerReviewRequest: properties: agentConfig: $ref: '#/components/schemas/AgentConfig' enableAutoInject: description: Turn on the worker session's review auto-inject once a pass has started, so the reviewer's PR review comments reach the worker. type: boolean harness: enum: - claude-code - codex - copilot - cursor - kilocode - opencode - opencode-v2 - kiro - pi - agy - devin - droid - kimi - kimchi - muse - amp - aider - grok - crush - auggie - cline - autohand type: string interfaceMode: enum: - chat - tui type: string prUrl: description: Restrict the pass to this pull request, attaching it to the session first if AO does not track it yet (never from another active session). Omit to review every eligible PR on the session. type: string rejectReviewedHead: description: Return 409 instead of reusing when every open PR head is already being reviewed or already has a review. type: boolean rerun: description: Start a fresh pass for already-reviewed current heads; a different reviewer may run alongside one that is still running. A person's rerun reuses an active pass from the same reviewer; an agent's rerun returns 409 REVIEW_ALREADY_RUNNING instead. type: boolean source: description: 'Who requested the pass: manual (a person, the default) or agent (an AO session through the CLI).' enum: - manual - agent type: string type: object TriggerReviewResponse: properties: autoInjectEnabled: description: True when this request turned the worker session's review auto-inject on. type: boolean created: description: True when a new review pass was started; false when an existing run for the same commit was reused. type: boolean reviewerHandleId: type: string reviewerSurface: $ref: '#/components/schemas/DomainReviewerSurface' reviews: items: $ref: '#/components/schemas/PRReviewState' type: array runs: items: $ref: '#/components/schemas/ReviewRun' type: array required: - reviewerHandleId - reviews - runs - created - autoInjectEnabled type: object UnregisterPushDeviceResponse: properties: deleted: type: boolean token: type: string required: - token - deleted type: object UpdateAutomationRequest: properties: cron: type: - "null" - string displayName: type: - "null" - string enabled: type: - "null" - boolean harness: type: - "null" - string kind: enum: - worker - orchestrator type: - "null" - string prompt: type: - "null" - string rrule: type: - "null" - string timezone: type: - "null" - string type: object UpdateProjectSettingsInput: properties: config: $ref: '#/components/schemas/ProjectConfig' displayName: maxLength: 100 minLength: 1 type: string required: - displayName - config type: object UpdateSessionInterfaceRequest: properties: defaultSessionMode: enum: - chat - tui type: string required: - defaultSessionMode type: object UpdateShellTerminalRequest: properties: title: description: New tab title for the shell terminal. Trimmed; must be non-empty. type: string required: - title type: object UpdateWorkspaceFileRequest: properties: content: type: string expectedFileFingerprint: type: string path: type: string required: - path - content - expectedFileFingerprint type: object UsageHarnessResponse: properties: harness: type: string models: items: $ref: '#/components/schemas/UsageModelResponse' type: array totals: $ref: '#/components/schemas/UsageTotalsResponse' required: - harness - totals - models type: object UsageHookMetadata: properties: harness: enum: - claude-code - codex type: string modelId: type: string providerId: description: Canonical provider routing hint derived by the trusted local Claude hook. type: string subagentId: type: string subagentTranscriptPath: type: string transcriptPath: type: string required: - harness type: object UsageModelResponse: properties: modelId: type: string totals: $ref: '#/components/schemas/UsageTotalsResponse' required: - modelId - totals type: object UsageTotalsResponse: properties: cacheReadTokens: description: Deprecated compatibility alias for cachedInputTokens. minimum: 0 type: - "null" - integer cachedInputTokens: description: Input read from an existing provider cache. Cache hit percentage uses cachedInputTokens divided by inclusive inputTokens. minimum: 0 type: - "null" - integer estimatedCost: anyOf: - type: "null" - $ref: '#/components/schemas/EstimatedCostResponse' type: object inputTokens: description: Total input, including cached and uncached input. minimum: 0 type: - "null" - integer outputTokens: description: Total output, including provider-specific subsets such as reasoning output. minimum: 0 type: - "null" - integer processedTokens: description: Canonical input plus output. Null when either component is unknown. minimum: 0 type: - "null" - integer uncachedInputTokens: description: Input not read from an existing provider cache. Includes cache writes. minimum: 0 type: - "null" - integer required: - inputTokens - cachedInputTokens - uncachedInputTokens - outputTokens - processedTokens - cacheReadTokens - estimatedCost type: object WorkspaceCommitSummary: properties: author: type: string files: items: $ref: '#/components/schemas/WorkspaceFileSummary' type: array sha: type: string subject: type: string timestamp: format: date-time type: string required: - sha - subject - author - timestamp - files type: object WorkspaceDiffDeferredResponse: properties: path: type: string reason: enum: - binary - oversized - generated - long_line - budget_exceeded type: string required: - path - reason type: object WorkspaceDiffErrorResponse: properties: code: type: string message: type: string required: - code - message type: object WorkspaceDiffGroupResponse: properties: deferred: items: $ref: '#/components/schemas/WorkspaceDiffDeferredResponse' type: array errors: items: $ref: '#/components/schemas/WorkspaceDiffErrorResponse' type: array includedPaths: items: type: string type: array patch: type: string repository: type: string truncated: type: boolean required: - patch - truncated - includedPaths - deferred - errors type: object WorkspaceDiffRequest: properties: commitSha: description: Exact commit SHA for a committed-scope comparison. type: string contextLines: maximum: 20 minimum: 0 type: integer ignoreWhitespace: type: boolean paths: items: type: string maxItems: 100 minItems: 1 type: array scope: enum: - combined - committed - staged - unstaged - untracked type: string workspaceVersion: type: string required: - scope - paths - contextLines - ignoreWhitespace type: object WorkspaceDiffsResponse: properties: groups: items: $ref: '#/components/schemas/WorkspaceDiffGroupResponse' type: array sessionId: type: string workspaceVersion: type: string required: - sessionId - workspaceVersion - groups type: object WorkspaceFileResponse: properties: additions: type: integer binary: type: boolean compareBaseRef: type: string compareBaseSha: type: string compareMode: enum: - base - head_fallback type: string content: type: string contentTruncated: type: boolean deleted: type: boolean deletions: type: integer diff: type: string diffTruncated: type: boolean editable: type: boolean fileFingerprint: type: string imageMediaType: type: string path: type: string previousPath: type: string sessionId: type: string size: format: int64 type: integer status: enum: - unmodified - modified - added - deleted - renamed type: string workspaceVersion: type: string required: - sessionId - path - status - additions - deletions - size - binary - deleted - editable - content - contentTruncated - diff - diffTruncated - workspaceVersion - fileFingerprint type: object WorkspaceFileRevisionResponse: properties: binary: type: boolean content: type: string encoding: type: string exists: type: boolean mediaType: type: string path: type: string revision: type: string sessionId: type: string side: enum: - before - after type: string size: format: int64 type: integer truncated: type: boolean workspaceVersion: type: string required: - sessionId - path - side - workspaceVersion - size - exists - binary - truncated - content type: object WorkspaceFileSearchResponse: properties: nextCursor: type: string query: type: string results: items: $ref: '#/components/schemas/WorkspaceFileSearchResultResponse' type: array sessionId: type: string truncated: type: boolean required: - sessionId - query - results - truncated type: object WorkspaceFileSearchResultResponse: properties: binary: type: boolean fileFingerprint: type: string path: type: string size: format: int64 type: integer status: enum: - unmodified - modified - added - deleted - renamed type: string required: - path - status - size - binary - fileFingerprint type: object WorkspaceFileSections: properties: committed: items: $ref: '#/components/schemas/WorkspaceFileSummary' type: array staged: items: $ref: '#/components/schemas/WorkspaceFileSummary' type: array unstaged: items: $ref: '#/components/schemas/WorkspaceFileSummary' type: array untracked: items: $ref: '#/components/schemas/WorkspaceFileSummary' type: array required: - staged - unstaged - untracked - committed type: object WorkspaceFileSummary: properties: additions: type: integer binary: type: boolean deletions: type: integer editable: type: boolean fileFingerprint: type: string path: type: string previousPath: type: string size: format: int64 type: integer status: enum: - unmodified - modified - added - deleted - renamed type: string required: - path - status - additions - deletions - size - binary - editable - fileFingerprint type: object WorkspaceHistoryResponse: properties: ahead: type: - "null" - integer behind: type: - "null" - integer commits: items: $ref: '#/components/schemas/WorkspaceCommitSummary' type: array commitsTruncated: type: boolean sessionId: type: string required: - sessionId - commits type: object WorkspaceManifestResponse: properties: compareBaseRef: type: string compareBaseSha: type: string compareMode: enum: - base - head_fallback type: string degraded: type: boolean degradedCode: type: string files: items: $ref: '#/components/schemas/WorkspaceFileSummary' type: array refreshing: type: boolean sections: $ref: '#/components/schemas/WorkspaceFileSections' sessionId: type: string stale: type: boolean summary: $ref: '#/components/schemas/WorkspaceSummary' truncated: type: boolean workspaceVersion: type: string required: - sessionId - workspaceVersion - files - sections - summary - truncated - stale - refreshing - degraded type: object WorkspaceRepo: properties: gitStatus: type: string name: type: string relativePath: type: string repo: type: string required: - name - relativePath - repo type: object WorkspaceSummary: properties: additions: type: integer deletions: type: integer files: type: integer required: - files - additions - deletions type: object WorkspaceTreeEntry: properties: binary: type: boolean hasChanges: type: boolean name: type: string path: type: string size: format: int64 type: integer status: enum: - unmodified - modified - added - deleted - renamed type: string type: enum: - file - dir type: string required: - name - path - type type: object tags: - description: Supported and locally runnable agent adapters name: agents - description: Project registry, configuration, and lifecycle administration name: projects - description: Agent session lifecycle and messaging name: sessions - description: Recurring daemon-owned session schedules and durable run history name: automations - description: Pull-request actions (SCM lane) name: prs - description: Code-review runs and findings name: reviews - description: Durable dashboard notifications name: notifications - description: Durable worker reports name: reports - description: Token usage telemetry for AO sessions name: usage - description: Mobile push-device registration for OS push notifications name: push - description: Server-sent CDC event stream with durable replay name: events - description: Legacy AO project import (availability probe and run) name: import - description: Developer-only maintenance operations name: dev - description: Connect Mobile LAN bridge control (loopback/desktop only) name: mobile - description: Target-isolated desktop browser runtime (loopback only) name: browser - description: Read-only filesystem browsing for remote clients name: fs - description: Local machine readiness checks the desktop app runs before showing the board name: system - description: Server-side unfurl of external links for the CSP-locked renderer name: link-preview - description: Local GitHub personal access token storage and repository listing name: github