/** * This file was auto-generated by openapi-typescript. * Do not make direct changes to the file. */ export interface paths { "/terminals/{terminal_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Upgrade to interactive pseudo-terminal session * @description WebSocket upgrade endpoint for an interactive terminal. Authenticated by the same bearer token and origin policy as other daemon routes. * Binary frames carry raw terminal PTY bytes. Text frames are JSON objects for control commands: * {type:"ping"}, {type:"input",data:...}, {type:"resize",cols:...,rows:...}, {type:"signal",signal:"SIGINT"|"SIGTERM"|...}, {type:"restart",cols:...,rows:...}. * Server sends {type:"ready",id,cwd,shell,cols,rows,state,exit_code} on attach, binary frames for terminal output (including initial scrollback history), * {type:"exit",exit_code} when the shell process exits, and {type:"pong"} keepalives. */ get: operations["attachTerminal"]; put?: never; post?: never; /** * Explicitly close an interactive pseudo-terminal session * @description Terminates the pseudo-terminal process group and releases its resources. */ delete: operations["closeTerminal"]; options?: never; head?: never; patch?: never; trace?: never; }; "/events": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Upgrade to multiplexed live session events * @description WebSocket upgrade endpoint, authenticated by the same bearer token and origin * policy as other daemon routes. A socket owns at most 64 keyed follows. * Client text frames are JSON objects: {key,type:"session",session_id,tail:0, * after_generation?,after_seq?}, {key,type:"sessions",scope:"roots"}, * {key,type:"stop"}, or {type:"ping"}. Keys contain 1 to 128 UTF-8 bytes. * Session replay and tail validation match GET /sessions/{session_id} SSE. * Subscribing an existing key replaces that follow. after_seq accepts an * integer or its decimal string; tail defaults to 100 and is at most 200. * Server text frames are {key,batch:}: session batches * carry generation,cursor,events and optional snapshot; collection batches * carry events. A successful send acknowledges its session cursor. A follow * ending (including stop, deletion, failure or overflow) sends {key,end:true}. * Invalid commands and admission refusals send {key,failure:{code,detail}}; * malformed commands without a usable key use an empty key. Session failures * and collection overflow retain their SSE batch before the end frame. * Ping replies and 15-second keepalives are {type:"pong"}. Commands are at * most 4096 UTF-8 bytes; response frames are at most 1 MiB. Unsubscribe and * socket closure release watches. Clients reconnect a follow with its last * fully consumed cursor. Existing SSE routes remain available. */ get: operations["getEvents"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/server": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read daemon identity and capabilities * @description No startup or replacement. Authentication and protocol failures remain actionable errors. Pagination is valid only with include=quota_history. */ get: operations["getServer"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/server/shutdown": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Drain the identified daemon * @description No automatic recovery or replay. The local launcher alone may offer replacement. */ post: operations["shutdownServer"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/settings": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read shared settings or one canonical group * @description Without group, return Settings and observed group validators. With group, return that group only; the ETag covers that representation. */ get: operations["getSettings"]; put?: never; post?: never; delete?: never; options?: never; head?: never; /** * Atomically edit one settings group * @description Query group selects its corresponding schema. Omitted fields keep values. Null removes only nullable fields or map entries. Candidate validation precedes the complete group commit. No lost-response retry. */ patch: operations["patchSettings"]; trace?: never; }; "/storage": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read storage accounting * @description Each section has its own continuation. Totals cover complete storage. Paths never authorize local mutation. Requires capability `storage_report: 1`. */ get: operations["getStorage"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Browse sessions or watch collection changes * @description JSON defaults to roots, or all with parent/family. Parent and family are exclusive. Explicit roots with either is invalid. SSE accepts the same scope filters, excluding sort/limit/next; no cursor or replay. Subscribe, wait for ready, then read pages. Closure or overflow repeats this flow. */ get: operations["listSessions"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read or watch one session * @description JSON defaults to complete Session. Configuration and status JSON exclude tail and replay parameters. SSE accepts tail and after_generation/after_seq, without view. Initial subscription omits both cursors; reconnect keeps the fully consumed pair. A missing generation requests reset. after_generation without after_seq is invalid. Neither auth failure nor closure starts a daemon. */ get: operations["getSession"]; /** * Create a new, forked or child session * @description Session ID must be UUIDv7. If-None-Match:* is required. Retain the identity and submitted intent after response loss. An existing resource returns 412; GET creation.submitted proves original intent. Child membership and task admission commit together. */ put: operations["createSession"]; post?: never; /** * Delete a leaf or captured subtree * @description Leaf requires idle and no children. Subtree requires the session's observed family revision and gates new children, interrupts captured members and deletes deepest first. Partial outcomes are explicit. Refresh before confirming a new attempt; never automatically replay after transport loss. */ delete: operations["deleteSession"]; options?: never; head?: never; /** * Edit configuration or move workspace * @description Use the observed configuration URL and validator. Workspace is a standalone change carrying the observed session family revision. Busy target fails before commit; busy descendants follow a committed parent move at idle. Other configuration fields commit together. No automatic lost-response retry. */ patch: operations["patchSession"]; trace?: never; }; "/sessions/{session_id}/visits/{visit_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; /** * Count one deliberate opening * @description Visit ID is UUIDv7. Same identity increments once; reads and refreshes never count. */ put: operations["recordVisit"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/inputs/{input_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read a durable input outcome * @description Available after session deletion. Accepted is not consumed or answered. Retain pending and unfinished-turn identities; terminal decisions last seven days. Unknown old UUIDv7 returns 410, never a fresh admission. */ get: operations["getInput"]; /** * Admit immutable identified input * @description Input ID is UUIDv7. Duplicate lookup precedes mutable validation and returns the original admission status with current delivery. Queue-full rejection remains rejected. No If-None-Match. Preserve the exact intent and identity while recovering an uncertain response. */ put: operations["putInput"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/inputs/{input_id}/cancel": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Cancel or interrupt only this input * @description Never interrupts a later unrelated turn. shared_running leaves a shared turn running; retry only inspects or acts on this same input. */ post: operations["cancelInput"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/interrupt": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Interrupt a captured run and waiting prefix * @description Capture run_id and through_input_order from the installed session. Retry cannot interrupt a later run or cancel newer inputs. */ post: operations["interruptSession"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/active-output/{content_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read unfinished output at a captured snapshot cutoff * @description Pages contain at most 262144 UTF-8 bytes and remain within the captured cutoff. Preserve the required snapshot query when following next. */ get: operations["getActiveOutputContent"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/history": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Page history or fork checkpoints * @description Use only one of before/after/next. Durable positions are independent of actor replay. Pages are ascending and preserve complete display groups where bounded. */ get: operations["getHistory"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/history/content": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read several entries' full content in one walk * @description The same parts and byte offsets as the single-entry route, for up to 200 entries, in the order `entries` names them. Follow next until null, repeating entries. One page stays inside the common encoded response bound, so a page whose entries are mostly references costs one request per byte budget instead of one request per entry. */ get: operations["getHistoryContentBatch"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/history/{entry_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read full content in bounded pieces * @description Follow next until null. UTF-8 pieces end at character boundaries. Reconstruct stored content, not shortened previews. Image fields are not paged here; their references name the image resource. */ get: operations["getHistoryContent"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/history/{entry_id}/{field}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read one image field as its own bytes * @description Image references in history point here. The body is the stored image itself, not base64, and is never content-coded. */ get: operations["getHistoryImage"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/context": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Inspect prepared context or request records * @description Summary never prepares a request. Section requires snapshot_id, section_id, page and forbids request-pagination fields. Requests accepts after/since_ms/limit/next. Stale snapshot is 410 context_changed, never another section. Requires capability `context: 1`. */ get: operations["getContext"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/catalog": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Discover candidates, loaded commands and pages * @description Discovery and loaded composition are separate. Reads do not reload. Continuation identifies its section; candidate revision guards discovery-based selection. Requires capability `catalog: 1`. */ get: operations["getCatalog"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/context-window": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read the window this session compacts against * @description The session's own window outranks the model's. Reads do not prepare a request, so the answer is available while the prepared context is pending. Requires capability `context: 1`. */ get: operations["getContextWindow"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/files": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read a text file in the session's workspace * @description Reads on the machine the workspace is on: the daemon for a local workspace, the host through one SSH gather for a remote one. A missing file, a directory or another non-regular file answers 404 `file_not_found`; an unknown session answers 404 like other session routes. A remote host that is not ready answers 503 `workspace_unavailable`, a failed gather 502. Requires capability `file_reading: 1`. */ get: operations["getSessionFile"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/reload": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Reload composition, models or both * @description Session reload requires idle. Both targets return separate outcomes, preserving confirmed success when the other fails. Lost-response replay is not automatic. */ post: operations["reloadSession"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/kernel/upgrade": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Explicitly upgrade an idle kernel * @description Stage and validate before swap. Report external jobs stopped during an unsuccessful upgrade; do not claim them restored. No automatic retry. */ post: operations["upgradeKernel"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/compaction": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Compact model context while retaining history * @description Idle required. Selecting a strategy can succeed even if compaction later fails; report both. Full durable history stays intact. No automatic retry. */ post: operations["compactSession"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/sessions/{session_id}/rewind": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Cut a session back to before a user message and keep the removed tail as an archived session * @description Idle required. The checkpoint must be a user message from the checkpoint view. The session keeps every row before it, and the full prior conversation is copied first into a new archived session. The session actor stops, so attached streams reconnect and reset. Python namespace and files on disk are not rewound. A requested summary is made before anything changes, so a failed summary leaves the session untouched. Requires capability `history_rewind: 1`. */ post: operations["rewindSession"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/models": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read provider model metadata * @description In catalogue view, exactly one of provider_profile/provider is required. Endpoint is allowed only with provider. Unknown facts are null. A manual unlisted ID remains usable. Optional model returns one metadata row, including cap_key, for an unlisted manual ID; unknown facts stay null. */ get: operations["listModels"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/workspaces": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Browse recent locations or a directory * @description Without location return recent workspaces. include=preview requires location. Paths resolve on the daemon host; cached host state does not perform SSH sign-in. Requires capability `workspace_browsing: 1`. */ get: operations["getWorkspaces"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/hosts": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read known SSH hosts and cached state * @description Requires capability `host_probes: 1`. */ get: operations["listHosts"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/hosts/{host}/probe": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Start or join a host probe * @description Coalesce repeated probes. Authentication remains an explicit operator handoff; no background SSH sign-in. Requires capability `host_probes: 1`. */ post: operations["probeHost"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/auth": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read login choices and redacted accounts * @description Requires capability `provider_auth: 1`. */ get: operations["getAuth"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/auth/logins/{login_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Inspect a provider login * @description No credential or submitted form echo. Terminal records remain fifteen minutes; unfinished flows expire at their provider deadline. Requires capability `provider_auth: 1`. */ get: operations["getLogin"]; /** * Start or recover an identified provider login * @description UUIDv7 identity. Compare immutable private intent inside the daemon. Duplicate returns existing flow, never another browser/exchange. Restart turns unfinished flows into retained daemon_restarted failures; a new flow needs a new ID. Requires capability `provider_auth: 1`. */ put: operations["createLogin"]; post?: never; /** * Cancel a login idempotently * @description Cancellation stops only this flow; completed accounts remain saved. No If-Match is needed for identity-scoped cancellation. Requires capability `provider_auth: 1`. */ delete: operations["cancelLogin"]; options?: never; head?: never; /** * Supply manual callback or code * @description Requires capability `provider_auth: 1`. */ patch: operations["answerLogin"]; trace?: never; }; "/auth/accounts/{account_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; post?: never; /** * Remove an unreferenced provider account * @description Reject if a profile pins it by `account_id`, if it is the last account of a profile's `account_ids`, or if it comes from the environment (`account_external`). Otherwise it also leaves every `account_ids` list naming it. Does not interrupt captured credentials in an active request. Account IDs are never reused. Requires capability `provider_auth: 1`. */ delete: operations["deleteAccount"]; options?: never; head?: never; /** * Rename a saved provider account * @description Environment accounts cannot be renamed (`account_external`). Requires capability `provider_auth: 1`. */ patch: operations["patchAccount"]; trace?: never; }; "/auth/keys/{account_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; /** * Save an API key as a provider account * @description The client chooses the account id (a UUIDv7). Replaying the same request returns the account; different content at a used id is `409 conflict`. Requires capability `provider_auth: 1`. */ put: operations["putKeyAccount"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/work/items": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List work resources * @description Requires enabled extension work. Lists may include bounded page descriptors and glances. */ get: operations["listWork"]; put?: never; /** * Create a work resource * @description No automatic lost-response retry. Notification outcome does not undo a committed domain edit. */ post: operations["createWork"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/work/items/{item_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Read one work resource */ get: operations["getWork"]; put?: never; post?: never; /** * Delete a work resource * @description Committed deletion remains successful if notification fails. Work items with children cannot be deleted. */ delete: operations["deleteWork"]; options?: never; head?: never; /** * Edit a work resource * @description Use the displayed item validator. Reject readonly/unknown fields. No automatic lost-response retry. */ patch: operations["patchWork"]; trace?: never; }; "/extensions/artifacts/items": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List artifacts, newest change first * @description Requires enabled extension artifacts. Artifacts outlive their session; `session_deleted` marks one whose session is gone. */ get: operations["listArtifacts"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/artifacts/items/{artifact_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Read one artifact with its versions */ get: operations["getArtifact"]; put?: never; post?: never; /** Delete an artifact and every version of it */ delete: operations["deleteArtifact"]; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/artifacts/frame/{frame}/{version}/{path}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Serve one file of one artifact version * @description `albedo web` forwards `/frame/...` here; see robot-docs/artifacts.md. A wrong key answers 404. `path` may contain `/`; one ending in `/` serves its index.html, and an empty one the entry of that version. Under `latest` files are `no-cache` and the bridge is told to follow; the files of a numbered version are immutable. */ get: operations["getArtifactFile"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/artifacts/frame/{frame}/{version}/.albedo/state": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** Save the page's localStorage */ post: operations["saveArtifactState"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/artifacts/frame/{frame}/{version}/.albedo/errors": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** Record a failure in the page */ post: operations["reportArtifactError"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/artifacts/frame/{frame}/{version}/.albedo/version": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Wait for a newer version of an artifact * @description What a page open on `latest/` in a tab of its own asks to know when to reload. With `after`, the daemon holds the answer until the latest version passes it or about 25 seconds pass; without, it answers at once. The version in the path only has to exist. */ get: operations["getArtifactLatestVersion"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/paperclips/items": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List paperclips resources * @description Requires enabled extension paperclips. Lists may include bounded page descriptors and glances. */ get: operations["listPaperclips"]; put?: never; /** * Create a paperclips resource * @description No automatic lost-response retry. Notification outcome does not undo a committed domain edit. */ post: operations["createPaperclips"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/paperclips/items/{item_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Read one paperclips resource */ get: operations["getPaperclips"]; put?: never; post?: never; /** * Delete a paperclips resource * @description Committed deletion remains successful if notification fails. Work items with children cannot be deleted. */ delete: operations["deletePaperclips"]; options?: never; head?: never; /** * Edit a paperclips resource * @description Use the displayed item validator. Reject readonly/unknown fields. No automatic lost-response retry. */ patch: operations["patchPaperclips"]; trace?: never; }; "/extensions/web-search/providers": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List web search providers in the order a search tries them * @description Requires enabled extension web-search. The global order lives in extensions.json. */ get: operations["listWebSearchProviders"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/web-search/providers/{name}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Move a web search provider up or down, or turn it on or off * @description A move past either end leaves the order as it was. */ post: operations["changeWebSearchProvider"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/schedule/jobs": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List schedule resources * @description Requires enabled extension schedule. Lists may include bounded page descriptors and glances. */ get: operations["listSchedule"]; put?: never; /** * Create a schedule resource * @description No automatic lost-response retry. Notification outcome does not undo a committed domain edit. */ post: operations["createSchedule"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/schedule/jobs/{job_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Read one schedule resource */ get: operations["getSchedule"]; put?: never; post?: never; /** * Delete a schedule resource * @description Committed deletion remains successful if notification fails. Work items with children cannot be deleted. */ delete: operations["deleteSchedule"]; options?: never; head?: never; /** * Edit a schedule resource * @description Use the displayed item validator. Reject readonly/unknown fields. No automatic lost-response retry. */ patch: operations["patchSchedule"]; trace?: never; }; "/extensions/links/groups": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read linked membership and presence * @description Only configuration view has the canonical membership ETag. Presence does not change that validator. */ get: operations["getLinkGroup"]; put?: never; /** * Merge two observed workspace groups * @description Check both observed validators in one owner commit. Human-only; domain commit and notifications are separate. No automatic lost-response retry. */ post: operations["mergeLinkGroups"]; /** * Remove a member from the observed group * @description Check membership at commit. Creates a singleton group; deletes no work or memory. Human-only. */ delete: operations["unlinkWorkspace"]; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/webhooks/hooks": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** List hooks without secrets */ get: operations["listHooks"]; put?: never; /** * Create a hook and disclose its secret once * @description Default enabled=true, signature_header=X-Albedo-Signature and signature_prefix=sha256=. Missing secret generates one. Lost secret requires explicit rotation; never retry creation automatically. */ post: operations["createHook"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/webhooks/hooks/{hook_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read hook state or canonical configuration * @description ETag is present only on configuration view. Ordinary read exposes the configuration resource and validator plus runtime observations. */ get: operations["getHook"]; put?: never; post?: never; /** Delete a hook while retaining accepted deliveries */ delete: operations["deleteHook"]; options?: never; head?: never; /** * Edit the observed hook configuration * @description Target session and secret are not writable. Agent callers need that session permission; HTTP bearer clients are operators. */ patch: operations["patchHook"]; trace?: never; }; "/extensions/webhooks/hooks/{hook_id}/secret": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Rotate and disclose the hook secret once * @description If-Match is the observed hook configuration validator. Missing secret generates one. No automatic retry after a lost response. */ post: operations["rotateHookSecret"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/webhooks/hooks/{hook_id}/deliveries": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read accepted hook delivery metadata * @description Historical reads remain available after hook deletion while retained deliveries exist. */ get: operations["listHookDeliveries"]; put?: never; /** * Accept signed external data durably * @description Authenticate configured HMAC-SHA256 over the exact raw body. A daemon bearer is not a substitute. Signature header name and prefix come from hook configuration. Same event ID and body returns original admission; changed body conflicts. Pending inbox limit 1000. Raw body maximum 65536 bytes. */ post: operations["deliverWebhook"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/webhooks/deliveries/{delivery_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Read an accepted delivery payload */ get: operations["getDelivery"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/webhooks/permissions/{session_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read agent hook-management permission * @description Absent stored permission reads false with its initial canonical validator. */ get: operations["getHookPermission"]; put?: never; post?: never; delete?: never; options?: never; head?: never; /** * Set agent hook-management permission * @description Only operator callers can grant permission. Omission retains it; turning off management keeps existing hooks enabled. */ patch: operations["patchHookPermission"]; trace?: never; }; "/extensions/discord/bots": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** List Discord bots of every session without tokens */ get: operations["listDiscordBots"]; put?: never; /** * Create the Discord bot of a session * @description One bot per session (409 bot_exists). The token must have three dot-separated parts and is never returned. */ post: operations["createDiscordBot"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/discord/bots/{bot_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Read a Discord bot and its live state */ get: operations["getDiscordBot"]; put?: never; post?: never; /** Delete a Discord bot and its channel and DM settings */ delete: operations["deleteDiscordBot"]; options?: never; head?: never; /** * Edit a Discord bot at an observed revision * @description A token or enabled change restarts or stops the bot process. A stale revision is 412 precondition_failed. */ patch: operations["patchDiscordBot"]; trace?: never; }; "/extensions/discord/bots/{bot_id}/guilds": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List the servers and channels the bot can see, with their delivery * @description Read live from the bot process; 503 bot_offline when the bot is not online. */ get: operations["listDiscordGuilds"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/discord/bots/{bot_id}/channels/{channel_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; /** * Set how a channel reaches the session * @description Delivery off removes the channel; threads follow their parent channel. */ put: operations["putDiscordChannel"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/discord/bots/{bot_id}/dms": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Read the DM allow list and pending requests */ get: operations["getDiscordDMs"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/discord/bots/{bot_id}/dms/{user_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; /** * Allow a person to DM the session * @description A null name is resolved from Discord when the bot is online. Allowing removes a pending request. */ put: operations["putDiscordDM"]; post?: never; /** * Remove a person from the DM allow list * @description The owner cannot be removed (400). */ delete: operations["deleteDiscordDM"]; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/discord/bots/{bot_id}/requests/{user_id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; post?: never; /** Dismiss a pending DM request */ delete: operations["deleteDiscordRequest"]; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/proxy/v1/models": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List saved-profile OpenAI model IDs * @description External OpenAI envelope. Bearer required unless operator explicitly configured anonymous loopback access. */ get: operations["listProxyModels"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/proxy/v1/chat/completions": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Run a stateless OpenAI chat completion * @description Caller supplies full history. Tool IDs carry opaque provider state and must be echoed exactly. Bearer required unless anonymous loopback policy explicitly enabled. Providers apply only representable generation options; proxy transport documentation defines these differences. No automatic replay after request admission. */ post: operations["createProxyCompletion"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/run/sessions/{session_id}/jobs": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Read bounded live job observations and the jobs page */ get: operations["listJobs"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/run/sessions/{session_id}/jobs/recent": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read the kernel's jobs, running and finished * @description What the session's kernel still knows of the jobs its run tool started, newest first, with up to 100 rows. Finished jobs stay for as long as the kernel keeps their output (its 64 newest). A session with no kernel has none. */ get: operations["listRecentJobs"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/run/sessions/{session_id}/jobs/{job_id}/output": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read a page of one job's output * @description Pages are byte ranges cut on character boundaries, so a reader that continues from `next_offset` loses none of what the job wrote; a running job's last character waits for the page after it. Without `offset` the page is the end of the output. Reading never counts as the model reading the job's result. */ get: operations["readJobOutput"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/extensions/run/sessions/{session_id}/jobs/{job_id}/stop": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Explicitly stop one observed process group * @description No automatic retry after response loss. Read the job collection before confirming another attempt. A successful response confirms the supervisor verdict, not just signal delivery. */ post: operations["stopJob"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; } export type webhooks = Record; export interface components { schemas: { /** @description The interactive terminal session was closed and its process group ended. */ TerminalClose: { closed: components["schemas"]["ID"]; }; /** @description Opaque identity. Never infer a resource type or route from its contents. */ ID: string; /** * Format: uuid * @description Client-generated lowercase UUIDv7. Retained decisions are checked before timestamp expiry. */ UUIDv7: string; /** @description 128 random bits encoded as unpadded base64url; new for each session actor lifetime. */ Generation: string; Counter: number; /** * Format: date-time * @description UTC RFC 3339. */ Timestamp: string; /** @description Opaque continuation, tied to the query and representation; never authority. */ PageToken: string; /** @description Strong opaque validator for the complete canonical representation. */ ETag: string; /** @description Daemon-relative URL, including any representation query. No foreign origin or fragment. */ ResourceURL: string; /** @description Canonical daemon-host location, local or SSH. Clients do not resolve this path locally. */ Workspace: string; SafeReason: { code: string; detail: string; }; Warnings: components["schemas"]["SafeReason"][]; /** @description Explicit domain payload: tool arguments, tool results, provider-private state, or extension data. JSON values of any type are allowed; no core resource uses this as its envelope. */ DynamicJSON: unknown; /** * @example { * "type": "about:blank", * "title": "Queue full", * "status": 429, * "detail": "This session already has 32 waiting inputs.", * "code": "queue_full", * "decision": { * "kind": "input", * "input": { * "id": "01a0fcea-2b00-7000-8000-000000000002", * "session_id": "01a0fcea-2b00-7000-8000-000000000001", * "kind": "message", * "admission": "rejected", * "http_status": 429, * "problem": { * "type": "about:blank", * "title": "Queue full", * "status": 429, * "detail": "This session already has 32 waiting inputs.", * "code": "queue_full" * }, * "accepted_at": null, * "acceptance_order": null, * "delivery": null, * "blocking_reason": null, * "transcript_position": null, * "turn": null, * "client_id": "draft-1" * } * } * } */ Problem: { /** @constant */ type: "about:blank"; title: string; status: number; detail: string; code: string; fields?: { pointer: string; detail: string; }[]; decision?: components["schemas"]["CreationDecision"] | components["schemas"]["InputDecision"]; }; EmptyRequest: Record; Cursor: { generation: components["schemas"]["Generation"]; sequence: components["schemas"]["Counter"]; }; ResourceValidator: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; }; Notification: { /** @enum {string} */ state: "not_requested" | "queued" | "failed"; code: string | null; detail: string | null; }; TargetNotification: { session_id: components["schemas"]["ID"]; notification: components["schemas"]["Notification"]; }; QuotaObservation: { sequence: components["schemas"]["Counter"]; provider: components["schemas"]["ID"]; account_id: components["schemas"]["ID"]; limit_id: string; label: string; plan: string | null; used_percent: number | null; window_label: string | null; window_seconds: components["schemas"]["Counter"] | null; resets_at: components["schemas"]["Timestamp"] | null; scope: string | null; status: string; source: string; error: components["schemas"]["SafeReason"] | null; observed_at: components["schemas"]["Timestamp"]; }; QuotaPage: { items: components["schemas"]["QuotaObservation"][]; next: components["schemas"]["PageToken"] | null; }; /** * @example { * "instance_id": "instance-1", * "protocol": 3, * "state": "ready", * "capabilities": { * "durable_inputs": 1, * "session_replay": 1, * "collection_invalidation": 1, * "tool_progress": 1, * "storage_report": 1 * }, * "build": "example-build", * "digest": null, * "extensions": [ * { * "name": "work", * "version": 1 * } * ], * "quota": null, * "notices": [] * } */ Server: { instance_id: components["schemas"]["ID"]; /** @constant */ protocol: 3; /** @enum {string} */ state: "ready" | "draining"; capabilities: { [key: string]: number; }; build: string | null; /** @description Content digest of the running code tree; update information, not attachment compatibility. */ digest: string | null; extensions: { name: components["schemas"]["ID"]; version: number; }[]; quota: components["schemas"]["QuotaObservation"][] | null; notices: { id: components["schemas"]["ID"]; /** @enum {string} */ kind: "info" | "warning" | "migration"; message: string; }[]; quota_history?: components["schemas"]["QuotaPage"]; }; ShutdownRequest: { instance_id: components["schemas"]["ID"]; /** @default 5000 */ timeout_ms: number; /** * @description End every Python kernel this daemon holds instead of leaving them running for the next daemon to attach to. Sessions save their variables first, as when they go idle; running jobs end. * @default false */ stop_kernels: boolean; }; Shutdown: { instance_id: components["schemas"]["ID"]; /** @constant */ state: "draining"; }; ProviderProfile: { extension: components["schemas"]["ID"]; /** @description Bedrock API mode. Null or omission means messages; replay protocol is unchanged. */ api?: ("messages" | "converse") | null; endpoint: string | null; /** @enum {string} */ protocol: "responses" | "chat_completions"; model: components["schemas"]["ID"]; effort: string | null; image_edge: number | null; account_id: components["schemas"]["ID"] | null; /** @description Accounts this profile rotates between after a limit, by id. Null when it does not rotate. Exclusive with `account_id`; with neither, a profile uses one account (its saved key, the environment key, or the provider's selected or first account) and never switches. */ account_ids: components["schemas"]["ID"][] | null; project: string | null; location: string | null; has_key: boolean; }; /** @description Partial existing profile; extension and model required when creating a new map entry. */ ProviderProfilePatch: { extension?: components["schemas"]["ID"]; /** * @description Bedrock API mode. Omission preserves an existing value; new and legacy profiles without a value use messages; converse selects streaming Converse. * @enum {string} */ api?: "messages" | "converse"; endpoint?: string | null; /** @enum {string} */ protocol?: "responses" | "chat_completions"; model?: components["schemas"]["ID"]; effort?: string | null; image_edge?: number | null; account_id?: components["schemas"]["ID"] | null; /** @description Accounts this profile rotates between after a limit, by id. Null when it does not rotate. Exclusive with `account_id`; with neither, a profile uses one account (its saved key, the environment key, or the provider's selected or first account) and never switches. */ account_ids?: components["schemas"]["ID"][] | null; project?: string | null; location?: string | null; api_key?: string | null; }; ProviderSettings: { default_profile: components["schemas"]["ID"] | null; profiles: { [key: string]: components["schemas"]["ProviderProfile"]; }; }; /** * @description Removing the selected profile requires replacing or clearing default_profile in this same patch. * @example { * "default_profile": "personal", * "profiles": { * "personal": { * "extension": "openai", * "endpoint": "https://provider.example/v1", * "protocol": "responses", * "model": "example-model", * "effort": null, * "image_edge": null, * "account_id": null, * "project": null, * "location": null, * "api_key": "synthetic-example-key" * } * } * } */ ProviderSettingsPatch: { default_profile?: components["schemas"]["ID"] | null; profiles?: { [key: string]: components["schemas"]["ProviderProfilePatch"] | null; }; /** @description Existing profile names mapped to new ones, applied before profiles, which then use the new names. The saved key, default_profile and every session on the old name follow. An unknown old name is 409 unknown_profile; a new name another profile already has is 409 profile_exists. */ renames?: { [key: string]: components["schemas"]["ID"]; }; }; /** @description For env, value is a daemon-host environment variable name. */ ValueSource: { /** @enum {string} */ source: "literal" | "env"; value: string; }; SecretPresence: { bearer_token: boolean; environment: string[]; headers: string[]; }; MCPDefinition: { enabled: boolean; /** @enum {string} */ transport: "stdio" | "http"; command: string | null; arguments: string[]; cwd: components["schemas"]["Workspace"] | null; url: string | null; environment: { [key: string]: components["schemas"]["ValueSource"]; }; headers: { [key: string]: components["schemas"]["ValueSource"]; }; bearer_token_env_var: string | null; enabled_tools: string[] | null; disabled_tools: string[]; startup_timeout_ms: number; call_timeout_ms: number; secret_presence: components["schemas"]["SecretPresence"]; }; MCPSecretsPatch: { bearer_token?: string | null; environment?: { [key: string]: string | null; }; headers?: { [key: string]: string | null; }; }; /** @description Partial merge patch. Public and secret sources cannot overlap. HTTP and stdio fields are validated against transport on the complete candidate. Public environment/header entries accept null removal; a null whole map clears it. Switching credential sources removes the former source in the same patch. */ MCPDefinitionPatch: { enabled?: boolean; /** @enum {string} */ transport?: "stdio" | "http"; command?: string | null; arguments?: string[]; cwd?: components["schemas"]["Workspace"] | null; url?: string | null; environment?: { [key: string]: components["schemas"]["ValueSource"] | null; } | null; headers?: { [key: string]: components["schemas"]["ValueSource"] | null; } | null; bearer_token_env_var?: string | null; enabled_tools?: string[] | null; disabled_tools?: string[]; startup_timeout_ms?: number; call_timeout_ms?: number; secrets?: components["schemas"]["MCPSecretsPatch"]; }; MCPSettings: { definitions: { [key: string]: components["schemas"]["MCPDefinition"]; }; }; /** * @description Validate candidate connections before atomic commit unless explicitly disabled. * @example { * "validate_connection": true, * "definitions": { * "example": { * "enabled": true, * "transport": "http", * "url": "https://tools.example/mcp", * "secrets": { * "bearer_token": "synthetic-example-token" * } * } * } * } */ MCPSettingsPatch: { definitions?: { [key: string]: components["schemas"]["MCPDefinitionPatch"] | null; }; /** @default true */ validate_connection: boolean; }; ExtensionSettings: { defaults: { [key: string]: boolean; }; }; ExtensionSettingsPatch: { defaults?: { [key: string]: boolean | null; }; }; CapabilitySettings: { preferences: { [key: string]: boolean; }; }; /** @description Resolve candidate IDs to stable preference keys under the observed catalog revision. */ CapabilitySettingsPatch: { catalog_session_id: components["schemas"]["ID"]; catalog_revision: components["schemas"]["ID"]; choices: { [key: string]: boolean | null; }; }; CachePrior: { provider: components["schemas"]["ID"]; model: components["schemas"]["ID"] | null; ttl_seconds: number | null; source: string; }; ModelSettings: { raised_caps: { [key: string]: boolean; }; compact_at?: { [key: string]: number; }; cache_ttl_priors: components["schemas"]["CachePrior"][]; }; /** @description Keys are cap_key values from model metadata. For raised_caps, true raises to the advertised maximum; false uses the ordinary limit; null clears the choice. A missing choice defaults to false. For compact_at, a token count is the window every session on that model compacts against, as long as it is below the model's window; null clears it. Only raised_caps and compact_at are writable. */ ModelSettingsPatch: { raised_caps?: { [key: string]: boolean | null; }; compact_at?: { [key: string]: number | null; }; }; UISettings: { thinking: boolean; tools: boolean; dismissed_notices: components["schemas"]["ID"][]; /** @description Networks `albedo web` serves to besides this machine, as CIDR or an address whose trailing zero octets stand for any (10.0.0.0 is 10.0.0.0/8). */ web_allow?: string[]; }; UISettingsPatch: { thinking?: boolean; tools?: boolean; dismissed_notices?: components["schemas"]["ID"][]; /** @description Networks `albedo web` serves to besides this machine, as CIDR or an address whose trailing zero octets stand for any (10.0.0.0 is 10.0.0.0/8). */ web_allow?: string[]; }; DeclaredSetting: { /** @description The key in the section of extensions.json. */ key: string; label: string; description: string; /** * @description integer takes a whole number from minimum to maximum; text takes a non-empty string of at most 4096 bytes; limit takes a whole number from minimum to maximum, or -1 for no limit. * @enum {string} */ kind: "integer" | "text" | "limit"; /** @description What the section's owner uses while nothing is saved. Null when leaving the setting unset has a meaning of its own, which the description gives. */ default: number | string | null; /** @description The smallest integer accepted; null for text. */ minimum: number | null; /** @description The largest integer accepted; null for text. */ maximum: number | null; /** @description The saved value, or null when nothing is saved and the default applies. A saved value of the wrong kind reads as null, and the section's problem names it. */ value: number | string | null; }; DeclaredSettingsSection: { /** @description The section's key in extensions.json. The daemon's own sections take names no extension may have; every other section is named after the extension that declares it. */ name: components["schemas"]["ID"]; /** @description What the section configures, for a reader who does not know who declares it. */ label: string; /** * @description The part of /config the section belongs to. web_search is what web_search asks and where; context is how a session's context is kept within its window; agents is how many agents a session may spawn and how deep; models_and_caching is the model catalog and prompt cache warming; tools is what the agent drives or reaches, such as MCP servers, remote kernels and the desktop. * @enum {string} */ category: "web_search" | "context" | "agents" | "models_and_caching" | "tools"; description: string; fields: components["schemas"]["DeclaredSetting"][]; /** @description Why the section's owner cannot use its saved section, when it cannot. */ problem: string | null; }; DeclaredSettings: { /** @description The daemon's own sections, then the sections installed extensions declare, in registry order. */ sections: components["schemas"]["DeclaredSettingsSection"][]; }; DeclaredSettingsPatch: { /** @description Section name to declared key to value. A value replaces the saved one; null removes it so the default applies. Unknown sections, undeclared keys, values outside the declaration, and a section its owner's own check rejects are refused, and nothing is saved. */ values: { [key: string]: { [key: string]: number | string | null; }; }; }; ProviderSettingsResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["ProviderSettings"]; }; MCPSettingsResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["MCPSettings"]; }; ExtensionSettingsResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["ExtensionSettings"]; }; DeclaredSettingsResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["DeclaredSettings"]; }; CapabilitySettingsResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["CapabilitySettings"]; }; ModelSettingsResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["ModelSettings"]; }; UISettingsResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["UISettings"]; }; Settings: { providers: components["schemas"]["ProviderSettings"]; mcp: components["schemas"]["MCPSettings"]; extensions: components["schemas"]["ExtensionSettings"]; extension_settings: components["schemas"]["DeclaredSettings"]; capabilities: components["schemas"]["CapabilitySettings"]; models: components["schemas"]["ModelSettings"]; ui: components["schemas"]["UISettings"]; group_resources: { providers: components["schemas"]["ResourceValidator"]; mcp: components["schemas"]["ResourceValidator"]; extensions: components["schemas"]["ResourceValidator"]; extension_settings: components["schemas"]["ResourceValidator"]; capabilities: components["schemas"]["ResourceValidator"]; models: components["schemas"]["ResourceValidator"]; ui: components["schemas"]["ResourceValidator"]; }; }; SettingsRead: components["schemas"]["Settings"] | components["schemas"]["ProviderSettings"] | components["schemas"]["MCPSettings"] | components["schemas"]["ExtensionSettings"] | components["schemas"]["DeclaredSettings"] | components["schemas"]["CapabilitySettings"] | components["schemas"]["ModelSettings"] | components["schemas"]["UISettings"]; /** @description The group query selects the one applicable patch schema. It is an error to send fields for another group. */ SettingsPatch: components["schemas"]["ProviderSettingsPatch"] | components["schemas"]["MCPSettingsPatch"] | components["schemas"]["ExtensionSettingsPatch"] | components["schemas"]["DeclaredSettingsPatch"] | components["schemas"]["CapabilitySettingsPatch"] | components["schemas"]["ModelSettingsPatch"] | components["schemas"]["UISettingsPatch"]; SettingsApplication: { desired_revision: components["schemas"]["ID"]; active_service_revision: components["schemas"]["ID"] | null; /** @description Whether this save changed the desired composition, so loaded sessions need a reload to apply it. Always false for providers, extension_settings, models and ui. A concurrent save to another composition group can make it true. GET /sessions?needs_reload=true lists the sessions. */ composition_changed: boolean; /** @enum {string} */ validation: "passed" | "skipped" | "not_applicable"; warnings: components["schemas"]["Warnings"]; }; ProviderSettingsChange: { /** @constant */ group: "providers"; resource: components["schemas"]["ProviderSettingsResource"]; application: components["schemas"]["SettingsApplication"]; }; MCPSettingsChange: { /** @constant */ group: "mcp"; resource: components["schemas"]["MCPSettingsResource"]; application: components["schemas"]["SettingsApplication"]; }; ExtensionSettingsChange: { /** @constant */ group: "extensions"; resource: components["schemas"]["ExtensionSettingsResource"]; application: components["schemas"]["SettingsApplication"]; }; DeclaredSettingsChange: { /** @constant */ group: "extension_settings"; resource: components["schemas"]["DeclaredSettingsResource"]; application: components["schemas"]["SettingsApplication"]; }; CapabilitySettingsChange: { /** @constant */ group: "capabilities"; resource: components["schemas"]["CapabilitySettingsResource"]; application: components["schemas"]["SettingsApplication"]; }; ModelSettingsChange: { /** @constant */ group: "models"; resource: components["schemas"]["ModelSettingsResource"]; application: components["schemas"]["SettingsApplication"]; }; UISettingsChange: { /** @constant */ group: "ui"; resource: components["schemas"]["UISettingsResource"]; application: components["schemas"]["SettingsApplication"]; }; SettingsChange: components["schemas"]["ProviderSettingsChange"] | components["schemas"]["MCPSettingsChange"] | components["schemas"]["ExtensionSettingsChange"] | components["schemas"]["DeclaredSettingsChange"] | components["schemas"]["CapabilitySettingsChange"] | components["schemas"]["ModelSettingsChange"] | components["schemas"]["UISettingsChange"]; StorageSession: { id: components["schemas"]["ID"]; title: string; workspace: components["schemas"]["Workspace"]; created_at: components["schemas"]["Timestamp"] | null; activity_at: components["schemas"]["Timestamp"] | null; estimated_content_bytes: components["schemas"]["Counter"]; }; StorageFile: { path: string; /** @enum {string} */ category: "kernel" | "backup" | "other"; bytes: components["schemas"]["Counter"]; modified_at: components["schemas"]["Timestamp"] | null; cleanup_candidate: boolean; cleanup_reason: string | null; }; StorageSessionPage: { items: components["schemas"]["StorageSession"][]; next: components["schemas"]["PageToken"] | null; total_count: components["schemas"]["Counter"]; total_estimated_content_bytes: components["schemas"]["Counter"]; }; StorageFilePage: { items: components["schemas"]["StorageFile"][]; next: components["schemas"]["PageToken"] | null; totals: { kernel_bytes: components["schemas"]["Counter"]; backup_bytes: components["schemas"]["Counter"]; other_bytes: components["schemas"]["Counter"]; recent_backup_bytes: components["schemas"]["Counter"]; recent_backup_count: components["schemas"]["Counter"]; }; }; /** * @example { * "database": { * "main_file_bytes": 8192, * "wal_bytes": 0, * "page_size_bytes": 4096, * "page_count": 2, * "free_page_count": 0, * "used_bytes": 8192 * }, * "sessions": { * "items": [], * "next": null, * "total_count": 0, * "total_estimated_content_bytes": 0 * }, * "images": { * "count": 0, * "bytes": 0 * }, * "files": { * "items": [], * "next": null, * "totals": { * "kernel_bytes": 0, * "backup_bytes": 0, * "other_bytes": 0, * "recent_backup_bytes": 0, * "recent_backup_count": 0 * } * }, * "measured_at": "2026-10-02T14:00:00Z" * } */ StorageReport: { database: { main_file_bytes: components["schemas"]["Counter"]; wal_bytes: components["schemas"]["Counter"]; page_size_bytes: components["schemas"]["Counter"]; page_count: components["schemas"]["Counter"]; free_page_count: components["schemas"]["Counter"]; used_bytes: components["schemas"]["Counter"]; }; sessions: components["schemas"]["StorageSessionPage"]; images: { count: components["schemas"]["Counter"]; bytes: components["schemas"]["Counter"]; }; files: components["schemas"]["StorageFilePage"]; measured_at: components["schemas"]["Timestamp"]; }; SessionStatus: { /** @enum {string} */ phase: "idle" | "preparing" | "generating" | "running" | "interrupting" | "compacting"; run_id: components["schemas"]["ID"] | null; interrupt_requested: boolean; blocking_reason: components["schemas"]["SafeReason"] | null; }; Preview: { text: string; transcript_count: components["schemas"]["Counter"]; truncated: boolean; }; SessionPreferences: { pinned: boolean; pin_order: components["schemas"]["Counter"] | null; archived: boolean; opens: components["schemas"]["Counter"]; }; PreferencePatch: { pinned?: boolean; archived?: boolean; /** @description Moves the session among the pinned, before this pinned session, or last when null. The session must be pinned, in this patch or already. Fails with 409 `pin_target_invalid` when the target is not pinned, and 400 `pin_move_unpinned` when the session is not. Only this session is renumbered when a number is free between its new neighbours; otherwise the fewest neighbours shift in the same commit and are named in the collection stream's `invalidate` event. A shift changes their ETag, not their revision, so a change already admitted against them still commits. */ pin_before?: components["schemas"]["ID"] | null; }; ProgressPreview: { offset_scalars: components["schemas"]["Counter"]; text: string; }; /** * @example { * "call_id": "progress-1", * "tool_call_id": null, * "name": "python", * "phase": "generating", * "intent": "unknown", * "title": "find which go files label python cells", * "preview": { * "offset_scalars": 0, * "text": "print(\"hello\")" * } * } */ ToolProgress: { call_id: components["schemas"]["ID"]; tool_call_id: string | null; name: string; /** @enum {string} */ phase: "generating" | "running"; /** @enum {string} */ intent: "read" | "search" | "list" | "run" | "unknown"; title?: string | null; preview?: components["schemas"]["ProgressPreview"]; }; AgentRequest: { input_id: components["schemas"]["ID"]; text: string; }; Activity: { lines: { /** @enum {string} */ kind: "assistant" | "thinking" | "tool" | "input" | "note" | "error"; text: string; }[]; output_scalars: components["schemas"]["Counter"]; output_utf8_bytes: components["schemas"]["Counter"]; observed_at: components["schemas"]["Timestamp"]; latest_input: { input_id: components["schemas"]["ID"]; /** @enum {string} */ source: "chat" | "agent" | "system"; bytes: components["schemas"]["Counter"]; } | null; current_request?: components["schemas"]["AgentRequest"] | null; latest_progress?: string | null; latest_answer: { message_id: components["schemas"]["ID"]; bytes: components["schemas"]["Counter"]; } | null; }; /** @description Parsed workspace and daemon-resolved display label. Reading this metadata does not connect to the remote host. */ SessionLocation: { host: string | null; user: string | null; path: string; label: string | null; }; /** @description Live fields and cursor are captured together. Extra response fields may be ignored. */ SessionSummary: { id: components["schemas"]["ID"]; name: string; automatic_name: string; location: components["schemas"]["SessionLocation"]; workspace: components["schemas"]["Workspace"]; parent_id: components["schemas"]["ID"] | null; root_id: components["schemas"]["ID"]; role: string; started_by: components["schemas"]["ID"] | null; address: string | null; depth: number; closed: boolean; created_at: components["schemas"]["Timestamp"] | null; activity_at: components["schemas"]["Timestamp"] | null; provider_profile: components["schemas"]["ID"] | null; model: components["schemas"]["ID"] | null; effort: string | null; status: components["schemas"]["SessionStatus"]; preview: components["schemas"]["Preview"]; preferences: components["schemas"]["SessionPreferences"]; current_progress: components["schemas"]["ToolProgress"][]; activity: components["schemas"]["Activity"]; cursor: components["schemas"]["Cursor"] | null; }; /** * @example { * "items": [ * { * "id": "01a0fcea-2b00-7000-8000-000000000001", * "name": "New session", * "automatic_name": "New session", * "workspace": "/workspace/project", * "location": { * "host": null, * "user": null, * "path": "/workspace/project", * "label": null * }, * "parent_id": null, * "root_id": "01a0fcea-2b00-7000-8000-000000000001", * "address": null, * "depth": 0, * "closed": false, * "created_at": "2026-10-02T14:00:00Z", * "activity_at": "2026-10-02T14:00:00Z", * "provider_profile": "personal", * "model": "example-model", * "effort": null, * "status": { * "phase": "idle", * "run_id": null, * "interrupt_requested": false, * "blocking_reason": null * }, * "preview": { * "text": "", * "transcript_count": 0, * "truncated": false * }, * "preferences": { * "pinned": false, * "pin_order": null, * "archived": false, * "opens": 0 * }, * "current_progress": [], * "active_output": [], * "activity": { * "lines": [], * "output_scalars": 0, * "output_utf8_bytes": 0, * "observed_at": "2026-10-02T14:00:00Z", * "latest_input": null, * "latest_answer": null * }, * "cursor": { * "generation": "J6kYj6IGcXyP3eMIp-WL3A", * "sequence": 0 * } * } * ], * "next": null * } */ SessionPage: { items: components["schemas"]["SessionSummary"][]; next: components["schemas"]["PageToken"] | null; family?: { root_id: components["schemas"]["ID"]; revision: components["schemas"]["ID"]; }; }; SelectionOverrides: { extensions: { [key: string]: boolean | null; }; skills: { [key: string]: boolean | null; }; instructions: { [key: string]: boolean | null; }; mcp: { [key: string]: boolean | null; }; }; /** @description Null map entry clears that override. Null entire map clears all overrides of that kind. */ SelectionPatch: { extensions?: { [key: string]: boolean | null; } | null; skills?: { [key: string]: boolean | null; } | null; instructions?: { [key: string]: boolean | null; } | null; mcp?: { [key: string]: boolean | null; } | null; }; SessionSelection: { overrides: components["schemas"]["SelectionOverrides"]; effective: { extensions: { [key: string]: boolean; }; skills: { [key: string]: boolean; }; instructions: { [key: string]: boolean; }; mcp: { [key: string]: boolean; }; }; }; /** * @example { * "id": "01a0fcea-2b00-7000-8000-000000000001", * "name": null, * "workspace": "/workspace/project", * "provider_profile": "personal", * "model": "example-model", * "effort": null, * "preferences": { * "pinned": false, * "pin_order": null, * "archived": false * }, * "selection": { * "extensions": {}, * "skills": {}, * "instructions": {}, * "mcp": {} * }, * "revision": "config-1" * } */ SessionConfiguration: { id: components["schemas"]["ID"]; /** @description Explicit name. Null shows the automatic title for a root, or the family name for a child; the session representation carries the displayed name. */ name: string | null; workspace: components["schemas"]["Workspace"]; provider_profile: components["schemas"]["ID"] | null; model: components["schemas"]["ID"] | null; effort: string | null; /** @description Tokens this session compacts against instead of the model's catalogued window. Null uses the model's window. */ context_window?: number | null; preferences: { pinned: boolean; pin_order: components["schemas"]["Counter"] | null; archived: boolean; }; selection: components["schemas"]["SelectionOverrides"]; revision: components["schemas"]["ID"]; }; SessionConfigurationResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["SessionConfiguration"]; }; /** * @description Skill and instruction changes require catalog_revision. All fields validate and commit together. * @example { * "selection": { * "extensions": { * "browser": null * }, * "skills": { * "candidate-1": false * } * }, * "catalog_revision": "discovery-1" * } */ SessionPatch: { name?: string | null; provider_profile?: components["schemas"]["ID"]; model?: components["schemas"]["ID"]; effort?: string | null; /** @description Tokens this session compacts against instead of the model's catalogued window. Null uses the model's window. */ context_window?: number | null; preferences?: components["schemas"]["PreferencePatch"]; selection?: components["schemas"]["SelectionPatch"]; catalog_revision?: components["schemas"]["ID"]; }; /** * @example { * "workspace": "/workspace/other-project", * "family_revision": "family-1" * } */ WorkspaceMoveRequest: { workspace: components["schemas"]["Workspace"]; family_revision: components["schemas"]["ID"]; }; SessionChangeRequest: components["schemas"]["SessionPatch"] | components["schemas"]["WorkspaceMoveRequest"]; /** * @example { * "kind": "new", * "workspace": "/workspace/project" * } */ NewSessionRequest: { /** @constant */ kind: "new"; workspace: components["schemas"]["Workspace"]; name?: string | null; provider_profile?: components["schemas"]["ID"] | null; model?: components["schemas"]["ID"] | null; effort?: string | null; /** @description Tokens this session compacts against instead of the model's catalogued window. Null uses the model's window. */ context_window?: number | null; }; NewSessionIntent: { /** @constant */ kind: "new"; workspace: components["schemas"]["Workspace"]; name: string | null; provider_profile: components["schemas"]["ID"] | null; model: components["schemas"]["ID"] | null; effort: string | null; /** @description Tokens this session compacts against instead of the model's catalogued window. Null uses the model's window. */ context_window?: number | null; }; ForkSessionRequest: { /** @constant */ kind: "fork"; source_session_id: components["schemas"]["ID"]; checkpoint_id: components["schemas"]["ID"]; name?: string | null; }; ForkSessionIntent: { /** @constant */ kind: "fork"; source_session_id: components["schemas"]["ID"]; checkpoint_id: components["schemas"]["ID"]; name: string | null; }; ChildSessionRequest: { /** @constant */ kind: "child"; parent_id: components["schemas"]["ID"]; address: string; name: string; initial_input_id: components["schemas"]["UUIDv7"]; task: string; model?: components["schemas"]["ID"] | null; effort?: string | null; }; ChildSessionIntent: { /** @constant */ kind: "child"; parent_id: components["schemas"]["ID"]; address: string; name: string; initial_input_id: components["schemas"]["UUIDv7"]; task: string; model: components["schemas"]["ID"] | null; effort: string | null; }; SessionCreationRequest: components["schemas"]["NewSessionRequest"] | components["schemas"]["ForkSessionRequest"] | components["schemas"]["ChildSessionRequest"]; Creation: { submitted: components["schemas"]["NewSessionIntent"] | components["schemas"]["ForkSessionIntent"] | components["schemas"]["ChildSessionIntent"]; resolved: { workspace: components["schemas"]["Workspace"]; provider_profile: components["schemas"]["ID"] | null; model: components["schemas"]["ID"] | null; effort: string | null; }; }; CreationDecision: { /** @constant */ kind: "creation"; session_id: components["schemas"]["ID"]; /** @enum {string} */ admission: "accepted" | "rejected"; http_status: number; creation: components["schemas"]["Creation"] | null; decided_at: components["schemas"]["Timestamp"] | null; deleted_at: components["schemas"]["Timestamp"] | null; }; WorkspaceChange: { desired: components["schemas"]["Workspace"]; active: components["schemas"]["Workspace"]; /** @enum {string} */ state: "deferred" | "applying"; revision: components["schemas"]["ID"]; }; QuarantineDiagnostic: { id: components["schemas"]["ID"]; reason: components["schemas"]["SafeReason"]; }; Composition: { desired_revision: components["schemas"]["ID"]; loaded_revision: components["schemas"]["ID"] | null; needs_reload: boolean; dependencies: { [key: string]: components["schemas"]["ID"][]; }; quarantine: components["schemas"]["QuarantineDiagnostic"][]; availability: { [key: string]: boolean; }; }; /** * @example { * "items": [], * "live_job_count": 0, * "page": { * "title": "jobs", * "empty_state": "no background jobs running", * "rows": [], * "glance": null, * "actions": [], * "summary": "0 background jobs running" * } * } */ JobCollection: { items: components["schemas"]["KernelJob"][]; live_job_count: components["schemas"]["Counter"]; page: components["schemas"]["PageDescriptor"]; }; JobRecord: { id: components["schemas"]["ID"]; command: string; /** @enum {string} */ state: "running" | "exited"; exit_code: number | null; timed_out: boolean; /** @description Started to keep running, so nothing waits on its end. */ service: boolean; /** @description Wall-clock milliseconds since the epoch. */ started_at: components["schemas"]["Counter"]; ended_at: components["schemas"]["Counter"] | null; /** @description Everything the job has written, kept or not. */ bytes: components["schemas"]["Counter"]; }; JobRecordCollection: { items: components["schemas"]["JobRecord"][]; }; JobOutputPage: { job: components["schemas"]["JobRecord"]; /** @description Byte the page starts at. */ offset: components["schemas"]["Counter"]; /** @description Byte to continue from; equal to `offset` when there is nothing more yet. */ next_offset: components["schemas"]["Counter"]; text: string; }; /** * @example { * "stopped": "job-1" * } */ JobStop: { stopped: components["schemas"]["ID"]; }; KernelJob: { id: components["schemas"]["ID"]; pid: components["schemas"]["Counter"] | null; command: string; /** @description Wall-clock milliseconds since the epoch when the owner recorded the job. Zero when unknown, which clients treat as settled work. */ started_at: components["schemas"]["Counter"]; }; Kernel: { /** @enum {string} */ state: "none" | "booting" | "attached" | "reattaching" | "lost"; stage: ("staging" | "starting") | null; build: string | null; stale: boolean; staleness_reasons: components["schemas"]["SafeReason"][]; /** @description Up to 100 observed live jobs, ordered by ID. Null when the kernel owner is unavailable. The count may exceed this list. */ running_jobs: components["schemas"]["KernelJob"][] | null; /** @description Observed owned jobs. Null while booting or when the kernel owner is lost. */ live_job_count: components["schemas"]["Counter"] | null; instance_id: components["schemas"]["ID"] | null; }; Usage: { model: components["schemas"]["ID"] | null; observed_at: components["schemas"]["Timestamp"] | null; prompt_tokens: components["schemas"]["Counter"] | null; cached_prompt_tokens: components["schemas"]["Counter"] | null; cache_write_tokens: components["schemas"]["Counter"] | null; completion_tokens: components["schemas"]["Counter"] | null; total_tokens: components["schemas"]["Counter"] | null; elapsed_ms: number | null; tokens_per_second: number | null; context_window_tokens: components["schemas"]["Counter"] | null; cache_ttl_seconds: components["schemas"]["Counter"] | null; cache_miss_tokens?: components["schemas"]["Counter"] | null; cache_drift_tokens?: components["schemas"]["Counter"] | null; cache_fade: { at: components["schemas"]["Timestamp"]; cached_tokens: components["schemas"]["Counter"] | null; }[]; }; PendingInput: { id: components["schemas"]["ID"]; /** @enum {string} */ kind: "message" | "continue" | "skill" | "command"; preview: components["schemas"]["Preview"]; accepted_at: components["schemas"]["Timestamp"]; acceptance_order: components["schemas"]["Counter"]; /** @constant */ delivery: "pending"; blocking_reason: components["schemas"]["SafeReason"] | null; }; Glance: { extension: components["schemas"]["ID"]; title: string; rows: components["schemas"]["PageRow"][]; url: components["schemas"]["ResourceURL"]; data?: components["schemas"]["DynamicJSON"]; }; /** * @example { * "id": "01a0fcea-2b00-7000-8000-000000000001", * "name": "New session", * "automatic_name": "New session", * "workspace": "/workspace/project", * "location": { * "host": null, * "user": null, * "path": "/workspace/project", * "label": null * }, * "parent_id": null, * "root_id": "01a0fcea-2b00-7000-8000-000000000001", * "address": null, * "depth": 0, * "closed": false, * "created_at": "2026-10-02T14:00:00Z", * "activity_at": "2026-10-02T14:00:00Z", * "provider_profile": "personal", * "model": "example-model", * "effort": null, * "status": { * "phase": "idle", * "run_id": null, * "interrupt_requested": false, * "blocking_reason": null * }, * "preview": { * "text": "", * "transcript_count": 0, * "truncated": false * }, * "preferences": { * "pinned": false, * "pin_order": null, * "archived": false, * "opens": 0 * }, * "current_progress": [], * "active_output": [], * "activity": { * "lines": [], * "output_scalars": 0, * "output_utf8_bytes": 0, * "observed_at": "2026-10-02T14:00:00Z", * "latest_input": null, * "latest_answer": null * }, * "cursor": { * "generation": "J6kYj6IGcXyP3eMIp-WL3A", * "sequence": 0 * }, * "creation": { * "submitted": { * "kind": "new", * "workspace": "/workspace/project", * "name": null, * "provider_profile": null, * "model": null, * "effort": null * }, * "resolved": { * "workspace": "/workspace/project", * "provider_profile": "personal", * "model": "example-model", * "effort": null * } * }, * "revision": "config-1", * "family_revision": "family-1", * "configuration_resource": { * "url": "/sessions/01a0fcea-2b00-7000-8000-000000000001?view=configuration", * "etag": "\"session-config-1\"", * "value": { * "id": "01a0fcea-2b00-7000-8000-000000000001", * "name": "New session", * "workspace": "/workspace/project", * "provider_profile": "personal", * "model": "example-model", * "effort": null, * "preferences": { * "pinned": false, * "pin_order": null, * "archived": false * }, * "selection": { * "extensions": {}, * "skills": {}, * "instructions": {}, * "mcp": {} * }, * "revision": "config-1" * } * }, * "workspace_change": null, * "selection": { * "overrides": { * "extensions": {}, * "skills": {}, * "instructions": {}, * "mcp": {} * }, * "effective": { * "extensions": {}, * "skills": {}, * "instructions": {}, * "mcp": {} * } * }, * "composition": { * "desired_revision": "composition-1", * "loaded_revision": null, * "needs_reload": true, * "dependencies": {}, * "quarantine": [], * "availability": {} * }, * "kernel": { * "instance_id": null, * "state": "none", * "stage": null, * "build": null, * "stale": false, * "staleness_reasons": [], * "live_job_count": 0, * "running_jobs": [] * }, * "pending_inputs": [], * "input_order": 0, * "usage": { * "model": null, * "observed_at": null, * "prompt_tokens": null, * "cached_prompt_tokens": null, * "cache_write_tokens": null, * "completion_tokens": null, * "total_tokens": null, * "elapsed_ms": null, * "tokens_per_second": null, * "context_window_tokens": null, * "cache_ttl_seconds": null, * "cache_fade": [] * }, * "history": { * "items": [], * "older": null, * "newer": null, * "high_water": 0 * }, * "glances": [] * } */ Session: components["schemas"]["SessionSummary"] & { /** @description Null only for stored sessions that predate immutable creation provenance. All newly admitted creations have provenance. */ creation: components["schemas"]["Creation"] | null; revision: components["schemas"]["ID"]; family_revision: components["schemas"]["ID"]; configuration_resource: components["schemas"]["SessionConfigurationResource"]; workspace_change: components["schemas"]["WorkspaceChange"] | null; selection: components["schemas"]["SessionSelection"]; composition: components["schemas"]["Composition"]; kernel: components["schemas"]["Kernel"]; pending_inputs: components["schemas"]["PendingInput"][]; input_order: components["schemas"]["Counter"]; usage: components["schemas"]["Usage"]; active_output: components["schemas"]["ActiveOutput"][]; history: components["schemas"]["HistoryPage"]; glances: components["schemas"]["Glance"][]; }; SessionRead: components["schemas"]["Session"] | components["schemas"]["SessionConfiguration"] | components["schemas"]["SessionStatusRead"]; /** @description The live facts a watching client keeps current, read from the session's own memory and its kernel, with no configuration, history, or composition read. Kernel job changes and glance changes also arrive on the session stream, so this is a safety read rather than the cadence. */ SessionStatusRead: { id: components["schemas"]["ID"]; cursor: components["schemas"]["Cursor"]; status: components["schemas"]["SessionStatus"]; kernel: components["schemas"]["Kernel"]; usage: components["schemas"]["Usage"]; glances: components["schemas"]["Glance"][]; }; SessionChange: { resource: components["schemas"]["SessionConfigurationResource"]; session: components["schemas"]["Session"]; move: { applied_count: components["schemas"]["Counter"]; deferred_count: components["schemas"]["Counter"]; applied_ids: components["schemas"]["ID"][]; deferred_ids: components["schemas"]["ID"][]; truncated: boolean; warnings: components["schemas"]["Warnings"]; } | null; }; Visit: { visit_id: components["schemas"]["ID"]; session_id: components["schemas"]["ID"]; opens: components["schemas"]["Counter"]; }; /** @description Counts cover the complete captured operation. ID lists are bounded summaries, never false completion. Refresh the authoritative family or known tombstones if truncated; deletion is never repeated to page a result. */ SessionDeletion: { /** @enum {string} */ state: "complete" | "partial"; deleted_count: components["schemas"]["Counter"]; remaining_count: components["schemas"]["Counter"]; deleted_ids: components["schemas"]["ID"][]; remaining: { id: components["schemas"]["ID"]; reason: components["schemas"]["SafeReason"]; }[]; truncated: boolean; }; /** @description Strict base64; decoded dimensions and provider constraints are validated before admission. */ ImageUpload: { /** @enum {string} */ mime_type: "image/png" | "image/jpeg" | "image/gif" | "image/webp"; data: string; }; /** * @example { * "kind": "message", * "text": "Fix the parser.", * "client_id": "draft-1" * } */ MessageInputRequest: { /** @constant */ kind: "message"; text: string; /** @description Attached in order; the text's numbered image markers say where each was attached. */ images?: components["schemas"]["ImageUpload"][]; /** @description Pasted text the text marks by number; a long one is saved to a file the model reads. */ pastes?: string[]; client_id?: string; } | { text?: unknown; } | { images: unknown; }; ContinueInputRequest: { /** @constant */ kind: "continue"; client_id?: string; }; SkillInputRequest: { /** @constant */ kind: "skill"; candidate_id: components["schemas"]["ID"]; catalog_revision: components["schemas"]["ID"]; arguments: string; client_id?: string; }; CommandInputRequest: { /** @constant */ kind: "command"; command_id: components["schemas"]["ID"]; arguments: components["schemas"]["DynamicJSON"]; client_id?: string; }; InputRequest: components["schemas"]["MessageInputRequest"] | components["schemas"]["ContinueInputRequest"] | components["schemas"]["SkillInputRequest"] | components["schemas"]["CommandInputRequest"]; Turn: { id: components["schemas"]["ID"]; /** @enum {string} */ state: "running" | "completed" | "interrupted" | "failed" | "abandoned"; started_at: components["schemas"]["Timestamp"]; ended_at: components["schemas"]["Timestamp"] | null; outcome: components["schemas"]["SafeReason"] | null; }; /** * @example { * "id": "01a0fcea-2b00-7000-8000-000000000002", * "session_id": "01a0fcea-2b00-7000-8000-000000000001", * "kind": "message", * "admission": "accepted", * "http_status": 202, * "problem": null, * "accepted_at": "2026-10-02T14:00:00Z", * "acceptance_order": 1, * "delivery": "pending", * "blocking_reason": null, * "transcript_position": null, * "turn": null, * "client_id": "draft-1" * } */ Input: { id: components["schemas"]["ID"]; session_id: components["schemas"]["ID"]; /** @enum {string} */ kind: "message" | "continue" | "skill" | "command"; /** @enum {string} */ admission: "accepted" | "rejected"; http_status: number; problem: components["schemas"]["AdmissionProblem"] | null; accepted_at: components["schemas"]["Timestamp"] | null; acceptance_order: components["schemas"]["Counter"] | null; delivery: ("pending" | "committed" | "cancelled") | null; blocking_reason: components["schemas"]["SafeReason"] | null; transcript_position: components["schemas"]["Counter"] | null; turn: components["schemas"]["Turn"] | null; client_id: string | null; } & unknown; InputDecision: { /** @constant */ kind: "input"; input: components["schemas"]["Input"]; }; InputCancellation: { input: components["schemas"]["Input"]; /** @enum {string} */ result: "cancelled" | "interrupt_requested" | "shared_running" | "not_pending"; }; InterruptRequest: { run_id: components["schemas"]["ID"] | null; through_input_order: components["schemas"]["Counter"]; }; Interruption: { run_id: components["schemas"]["ID"] | null; /** @enum {string} */ state: "requested" | "already_ended"; cancelled_input_ids: components["schemas"]["ID"][]; warnings: components["schemas"]["Warnings"]; }; ArtifactID: string; Artifact: { id: components["schemas"]["ArtifactID"]; /** @description The capability that serves its pages, `/frame/{id}.{key}/{version}/{path}`. */ key: string; title: string; version: number; versions: number; entry: string; session_id: components["schemas"]["ID"]; session_name: string | null; session_deleted: boolean; workspace: string; created_at: components["schemas"]["Counter"]; updated_at: components["schemas"]["Counter"]; bytes: components["schemas"]["Counter"]; }; ArtifactPage: { items: components["schemas"]["Artifact"][]; next: string | null; }; ArtifactFile: { path: string; size: components["schemas"]["Counter"]; }; ArtifactVersion: { version: number; entry: string; created_at: components["schemas"]["Counter"]; cell_id: string | null; files: components["schemas"]["ArtifactFile"][]; bytes: components["schemas"]["Counter"]; }; ArtifactDetail: components["schemas"]["Artifact"] & { /** @description Every version, newest first. */ history: components["schemas"]["ArtifactVersion"][]; }; /** @description The page's localStorage. */ ArtifactState: { [key: string]: string; }; ArtifactError: { message: string; source?: string; line?: number; column?: number; stack?: string; }; ToolActivity: { /** @enum {string} */ kind: "read" | "search" | "list" | "run" | "web" | "display" | "mcp" | "cua" | "artifact"; target: string; /** @description What the person watching sees of the result, as markdown; a web search's answer and sources, or displayed content. */ detail?: string; /** @description How long the call took, when it ended while its cell's trace was open. */ ms?: number; /** @description Whether the call worked, when it ended while its cell's trace was open. */ ok?: boolean; /** @description The artifact version an `artifact` activity made; its title is the target. */ artifact?: { id: components["schemas"]["ArtifactID"]; version: number; }; }; FileDiff: { path: string; /** @constant */ kind: "diff"; diff: string; added: components["schemas"]["Counter"]; removed: components["schemas"]["Counter"]; }; FileUnavailable: { path: string; /** @constant */ kind: "unavailable"; reason: string; }; ToolTrace: { activities: components["schemas"]["ToolActivity"][]; changes: (components["schemas"]["FileDiff"] | components["schemas"]["FileUnavailable"])[]; truncated: boolean; }; /** @description Ordered unfinished output captured with the session cursor. Exactly one of text or reference is non-null. References retain a fixed byte cutoff through their short snapshot lease. A run retains at most 64 MiB of unfinished output across at most 256 descriptors. Inline output is limited to 64 KiB encoded; larger content uses references. */ ActiveOutput: { message_id: components["schemas"]["ID"]; run_id: components["schemas"]["ID"]; /** @enum {string} */ kind: "text" | "thinking"; bytes: components["schemas"]["Counter"]; elapsed_ms: number | null; text: string | null; reference: components["schemas"]["ContentReference"] | null; }; ContentReference: { url: components["schemas"]["ResourceURL"]; field: string; bytes: components["schemas"]["Counter"]; }; ImageMetadata: { mime_type: string; width: number; height: number; original_bytes: components["schemas"]["Counter"]; /** @description Its url is the image resource, which serves the decoded bytes. */ reference: components["schemas"]["ContentReference"]; }; TextContent: { /** @constant */ kind: "text"; text: string; }; JSONContent: { /** @constant */ kind: "json"; field: string; value: components["schemas"]["DynamicJSON"]; }; ImageContent: { /** @constant */ kind: "image"; image: components["schemas"]["ImageMetadata"]; }; TraceContent: { /** @constant */ kind: "trace"; trace: components["schemas"]["ToolTrace"]; }; ReferenceContent: { /** @constant */ kind: "reference"; reference: components["schemas"]["ContentReference"]; }; HistoryMail: { mail_id: components["schemas"]["ID"]; sender_session_id: components["schemas"]["ID"] | null; sender_label: string; /** @enum {string} */ kind: "task" | "message" | "result" | "unreviewed" | "webhook" | "event_tool" | "event_turn"; }; HistoryEntry: { id: components["schemas"]["ID"]; position: components["schemas"]["Counter"]; /** @enum {string} */ kind: "user" | "assistant" | "thinking" | "tool_call" | "tool_result" | "note" | "continuation" | "compaction" | "image_fit"; /** @enum {string} */ turn_type?: "user" | "agent" | "webhook" | "event" | "scheduled" | "continue"; mail?: components["schemas"]["HistoryMail"] | null; turn_id: components["schemas"]["ID"] | null; input_id: components["schemas"]["ID"] | null; created_at: components["schemas"]["Timestamp"] | null; content: (components["schemas"]["TextContent"] | components["schemas"]["JSONContent"] | components["schemas"]["ImageContent"] | components["schemas"]["TraceContent"] | components["schemas"]["ReferenceContent"])[]; checkpoint_id: components["schemas"]["ID"] | null; content_complete: boolean; tool: { name: string; tool_call_id: components["schemas"]["ID"]; progress_call_id: components["schemas"]["ID"] | null; title?: string | null; } | null; /** @description Observed thinking duration, when recorded. */ thinking_duration_ms?: components["schemas"]["Counter"] | null; }; /** * @example { * "items": [], * "older": null, * "newer": null, * "high_water": 0 * } */ HistoryPage: { items: components["schemas"]["HistoryEntry"][]; older: components["schemas"]["PageToken"] | null; newer: components["schemas"]["PageToken"] | null; high_water: components["schemas"]["Counter"]; }; Checkpoint: { position: components["schemas"]["Counter"]; checkpoint_id: components["schemas"]["ID"]; title: string; /** @enum {string} */ turn_type: "user" | "continue" | "agent" | "scheduled" | "webhook" | "event"; preview: components["schemas"]["Preview"]; }; CheckpointPage: { items: components["schemas"]["Checkpoint"][]; older: components["schemas"]["PageToken"] | null; newer: components["schemas"]["PageToken"] | null; high_water: components["schemas"]["Counter"]; }; /** @description The requested view determines the item type. Empty pages are valid for either view. */ HistoryRead: components["schemas"]["HistoryPage"] | components["schemas"]["CheckpointPage"]; /** @description Offsets count exact stored UTF-8 bytes. */ ContentPart: { field: string; offset_bytes: components["schemas"]["Counter"]; /** @enum {string} */ encoding: "utf8"; text: string; complete: boolean; }; EntryContentPage: { entry_id: components["schemas"]["ID"]; parts: components["schemas"]["ContentPart"][]; next: components["schemas"]["PageToken"] | null; }; /** @description One field piece of one named entry; offsets count exact stored UTF-8 bytes. */ EntryContentBatchPart: { entry_id: components["schemas"]["ID"]; field: string; offset_bytes: components["schemas"]["Counter"]; /** @enum {string} */ encoding: "utf8"; text: string; complete: boolean; }; EntryContentBatch: { parts: components["schemas"]["EntryContentBatchPart"][]; next: components["schemas"]["PageToken"] | null; }; ContextSection: { id: components["schemas"]["ID"]; label: string; /** @enum {string} */ kind: "instructions" | "extension_context" | "history" | "tools" | "other"; source: string | null; item_count: components["schemas"]["Counter"]; utf8_bytes: components["schemas"]["Counter"]; page_count: components["schemas"]["Counter"]; preview: components["schemas"]["Preview"]; }; ContextSummary: { /** @enum {string} */ state: "pending" | "ready"; snapshot_id: components["schemas"]["ID"] | null; captured_at: components["schemas"]["Timestamp"] | null; provider: components["schemas"]["ID"] | null; model: components["schemas"]["ID"] | null; protocol: ("responses" | "chat_completions") | null; context_window_tokens: components["schemas"]["Counter"] | null; compaction: components["schemas"]["ContextCompaction"]; sections: components["schemas"]["ContextSection"][]; reason: components["schemas"]["SafeReason"] | null; } & unknown; ContextSectionPage: { snapshot_id: components["schemas"]["ID"]; section_id: components["schemas"]["ID"]; text: string; omitted: string | null; page: components["schemas"]["Counter"]; page_count: components["schemas"]["Counter"]; }; TokenObservation: { estimated: components["schemas"]["Counter"] | null; observed: components["schemas"]["Counter"] | null; source: string | null; }; ProviderRequestRecord: { sequence: components["schemas"]["Counter"]; provider: components["schemas"]["ID"]; model: components["schemas"]["ID"]; run_id: components["schemas"]["ID"] | null; started_at: components["schemas"]["Timestamp"]; ended_at: components["schemas"]["Timestamp"] | null; prompt_tokens: components["schemas"]["TokenObservation"]; completion_tokens: components["schemas"]["TokenObservation"]; cached_tokens: components["schemas"]["TokenObservation"]; failure: components["schemas"]["SafeReason"] | null; /** @enum {string} */ kind: "turn" | "summarizer" | "background"; provider_profile: components["schemas"]["ID"]; account_id: components["schemas"]["ID"] | null; effort: string | null; /** @enum {string} */ outcome: "completed" | "failed"; http_status: number | null; cache_creation_tokens: components["schemas"]["TokenObservation"]; cache_write_5m_tokens: components["schemas"]["TokenObservation"]; cache_write_1h_tokens: components["schemas"]["TokenObservation"]; reasoning_tokens: components["schemas"]["TokenObservation"]; head_hash: string; input_count: components["schemas"]["Counter"]; replaced_input_count: components["schemas"]["Counter"] | null; projection_hash: string | null; strategy: string | null; cache_marks: { /** @enum {string} */ through: "tools" | "system" | "input"; index: components["schemas"]["Counter"] | null; ttl_seconds: components["schemas"]["Counter"]; }[]; input_chain: string | null; stream: { first_event_ms: components["schemas"]["Counter"] | null; events: components["schemas"]["Counter"]; thinking_bytes: components["schemas"]["Counter"]; output_bytes: components["schemas"]["Counter"]; } | null; first_byte_ms: components["schemas"]["Counter"] | null; total_tokens: components["schemas"]["TokenObservation"]; response_id: string | null; model_version: string | null; trace_id: string | null; transcript_positions: components["schemas"]["Counter"][]; }; RequestRecordPage: { items: components["schemas"]["ProviderRequestRecord"][]; next: components["schemas"]["PageToken"] | null; }; ContextWindow: { /** @description The window set for this session. Null when it uses the model's. */ context_window: components["schemas"]["Counter"] | null; /** @description The model's own window, with any raised cap or context limit applied. Null when the catalog does not know the model. */ model_context_tokens: components["schemas"]["Counter"] | null; /** @description The window compaction measures against. */ effective_context_tokens: components["schemas"]["Counter"] | null; /** @enum {string} */ source: "session" | "model" | "unknown"; /** @description One sentence a client can show as it is. */ message: string; }; SessionFile: { /** @description Absolute location as the daemon spells it, `host:/path` for a remote workspace. */ path: string; size: components["schemas"]["Counter"]; modified_at: components["schemas"]["Timestamp"]; /** @description The file's contents. At most 1 MiB of UTF-8 without NUL. */ text: string; }; ContextRead: components["schemas"]["ContextSummary"] | components["schemas"]["ContextSectionPage"] | components["schemas"]["RequestRecordPage"]; FormField: { name: string; label: string; /** @enum {string} */ type: "text" | "secret" | "boolean" | "choice" | "integer" | "hidden"; required: boolean; default: components["schemas"]["DynamicJSON"]; /** @description Prefill from the selected row or installed session, before showing the form. */ default_binding?: { /** @enum {string} */ source: "row" | "session"; pointer: string; }; choices: { value: components["schemas"]["DynamicJSON"]; label: string; }[]; minimum: number | null; maximum: number | null; description: string; }; /** @description JSON pointer resolves against the selected row, submitted form, or installed session snapshot. No expression language. */ Binding: { /** @constant */ source: "literal"; value: components["schemas"]["DynamicJSON"]; } | { /** @enum {string} */ source: "row" | "form" | "session"; pointer: string; }; /** @description Operation must be declared in this contract, or the installed extension contract version. Bind If-Match from the displayed resource, never from a fresh read. Path, query and header map keys name declared parameters; body map keys are JSON pointers into the request object. Missing optional form values omit their bindings. result_schema is a JSON Schema 2020-12 fragment, with no remote schema retrieval. */ ActionOperation: { operation_id: string; /** @enum {string} */ method: "GET" | "PUT" | "POST" | "PATCH" | "DELETE"; path_template: components["schemas"]["ResourceURL"]; path: { [key: string]: components["schemas"]["Binding"]; }; query: { [key: string]: components["schemas"]["Binding"]; }; headers: { [key: string]: components["schemas"]["Binding"]; }; body: { [key: string]: components["schemas"]["Binding"]; }; /** * @description Expected synchronous JSON success status. Omitted operations accept 200 or 201 for mutations and 200 for reads. * @enum {integer} */ success_status?: 200 | 201; result_schema: components["schemas"]["DynamicJSON"]; }; PageAction: { id: components["schemas"]["ID"]; label: string; keyboard_hint: string | null; confirmation: string | null; fields: components["schemas"]["FormField"][]; operation: components["schemas"]["ActionOperation"]; }; PageRow: { id: components["schemas"]["ID"]; text: string; badge: string | null; /** @enum {string} */ tone: "plain" | "active" | "muted" | "success" | "warning" | "error"; detail: string | null; resource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["DynamicJSON"]; } | null; }; PageDescriptor: { title: string; empty_state: string; rows: components["schemas"]["PageRow"][]; glance: components["schemas"]["Glance"] | null; actions: components["schemas"]["PageAction"][]; summary: string; }; CatalogCandidate: { id: components["schemas"]["ID"]; /** @enum {string} */ kind: "extension" | "skill" | "instruction" | "mcp"; title: string; description: string; source: string; resolved_source: string | null; preference_key: components["schemas"]["ID"] | null; valid: boolean; eligible: boolean; effective_enabled: boolean; global_preference: boolean | null; session_override: boolean | null; shadowed_by: components["schemas"]["ID"] | null; dependencies: components["schemas"]["ID"][]; quarantined: boolean; diagnostic: components["schemas"]["SafeReason"] | null; /** @description Installed extension metadata for the inspector. Null for other candidate kinds. */ extension: components["schemas"]["ExtensionMetadata"] | null; }; ExtensionMetadata: { context: boolean; tools: components["schemas"]["ID"][]; python_modules: components["schemas"]["ID"][]; plugins: components["schemas"]["ID"][]; }; HTTPCommand: { id: components["schemas"]["ID"]; slash_name: string; description: string; arguments: components["schemas"]["FormField"][]; caller_permissions: ("human" | "model")[]; /** @enum {string} */ delivery: "read" | "mutation"; operation: components["schemas"]["ActionOperation"]; }; InputCommand: { id: components["schemas"]["ID"]; slash_name: string; description: string; arguments: components["schemas"]["FormField"][]; caller_permissions: ("human" | "model")[]; /** @constant */ delivery: "input"; command_id: components["schemas"]["ID"]; }; /** @description Pagination is independent for discovered candidates and loaded commands; next tokens identify their section. */ Catalog: { /** @description Static HTTP declarations for selected extensions when no composition has been loaded. Reading these declarations does not prepare extensions or start a kernel. */ native_commands?: components["schemas"]["HTTPCommand"][]; discovery: { revision: components["schemas"]["ID"]; workspace: components["schemas"]["Workspace"]; candidates: components["schemas"]["CatalogCandidate"][]; diagnostics: components["schemas"]["SafeReason"][]; next: components["schemas"]["PageToken"] | null; } | null; discovery_failure: components["schemas"]["SafeReason"] | null; loaded: { revision: components["schemas"]["ID"] | null; commands: (components["schemas"]["HTTPCommand"] | components["schemas"]["InputCommand"])[]; next: components["schemas"]["PageToken"] | null; }; pages?: components["schemas"]["PageDescriptor"][]; }; SessionReloadOutcome: { /** @enum {string} */ state: "applied" | "failed" | "skipped"; loaded_revision: components["schemas"]["ID"] | null; restart_required: boolean; warnings: components["schemas"]["Warnings"]; failure: components["schemas"]["SafeReason"] | null; }; ModelReloadOutcome: { provider: components["schemas"]["ID"]; /** @enum {string} */ state: "refreshed" | "failed" | "skipped"; observed_at: components["schemas"]["Timestamp"] | null; failure: components["schemas"]["SafeReason"] | null; }; CachePolicyReloadOutcome: { /** @enum {string} */ state: "refreshed" | "failed"; failure: components["schemas"]["SafeReason"] | null; }; ReloadRequest: { /** * @default both * @enum {string} */ target: "session" | "models" | "both"; }; ReloadResult: { cache_policy: components["schemas"]["CachePolicyReloadOutcome"] | null; session: components["schemas"]["SessionReloadOutcome"] | null; models: components["schemas"]["ModelReloadOutcome"][]; }; KernelUpgradeResult: { old_build: string | null; new_build: string | null; /** @enum {string} */ state: "upgraded" | "unchanged" | "failed"; stopped_jobs: { id: components["schemas"]["ID"]; reason: components["schemas"]["SafeReason"]; }[]; warnings: components["schemas"]["Warnings"]; failure: components["schemas"]["SafeReason"] | null; old_kernel_id: components["schemas"]["ID"] | null; new_kernel_id: components["schemas"]["ID"] | null; }; RewindRequest: { checkpoint_id: components["schemas"]["ID"]; /** @description Ask for a summary of the removed tail, added to the session as a note. */ summary?: { instructions?: string | null; } | null; }; RewindResult: { archive_session_id: components["schemas"]["ID"]; /** @description The text of the removed user message, when a person wrote it. */ input: string | null; /** @description The summary note added after the cut, when one was requested. */ summary: string | null; }; CompactionRequest: { strategy?: components["schemas"]["ID"]; }; CompactionObservation: { strategy: components["schemas"]["ID"] | null; before_tokens: components["schemas"]["Counter"] | null; after_tokens: components["schemas"]["Counter"] | null; evicted_entries: components["schemas"]["Counter"]; summary: string; }; CompactionResult: { selection_applied: boolean; effective_strategy: components["schemas"]["ID"] | null; /** @enum {string} */ state: "compacted" | "unchanged" | "failed"; observation: components["schemas"]["CompactionObservation"] | null; failure: components["schemas"]["SafeReason"] | null; }; Model: { id: components["schemas"]["ID"]; label: string; efforts: { id: string; label: string; }[]; default_context_tokens: components["schemas"]["Counter"] | null; effective_context_tokens: components["schemas"]["Counter"] | null; max_context_tokens: components["schemas"]["Counter"] | null; max_output_tokens: components["schemas"]["Counter"] | null; input_modalities: string[]; image_edge: number | null; raised: boolean; /** @description The window the user saved for this model, below its own; null or absent follows the model. */ compact_at?: components["schemas"]["Counter"] | null; cap_key: components["schemas"]["ID"]; cache_policy: { ttl_seconds: components["schemas"]["Counter"] | null; source: string | null; }; source: string; observed_at: components["schemas"]["Timestamp"] | null; }; CachePolicyEntry: { id: components["schemas"]["ID"]; /** @enum {string} */ layer: "default" | "remote" | "local"; match: { extension: string[] | null; host: string[] | null; model: string[] | null; }; /** @enum {string} */ policy: "refresh" | "fixed" | "evict" | "unknown"; /** @enum {string} */ clock: "request" | "response"; tiers: { seconds: components["schemas"]["Counter"]; write: number | null; }[] | null; read: number | null; survival: { typical: components["schemas"]["Counter"]; max: components["schemas"]["Counter"] | null; } | null; /** @enum {string} */ evidence: "documented" | "measured" | "implemented" | "folklore" | "unknown"; source: string; checked: string; note: string; }; CachePolicyLayer: { /** @enum {string} */ name: "default" | "remote" | "local"; path: string; loaded: boolean; error: components["schemas"]["SafeReason"] | null; }; CachePolicyPage: { entries: components["schemas"]["CachePolicyEntry"][]; layers: components["schemas"]["CachePolicyLayer"][]; matched: components["schemas"]["CachePolicyEntry"] | null; next: components["schemas"]["PageToken"] | null; }; ModelRead: components["schemas"]["ModelPage"] | components["schemas"]["CachePolicyPage"]; ModelPage: { items: components["schemas"]["Model"][]; next: components["schemas"]["PageToken"] | null; }; Host: { /** @description Current probe progress. Null when connecting or when no probe is running. */ step?: "staging" | null; target: components["schemas"]["ID"]; /** @enum {string} */ state: "unknown" | "probing" | "ready" | "needs_auth" | "unreachable" | "unsupported"; detail: components["schemas"]["SafeReason"] | null; observed_at: components["schemas"]["Timestamp"] | null; os: string | null; architecture: string | null; home: components["schemas"]["Workspace"] | null; authentication: { instructions: string; ssh_target: string; control_path: string | null; } | null; }; HostPage: { items: components["schemas"]["Host"][]; next: components["schemas"]["PageToken"] | null; }; RecentWorkspace: { location: components["schemas"]["Workspace"]; use_count: components["schemas"]["Counter"]; activity_at: components["schemas"]["Timestamp"] | null; }; RecentWorkspacePage: { items: components["schemas"]["RecentWorkspace"][]; next: components["schemas"]["PageToken"] | null; }; TreeChild: { name: string; /** @enum {string} */ kind: "file" | "directory" | "symlink"; location: components["schemas"]["Workspace"]; language: string | null; changed: components["schemas"]["Counter"]; }; TreeEntry: { name: string; /** @enum {string} */ kind: "file" | "directory" | "symlink"; location: components["schemas"]["Workspace"]; children: components["schemas"]["TreeChild"][]; more: components["schemas"]["Counter"]; language: string | null; changed: components["schemas"]["Counter"]; }; GitFacts: { /** @constant */ kind: "git"; branch: string | null; revision: string | null; dirty: boolean | null; added: components["schemas"]["Counter"] | null; modified: components["schemas"]["Counter"] | null; removed: components["schemas"]["Counter"] | null; root: components["schemas"]["Workspace"]; changed: components["schemas"]["Counter"] | null; touched_at: components["schemas"]["Timestamp"] | null; }; JJFacts: { /** @constant */ kind: "jj"; change_id: string | null; revision: string | null; description: string | null; dirty: boolean | null; conflicts: boolean | null; root: components["schemas"]["Workspace"]; changed: components["schemas"]["Counter"] | null; touched_at: components["schemas"]["Timestamp"] | null; bookmark: { name: string; ahead: components["schemas"]["Counter"]; } | null; }; WorkspacePreview: { repository: (components["schemas"]["GitFacts"] | components["schemas"]["JJFacts"]) | null; repository_diagnostic: components["schemas"]["SafeReason"] | null; languages: { name: string; bytes: components["schemas"]["Counter"]; share: number; color: string | null; }[]; tree: components["schemas"]["TreeEntry"][]; more: components["schemas"]["Counter"]; }; WorkspaceDirectory: { directory: components["schemas"]["Workspace"]; parent: components["schemas"]["Workspace"] | null; home: components["schemas"]["Workspace"] | null; host: components["schemas"]["Host"] | null; items: { name: string; location: components["schemas"]["Workspace"]; vcs: ("git" | "jj") | null; modified_at: components["schemas"]["Timestamp"] | null; hidden: boolean; }[]; next: components["schemas"]["PageToken"] | null; preview?: components["schemas"]["WorkspacePreview"]; }; WorkspaceRead: components["schemas"]["RecentWorkspacePage"] | components["schemas"]["WorkspaceDirectory"]; Account: { id: components["schemas"]["ID"]; provider: components["schemas"]["ID"]; label: string; detail: string; /** * @description `key` is an API key: saved in creds.json, or read from the daemon environment on every request when `source` is `env`. * @default model * @enum {string} */ kind: "model" | "service" | "key"; /** * @description `env` accounts are never stored and cannot be removed or renamed; their label names the variable, as `$OPENROUTER_API_KEY`. * @enum {string} */ source: "saved" | "env"; /** @description The base url a key account sends to; null for sign-in accounts. */ endpoint: string | null; /** @description When a rate or usage limit recorded against this account ends; null when it has room. */ limited_until: string | null; /** @description Profiles pinned to this account by `account_id`. */ selected_by_profiles: components["schemas"]["ID"][]; /** @description Profiles that list this account in `account_ids`. */ rotated_by_profiles: components["schemas"]["ID"][]; }; /** @description Saves an API key as an account. A key already saved for the same endpoint is refused with `key_exists`; its account id is in the problem detail. */ KeyAccountRequest: { /** @description The profile extension the key serves, such as `openai` or `opencode-go`. */ provider: components["schemas"]["ID"]; /** Format: uri */ endpoint: string; api_key: string; label?: string; }; AccountPatch: { label: string; }; LoginProvider: { id: components["schemas"]["ID"]; label: string; detail: string; /** * @default model * @enum {string} */ kind: "model" | "service"; flows: ("browser" | "manual" | "device" | "form")[]; fields: components["schemas"]["FormField"][]; }; Auth: { providers: components["schemas"]["LoginProvider"][]; accounts: components["schemas"]["Account"][]; }; /** @description Flow defaults to the provider preferred flow. Form names, types and required values are checked against that provider declaration. Values are write-only. */ LoginRequest: { provider: components["schemas"]["ID"]; /** @enum {string} */ flow?: "browser" | "manual" | "device" | "form"; values: { [key: string]: string | boolean | number; }; }; LoginPatch: { response: string; }; /** * @example { * "id": "01a0fcea-2b00-7000-8000-000000000003", * "provider": "example-provider", * "url": "https://provider.example/authorize?state=synthetic-state", * "expires_at": "2026-10-02T14:15:00Z", * "state": "waiting", * "instructions": "Paste the callback URL if the browser cannot reach the daemon.", * "progress": "Waiting for authorization.", * "accounts": [], * "failure": null * } */ Login: { id: components["schemas"]["ID"]; provider: components["schemas"]["ID"]; url: string | null; expires_at: components["schemas"]["Timestamp"]; /** @enum {string} */ state: "waiting" | "exchanging" | "complete" | "failed" | "cancelled" | "expired"; instructions: string | null; progress: string; accounts: components["schemas"]["Account"][]; failure: components["schemas"]["SafeReason"] | null; }; MailMetadata: { mail_id: components["schemas"]["ID"]; sender_session_id: components["schemas"]["ID"] | null; receiver_session_id: components["schemas"]["ID"]; /** @enum {string} */ kind: "task" | "message" | "result" | "unreviewed" | "webhook" | "event_tool" | "event_turn"; bytes: components["schemas"]["Counter"]; sender_label: string | null; }; /** @description The kernel's job facts changed. Published only when they differ from what the stream last carried, so a client that keeps them needs no status poll. */ SessionKernelEvent: { /** @constant */ type: "kernel"; sequence: components["schemas"]["Counter"]; data: { kernel: components["schemas"]["Kernel"]; }; }; /** @description The loaded extensions' sidebar values changed, observed at a low rate while a client watches the stream. */ SessionGlancesEvent: { /** @constant */ type: "glances"; sequence: components["schemas"]["Counter"]; data: { glances: components["schemas"]["Glance"][]; }; }; SessionStatusEvent: { /** @constant */ type: "status"; sequence: components["schemas"]["Counter"]; data: components["schemas"]["SessionStatus"]; }; SessionInputEvent: { /** @constant */ type: "input"; sequence: components["schemas"]["Counter"]; data: { input: components["schemas"]["Input"]; }; }; SessionTextEvent: { /** @constant */ type: "text"; sequence: components["schemas"]["Counter"]; data: { run_id: components["schemas"]["ID"]; message_id: components["schemas"]["ID"]; text: string; }; }; SessionThinkingEvent: { /** @constant */ type: "thinking"; sequence: components["schemas"]["Counter"]; data: { run_id: components["schemas"]["ID"]; message_id: components["schemas"]["ID"]; text: string; /** @description Completed thinking duration, when observed. */ elapsed_ms?: components["schemas"]["Counter"]; }; }; SessionMessageEvent: { /** @constant */ type: "message"; sequence: components["schemas"]["Counter"]; data: { entry: components["schemas"]["HistoryEntry"]; }; }; SessionToolProgressEvent: { /** @constant */ type: "tool_progress"; sequence: components["schemas"]["Counter"]; data: { progress: components["schemas"]["ToolProgress"] | null; }; }; SessionToolEvent: { /** @constant */ type: "tool"; sequence: components["schemas"]["Counter"]; data: { tool_call_id: components["schemas"]["ID"]; progress_call_id: components["schemas"]["ID"]; name: string; title?: string | null; arguments: components["schemas"]["DynamicJSON"]; result: components["schemas"]["DynamicJSON"]; trace: components["schemas"]["ToolTrace"] | null; content_complete: boolean; reference: components["schemas"]["ContentReference"] | null; }; }; SessionNoteEvent: { /** @constant */ type: "note"; sequence: components["schemas"]["Counter"]; data: { entry_id: components["schemas"]["ID"]; origin: string; text: string; mail: components["schemas"]["MailMetadata"] | null; }; }; SessionRetryEvent: { /** @constant */ type: "retry"; sequence: components["schemas"]["Counter"]; data: { run_id: components["schemas"]["ID"]; attempt: number; reason: components["schemas"]["SafeReason"]; delay_ms: components["schemas"]["Counter"]; }; }; SessionUsageEvent: { /** @constant */ type: "usage"; sequence: components["schemas"]["Counter"]; data: components["schemas"]["Usage"]; }; SessionCommittedEvent: { /** @constant */ type: "committed"; sequence: components["schemas"]["Counter"]; data: { high_water: components["schemas"]["Counter"]; /** @description Retire all provisional output for a model commit. */ replaces_all_live: boolean; replaces_live_ids: components["schemas"]["ID"][]; }; }; SessionTurnCompletedEvent: { /** @constant */ type: "turn_completed"; sequence: components["schemas"]["Counter"]; data: { run_id: components["schemas"]["ID"]; /** @enum {string} */ state: "completed" | "interrupted" | "failed" | "abandoned"; input_ids: components["schemas"]["ID"][]; input_count: components["schemas"]["Counter"]; truncated: boolean; }; }; SessionCompactedEvent: { /** @constant */ type: "compacted"; sequence: components["schemas"]["Counter"]; data: components["schemas"]["CompactionObservation"]; }; SessionErrorEvent: { /** @constant */ type: "error"; sequence: components["schemas"]["Counter"]; data: { run_id: components["schemas"]["ID"] | null; code: string; message: string; }; }; SessionInvalidateEvent: { /** @constant */ type: "invalidate"; sequence: components["schemas"]["Counter"]; data: { /** @enum {string} */ kind: "session" | "settings" | "catalog" | "context" | "extension"; url: components["schemas"]["ResourceURL"]; }; }; SessionEvent: components["schemas"]["SessionStatusEvent"] | components["schemas"]["SessionInputEvent"] | components["schemas"]["SessionTextEvent"] | components["schemas"]["SessionThinkingEvent"] | components["schemas"]["SessionMessageEvent"] | components["schemas"]["SessionToolProgressEvent"] | components["schemas"]["SessionToolEvent"] | components["schemas"]["SessionNoteEvent"] | components["schemas"]["SessionRetryEvent"] | components["schemas"]["SessionUsageEvent"] | components["schemas"]["SessionCommittedEvent"] | components["schemas"]["SessionTurnCompletedEvent"] | components["schemas"]["SessionCompactedEvent"] | components["schemas"]["SessionErrorEvent"] | components["schemas"]["SessionInvalidateEvent"] | components["schemas"]["SessionKernelEvent"] | components["schemas"]["SessionGlancesEvent"]; ResetEvent: { /** @constant */ type: "reset"; data: { /** @enum {string} */ reason: "initial" | "generation_changed" | "replay_unavailable" | "recovery"; }; }; FailureEvent: { /** @constant */ type: "failure"; data: components["schemas"]["SafeReason"]; }; /** * @description Empty keepalive keeps the last sequence. Nonempty event sequences are contiguous from the requested cursor. * @example { * "generation": "J6kYj6IGcXyP3eMIp-WL3A", * "cursor": 1, * "events": [ * { * "type": "input", * "sequence": 1, * "data": { * "input": { * "id": "01a0fcea-2b00-7000-8000-000000000002", * "session_id": "01a0fcea-2b00-7000-8000-000000000001", * "kind": "message", * "admission": "accepted", * "http_status": 202, * "problem": null, * "accepted_at": "2026-10-02T14:00:00Z", * "acceptance_order": 1, * "delivery": "pending", * "blocking_reason": null, * "transcript_position": null, * "turn": null, * "client_id": "draft-1" * } * } * } * ] * } */ ReplayBatch: { generation: components["schemas"]["Generation"]; cursor: components["schemas"]["Counter"]; events: components["schemas"]["SessionEvent"][]; }; /** * @description Leading reset and complete snapshot. Later events, if any, follow the snapshot cursor. Envelope cursor advances through every delivered event. * @example { * "generation": "J6kYj6IGcXyP3eMIp-WL3A", * "cursor": 0, * "events": [ * { * "type": "reset", * "data": { * "reason": "initial" * } * } * ], * "snapshot": { * "id": "01a0fcea-2b00-7000-8000-000000000001", * "name": "New session", * "automatic_name": "New session", * "workspace": "/workspace/project", * "location": { * "host": null, * "user": null, * "path": "/workspace/project", * "label": null * }, * "parent_id": null, * "root_id": "01a0fcea-2b00-7000-8000-000000000001", * "address": null, * "depth": 0, * "closed": false, * "created_at": "2026-10-02T14:00:00Z", * "activity_at": "2026-10-02T14:00:00Z", * "provider_profile": "personal", * "model": "example-model", * "effort": null, * "status": { * "phase": "idle", * "run_id": null, * "interrupt_requested": false, * "blocking_reason": null * }, * "preview": { * "text": "", * "transcript_count": 0, * "truncated": false * }, * "preferences": { * "pinned": false, * "pin_order": null, * "archived": false, * "opens": 0 * }, * "current_progress": [], * "active_output": [], * "activity": { * "lines": [], * "output_scalars": 0, * "output_utf8_bytes": 0, * "observed_at": "2026-10-02T14:00:00Z", * "latest_input": null, * "latest_answer": null * }, * "cursor": { * "generation": "J6kYj6IGcXyP3eMIp-WL3A", * "sequence": 0 * }, * "creation": { * "submitted": { * "kind": "new", * "workspace": "/workspace/project", * "name": null, * "provider_profile": null, * "model": null, * "effort": null * }, * "resolved": { * "workspace": "/workspace/project", * "provider_profile": "personal", * "model": "example-model", * "effort": null * } * }, * "revision": "config-1", * "family_revision": "family-1", * "configuration_resource": { * "url": "/sessions/01a0fcea-2b00-7000-8000-000000000001?view=configuration", * "etag": "\"session-config-1\"", * "value": { * "id": "01a0fcea-2b00-7000-8000-000000000001", * "name": "New session", * "workspace": "/workspace/project", * "provider_profile": "personal", * "model": "example-model", * "effort": null, * "preferences": { * "pinned": false, * "pin_order": null, * "archived": false * }, * "selection": { * "extensions": {}, * "skills": {}, * "instructions": {}, * "mcp": {} * }, * "revision": "config-1" * } * }, * "workspace_change": null, * "selection": { * "overrides": { * "extensions": {}, * "skills": {}, * "instructions": {}, * "mcp": {} * }, * "effective": { * "extensions": {}, * "skills": {}, * "instructions": {}, * "mcp": {} * } * }, * "composition": { * "desired_revision": "composition-1", * "loaded_revision": null, * "needs_reload": true, * "dependencies": {}, * "quarantine": [], * "availability": {} * }, * "kernel": { * "instance_id": null, * "state": "none", * "stage": null, * "build": null, * "stale": false, * "staleness_reasons": [], * "live_job_count": 0, * "running_jobs": [] * }, * "pending_inputs": [], * "input_order": 0, * "usage": { * "model": null, * "observed_at": null, * "prompt_tokens": null, * "cached_prompt_tokens": null, * "cache_write_tokens": null, * "completion_tokens": null, * "total_tokens": null, * "elapsed_ms": null, * "tokens_per_second": null, * "context_window_tokens": null, * "cache_ttl_seconds": null, * "cache_fade": [] * }, * "history": { * "items": [], * "older": null, * "newer": null, * "high_water": 0 * }, * "glances": [] * } * } */ ResetBatch: { generation: components["schemas"]["Generation"]; cursor: components["schemas"]["Counter"]; events: [ components["schemas"]["ResetEvent"] ]; snapshot: components["schemas"]["Session"]; }; /** * @description Terminal failure, alone with no snapshot. It does not commit a replacement cursor. * @example { * "generation": "J6kYj6IGcXyP3eMIp-WL3A", * "cursor": 0, * "events": [ * { * "type": "failure", * "data": { * "code": "history_unavailable", * "detail": "Durable history could not be loaded." * } * } * ] * } */ FailureBatch: { generation: components["schemas"]["Generation"]; cursor: components["schemas"]["Counter"]; events: components["schemas"]["FailureEvent"][]; }; SessionBatch: components["schemas"]["ReplayBatch"] | components["schemas"]["ResetBatch"] | components["schemas"]["FailureBatch"]; ActivityEvent: { /** @constant */ type: "activity"; data: { session_id: components["schemas"]["ID"]; cursor: components["schemas"]["Cursor"]; status: components["schemas"]["SessionStatus"]; current_progress: components["schemas"]["ToolProgress"][]; activity: components["schemas"]["Activity"]; }; }; CollectionInvalidateEvent: { /** @constant */ type: "invalidate"; data: { urls: components["schemas"]["ResourceURL"][]; session_ids: components["schemas"]["ID"][]; scope_dirty: boolean; }; }; CollectionMailEvent: { /** @constant */ type: "mail"; data: components["schemas"]["MailMetadata"]; }; CollectionReadyEvent: { /** @constant */ type: "ready"; data: components["schemas"]["EmptyRequest"]; }; CollectionResetEvent: { /** @constant */ type: "reset"; data: { /** @constant */ reason: "initial"; }; }; CollectionOverflowEvent: { /** @constant */ type: "overflow"; data: components["schemas"]["EmptyRequest"]; }; /** * @example { * "events": [ * { * "type": "ready", * "data": {} * }, * { * "type": "reset", * "data": { * "reason": "initial" * } * } * ] * } */ CollectionReadyBatch: { events: [ components["schemas"]["CollectionReadyEvent"], components["schemas"]["CollectionResetEvent"] ]; }; /** * @example { * "events": [ * { * "type": "activity", * "data": { * "session_id": "01a0fcea-2b00-7000-8000-000000000001", * "cursor": { * "generation": "J6kYj6IGcXyP3eMIp-WL3A", * "sequence": 0 * }, * "status": { * "phase": "idle", * "run_id": null, * "interrupt_requested": false, * "blocking_reason": null * }, * "current_progress": [], * "active_output": [], * "activity": { * "lines": [], * "output_scalars": 0, * "output_utf8_bytes": 0, * "observed_at": "2026-10-02T14:00:00Z", * "latest_input": null, * "latest_answer": null * } * } * } * ] * } */ CollectionBatch: components["schemas"]["CollectionReadyBatch"] | { events: (components["schemas"]["ActivityEvent"] | components["schemas"]["CollectionInvalidateEvent"] | components["schemas"]["CollectionMailEvent"])[]; } | { events: components["schemas"]["CollectionOverflowEvent"][]; }; /** * @description One parsed SSE event. Decode data as JSON and validate SessionBatch separately; contentSchema is not asserted by ordinary JSON Schema validation. No event, id or retry fields are emitted. * @example { * "data": "{\"generation\":\"J6kYj6IGcXyP3eMIp-WL3A\",\"cursor\":0,\"events\":[{\"type\":\"reset\",\"data\":{\"reason\":\"initial\"}}],\"snapshot\":{\"id\":\"01a0fcea-2b00-7000-8000-000000000001\",\"name\":\"New session\",\"automatic_name\":\"New session\",\"workspace\":\"/workspace/project\",\"location\":{\"host\":null,\"user\":null,\"path\":\"/workspace/project\",\"label\":null},\"parent_id\":null,\"root_id\":\"01a0fcea-2b00-7000-8000-000000000001\",\"address\":null,\"depth\":0,\"closed\":false,\"created_at\":\"2026-10-02T14:00:00Z\",\"activity_at\":\"2026-10-02T14:00:00Z\",\"provider_profile\":\"personal\",\"model\":\"example-model\",\"effort\":null,\"status\":{\"phase\":\"idle\",\"run_id\":null,\"interrupt_requested\":false,\"blocking_reason\":null},\"preview\":{\"text\":\"\",\"transcript_count\":0,\"truncated\":false},\"preferences\":{\"pinned\":false,\"pin_order\":null,\"archived\":false,\"opens\":0},\"current_progress\":[],\"activity\":{\"lines\":[],\"output_scalars\":0,\"output_utf8_bytes\":0,\"observed_at\":\"2026-10-02T14:00:00Z\",\"latest_input\":null,\"latest_answer\":null},\"cursor\":{\"generation\":\"J6kYj6IGcXyP3eMIp-WL3A\",\"sequence\":0},\"creation\":{\"submitted\":{\"kind\":\"new\",\"workspace\":\"/workspace/project\",\"name\":null,\"provider_profile\":null,\"model\":null,\"effort\":null},\"resolved\":{\"workspace\":\"/workspace/project\",\"provider_profile\":\"personal\",\"model\":\"example-model\",\"effort\":null}},\"revision\":\"config-1\",\"family_revision\":\"family-1\",\"configuration_resource\":{\"url\":\"/sessions/01a0fcea-2b00-7000-8000-000000000001?view=configuration\",\"etag\":\"\\\"session-config-1\\\"\",\"value\":{\"id\":\"01a0fcea-2b00-7000-8000-000000000001\",\"name\":\"New session\",\"workspace\":\"/workspace/project\",\"provider_profile\":\"personal\",\"model\":\"example-model\",\"effort\":null,\"preferences\":{\"pinned\":false,\"pin_order\":null,\"archived\":false},\"selection\":{\"extensions\":{},\"skills\":{},\"instructions\":{},\"mcp\":{}},\"revision\":\"config-1\"}},\"workspace_change\":null,\"selection\":{\"overrides\":{\"extensions\":{},\"skills\":{},\"instructions\":{},\"mcp\":{}},\"effective\":{\"extensions\":{},\"skills\":{},\"instructions\":{},\"mcp\":{}}},\"composition\":{\"desired_revision\":\"composition-1\",\"loaded_revision\":null,\"needs_reload\":true,\"dependencies\":{},\"quarantine\":[],\"availability\":{}},\"kernel\":{\"instance_id\":null,\"state\":\"none\",\"stage\":null,\"build\":null,\"stale\":false,\"staleness_reasons\":[],\"live_job_count\":0,\"running_jobs\":[]},\"pending_inputs\":[],\"input_order\":0,\"usage\":{\"model\":null,\"observed_at\":null,\"prompt_tokens\":null,\"cached_prompt_tokens\":null,\"cache_write_tokens\":null,\"completion_tokens\":null,\"total_tokens\":null,\"elapsed_ms\":null,\"tokens_per_second\":null,\"context_window_tokens\":null,\"cache_ttl_seconds\":null,\"cache_fade\":[]},\"history\":{\"items\":[],\"older\":null,\"newer\":null,\"high_water\":0},\"glances\":[]}}" * } * @example { * "data": "{\"generation\":\"J6kYj6IGcXyP3eMIp-WL3A\",\"cursor\":1,\"events\":[{\"type\":\"input\",\"sequence\":1,\"data\":{\"input\":{\"id\":\"01a0fcea-2b00-7000-8000-000000000002\",\"session_id\":\"01a0fcea-2b00-7000-8000-000000000001\",\"kind\":\"message\",\"admission\":\"accepted\",\"http_status\":202,\"problem\":null,\"accepted_at\":\"2026-10-02T14:00:00Z\",\"acceptance_order\":1,\"delivery\":\"pending\",\"blocking_reason\":null,\"transcript_position\":null,\"turn\":null,\"client_id\":\"draft-1\"}}}]}" * } */ SessionSSE: { data: string; }; /** * @description One parsed SSE event. Decode data as JSON and validate CollectionBatch separately; contentSchema is not asserted by ordinary JSON Schema validation. No event, id or retry fields are emitted. * @example { * "data": "{\"events\":[{\"type\":\"ready\",\"data\":{}},{\"type\":\"reset\",\"data\":{\"reason\":\"initial\"}}]}" * } * @example { * "data": "{\"events\":[{\"type\":\"activity\",\"data\":{\"session_id\":\"01a0fcea-2b00-7000-8000-000000000001\",\"cursor\":{\"generation\":\"J6kYj6IGcXyP3eMIp-WL3A\",\"sequence\":0},\"status\":{\"phase\":\"idle\",\"run_id\":null,\"interrupt_requested\":false,\"blocking_reason\":null},\"current_progress\":[],\"activity\":{\"lines\":[],\"output_scalars\":0,\"output_utf8_bytes\":0,\"observed_at\":\"2026-10-02T14:00:00Z\",\"latest_input\":null,\"latest_answer\":null}}}]}" * } */ CollectionSSE: { data: string; }; WorkItem: { id: components["schemas"]["ID"]; workspace: components["schemas"]["Workspace"]; title: string; notes: string; parent_id: components["schemas"]["ID"] | null; session_id: components["schemas"]["ID"] | null; run_id: components["schemas"]["ID"] | null; /** @enum {string} */ status: "open" | "active" | "blocked" | "done" | "cancelled"; revision: components["schemas"]["ID"]; created_at: components["schemas"]["Timestamp"]; updated_at: components["schemas"]["Timestamp"]; }; /** * @example { * "title": "Fix the parser" * } */ WorkCreate: { title: string; notes?: string; parent_id?: components["schemas"]["ID"] | null; session_id?: components["schemas"]["ID"] | null; run_id?: components["schemas"]["ID"] | null; notify_session_id?: components["schemas"]["ID"]; }; WorkPatch: { title?: string; notes?: string; session_id?: components["schemas"]["ID"] | null; run_id?: components["schemas"]["ID"] | null; /** @enum {string} */ status?: "open" | "active" | "blocked" | "done" | "cancelled"; notify_session_id?: components["schemas"]["ID"]; }; Paperclip: { id: components["schemas"]["ID"]; /** @enum {string} */ topic: "harness" | "workflow" | "bug" | "user" | "other"; title: string; message: string; suggestion: string; reply: string; /** @enum {string} */ status: "open" | "acknowledged" | "resolved" | "dismissed"; session_id: components["schemas"]["ID"] | null; workspace: components["schemas"]["Workspace"] | null; created_at: components["schemas"]["Timestamp"]; updated_at: components["schemas"]["Timestamp"]; resolution: string; resolving_session_id: components["schemas"]["ID"] | null; revision: components["schemas"]["ID"]; }; PaperclipCreate: { /** @enum {string} */ topic?: "harness" | "workflow" | "bug" | "user" | "other"; title?: string; message: string; suggestion?: string; session_id?: components["schemas"]["ID"] | null; workspace?: components["schemas"]["Workspace"] | null; }; /** @description Reply cannot accompany resolved or dismissed status. It acknowledges the item. */ PaperclipPatch: { /** @enum {string} */ status?: "acknowledged" | "resolved" | "dismissed"; reply?: string; resolution?: string; }; ScheduleJob: { id: components["schemas"]["ID"]; session_id: components["schemas"]["ID"]; /** @enum {string} */ kind: "once" | "recurring" | "heartbeat"; prompt: string; next_at: components["schemas"]["Timestamp"]; every_seconds: number | null; revision: components["schemas"]["ID"]; /** @description Null for historical schedules that did not record creation time. */ created_at: components["schemas"]["Timestamp"] | null; /** @description Null until a historical schedule records a new update. */ updated_at: components["schemas"]["Timestamp"] | null; }; ScheduleCreate: { session_id: components["schemas"]["ID"]; /** @enum {string} */ kind: "once" | "recurring" | "heartbeat"; prompt: string; /** @default 0 */ delay_seconds: number; every_seconds?: number; } & unknown; /** @description Validate complete candidate: once has null repetition; recurring and heartbeat require every_seconds. */ SchedulePatch: { /** @enum {string} */ kind?: "once" | "recurring" | "heartbeat"; prompt?: string; delay_seconds?: number; every_seconds?: number | null; }; LinkConfiguration: { workspace: components["schemas"]["Workspace"]; group_id: components["schemas"]["ID"]; members: components["schemas"]["Workspace"][]; revision: components["schemas"]["ID"]; next: components["schemas"]["PageToken"] | null; }; LinkConfigurationResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["LinkConfiguration"]; }; LinkGroup: { page?: components["schemas"]["PageDescriptor"]; configuration_resource: components["schemas"]["LinkConfigurationResource"]; presence: { workspace: components["schemas"]["Workspace"]; /** @description Observed directory presence. Null for an uninspected or unreachable location. */ exists: boolean | null; session_count: components["schemas"]["Counter"]; host: components["schemas"]["Host"] | null; }[]; next: components["schemas"]["PageToken"] | null; }; LinkMerge: { other_workspace: components["schemas"]["Workspace"]; other_etag: components["schemas"]["ETag"]; }; LinkChange: { resource: components["schemas"]["LinkConfigurationResource"]; notifications: components["schemas"]["TargetNotification"][]; notification_count: components["schemas"]["Counter"]; truncated: boolean; }; HookConfiguration: { id: components["schemas"]["ID"]; name: string; session_id: components["schemas"]["ID"]; enabled: boolean; signature_header: string; signature_prefix: string; revision: components["schemas"]["ID"]; }; HookConfigurationResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["HookConfiguration"]; }; Hook: { configuration_resource: components["schemas"]["HookConfigurationResource"]; /** @description Where a sender posts this hook's deliveries; null while no webhook intake listener runs. */ delivery_url: string | null; pending_count: components["schemas"]["Counter"]; deferral_reason: components["schemas"]["SafeReason"] | null; }; /** * @example { * "session_id": "01a0fcea-2b00-7000-8000-000000000001", * "name": "ci" * } */ HookCreate: { name: string; session_id: components["schemas"]["ID"]; enabled?: boolean; signature_header?: string; signature_prefix?: string; secret?: string; }; HookPatch: { name?: string; enabled?: boolean; signature_header?: string; signature_prefix?: string; }; HookSecretRequest: { secret?: string; }; /** * @description Secret appears only on creation and explicit rotation, including a generated secret. Never present on PATCH or reads. * @example { * "resource": { * "url": "/extensions/webhooks/hooks/hook-1?view=configuration", * "etag": "\"hook-revision-1\"", * "value": { * "id": "hook-1", * "name": "ci", * "session_id": "01a0fcea-2b00-7000-8000-000000000001", * "enabled": true, * "signature_header": "X-Albedo-Signature", * "signature_prefix": "sha256=", * "revision": "hook-revision-1" * } * }, * "notification": { * "state": "not_requested", * "code": null, * "detail": null * }, * "secret": "synthetic-example-hook-secret" * } */ HookChange: { resource: components["schemas"]["HookConfigurationResource"]; notification: components["schemas"]["Notification"]; secret?: string; }; HookPermission: { session_id: components["schemas"]["ID"]; agent_manage: boolean; revision: components["schemas"]["ID"]; }; HookPermissionPatch: { agent_manage?: boolean; }; HookPermissionResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["HookPermission"]; }; HookPermissionChange: { resource: components["schemas"]["HookPermissionResource"]; notification: components["schemas"]["Notification"]; }; /** @description Discord snowflake as decimal text. */ DiscordID: string; /** @description A session's Discord bot. The token never leaves the daemon. */ DiscordBot: { id: components["schemas"]["ID"]; session_id: components["schemas"]["ID"]; name: string; owner_id: components["schemas"]["DiscordID"]; enabled: boolean; revision: number; /** @enum {string} */ state: "disabled" | "connecting" | "online" | "reconnecting" | "failed"; detail: string | null; user: components["schemas"]["DiscordBotUser"] | null; application_id: components["schemas"]["DiscordID"] | null; invite_url: string | null; channels: components["schemas"]["Counter"]; allowed: components["schemas"]["Counter"]; requests: components["schemas"]["Counter"]; }; DiscordBotUser: { id: components["schemas"]["DiscordID"]; username: string; }; DiscordBotPage: { items: components["schemas"]["DiscordBot"][]; }; DiscordBotCreate: { session_id: components["schemas"]["ID"]; name: string; token: string; owner_id: string; }; DiscordBotPatch: { revision: number; name?: string; token?: string; owner_id?: string; enabled?: boolean; }; DiscordDeletion: { deleted: components["schemas"]["ID"]; }; DiscordUserDeletion: { deleted: components["schemas"]["DiscordID"]; }; /** * @description off ignores the channel; turn queues messages until the running turn ends; tool steers the running turn after its current tool call. * @enum {string} */ DiscordDelivery: "off" | "turn" | "tool"; DiscordGuildList: { guilds: components["schemas"]["DiscordGuild"][]; }; DiscordGuild: { id: components["schemas"]["DiscordID"]; name: string; channels: components["schemas"]["DiscordChannel"][]; }; DiscordChannel: { id: components["schemas"]["DiscordID"]; name: string; /** @description Discord channel type; 0 text, 2 voice, 4 category, 5 announcement, 15 forum. */ type: number; parent_id: components["schemas"]["DiscordID"] | null; position: number; delivery: components["schemas"]["DiscordDelivery"]; mentions_only: boolean; }; DiscordChannelSetting: { delivery: components["schemas"]["DiscordDelivery"]; mentions_only: boolean; guild_id?: components["schemas"]["DiscordID"]; guild_name?: string; channel_name?: string; }; DiscordChannelState: { channel_id: components["schemas"]["DiscordID"]; delivery: components["schemas"]["DiscordDelivery"]; mentions_only: boolean; }; DiscordDMs: { owner: components["schemas"]["DiscordOwner"]; allowed: components["schemas"]["DiscordAllowed"][]; requests: components["schemas"]["DiscordRequest"][]; }; DiscordOwner: { user_id: components["schemas"]["DiscordID"]; name: string | null; }; DiscordAllowed: { user_id: components["schemas"]["DiscordID"]; name: string | null; /** @description Unix milliseconds. */ added_at: number; }; /** @description Someone whose DMs were refused because they are not on the allow list. */ DiscordRequest: { user_id: components["schemas"]["DiscordID"]; username: string; preview: string; /** @description Unix milliseconds. */ last_at: number; count: number; }; DiscordAllow: { name: string | null; }; Delivery: { id: components["schemas"]["ID"]; hook_id: components["schemas"]["ID"]; session_id: components["schemas"]["ID"]; received_at: components["schemas"]["Timestamp"]; delivered_at: components["schemas"]["Timestamp"] | null; attempts: components["schemas"]["Counter"]; deferral_reason: components["schemas"]["SafeReason"] | null; }; DeliveryDetail: components["schemas"]["Delivery"] & { payload: { /** @enum {string} */ encoding: "utf8" | "base64"; data: string; }; }; WorkResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["WorkItem"]; }; /** * @example { * "resource": { * "url": "/extensions/work/items/work-1?workspace=%2Fworkspace%2Fproject", * "etag": "\"work-revision-1\"", * "value": { * "id": "work-1", * "workspace": "/workspace/project", * "title": "Fix the parser", * "notes": "", * "parent_id": null, * "session_id": null, * "run_id": null, * "status": "open", * "revision": "work-revision-1", * "created_at": "2026-10-02T14:00:00Z", * "updated_at": "2026-10-02T14:00:00Z" * } * }, * "notification": { * "state": "not_requested", * "code": null, * "detail": null * } * } */ WorkChange: { resource: components["schemas"]["WorkResource"]; notification: components["schemas"]["Notification"]; }; WorkPage: { items: components["schemas"]["WorkResource"][]; next: components["schemas"]["PageToken"] | null; page?: components["schemas"]["PageDescriptor"]; glance?: components["schemas"]["Glance"]; }; PaperclipResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["Paperclip"]; }; PaperclipChange: { resource: components["schemas"]["PaperclipResource"]; notification: components["schemas"]["Notification"]; }; PaperclipPage: { items: components["schemas"]["PaperclipResource"][]; next: components["schemas"]["PageToken"] | null; page?: components["schemas"]["PageDescriptor"]; glance?: components["schemas"]["Glance"]; }; WebSearchProvider: { name: components["schemas"]["ID"]; label: string; position: number; enabled: boolean; }; WebSearchProviderResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["WebSearchProvider"]; }; WebSearchProviderPage: { items: components["schemas"]["WebSearchProviderResource"][]; next: null; page: components["schemas"]["PageDescriptor"]; }; WebSearchProviderChangeRequest: { /** @enum {string} */ change: "up" | "down" | "toggle"; }; WebSearchProviderChange: { resource: components["schemas"]["WebSearchProviderResource"]; }; ScheduleResource: { url: components["schemas"]["ResourceURL"]; etag: components["schemas"]["ETag"]; value: components["schemas"]["ScheduleJob"]; }; ScheduleChange: { resource: components["schemas"]["ScheduleResource"]; notification: components["schemas"]["Notification"]; }; SchedulePage: { items: components["schemas"]["ScheduleResource"][]; next: components["schemas"]["PageToken"] | null; page?: components["schemas"]["PageDescriptor"]; glance?: components["schemas"]["Glance"]; }; HookPage: { items: components["schemas"]["Hook"][]; next: components["schemas"]["PageToken"] | null; }; DeliveryPage: { items: components["schemas"]["Delivery"][]; next: components["schemas"]["PageToken"] | null; }; ExtensionDeletion: { id: components["schemas"]["ID"]; notification: components["schemas"]["Notification"]; }; ProxyTextPart: { /** @constant */ type: "text"; text: string; }; ProxyImagePart: { /** @constant */ type: "image_url"; image_url: { url: string; /** @enum {string} */ detail?: "auto" | "low" | "high"; }; }; ProxyToolCall: { id: string; /** @constant */ type: "function"; function: { name: string; arguments: string; }; }; /** @description Tool messages require tool_call_id. Only assistant messages carry tool_calls. Images are accepted only as user data URLs. */ ProxyMessage: { /** @enum {string} */ role: "system" | "developer" | "user" | "assistant" | "tool"; content?: (string | (components["schemas"]["ProxyTextPart"] | components["schemas"]["ProxyImagePart"])[]) | null; name?: string; tool_call_id?: string; tool_calls?: components["schemas"]["ProxyToolCall"][]; reasoning_content?: string | null; }; ProxyToolDefinition: { /** @constant */ type: "function"; function: { name: string; description?: string; parameters?: components["schemas"]["DynamicJSON"]; strict?: boolean; }; }; /** * @example { * "model": "personal/example-model", * "messages": [ * { * "role": "user", * "content": "Hello" * } * ], * "stream": true * } */ ProxyCompletionRequest: { model: string; messages: components["schemas"]["ProxyMessage"][]; tools?: components["schemas"]["ProxyToolDefinition"][]; max_tokens?: number; max_completion_tokens?: number; temperature?: number; top_p?: number; stop?: string | string[]; tool_choice?: ("none" | "auto" | "required") | { /** @constant */ type: "function"; function: { name: string; }; }; parallel_tool_calls?: boolean; reasoning_effort?: string; reasoning?: { effort: string; }; response_format?: { /** @constant */ type: "json_object"; } | { /** @constant */ type: "json_schema"; json_schema: { name: string; description?: string; schema: components["schemas"]["DynamicJSON"]; strict?: boolean; }; }; /** @default false */ stream: boolean; stream_options?: { include_usage?: boolean; }; }; ProxyUsage: { prompt_tokens_details?: { cached_tokens: components["schemas"]["Counter"]; }; completion_tokens_details?: { reasoning_tokens: components["schemas"]["Counter"]; }; prompt_tokens: components["schemas"]["Counter"]; completion_tokens: components["schemas"]["Counter"]; total_tokens: components["schemas"]["Counter"]; }; ProxyError: { error: { message: string; type: string; code: string | null; param: string | null; }; }; /** * @example { * "id": "completion-1", * "object": "chat.completion", * "created": 1790949600, * "model": "personal/example-model", * "choices": [ * { * "index": 0, * "message": { * "role": "assistant", * "content": "Hello" * }, * "finish_reason": "stop" * } * ], * "usage": { * "prompt_tokens": 1, * "completion_tokens": 1, * "total_tokens": 2 * } * } */ ProxyCompletion: { id: components["schemas"]["ID"]; /** @constant */ object: "chat.completion"; created: components["schemas"]["Counter"]; model: string; choices: { index: components["schemas"]["Counter"]; message: { /** @constant */ role: "assistant"; content: string | null; reasoning_content?: string | null; tool_calls?: components["schemas"]["ProxyToolCall"][]; }; /** @enum {string} */ finish_reason: "stop" | "length" | "tool_calls" | "content_filter"; }[]; usage: components["schemas"]["ProxyUsage"] | null; }; ProxyToolDelta: { index: components["schemas"]["Counter"]; id?: string; /** @constant */ type?: "function"; function?: { name: string; arguments: string; }; }; ProxyChunk: { id: components["schemas"]["ID"]; /** @constant */ object: "chat.completion.chunk"; created: components["schemas"]["Counter"]; model: string; choices: { index: components["schemas"]["Counter"]; delta: { /** @constant */ role?: "assistant"; content?: string; reasoning_content?: string; tool_calls?: components["schemas"]["ProxyToolDelta"][]; }; finish_reason: ("stop" | "length" | "tool_calls" | "content_filter") | null; }[]; usage?: components["schemas"]["ProxyUsage"] | null; }; /** @description Data is a JSON chunk or error, followed by literal [DONE]. Validate decoded JSON explicitly. */ ProxySSE: { data: "[DONE]" | string; }; ProxyModels: { /** @constant */ object: "list"; data: { id: string; /** @constant */ object: "model"; created: components["schemas"]["Counter"]; owned_by: string; }[]; errors?: { profile: components["schemas"]["ID"]; message: string; }[]; }; AdmissionProblem: { /** @constant */ type: "about:blank"; title: string; status: number; detail: string; code: string; fields?: { pointer: string; detail: string; }[]; }; ContextCompaction: { /** @enum {string} */ status: "not_configured" | "not_needed" | "compacted" | "unknown"; strategy: components["schemas"]["ID"] | null; trigger_free_percent: number | null; input_limit_tokens: components["schemas"]["Counter"] | null; estimated_input_tokens: components["schemas"]["Counter"] | null; provider_input_tokens: components["schemas"]["Counter"] | null; provider_cached_input_tokens: components["schemas"]["Counter"] | null; before_items: components["schemas"]["Counter"] | null; after_items: components["schemas"]["Counter"] | null; source: string | null; estimate_method: string | null; }; }; responses: { /** @description Invalid request */ Problem400: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Missing or invalid daemon token */ Problem401: { headers: { WWWAuthenticate: components["headers"]["WWWAuthenticate"]; [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Disallowed origin or caller */ Problem403: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Unknown resource or disabled service */ Problem404: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Method not allowed */ Problem405: { headers: { Allow: components["headers"]["Allow"]; [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Unsupported response media type */ Problem406: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Conflicting intent, busy state or stale catalog */ Problem409: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Expired identity, deletion tombstone or obsolete context */ Problem410: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Stale representation or failed creation condition */ Problem412: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Body too large */ Problem413: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Unsupported request media type */ Problem415: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Required precondition missing */ Problem428: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Admission limit */ Problem429: { headers: { RetryAfter: components["headers"]["RetryAfter"]; [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description Unavailable owner, storage or upstream preparation */ Problem503: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; }; parameters: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ IfMatch: components["schemas"]["ETag"]; /** @description Conditional creation only. */ IfNoneMatch: "*"; Limit: number; Next: components["schemas"]["PageToken"]; }; requestBodies: never; headers: { /** @description Opaque strong validator for the complete canonical JSON representation. Mutation envelopes carry their resource validator inside the body. */ ETag: components["schemas"]["ETag"]; /** @description URL of the created resource. */ Location: components["schemas"]["ResourceURL"]; /** @description Includes Accept; browser responses also include Origin. */ Vary: string; /** @description Seconds until a later new admission may succeed. Never retries an already rejected identified input. */ RetryAfter: number; /** @description Bearer challenge. */ WWWAuthenticate: string; /** @description Allowed methods for a known path. */ Allow: string; }; pathItems: never; } export type $defs = Record; export interface operations { attachTerminal: { parameters: { query?: { /** @description Initial working directory for the terminal session. */ cwd?: string; /** @description Existing session ID to derive initial working directory from. */ session_id?: components["schemas"]["ID"]; /** @description Terminal column width (2-500, default 80). */ cols?: number; /** @description Terminal row height (1-200, default 24). */ rows?: number; /** @description Whether to restart an existing terminal process group. */ restart?: boolean; /** @description Command or shell executable to run (defaults to user shell). */ shell?: string; }; header?: never; path: { terminal_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description WebSocket connection established. */ 101: { headers: { [name: string]: unknown; }; content?: never; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 503: components["responses"]["Problem503"]; }; }; closeTerminal: { parameters: { query?: never; header?: never; path: { terminal_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Terminal session closed. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TerminalClose"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 503: components["responses"]["Problem503"]; }; }; getEvents: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description WebSocket connection established. */ 101: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Invalid WebSocket handshake; empty response body. */ 400: { headers: { [name: string]: unknown; }; content?: never; }; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 503: components["responses"]["Problem503"]; }; }; getServer: { parameters: { query?: { include?: "quota_history"; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; /** @description Exact provider ID to filter quota history. Requires include=quota_history, quota_account, and quota_limit. */ quota_provider?: string; /** @description Exact account label to filter quota history. Requires include=quota_history, quota_provider, and quota_limit. */ quota_account?: string; /** @description Exact limit ID to filter quota history. Requires include=quota_history, quota_provider, and quota_account. */ quota_limit?: string; /** @description Filter quota history to observations at or after this RFC 3339 UTC timestamp. Requires include=quota_history and the limit filter trio. */ quota_since?: components["schemas"]["Timestamp"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Server"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; shutdownServer: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["ShutdownRequest"]; }; }; responses: { /** @description Successful result. */ 202: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Shutdown"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; getSettings: { parameters: { query?: { group?: "providers" | "mcp" | "extensions" | "extension_settings" | "capabilities" | "models" | "ui"; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["SettingsRead"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; patchSettings: { parameters: { query: { group: "providers" | "mcp" | "extensions" | "extension_settings" | "capabilities" | "models" | "ui"; }; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path?: never; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/merge-patch+json": components["schemas"]["SettingsPatch"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["SettingsChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; getStorage: { parameters: { query?: { sessions_next?: components["schemas"]["PageToken"]; files_next?: components["schemas"]["PageToken"]; limit?: components["parameters"]["Limit"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["StorageReport"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; listSessions: { parameters: { query?: { scope?: "roots" | "all"; parent_id?: components["schemas"]["ID"]; family_id?: components["schemas"]["ID"]; workspace?: components["schemas"]["Workspace"]; search?: string; archived?: boolean; needs_reload?: boolean; sort?: "activity" | "frequent"; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { Vary: components["headers"]["Vary"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["SessionPage"]; "text/event-stream": unknown; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; getSession: { parameters: { query?: { view?: "configuration" | "status"; tail?: number; after_generation?: components["schemas"]["Generation"]; after_seq?: components["schemas"]["Counter"]; }; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { ETag: components["headers"]["ETag"]; Vary: components["headers"]["Vary"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["SessionRead"]; "text/event-stream": unknown; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 410: components["responses"]["Problem410"]; 503: components["responses"]["Problem503"]; }; }; createSession: { parameters: { query?: never; header: { /** @description Conditional creation only. */ "If-None-Match": components["parameters"]["IfNoneMatch"]; }; path: { session_id: components["schemas"]["UUIDv7"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["SessionCreationRequest"]; }; }; responses: { /** @description Successful result. */ 201: { headers: { Location: components["headers"]["Location"]; ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["Session"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 410: components["responses"]["Problem410"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 429: components["responses"]["Problem429"]; 503: components["responses"]["Problem503"]; }; }; deleteSession: { parameters: { query: { view: "configuration"; scope?: "leaf" | "subtree"; family_revision?: components["schemas"]["ID"]; }; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["SessionDeletion"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; patchSession: { parameters: { query: { view: "configuration"; }; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/merge-patch+json": components["schemas"]["SessionChangeRequest"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["SessionChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; recordVisit: { parameters: { query?: never; header?: never; path: { visit_id: components["schemas"]["UUIDv7"]; session_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["EmptyRequest"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Visit"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 410: components["responses"]["Problem410"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; getInput: { parameters: { query?: never; header?: never; path: { input_id: components["schemas"]["ID"]; session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Input"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 410: components["responses"]["Problem410"]; 503: components["responses"]["Problem503"]; }; }; putInput: { parameters: { query?: never; header?: never; path: { input_id: components["schemas"]["UUIDv7"]; session_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["InputRequest"]; }; }; responses: { /** @description Successful result. */ 202: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Input"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 410: components["responses"]["Problem410"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; /** @description Retained rejection, even if capacity later clears. */ 429: { headers: { "Retry-After": components["headers"]["RetryAfter"]; [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; 503: components["responses"]["Problem503"]; }; }; cancelInput: { parameters: { query?: never; header?: never; path: { input_id: components["schemas"]["ID"]; session_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["EmptyRequest"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["InputCancellation"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 410: components["responses"]["Problem410"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; interruptSession: { parameters: { query?: never; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["InterruptRequest"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Interruption"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; getActiveOutputContent: { parameters: { query: { snapshot: components["schemas"]["PageToken"]; next?: components["schemas"]["PageToken"]; }; header?: never; path: { session_id: components["schemas"]["ID"]; content_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Bounded UTF-8 content page at the signed snapshot cutoff */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["EntryContentPage"]; }; }; 400: components["responses"]["Problem400"]; 403: components["responses"]["Problem403"]; 410: components["responses"]["Problem410"]; 503: components["responses"]["Problem503"]; }; }; getHistory: { parameters: { query?: { view?: "entries" | "checkpoints"; before?: components["schemas"]["Counter"]; after?: components["schemas"]["Counter"]; next?: components["parameters"]["Next"]; limit?: number; }; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HistoryRead"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; getHistoryContentBatch: { parameters: { query: { /** @description Comma separated history entry ids, in display order, at most 200 of them, each at most 128 characters. */ entries: string; next?: components["parameters"]["Next"]; }; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["EntryContentBatch"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; getHistoryContent: { parameters: { query?: { next?: components["parameters"]["Next"]; }; header?: never; path: { entry_id: components["schemas"]["ID"]; session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["EntryContentPage"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; getHistoryImage: { parameters: { query?: never; header?: never; path: { session_id: components["schemas"]["ID"]; entry_id: components["schemas"]["ID"]; field: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description The decoded image, typed by its MIME type. */ 200: { headers: { [name: string]: unknown; }; content: { "image/png": string; "image/jpeg": string; "image/webp": string; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 503: components["responses"]["Problem503"]; }; }; getContext: { parameters: { query?: { view?: "summary" | "section" | "requests"; snapshot_id?: components["schemas"]["ID"]; section_id?: components["schemas"]["ID"]; page?: components["schemas"]["Counter"]; after?: components["schemas"]["Counter"]; /** @description Requests only. Include attempts finished at or after this Unix timestamp in milliseconds. */ since_ms?: components["schemas"]["Counter"]; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ContextRead"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 410: components["responses"]["Problem410"]; 503: components["responses"]["Problem503"]; }; }; getCatalog: { parameters: { query?: { kind?: "extensions" | "skills" | "instructions" | "mcp" | "commands"; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Catalog"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; getContextWindow: { parameters: { query?: never; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ContextWindow"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; getSessionFile: { parameters: { query: { /** @description Absolute on the workspace's machine, relative to the workspace, `~/...` in a local workspace, or the host-prefixed spelling `path` answers with. */ path: string; }; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["SessionFile"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; /** @description The file is over 1 MiB, or its JSON answer would exceed the response limit (`file_too_large`). */ 413: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description The file is binary or not valid UTF-8 (`file_not_text`). */ 415: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; /** @description The gather on the workspace's host failed or answered badly (`workspace_unavailable`). */ 502: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; 503: components["responses"]["Problem503"]; }; }; reloadSession: { parameters: { query?: never; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["ReloadRequest"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ReloadResult"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; upgradeKernel: { parameters: { query?: never; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["EmptyRequest"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["KernelUpgradeResult"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; compactSession: { parameters: { query?: never; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["CompactionRequest"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["CompactionResult"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; rewindSession: { parameters: { query?: never; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["RewindRequest"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["RewindResult"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; listModels: { parameters: { query?: { view?: "catalogue" | "cache-policy"; /** @description Cache-policy matching only; defaults to the empty selector. */ extension?: string; /** @description Cache-policy matching only; defaults to the empty selector. */ host?: string; model?: components["schemas"]["ID"]; provider_profile?: components["schemas"]["ID"]; provider?: components["schemas"]["ID"]; endpoint?: string; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ModelRead"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; getWorkspaces: { parameters: { query?: { location?: components["schemas"]["Workspace"]; include?: "preview"; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["WorkspaceRead"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 503: components["responses"]["Problem503"]; }; }; listHosts: { parameters: { query?: { target?: components["schemas"]["ID"]; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HostPage"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; probeHost: { parameters: { query?: never; header?: never; path: { host: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["EmptyRequest"]; }; }; responses: { /** @description Successful result. */ 202: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Host"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; getAuth: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Auth"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; getLogin: { parameters: { query?: never; header?: never; path: { login_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["Login"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 410: components["responses"]["Problem410"]; 503: components["responses"]["Problem503"]; }; }; createLogin: { parameters: { query?: never; header?: never; path: { login_id: components["schemas"]["UUIDv7"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["LoginRequest"]; }; }; responses: { /** @description Existing identified flow. */ 200: { headers: { ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["Login"]; }; }; /** @description Successful result. */ 201: { headers: { Location: components["headers"]["Location"]; ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["Login"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 410: components["responses"]["Problem410"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 429: components["responses"]["Problem429"]; 503: components["responses"]["Problem503"]; }; }; cancelLogin: { parameters: { query?: never; header?: never; path: { login_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 204: { headers: { [name: string]: unknown; }; content?: never; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 410: components["responses"]["Problem410"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; answerLogin: { parameters: { query?: never; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { login_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/merge-patch+json": components["schemas"]["LoginPatch"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["Login"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 410: components["responses"]["Problem410"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; deleteAccount: { parameters: { query?: never; header?: never; path: { account_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 204: { headers: { [name: string]: unknown; }; content?: never; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; patchAccount: { parameters: { query?: never; header?: never; path: { account_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["AccountPatch"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Account"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; putKeyAccount: { parameters: { query?: never; header?: never; path: { account_id: components["schemas"]["UUIDv7"]; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["KeyAccountRequest"]; }; }; responses: { /** @description The same request again; the account it created. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Account"]; }; }; /** @description Created. */ 201: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["Account"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; listWork: { parameters: { query: { workspace: components["schemas"]["Workspace"]; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["WorkPage"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; createWork: { parameters: { query: { workspace: components["schemas"]["Workspace"]; }; header?: never; path?: never; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["WorkCreate"]; }; }; responses: { /** @description Successful result. */ 201: { headers: { Location: components["headers"]["Location"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["WorkChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; getWork: { parameters: { query: { workspace: components["schemas"]["Workspace"]; }; header?: never; path: { item_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["WorkItem"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; deleteWork: { parameters: { query: { workspace: components["schemas"]["Workspace"]; /** @description Queue the deletion note for this session after the durable edit. */ notify_session_id?: components["schemas"]["ID"]; }; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { item_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ExtensionDeletion"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; patchWork: { parameters: { query: { workspace: components["schemas"]["Workspace"]; }; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { item_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/merge-patch+json": components["schemas"]["WorkPatch"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["WorkChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; listArtifacts: { parameters: { query?: { limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; /** @description Only this session's artifacts. */ session?: components["schemas"]["ID"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ArtifactPage"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; getArtifact: { parameters: { query?: never; header?: never; path: { artifact_id: components["schemas"]["ArtifactID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ArtifactDetail"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; deleteArtifact: { parameters: { query?: never; header?: never; path: { artifact_id: components["schemas"]["ArtifactID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Deleted. */ 204: { headers: { [name: string]: unknown; }; content?: never; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; getArtifactFile: { parameters: { query?: never; header?: never; path: { /** @description The artifact's id and capability key, joined by a dot. */ frame: string; /** @description A version number, or `latest` for the newest. */ version: string; path: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description The file, with its content type. An HTML file has the page bridge injected at the start of its head. */ 200: { headers: { [name: string]: unknown; }; content: { "*/*": string; }; }; /** @description The bare version path goes to its folder (`latest` to `latest/`), and an empty path to an entry inside a folder goes to that entry, so the page's relative paths resolve inside the version. */ 302: { headers: { /** @description Relative to the request. */ Location?: string; [name: string]: unknown; }; content?: never; }; /** @description The file named by `If-None-Match` is still the one served. */ 304: { headers: { [name: string]: unknown; }; content?: never; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; saveArtifactState: { parameters: { query?: never; header?: never; path: { /** @description The artifact's id and capability key, joined by a dot. */ frame: string; /** @description A version number, or `latest` for the newest. */ version: string; }; cookie?: never; }; /** @description JSON sent as text/plain, so a sandboxed page can send it without a preflight. */ requestBody: { content: { "text/plain": components["schemas"]["ArtifactState"]; }; }; responses: { /** @description Saved. */ 204: { headers: { [name: string]: unknown; }; content?: never; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 413: components["responses"]["Problem413"]; 503: components["responses"]["Problem503"]; }; }; reportArtifactError: { parameters: { query?: never; header?: never; path: { /** @description The artifact's id and capability key, joined by a dot. */ frame: string; /** @description A version number, or `latest` for the newest. */ version: string; }; cookie?: never; }; /** @description JSON sent as text/plain, so a sandboxed page can send it without a preflight. */ requestBody: { content: { "text/plain": components["schemas"]["ArtifactError"]; }; }; responses: { /** @description Recorded. */ 204: { headers: { [name: string]: unknown; }; content?: never; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 413: components["responses"]["Problem413"]; 503: components["responses"]["Problem503"]; }; }; getArtifactLatestVersion: { parameters: { query?: { /** @description The version the page shows; the answer waits for one past it. */ after?: number; }; header?: never; path: { /** @description The artifact's id and capability key, joined by a dot. */ frame: string; /** @description A version number, or `latest` for the newest. */ version: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description The artifact's latest version. */ 200: { headers: { "Cache-Control"?: "no-store"; [name: string]: unknown; }; content: { "application/json": { version: number; }; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; listPaperclips: { parameters: { query?: { limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PaperclipPage"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; createPaperclips: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["PaperclipCreate"]; }; }; responses: { /** @description Successful result. */ 201: { headers: { Location: components["headers"]["Location"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["PaperclipChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; getPaperclips: { parameters: { query?: never; header?: never; path: { item_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["Paperclip"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; deletePaperclips: { parameters: { query?: never; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { item_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ExtensionDeletion"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; patchPaperclips: { parameters: { query?: never; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { item_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/merge-patch+json": components["schemas"]["PaperclipPatch"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["PaperclipChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; listWebSearchProviders: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["WebSearchProviderPage"]; }; }; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 503: components["responses"]["Problem503"]; }; }; changeWebSearchProvider: { parameters: { query?: never; header?: never; path: { name: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["WebSearchProviderChangeRequest"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["WebSearchProviderChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; listSchedule: { parameters: { query: { session_id: components["schemas"]["ID"]; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["SchedulePage"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; createSchedule: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["ScheduleCreate"]; }; }; responses: { /** @description Successful result. */ 201: { headers: { Location: components["headers"]["Location"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["ScheduleChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; getSchedule: { parameters: { query?: never; header?: never; path: { job_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["ScheduleJob"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; deleteSchedule: { parameters: { query?: never; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { job_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ExtensionDeletion"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; patchSchedule: { parameters: { query?: never; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { job_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/merge-patch+json": components["schemas"]["SchedulePatch"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ScheduleChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; getLinkGroup: { parameters: { query: { workspace: components["schemas"]["Workspace"]; view?: "configuration"; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["LinkGroup"] | components["schemas"]["LinkConfiguration"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; mergeLinkGroups: { parameters: { query: { workspace: components["schemas"]["Workspace"]; view: "configuration"; }; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path?: never; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["LinkMerge"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["LinkChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; unlinkWorkspace: { parameters: { query: { workspace: components["schemas"]["Workspace"]; member: components["schemas"]["Workspace"]; view: "configuration"; }; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["LinkChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; listHooks: { parameters: { query?: { session_id?: components["schemas"]["ID"]; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HookPage"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; createHook: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["HookCreate"]; }; }; responses: { /** @description Successful result. */ 201: { headers: { Location: components["headers"]["Location"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["HookChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; getHook: { parameters: { query?: { view?: "configuration"; }; header?: never; path: { hook_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["Hook"] | components["schemas"]["HookConfiguration"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; deleteHook: { parameters: { query: { view: "configuration"; }; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { hook_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ExtensionDeletion"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; patchHook: { parameters: { query: { view: "configuration"; }; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { hook_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/merge-patch+json": components["schemas"]["HookPatch"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HookChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; rotateHookSecret: { parameters: { query?: never; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { hook_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["HookSecretRequest"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HookChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; listHookDeliveries: { parameters: { query?: { state?: "pending" | "delivered" | "all"; limit?: components["parameters"]["Limit"]; next?: components["parameters"]["Next"]; }; header?: never; path: { hook_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DeliveryPage"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; deliverWebhook: { parameters: { query?: never; header?: { /** @description Optional sender identity scoped to hook and exact body hash. */ "X-Albedo-Event-Id"?: string; }; path: { hook_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description Raw bytes, not a parsed JSON requirement. Verify signature before admission. */ requestBody: { content: { "*/*": string; }; }; responses: { /** @description Successful result. */ 202: { headers: { [name: string]: unknown; }; content: { "application/json": { delivery_id: components["schemas"]["ID"]; }; }; }; 400: components["responses"]["Problem400"]; /** @description Missing or invalid hook signature. */ 403: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 429: components["responses"]["Problem429"]; 503: components["responses"]["Problem503"]; }; }; getDelivery: { parameters: { query?: never; header?: never; path: { delivery_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DeliveryDetail"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; getHookPermission: { parameters: { query?: never; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { ETag: components["headers"]["ETag"]; [name: string]: unknown; }; content: { "application/json": components["schemas"]["HookPermission"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; patchHookPermission: { parameters: { query?: never; header: { /** @description Observed canonical representation validator. Wildcards and weak validators are not accepted. */ "If-Match": components["parameters"]["IfMatch"]; }; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/merge-patch+json": components["schemas"]["HookPermissionPatch"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["HookPermissionChange"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 428: components["responses"]["Problem428"]; 503: components["responses"]["Problem503"]; }; }; listDiscordBots: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DiscordBotPage"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; createDiscordBot: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["DiscordBotCreate"]; }; }; responses: { /** @description Successful result. */ 201: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DiscordBot"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 409: components["responses"]["Problem409"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; getDiscordBot: { parameters: { query?: never; header?: never; path: { bot_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DiscordBot"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; deleteDiscordBot: { parameters: { query: { revision: number; }; header?: never; path: { bot_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DiscordDeletion"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 412: components["responses"]["Problem412"]; 503: components["responses"]["Problem503"]; }; }; patchDiscordBot: { parameters: { query?: never; header?: never; path: { bot_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/merge-patch+json": components["schemas"]["DiscordBotPatch"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DiscordBot"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 412: components["responses"]["Problem412"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; listDiscordGuilds: { parameters: { query?: never; header?: never; path: { bot_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DiscordGuildList"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; putDiscordChannel: { parameters: { query?: never; header?: never; path: { bot_id: components["schemas"]["ID"]; channel_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["DiscordChannelSetting"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DiscordChannelState"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; getDiscordDMs: { parameters: { query?: never; header?: never; path: { bot_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DiscordDMs"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; putDiscordDM: { parameters: { query?: never; header?: never; path: { bot_id: components["schemas"]["ID"]; user_id: components["schemas"]["ID"]; }; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["DiscordAllow"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DiscordAllowed"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; deleteDiscordDM: { parameters: { query?: never; header?: never; path: { bot_id: components["schemas"]["ID"]; user_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DiscordUserDeletion"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; deleteDiscordRequest: { parameters: { query?: never; header?: never; path: { bot_id: components["schemas"]["ID"]; user_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["DiscordUserDeletion"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 403: components["responses"]["Problem403"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; listProxyModels: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyModels"]; }; }; /** @description OpenAI proxy error. */ 400: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 403: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 405: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 406: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 503: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; }; }; createProxyCompletion: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** @description UTF-8 JSON; duplicate keys and unknown fields are rejected. */ requestBody: { content: { "application/json": components["schemas"]["ProxyCompletionRequest"]; }; }; responses: { /** @description Successful result. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyCompletion"]; "text/event-stream": unknown; }; }; /** @description OpenAI proxy error. */ 400: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 403: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 405: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 406: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 413: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 415: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; /** @description OpenAI proxy error. */ 503: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["ProxyError"]; }; }; }; }; listJobs: { parameters: { query?: never; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description Known live jobs, with up to 100 summaries ordered by ID. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["JobCollection"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; listRecentJobs: { parameters: { query?: never; header?: never; path: { session_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description The kernel's job book. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["JobRecordCollection"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 503: components["responses"]["Problem503"]; }; }; readJobOutput: { parameters: { query?: { /** @description Byte to start from. Omitted, the page ends at the end of the output. */ offset?: number; /** @description Most bytes in the page; four hold any character. */ limit?: number; }; header?: never; path: { session_id: components["schemas"]["ID"]; job_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: never; responses: { /** @description One page of output and the job it belongs to. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["JobOutputPage"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; /** @description The page lies in output the kernel no longer keeps; read the end of the output instead. */ 409: { headers: { [name: string]: unknown; }; content: { "application/problem+json": components["schemas"]["Problem"]; }; }; 503: components["responses"]["Problem503"]; }; }; stopJob: { parameters: { query?: never; header?: never; path: { session_id: components["schemas"]["ID"]; job_id: components["schemas"]["ID"]; }; cookie?: never; }; requestBody?: { content: { "application/json": Record; }; }; responses: { /** @description The observed job's process group was stopped. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["JobStop"]; }; }; 400: components["responses"]["Problem400"]; 401: components["responses"]["Problem401"]; 404: components["responses"]["Problem404"]; 405: components["responses"]["Problem405"]; 406: components["responses"]["Problem406"]; 413: components["responses"]["Problem413"]; 415: components["responses"]["Problem415"]; 503: components["responses"]["Problem503"]; }; }; }