{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://sandbox-agent/schemas/opencode.json", "title": "OpenCode SDK Schema", "definitions": { "Event.installation.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "installation.updated" }, "properties": { "type": "object", "properties": { "version": { "type": "string" } }, "required": [ "version" ] } }, "required": [ "type", "properties" ] }, "Event.installation.update-available": { "type": "object", "properties": { "type": { "type": "string", "const": "installation.update-available" }, "properties": { "type": "object", "properties": { "version": { "type": "string" } }, "required": [ "version" ] } }, "required": [ "type", "properties" ] }, "Project": { "type": "object", "properties": { "id": { "type": "string" }, "worktree": { "type": "string" }, "vcs": { "type": "string", "const": "git" }, "name": { "type": "string" }, "icon": { "type": "object", "properties": { "url": { "type": "string" }, "override": { "type": "string" }, "color": { "type": "string" } } }, "commands": { "type": "object", "properties": { "start": { "description": "Startup script to run when creating a new workspace (worktree)", "type": "string" } } }, "time": { "type": "object", "properties": { "created": { "type": "number" }, "updated": { "type": "number" }, "initialized": { "type": "number" } }, "required": [ "created", "updated" ] }, "sandboxes": { "type": "array", "items": { "type": "string" } } }, "required": [ "id", "worktree", "time", "sandboxes" ] }, "Event.project.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "project.updated" }, "properties": { "$ref": "#/definitions/Project" } }, "required": [ "type", "properties" ] }, "Event.server.instance.disposed": { "type": "object", "properties": { "type": { "type": "string", "const": "server.instance.disposed" }, "properties": { "type": "object", "properties": { "directory": { "type": "string" } }, "required": [ "directory" ] } }, "required": [ "type", "properties" ] }, "Event.server.connected": { "type": "object", "properties": { "type": { "type": "string", "const": "server.connected" }, "properties": { "type": "object", "properties": {} } }, "required": [ "type", "properties" ] }, "Event.global.disposed": { "type": "object", "properties": { "type": { "type": "string", "const": "global.disposed" }, "properties": { "type": "object", "properties": {} } }, "required": [ "type", "properties" ] }, "Event.lsp.client.diagnostics": { "type": "object", "properties": { "type": { "type": "string", "const": "lsp.client.diagnostics" }, "properties": { "type": "object", "properties": { "serverID": { "type": "string" }, "path": { "type": "string" } }, "required": [ "serverID", "path" ] } }, "required": [ "type", "properties" ] }, "Event.lsp.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "lsp.updated" }, "properties": { "type": "object", "properties": {} } }, "required": [ "type", "properties" ] }, "Event.file.edited": { "type": "object", "properties": { "type": { "type": "string", "const": "file.edited" }, "properties": { "type": "object", "properties": { "file": { "type": "string" } }, "required": [ "file" ] } }, "required": [ "type", "properties" ] }, "FileDiff": { "type": "object", "properties": { "file": { "type": "string" }, "before": { "type": "string" }, "after": { "type": "string" }, "additions": { "type": "number" }, "deletions": { "type": "number" } }, "required": [ "file", "before", "after", "additions", "deletions" ] }, "UserMessage": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "role": { "type": "string", "const": "user" }, "time": { "type": "object", "properties": { "created": { "type": "number" } }, "required": [ "created" ] }, "summary": { "type": "object", "properties": { "title": { "type": "string" }, "body": { "type": "string" }, "diffs": { "type": "array", "items": { "$ref": "#/definitions/FileDiff" } } }, "required": [ "diffs" ] }, "agent": { "type": "string" }, "model": { "type": "object", "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, "required": [ "providerID", "modelID" ] }, "system": { "type": "string" }, "tools": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "boolean" } }, "variant": { "type": "string" } }, "required": [ "id", "sessionID", "role", "time", "agent", "model" ] }, "ProviderAuthError": { "type": "object", "properties": { "name": { "type": "string", "const": "ProviderAuthError" }, "data": { "type": "object", "properties": { "providerID": { "type": "string" }, "message": { "type": "string" } }, "required": [ "providerID", "message" ] } }, "required": [ "name", "data" ] }, "UnknownError": { "type": "object", "properties": { "name": { "type": "string", "const": "UnknownError" }, "data": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } }, "required": [ "name", "data" ] }, "MessageOutputLengthError": { "type": "object", "properties": { "name": { "type": "string", "const": "MessageOutputLengthError" }, "data": { "type": "object", "properties": {} } }, "required": [ "name", "data" ] }, "MessageAbortedError": { "type": "object", "properties": { "name": { "type": "string", "const": "MessageAbortedError" }, "data": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } }, "required": [ "name", "data" ] }, "APIError": { "type": "object", "properties": { "name": { "type": "string", "const": "APIError" }, "data": { "type": "object", "properties": { "message": { "type": "string" }, "statusCode": { "type": "number" }, "isRetryable": { "type": "boolean" }, "responseHeaders": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "responseBody": { "type": "string" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } } }, "required": [ "message", "isRetryable" ] } }, "required": [ "name", "data" ] }, "AssistantMessage": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "role": { "type": "string", "const": "assistant" }, "time": { "type": "object", "properties": { "created": { "type": "number" }, "completed": { "type": "number" } }, "required": [ "created" ] }, "error": { "anyOf": [ { "$ref": "#/definitions/ProviderAuthError" }, { "$ref": "#/definitions/UnknownError" }, { "$ref": "#/definitions/MessageOutputLengthError" }, { "$ref": "#/definitions/MessageAbortedError" }, { "$ref": "#/definitions/APIError" } ] }, "parentID": { "type": "string" }, "modelID": { "type": "string" }, "providerID": { "type": "string" }, "mode": { "type": "string" }, "agent": { "type": "string" }, "path": { "type": "object", "properties": { "cwd": { "type": "string" }, "root": { "type": "string" } }, "required": [ "cwd", "root" ] }, "summary": { "type": "boolean" }, "cost": { "type": "number" }, "tokens": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "reasoning": { "type": "number" }, "cache": { "type": "object", "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, "required": [ "read", "write" ] } }, "required": [ "input", "output", "reasoning", "cache" ] }, "finish": { "type": "string" } }, "required": [ "id", "sessionID", "role", "time", "parentID", "modelID", "providerID", "mode", "agent", "path", "cost", "tokens" ] }, "Message": { "anyOf": [ { "$ref": "#/definitions/UserMessage" }, { "$ref": "#/definitions/AssistantMessage" } ] }, "Event.message.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "message.updated" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/definitions/Message" } }, "required": [ "info" ] } }, "required": [ "type", "properties" ] }, "Event.message.removed": { "type": "object", "properties": { "type": { "type": "string", "const": "message.removed" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "messageID": { "type": "string" } }, "required": [ "sessionID", "messageID" ] } }, "required": [ "type", "properties" ] }, "TextPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "text" }, "text": { "type": "string" }, "synthetic": { "type": "boolean" }, "ignored": { "type": "boolean" }, "time": { "type": "object", "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, "required": [ "start" ] }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": [ "id", "sessionID", "messageID", "type", "text" ] }, "ReasoningPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "reasoning" }, "text": { "type": "string" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "time": { "type": "object", "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, "required": [ "start" ] } }, "required": [ "id", "sessionID", "messageID", "type", "text", "time" ] }, "FilePartSourceText": { "type": "object", "properties": { "value": { "type": "string" }, "start": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "end": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } }, "required": [ "value", "start", "end" ] }, "FileSource": { "type": "object", "properties": { "text": { "$ref": "#/definitions/FilePartSourceText" }, "type": { "type": "string", "const": "file" }, "path": { "type": "string" } }, "required": [ "text", "type", "path" ] }, "Range": { "type": "object", "properties": { "start": { "type": "object", "properties": { "line": { "type": "number" }, "character": { "type": "number" } }, "required": [ "line", "character" ] }, "end": { "type": "object", "properties": { "line": { "type": "number" }, "character": { "type": "number" } }, "required": [ "line", "character" ] } }, "required": [ "start", "end" ] }, "SymbolSource": { "type": "object", "properties": { "text": { "$ref": "#/definitions/FilePartSourceText" }, "type": { "type": "string", "const": "symbol" }, "path": { "type": "string" }, "range": { "$ref": "#/definitions/Range" }, "name": { "type": "string" }, "kind": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } }, "required": [ "text", "type", "path", "range", "name", "kind" ] }, "ResourceSource": { "type": "object", "properties": { "text": { "$ref": "#/definitions/FilePartSourceText" }, "type": { "type": "string", "const": "resource" }, "clientName": { "type": "string" }, "uri": { "type": "string" } }, "required": [ "text", "type", "clientName", "uri" ] }, "FilePartSource": { "anyOf": [ { "$ref": "#/definitions/FileSource" }, { "$ref": "#/definitions/SymbolSource" }, { "$ref": "#/definitions/ResourceSource" } ] }, "FilePart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "file" }, "mime": { "type": "string" }, "filename": { "type": "string" }, "url": { "type": "string" }, "source": { "$ref": "#/definitions/FilePartSource" } }, "required": [ "id", "sessionID", "messageID", "type", "mime", "url" ] }, "ToolStatePending": { "type": "object", "properties": { "status": { "type": "string", "const": "pending" }, "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "raw": { "type": "string" } }, "required": [ "status", "input", "raw" ] }, "ToolStateRunning": { "type": "object", "properties": { "status": { "type": "string", "const": "running" }, "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "title": { "type": "string" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "time": { "type": "object", "properties": { "start": { "type": "number" } }, "required": [ "start" ] } }, "required": [ "status", "input", "time" ] }, "ToolStateCompleted": { "type": "object", "properties": { "status": { "type": "string", "const": "completed" }, "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "output": { "type": "string" }, "title": { "type": "string" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "time": { "type": "object", "properties": { "start": { "type": "number" }, "end": { "type": "number" }, "compacted": { "type": "number" } }, "required": [ "start", "end" ] }, "attachments": { "type": "array", "items": { "$ref": "#/definitions/FilePart" } } }, "required": [ "status", "input", "output", "title", "metadata", "time" ] }, "ToolStateError": { "type": "object", "properties": { "status": { "type": "string", "const": "error" }, "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "error": { "type": "string" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "time": { "type": "object", "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, "required": [ "start", "end" ] } }, "required": [ "status", "input", "error", "time" ] }, "ToolState": { "anyOf": [ { "$ref": "#/definitions/ToolStatePending" }, { "$ref": "#/definitions/ToolStateRunning" }, { "$ref": "#/definitions/ToolStateCompleted" }, { "$ref": "#/definitions/ToolStateError" } ] }, "ToolPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "tool" }, "callID": { "type": "string" }, "tool": { "type": "string" }, "state": { "$ref": "#/definitions/ToolState" }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": [ "id", "sessionID", "messageID", "type", "callID", "tool", "state" ] }, "StepStartPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "step-start" }, "snapshot": { "type": "string" } }, "required": [ "id", "sessionID", "messageID", "type" ] }, "StepFinishPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "step-finish" }, "reason": { "type": "string" }, "snapshot": { "type": "string" }, "cost": { "type": "number" }, "tokens": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "reasoning": { "type": "number" }, "cache": { "type": "object", "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, "required": [ "read", "write" ] } }, "required": [ "input", "output", "reasoning", "cache" ] } }, "required": [ "id", "sessionID", "messageID", "type", "reason", "cost", "tokens" ] }, "SnapshotPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "snapshot" }, "snapshot": { "type": "string" } }, "required": [ "id", "sessionID", "messageID", "type", "snapshot" ] }, "PatchPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "patch" }, "hash": { "type": "string" }, "files": { "type": "array", "items": { "type": "string" } } }, "required": [ "id", "sessionID", "messageID", "type", "hash", "files" ] }, "AgentPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "agent" }, "name": { "type": "string" }, "source": { "type": "object", "properties": { "value": { "type": "string" }, "start": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "end": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } }, "required": [ "value", "start", "end" ] } }, "required": [ "id", "sessionID", "messageID", "type", "name" ] }, "RetryPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "retry" }, "attempt": { "type": "number" }, "error": { "$ref": "#/definitions/APIError" }, "time": { "type": "object", "properties": { "created": { "type": "number" } }, "required": [ "created" ] } }, "required": [ "id", "sessionID", "messageID", "type", "attempt", "error", "time" ] }, "CompactionPart": { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "compaction" }, "auto": { "type": "boolean" } }, "required": [ "id", "sessionID", "messageID", "type", "auto" ] }, "Part": { "anyOf": [ { "$ref": "#/definitions/TextPart" }, { "type": "object", "properties": { "id": { "type": "string" }, "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "type": { "type": "string", "const": "subtask" }, "prompt": { "type": "string" }, "description": { "type": "string" }, "agent": { "type": "string" }, "model": { "type": "object", "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, "required": [ "providerID", "modelID" ] }, "command": { "type": "string" } }, "required": [ "id", "sessionID", "messageID", "type", "prompt", "description", "agent" ] }, { "$ref": "#/definitions/ReasoningPart" }, { "$ref": "#/definitions/FilePart" }, { "$ref": "#/definitions/ToolPart" }, { "$ref": "#/definitions/StepStartPart" }, { "$ref": "#/definitions/StepFinishPart" }, { "$ref": "#/definitions/SnapshotPart" }, { "$ref": "#/definitions/PatchPart" }, { "$ref": "#/definitions/AgentPart" }, { "$ref": "#/definitions/RetryPart" }, { "$ref": "#/definitions/CompactionPart" } ] }, "Event.message.part.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "message.part.updated" }, "properties": { "type": "object", "properties": { "part": { "$ref": "#/definitions/Part" }, "delta": { "type": "string" } }, "required": [ "part" ] } }, "required": [ "type", "properties" ] }, "Event.message.part.removed": { "type": "object", "properties": { "type": { "type": "string", "const": "message.part.removed" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "messageID": { "type": "string" }, "partID": { "type": "string" } }, "required": [ "sessionID", "messageID", "partID" ] } }, "required": [ "type", "properties" ] }, "PermissionRequest": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^per.*" }, "sessionID": { "type": "string", "pattern": "^ses.*" }, "permission": { "type": "string" }, "patterns": { "type": "array", "items": { "type": "string" } }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "always": { "type": "array", "items": { "type": "string" } }, "tool": { "type": "object", "properties": { "messageID": { "type": "string" }, "callID": { "type": "string" } }, "required": [ "messageID", "callID" ] } }, "required": [ "id", "sessionID", "permission", "patterns", "metadata", "always" ] }, "Event.permission.asked": { "type": "object", "properties": { "type": { "type": "string", "const": "permission.asked" }, "properties": { "$ref": "#/definitions/PermissionRequest" } }, "required": [ "type", "properties" ] }, "Event.permission.replied": { "type": "object", "properties": { "type": { "type": "string", "const": "permission.replied" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "requestID": { "type": "string" }, "reply": { "type": "string", "enum": [ "once", "always", "reject" ] } }, "required": [ "sessionID", "requestID", "reply" ] } }, "required": [ "type", "properties" ] }, "SessionStatus": { "anyOf": [ { "type": "object", "properties": { "type": { "type": "string", "const": "idle" } }, "required": [ "type" ] }, { "type": "object", "properties": { "type": { "type": "string", "const": "retry" }, "attempt": { "type": "number" }, "message": { "type": "string" }, "next": { "type": "number" } }, "required": [ "type", "attempt", "message", "next" ] }, { "type": "object", "properties": { "type": { "type": "string", "const": "busy" } }, "required": [ "type" ] } ] }, "Event.session.status": { "type": "object", "properties": { "type": { "type": "string", "const": "session.status" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "status": { "$ref": "#/definitions/SessionStatus" } }, "required": [ "sessionID", "status" ] } }, "required": [ "type", "properties" ] }, "Event.session.idle": { "type": "object", "properties": { "type": { "type": "string", "const": "session.idle" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" } }, "required": [ "sessionID" ] } }, "required": [ "type", "properties" ] }, "QuestionOption": { "type": "object", "properties": { "label": { "description": "Display text (1-5 words, concise)", "type": "string" }, "description": { "description": "Explanation of choice", "type": "string" } }, "required": [ "label", "description" ] }, "QuestionInfo": { "type": "object", "properties": { "question": { "description": "Complete question", "type": "string" }, "header": { "description": "Very short label (max 30 chars)", "type": "string" }, "options": { "description": "Available choices", "type": "array", "items": { "$ref": "#/definitions/QuestionOption" } }, "multiple": { "description": "Allow selecting multiple choices", "type": "boolean" }, "custom": { "description": "Allow typing a custom answer (default: true)", "type": "boolean" } }, "required": [ "question", "header", "options" ] }, "QuestionRequest": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^que.*" }, "sessionID": { "type": "string", "pattern": "^ses.*" }, "questions": { "description": "Questions to ask", "type": "array", "items": { "$ref": "#/definitions/QuestionInfo" } }, "tool": { "type": "object", "properties": { "messageID": { "type": "string" }, "callID": { "type": "string" } }, "required": [ "messageID", "callID" ] } }, "required": [ "id", "sessionID", "questions" ] }, "Event.question.asked": { "type": "object", "properties": { "type": { "type": "string", "const": "question.asked" }, "properties": { "$ref": "#/definitions/QuestionRequest" } }, "required": [ "type", "properties" ] }, "QuestionAnswer": { "type": "array", "items": { "type": "string" } }, "Event.question.replied": { "type": "object", "properties": { "type": { "type": "string", "const": "question.replied" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "requestID": { "type": "string" }, "answers": { "type": "array", "items": { "$ref": "#/definitions/QuestionAnswer" } } }, "required": [ "sessionID", "requestID", "answers" ] } }, "required": [ "type", "properties" ] }, "Event.question.rejected": { "type": "object", "properties": { "type": { "type": "string", "const": "question.rejected" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "requestID": { "type": "string" } }, "required": [ "sessionID", "requestID" ] } }, "required": [ "type", "properties" ] }, "Event.session.compacted": { "type": "object", "properties": { "type": { "type": "string", "const": "session.compacted" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" } }, "required": [ "sessionID" ] } }, "required": [ "type", "properties" ] }, "Event.file.watcher.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "file.watcher.updated" }, "properties": { "type": "object", "properties": { "file": { "type": "string" }, "event": { "anyOf": [ { "type": "string", "const": "add" }, { "type": "string", "const": "change" }, { "type": "string", "const": "unlink" } ] } }, "required": [ "file", "event" ] } }, "required": [ "type", "properties" ] }, "Todo": { "type": "object", "properties": { "content": { "description": "Brief description of the task", "type": "string" }, "status": { "description": "Current status of the task: pending, in_progress, completed, cancelled", "type": "string" }, "priority": { "description": "Priority level of the task: high, medium, low", "type": "string" }, "id": { "description": "Unique identifier for the todo item", "type": "string" } }, "required": [ "content", "status", "priority", "id" ] }, "Event.todo.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "todo.updated" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "todos": { "type": "array", "items": { "$ref": "#/definitions/Todo" } } }, "required": [ "sessionID", "todos" ] } }, "required": [ "type", "properties" ] }, "Event.tui.prompt.append": { "type": "object", "properties": { "type": { "type": "string", "const": "tui.prompt.append" }, "properties": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ] } }, "required": [ "type", "properties" ] }, "Event.tui.command.execute": { "type": "object", "properties": { "type": { "type": "string", "const": "tui.command.execute" }, "properties": { "type": "object", "properties": { "command": { "anyOf": [ { "type": "string", "enum": [ "session.list", "session.new", "session.share", "session.interrupt", "session.compact", "session.page.up", "session.page.down", "session.line.up", "session.line.down", "session.half.page.up", "session.half.page.down", "session.first", "session.last", "prompt.clear", "prompt.submit", "agent.cycle" ] }, { "type": "string" } ] } }, "required": [ "command" ] } }, "required": [ "type", "properties" ] }, "Event.tui.toast.show": { "type": "object", "properties": { "type": { "type": "string", "const": "tui.toast.show" }, "properties": { "type": "object", "properties": { "title": { "type": "string" }, "message": { "type": "string" }, "variant": { "type": "string", "enum": [ "info", "success", "warning", "error" ] }, "duration": { "description": "Duration in milliseconds", "default": 5000, "type": "number" } }, "required": [ "message", "variant" ] } }, "required": [ "type", "properties" ] }, "Event.tui.session.select": { "type": "object", "properties": { "type": { "type": "string", "const": "tui.session.select" }, "properties": { "type": "object", "properties": { "sessionID": { "description": "Session ID to navigate to", "type": "string", "pattern": "^ses" } }, "required": [ "sessionID" ] } }, "required": [ "type", "properties" ] }, "Event.mcp.tools.changed": { "type": "object", "properties": { "type": { "type": "string", "const": "mcp.tools.changed" }, "properties": { "type": "object", "properties": { "server": { "type": "string" } }, "required": [ "server" ] } }, "required": [ "type", "properties" ] }, "Event.mcp.browser.open.failed": { "type": "object", "properties": { "type": { "type": "string", "const": "mcp.browser.open.failed" }, "properties": { "type": "object", "properties": { "mcpName": { "type": "string" }, "url": { "type": "string" } }, "required": [ "mcpName", "url" ] } }, "required": [ "type", "properties" ] }, "Event.command.executed": { "type": "object", "properties": { "type": { "type": "string", "const": "command.executed" }, "properties": { "type": "object", "properties": { "name": { "type": "string" }, "sessionID": { "type": "string", "pattern": "^ses.*" }, "arguments": { "type": "string" }, "messageID": { "type": "string", "pattern": "^msg.*" } }, "required": [ "name", "sessionID", "arguments", "messageID" ] } }, "required": [ "type", "properties" ] }, "PermissionAction": { "type": "string", "enum": [ "allow", "deny", "ask" ] }, "PermissionRule": { "type": "object", "properties": { "permission": { "type": "string" }, "pattern": { "type": "string" }, "action": { "$ref": "#/definitions/PermissionAction" } }, "required": [ "permission", "pattern", "action" ] }, "PermissionRuleset": { "type": "array", "items": { "$ref": "#/definitions/PermissionRule" } }, "Session": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^ses.*" }, "slug": { "type": "string" }, "projectID": { "type": "string" }, "directory": { "type": "string" }, "parentID": { "type": "string", "pattern": "^ses.*" }, "summary": { "type": "object", "properties": { "additions": { "type": "number" }, "deletions": { "type": "number" }, "files": { "type": "number" }, "diffs": { "type": "array", "items": { "$ref": "#/definitions/FileDiff" } } }, "required": [ "additions", "deletions", "files" ] }, "share": { "type": "object", "properties": { "url": { "type": "string" } }, "required": [ "url" ] }, "title": { "type": "string" }, "version": { "type": "string" }, "time": { "type": "object", "properties": { "created": { "type": "number" }, "updated": { "type": "number" }, "compacting": { "type": "number" }, "archived": { "type": "number" } }, "required": [ "created", "updated" ] }, "permission": { "$ref": "#/definitions/PermissionRuleset" }, "revert": { "type": "object", "properties": { "messageID": { "type": "string" }, "partID": { "type": "string" }, "snapshot": { "type": "string" }, "diff": { "type": "string" } }, "required": [ "messageID" ] } }, "required": [ "id", "slug", "projectID", "directory", "title", "version", "time" ] }, "Event.session.created": { "type": "object", "properties": { "type": { "type": "string", "const": "session.created" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/definitions/Session" } }, "required": [ "info" ] } }, "required": [ "type", "properties" ] }, "Event.session.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "session.updated" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/definitions/Session" } }, "required": [ "info" ] } }, "required": [ "type", "properties" ] }, "Event.session.deleted": { "type": "object", "properties": { "type": { "type": "string", "const": "session.deleted" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/definitions/Session" } }, "required": [ "info" ] } }, "required": [ "type", "properties" ] }, "Event.session.diff": { "type": "object", "properties": { "type": { "type": "string", "const": "session.diff" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "diff": { "type": "array", "items": { "$ref": "#/definitions/FileDiff" } } }, "required": [ "sessionID", "diff" ] } }, "required": [ "type", "properties" ] }, "Event.session.error": { "type": "object", "properties": { "type": { "type": "string", "const": "session.error" }, "properties": { "type": "object", "properties": { "sessionID": { "type": "string" }, "error": { "anyOf": [ { "$ref": "#/definitions/ProviderAuthError" }, { "$ref": "#/definitions/UnknownError" }, { "$ref": "#/definitions/MessageOutputLengthError" }, { "$ref": "#/definitions/MessageAbortedError" }, { "$ref": "#/definitions/APIError" } ] } } } }, "required": [ "type", "properties" ] }, "Event.vcs.branch.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "vcs.branch.updated" }, "properties": { "type": "object", "properties": { "branch": { "type": "string" } } } }, "required": [ "type", "properties" ] }, "Pty": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^pty.*" }, "title": { "type": "string" }, "command": { "type": "string" }, "args": { "type": "array", "items": { "type": "string" } }, "cwd": { "type": "string" }, "status": { "type": "string", "enum": [ "running", "exited" ] }, "pid": { "type": "number" } }, "required": [ "id", "title", "command", "args", "cwd", "status", "pid" ] }, "Event.pty.created": { "type": "object", "properties": { "type": { "type": "string", "const": "pty.created" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/definitions/Pty" } }, "required": [ "info" ] } }, "required": [ "type", "properties" ] }, "Event.pty.updated": { "type": "object", "properties": { "type": { "type": "string", "const": "pty.updated" }, "properties": { "type": "object", "properties": { "info": { "$ref": "#/definitions/Pty" } }, "required": [ "info" ] } }, "required": [ "type", "properties" ] }, "Event.pty.exited": { "type": "object", "properties": { "type": { "type": "string", "const": "pty.exited" }, "properties": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^pty.*" }, "exitCode": { "type": "number" } }, "required": [ "id", "exitCode" ] } }, "required": [ "type", "properties" ] }, "Event.pty.deleted": { "type": "object", "properties": { "type": { "type": "string", "const": "pty.deleted" }, "properties": { "type": "object", "properties": { "id": { "type": "string", "pattern": "^pty.*" } }, "required": [ "id" ] } }, "required": [ "type", "properties" ] }, "Event.worktree.ready": { "type": "object", "properties": { "type": { "type": "string", "const": "worktree.ready" }, "properties": { "type": "object", "properties": { "name": { "type": "string" }, "branch": { "type": "string" } }, "required": [ "name", "branch" ] } }, "required": [ "type", "properties" ] }, "Event.worktree.failed": { "type": "object", "properties": { "type": { "type": "string", "const": "worktree.failed" }, "properties": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } }, "required": [ "type", "properties" ] }, "Event": { "anyOf": [ { "$ref": "#/definitions/Event.installation.updated" }, { "$ref": "#/definitions/Event.installation.update-available" }, { "$ref": "#/definitions/Event.project.updated" }, { "$ref": "#/definitions/Event.server.instance.disposed" }, { "$ref": "#/definitions/Event.server.connected" }, { "$ref": "#/definitions/Event.global.disposed" }, { "$ref": "#/definitions/Event.lsp.client.diagnostics" }, { "$ref": "#/definitions/Event.lsp.updated" }, { "$ref": "#/definitions/Event.file.edited" }, { "$ref": "#/definitions/Event.message.updated" }, { "$ref": "#/definitions/Event.message.removed" }, { "$ref": "#/definitions/Event.message.part.updated" }, { "$ref": "#/definitions/Event.message.part.removed" }, { "$ref": "#/definitions/Event.permission.asked" }, { "$ref": "#/definitions/Event.permission.replied" }, { "$ref": "#/definitions/Event.session.status" }, { "$ref": "#/definitions/Event.session.idle" }, { "$ref": "#/definitions/Event.question.asked" }, { "$ref": "#/definitions/Event.question.replied" }, { "$ref": "#/definitions/Event.question.rejected" }, { "$ref": "#/definitions/Event.session.compacted" }, { "$ref": "#/definitions/Event.file.watcher.updated" }, { "$ref": "#/definitions/Event.todo.updated" }, { "$ref": "#/definitions/Event.tui.prompt.append" }, { "$ref": "#/definitions/Event.tui.command.execute" }, { "$ref": "#/definitions/Event.tui.toast.show" }, { "$ref": "#/definitions/Event.tui.session.select" }, { "$ref": "#/definitions/Event.mcp.tools.changed" }, { "$ref": "#/definitions/Event.mcp.browser.open.failed" }, { "$ref": "#/definitions/Event.command.executed" }, { "$ref": "#/definitions/Event.session.created" }, { "$ref": "#/definitions/Event.session.updated" }, { "$ref": "#/definitions/Event.session.deleted" }, { "$ref": "#/definitions/Event.session.diff" }, { "$ref": "#/definitions/Event.session.error" }, { "$ref": "#/definitions/Event.vcs.branch.updated" }, { "$ref": "#/definitions/Event.pty.created" }, { "$ref": "#/definitions/Event.pty.updated" }, { "$ref": "#/definitions/Event.pty.exited" }, { "$ref": "#/definitions/Event.pty.deleted" }, { "$ref": "#/definitions/Event.worktree.ready" }, { "$ref": "#/definitions/Event.worktree.failed" } ] }, "GlobalEvent": { "type": "object", "properties": { "directory": { "type": "string" }, "payload": { "$ref": "#/definitions/Event" } }, "required": [ "directory", "payload" ] }, "BadRequestError": { "type": "object", "properties": { "data": {}, "errors": { "type": "array", "items": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "success": { "type": "boolean", "const": false } }, "required": [ "data", "errors", "success" ] }, "NotFoundError": { "type": "object", "properties": { "name": { "type": "string", "const": "NotFoundError" }, "data": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } }, "required": [ "name", "data" ] }, "KeybindsConfig": { "description": "Custom keybind configurations", "type": "object", "properties": { "leader": { "description": "Leader key for keybind combinations", "default": "ctrl+x", "type": "string" }, "app_exit": { "description": "Exit the application", "default": "ctrl+c,ctrl+d,q", "type": "string" }, "editor_open": { "description": "Open external editor", "default": "e", "type": "string" }, "theme_list": { "description": "List available themes", "default": "t", "type": "string" }, "sidebar_toggle": { "description": "Toggle sidebar", "default": "b", "type": "string" }, "scrollbar_toggle": { "description": "Toggle session scrollbar", "default": "none", "type": "string" }, "username_toggle": { "description": "Toggle username visibility", "default": "none", "type": "string" }, "status_view": { "description": "View status", "default": "s", "type": "string" }, "session_export": { "description": "Export session to editor", "default": "x", "type": "string" }, "session_new": { "description": "Create a new session", "default": "n", "type": "string" }, "session_list": { "description": "List all sessions", "default": "l", "type": "string" }, "session_timeline": { "description": "Show session timeline", "default": "g", "type": "string" }, "session_fork": { "description": "Fork session from message", "default": "none", "type": "string" }, "session_rename": { "description": "Rename session", "default": "ctrl+r", "type": "string" }, "session_delete": { "description": "Delete session", "default": "ctrl+d", "type": "string" }, "stash_delete": { "description": "Delete stash entry", "default": "ctrl+d", "type": "string" }, "model_provider_list": { "description": "Open provider list from model dialog", "default": "ctrl+a", "type": "string" }, "model_favorite_toggle": { "description": "Toggle model favorite status", "default": "ctrl+f", "type": "string" }, "session_share": { "description": "Share current session", "default": "none", "type": "string" }, "session_unshare": { "description": "Unshare current session", "default": "none", "type": "string" }, "session_interrupt": { "description": "Interrupt current session", "default": "escape", "type": "string" }, "session_compact": { "description": "Compact the session", "default": "c", "type": "string" }, "messages_page_up": { "description": "Scroll messages up by one page", "default": "pageup,ctrl+alt+b", "type": "string" }, "messages_page_down": { "description": "Scroll messages down by one page", "default": "pagedown,ctrl+alt+f", "type": "string" }, "messages_line_up": { "description": "Scroll messages up by one line", "default": "ctrl+alt+y", "type": "string" }, "messages_line_down": { "description": "Scroll messages down by one line", "default": "ctrl+alt+e", "type": "string" }, "messages_half_page_up": { "description": "Scroll messages up by half page", "default": "ctrl+alt+u", "type": "string" }, "messages_half_page_down": { "description": "Scroll messages down by half page", "default": "ctrl+alt+d", "type": "string" }, "messages_first": { "description": "Navigate to first message", "default": "ctrl+g,home", "type": "string" }, "messages_last": { "description": "Navigate to last message", "default": "ctrl+alt+g,end", "type": "string" }, "messages_next": { "description": "Navigate to next message", "default": "none", "type": "string" }, "messages_previous": { "description": "Navigate to previous message", "default": "none", "type": "string" }, "messages_last_user": { "description": "Navigate to last user message", "default": "none", "type": "string" }, "messages_copy": { "description": "Copy message", "default": "y", "type": "string" }, "messages_undo": { "description": "Undo message", "default": "u", "type": "string" }, "messages_redo": { "description": "Redo message", "default": "r", "type": "string" }, "messages_toggle_conceal": { "description": "Toggle code block concealment in messages", "default": "h", "type": "string" }, "tool_details": { "description": "Toggle tool details visibility", "default": "none", "type": "string" }, "model_list": { "description": "List available models", "default": "m", "type": "string" }, "model_cycle_recent": { "description": "Next recently used model", "default": "f2", "type": "string" }, "model_cycle_recent_reverse": { "description": "Previous recently used model", "default": "shift+f2", "type": "string" }, "model_cycle_favorite": { "description": "Next favorite model", "default": "none", "type": "string" }, "model_cycle_favorite_reverse": { "description": "Previous favorite model", "default": "none", "type": "string" }, "command_list": { "description": "List available commands", "default": "ctrl+p", "type": "string" }, "agent_list": { "description": "List agents", "default": "a", "type": "string" }, "agent_cycle": { "description": "Next agent", "default": "tab", "type": "string" }, "agent_cycle_reverse": { "description": "Previous agent", "default": "shift+tab", "type": "string" }, "variant_cycle": { "description": "Cycle model variants", "default": "ctrl+t", "type": "string" }, "input_clear": { "description": "Clear input field", "default": "ctrl+c", "type": "string" }, "input_paste": { "description": "Paste from clipboard", "default": "ctrl+v", "type": "string" }, "input_submit": { "description": "Submit input", "default": "return", "type": "string" }, "input_newline": { "description": "Insert newline in input", "default": "shift+return,ctrl+return,alt+return,ctrl+j", "type": "string" }, "input_move_left": { "description": "Move cursor left in input", "default": "left,ctrl+b", "type": "string" }, "input_move_right": { "description": "Move cursor right in input", "default": "right,ctrl+f", "type": "string" }, "input_move_up": { "description": "Move cursor up in input", "default": "up", "type": "string" }, "input_move_down": { "description": "Move cursor down in input", "default": "down", "type": "string" }, "input_select_left": { "description": "Select left in input", "default": "shift+left", "type": "string" }, "input_select_right": { "description": "Select right in input", "default": "shift+right", "type": "string" }, "input_select_up": { "description": "Select up in input", "default": "shift+up", "type": "string" }, "input_select_down": { "description": "Select down in input", "default": "shift+down", "type": "string" }, "input_line_home": { "description": "Move to start of line in input", "default": "ctrl+a", "type": "string" }, "input_line_end": { "description": "Move to end of line in input", "default": "ctrl+e", "type": "string" }, "input_select_line_home": { "description": "Select to start of line in input", "default": "ctrl+shift+a", "type": "string" }, "input_select_line_end": { "description": "Select to end of line in input", "default": "ctrl+shift+e", "type": "string" }, "input_visual_line_home": { "description": "Move to start of visual line in input", "default": "alt+a", "type": "string" }, "input_visual_line_end": { "description": "Move to end of visual line in input", "default": "alt+e", "type": "string" }, "input_select_visual_line_home": { "description": "Select to start of visual line in input", "default": "alt+shift+a", "type": "string" }, "input_select_visual_line_end": { "description": "Select to end of visual line in input", "default": "alt+shift+e", "type": "string" }, "input_buffer_home": { "description": "Move to start of buffer in input", "default": "home", "type": "string" }, "input_buffer_end": { "description": "Move to end of buffer in input", "default": "end", "type": "string" }, "input_select_buffer_home": { "description": "Select to start of buffer in input", "default": "shift+home", "type": "string" }, "input_select_buffer_end": { "description": "Select to end of buffer in input", "default": "shift+end", "type": "string" }, "input_delete_line": { "description": "Delete line in input", "default": "ctrl+shift+d", "type": "string" }, "input_delete_to_line_end": { "description": "Delete to end of line in input", "default": "ctrl+k", "type": "string" }, "input_delete_to_line_start": { "description": "Delete to start of line in input", "default": "ctrl+u", "type": "string" }, "input_backspace": { "description": "Backspace in input", "default": "backspace,shift+backspace", "type": "string" }, "input_delete": { "description": "Delete character in input", "default": "ctrl+d,delete,shift+delete", "type": "string" }, "input_undo": { "description": "Undo in input", "default": "ctrl+-,super+z", "type": "string" }, "input_redo": { "description": "Redo in input", "default": "ctrl+.,super+shift+z", "type": "string" }, "input_word_forward": { "description": "Move word forward in input", "default": "alt+f,alt+right,ctrl+right", "type": "string" }, "input_word_backward": { "description": "Move word backward in input", "default": "alt+b,alt+left,ctrl+left", "type": "string" }, "input_select_word_forward": { "description": "Select word forward in input", "default": "alt+shift+f,alt+shift+right", "type": "string" }, "input_select_word_backward": { "description": "Select word backward in input", "default": "alt+shift+b,alt+shift+left", "type": "string" }, "input_delete_word_forward": { "description": "Delete word forward in input", "default": "alt+d,alt+delete,ctrl+delete", "type": "string" }, "input_delete_word_backward": { "description": "Delete word backward in input", "default": "ctrl+w,ctrl+backspace,alt+backspace", "type": "string" }, "history_previous": { "description": "Previous history item", "default": "up", "type": "string" }, "history_next": { "description": "Next history item", "default": "down", "type": "string" }, "session_child_cycle": { "description": "Next child session", "default": "right", "type": "string" }, "session_child_cycle_reverse": { "description": "Previous child session", "default": "left", "type": "string" }, "session_parent": { "description": "Go to parent session", "default": "up", "type": "string" }, "terminal_suspend": { "description": "Suspend terminal", "default": "ctrl+z", "type": "string" }, "terminal_title_toggle": { "description": "Toggle terminal title", "default": "none", "type": "string" }, "tips_toggle": { "description": "Toggle tips on home screen", "default": "h", "type": "string" } }, "additionalProperties": false }, "LogLevel": { "description": "Log level", "type": "string", "enum": [ "DEBUG", "INFO", "WARN", "ERROR" ] }, "ServerConfig": { "description": "Server configuration for opencode serve and web commands", "type": "object", "properties": { "port": { "description": "Port to listen on", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "hostname": { "description": "Hostname to listen on", "type": "string" }, "mdns": { "description": "Enable mDNS service discovery", "type": "boolean" }, "cors": { "description": "Additional domains to allow for CORS", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "PermissionActionConfig": { "type": "string", "enum": [ "ask", "allow", "deny" ] }, "PermissionObjectConfig": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "$ref": "#/definitions/PermissionActionConfig" } }, "PermissionRuleConfig": { "anyOf": [ { "$ref": "#/definitions/PermissionActionConfig" }, { "$ref": "#/definitions/PermissionObjectConfig" } ] }, "PermissionConfig": { "anyOf": [ { "type": "object", "properties": { "__originalKeys": { "type": "array", "items": { "type": "string" } }, "read": { "$ref": "#/definitions/PermissionRuleConfig" }, "edit": { "$ref": "#/definitions/PermissionRuleConfig" }, "glob": { "$ref": "#/definitions/PermissionRuleConfig" }, "grep": { "$ref": "#/definitions/PermissionRuleConfig" }, "list": { "$ref": "#/definitions/PermissionRuleConfig" }, "bash": { "$ref": "#/definitions/PermissionRuleConfig" }, "task": { "$ref": "#/definitions/PermissionRuleConfig" }, "external_directory": { "$ref": "#/definitions/PermissionRuleConfig" }, "todowrite": { "$ref": "#/definitions/PermissionActionConfig" }, "todoread": { "$ref": "#/definitions/PermissionActionConfig" }, "question": { "$ref": "#/definitions/PermissionActionConfig" }, "webfetch": { "$ref": "#/definitions/PermissionActionConfig" }, "websearch": { "$ref": "#/definitions/PermissionActionConfig" }, "codesearch": { "$ref": "#/definitions/PermissionActionConfig" }, "lsp": { "$ref": "#/definitions/PermissionRuleConfig" }, "doom_loop": { "$ref": "#/definitions/PermissionActionConfig" } }, "additionalProperties": { "$ref": "#/definitions/PermissionRuleConfig" } }, { "$ref": "#/definitions/PermissionActionConfig" } ] }, "AgentConfig": { "type": "object", "properties": { "model": { "type": "string" }, "temperature": { "type": "number" }, "top_p": { "type": "number" }, "prompt": { "type": "string" }, "tools": { "description": "@deprecated Use 'permission' field instead", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "boolean" } }, "disable": { "type": "boolean" }, "description": { "description": "Description of when to use the agent", "type": "string" }, "mode": { "type": "string", "enum": [ "subagent", "primary", "all" ] }, "hidden": { "description": "Hide this subagent from the @ autocomplete menu (default: false, only applies to mode: subagent)", "type": "boolean" }, "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "color": { "description": "Hex color code for the agent (e.g., #FF5733)", "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "steps": { "description": "Maximum number of agentic iterations before forcing text-only response", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "maxSteps": { "description": "@deprecated Use 'steps' field instead.", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "permission": { "$ref": "#/definitions/PermissionConfig" } }, "additionalProperties": {} }, "ProviderConfig": { "type": "object", "properties": { "api": { "type": "string" }, "name": { "type": "string" }, "env": { "type": "array", "items": { "type": "string" } }, "id": { "type": "string" }, "npm": { "type": "string" }, "models": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "family": { "type": "string" }, "release_date": { "type": "string" }, "attachment": { "type": "boolean" }, "reasoning": { "type": "boolean" }, "temperature": { "type": "boolean" }, "tool_call": { "type": "boolean" }, "interleaved": { "anyOf": [ { "type": "boolean", "const": true }, { "type": "object", "properties": { "field": { "type": "string", "enum": [ "reasoning_content", "reasoning_details" ] } }, "required": [ "field" ], "additionalProperties": false } ] }, "cost": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "cache_read": { "type": "number" }, "cache_write": { "type": "number" }, "context_over_200k": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "cache_read": { "type": "number" }, "cache_write": { "type": "number" } }, "required": [ "input", "output" ] } }, "required": [ "input", "output" ] }, "limit": { "type": "object", "properties": { "context": { "type": "number" }, "input": { "type": "number" }, "output": { "type": "number" } }, "required": [ "context", "output" ] }, "modalities": { "type": "object", "properties": { "input": { "type": "array", "items": { "type": "string", "enum": [ "text", "audio", "image", "video", "pdf" ] } }, "output": { "type": "array", "items": { "type": "string", "enum": [ "text", "audio", "image", "video", "pdf" ] } } }, "required": [ "input", "output" ] }, "experimental": { "type": "boolean" }, "status": { "type": "string", "enum": [ "alpha", "beta", "deprecated" ] }, "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "headers": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "provider": { "type": "object", "properties": { "npm": { "type": "string" } }, "required": [ "npm" ] }, "variants": { "description": "Variant-specific configuration", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "properties": { "disabled": { "description": "Disable this variant for the model", "type": "boolean" } }, "additionalProperties": {} } } } } }, "whitelist": { "type": "array", "items": { "type": "string" } }, "blacklist": { "type": "array", "items": { "type": "string" } }, "options": { "type": "object", "properties": { "apiKey": { "type": "string" }, "baseURL": { "type": "string" }, "enterpriseUrl": { "description": "GitHub Enterprise URL for copilot authentication", "type": "string" }, "setCacheKey": { "description": "Enable promptCacheKey for this provider (default false)", "type": "boolean" }, "timeout": { "description": "Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout.", "anyOf": [ { "description": "Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout.", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, { "description": "Disable timeout for this provider entirely.", "type": "boolean", "const": false } ] } }, "additionalProperties": {} } }, "additionalProperties": false }, "McpLocalConfig": { "type": "object", "properties": { "type": { "description": "Type of MCP server connection", "type": "string", "const": "local" }, "command": { "description": "Command and arguments to run the MCP server", "type": "array", "items": { "type": "string" } }, "environment": { "description": "Environment variables to set when running the MCP server", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "enabled": { "description": "Enable or disable the MCP server on startup", "type": "boolean" }, "timeout": { "description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } }, "required": [ "type", "command" ], "additionalProperties": false }, "McpOAuthConfig": { "type": "object", "properties": { "clientId": { "description": "OAuth client ID. If not provided, dynamic client registration (RFC 7591) will be attempted.", "type": "string" }, "clientSecret": { "description": "OAuth client secret (if required by the authorization server)", "type": "string" }, "scope": { "description": "OAuth scopes to request during authorization", "type": "string" } }, "additionalProperties": false }, "McpRemoteConfig": { "type": "object", "properties": { "type": { "description": "Type of MCP server connection", "type": "string", "const": "remote" }, "url": { "description": "URL of the remote MCP server", "type": "string" }, "enabled": { "description": "Enable or disable the MCP server on startup", "type": "boolean" }, "headers": { "description": "Headers to send with the request", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "oauth": { "description": "OAuth authentication configuration for the MCP server. Set to false to disable OAuth auto-detection.", "anyOf": [ { "$ref": "#/definitions/McpOAuthConfig" }, { "type": "boolean", "const": false } ] }, "timeout": { "description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } }, "required": [ "type", "url" ], "additionalProperties": false }, "LayoutConfig": { "description": "@deprecated Always uses stretch layout.", "type": "string", "enum": [ "auto", "stretch" ] }, "Config": { "type": "object", "properties": { "$schema": { "description": "JSON schema reference for configuration validation", "type": "string" }, "theme": { "description": "Theme name to use for the interface", "type": "string" }, "keybinds": { "$ref": "#/definitions/KeybindsConfig" }, "logLevel": { "$ref": "#/definitions/LogLevel" }, "tui": { "description": "TUI specific settings", "type": "object", "properties": { "scroll_speed": { "description": "TUI scroll speed", "type": "number", "minimum": 0.001 }, "scroll_acceleration": { "description": "Scroll acceleration settings", "type": "object", "properties": { "enabled": { "description": "Enable scroll acceleration", "type": "boolean" } }, "required": [ "enabled" ] }, "diff_style": { "description": "Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column", "type": "string", "enum": [ "auto", "stacked" ] } } }, "server": { "$ref": "#/definitions/ServerConfig" }, "command": { "description": "Command configuration, see https://opencode.ai/docs/commands", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "properties": { "template": { "type": "string" }, "description": { "type": "string" }, "agent": { "type": "string" }, "model": { "type": "string" }, "subtask": { "type": "boolean" } }, "required": [ "template" ] } }, "watcher": { "type": "object", "properties": { "ignore": { "type": "array", "items": { "type": "string" } } } }, "plugin": { "type": "array", "items": { "type": "string" } }, "snapshot": { "type": "boolean" }, "share": { "description": "Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing", "type": "string", "enum": [ "manual", "auto", "disabled" ] }, "autoshare": { "description": "@deprecated Use 'share' field instead. Share newly created sessions automatically", "type": "boolean" }, "autoupdate": { "description": "Automatically update to the latest version. Set to true to auto-update, false to disable, or 'notify' to show update notifications", "anyOf": [ { "type": "boolean" }, { "type": "string", "const": "notify" } ] }, "disabled_providers": { "description": "Disable providers that are loaded automatically", "type": "array", "items": { "type": "string" } }, "enabled_providers": { "description": "When set, ONLY these providers will be enabled. All other providers will be ignored", "type": "array", "items": { "type": "string" } }, "model": { "description": "Model to use in the format of provider/model, eg anthropic/claude-2", "type": "string" }, "small_model": { "description": "Small model to use for tasks like title generation in the format of provider/model", "type": "string" }, "default_agent": { "description": "Default agent to use when none is specified. Must be a primary agent. Falls back to 'build' if not set or if the specified agent is invalid.", "type": "string" }, "username": { "description": "Custom username to display in conversations instead of system username", "type": "string" }, "mode": { "description": "@deprecated Use `agent` field instead.", "type": "object", "properties": { "build": { "$ref": "#/definitions/AgentConfig" }, "plan": { "$ref": "#/definitions/AgentConfig" } }, "additionalProperties": { "$ref": "#/definitions/AgentConfig" } }, "agent": { "description": "Agent configuration, see https://opencode.ai/docs/agents", "type": "object", "properties": { "plan": { "$ref": "#/definitions/AgentConfig" }, "build": { "$ref": "#/definitions/AgentConfig" }, "general": { "$ref": "#/definitions/AgentConfig" }, "explore": { "$ref": "#/definitions/AgentConfig" }, "title": { "$ref": "#/definitions/AgentConfig" }, "summary": { "$ref": "#/definitions/AgentConfig" }, "compaction": { "$ref": "#/definitions/AgentConfig" } }, "additionalProperties": { "$ref": "#/definitions/AgentConfig" } }, "provider": { "description": "Custom provider configurations and model overrides", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "$ref": "#/definitions/ProviderConfig" } }, "mcp": { "description": "MCP (Model Context Protocol) server configurations", "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "anyOf": [ { "anyOf": [ { "$ref": "#/definitions/McpLocalConfig" }, { "$ref": "#/definitions/McpRemoteConfig" } ] }, { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": [ "enabled" ], "additionalProperties": false } ] } }, "formatter": { "anyOf": [ { "type": "boolean", "const": false }, { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "properties": { "disabled": { "type": "boolean" }, "command": { "type": "array", "items": { "type": "string" } }, "environment": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "extensions": { "type": "array", "items": { "type": "string" } } } } } ] }, "lsp": { "anyOf": [ { "type": "boolean", "const": false }, { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "anyOf": [ { "type": "object", "properties": { "disabled": { "type": "boolean", "const": true } }, "required": [ "disabled" ] }, { "type": "object", "properties": { "command": { "type": "array", "items": { "type": "string" } }, "extensions": { "type": "array", "items": { "type": "string" } }, "disabled": { "type": "boolean" }, "env": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "initialization": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": [ "command" ] } ] } } ] }, "instructions": { "description": "Additional instruction files or patterns to include", "type": "array", "items": { "type": "string" } }, "layout": { "$ref": "#/definitions/LayoutConfig" }, "permission": { "$ref": "#/definitions/PermissionConfig" }, "tools": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "boolean" } }, "enterprise": { "type": "object", "properties": { "url": { "description": "Enterprise URL", "type": "string" } } }, "compaction": { "type": "object", "properties": { "auto": { "description": "Enable automatic compaction when context is full (default: true)", "type": "boolean" }, "prune": { "description": "Enable pruning of old tool outputs (default: true)", "type": "boolean" } } }, "experimental": { "type": "object", "properties": { "hook": { "type": "object", "properties": { "file_edited": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "command": { "type": "array", "items": { "type": "string" } }, "environment": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } } }, "required": [ "command" ] } } }, "session_completed": { "type": "array", "items": { "type": "object", "properties": { "command": { "type": "array", "items": { "type": "string" } }, "environment": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } } }, "required": [ "command" ] } } } }, "chatMaxRetries": { "description": "Number of retries for chat completions on failure", "type": "number" }, "disable_paste_summary": { "type": "boolean" }, "batch_tool": { "description": "Enable the batch tool", "type": "boolean" }, "openTelemetry": { "description": "Enable OpenTelemetry spans for AI SDK calls (using the 'experimental_telemetry' flag)", "type": "boolean" }, "primary_tools": { "description": "Tools that should only be available to primary agents.", "type": "array", "items": { "type": "string" } }, "continue_loop_on_deny": { "description": "Continue the agent loop when a tool call is denied", "type": "boolean" }, "mcp_timeout": { "description": "Timeout in milliseconds for model context protocol (MCP) requests", "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } } } }, "additionalProperties": false }, "Model": { "type": "object", "properties": { "id": { "type": "string" }, "providerID": { "type": "string" }, "api": { "type": "object", "properties": { "id": { "type": "string" }, "url": { "type": "string" }, "npm": { "type": "string" } }, "required": [ "id", "url", "npm" ] }, "name": { "type": "string" }, "family": { "type": "string" }, "capabilities": { "type": "object", "properties": { "temperature": { "type": "boolean" }, "reasoning": { "type": "boolean" }, "attachment": { "type": "boolean" }, "toolcall": { "type": "boolean" }, "input": { "type": "object", "properties": { "text": { "type": "boolean" }, "audio": { "type": "boolean" }, "image": { "type": "boolean" }, "video": { "type": "boolean" }, "pdf": { "type": "boolean" } }, "required": [ "text", "audio", "image", "video", "pdf" ] }, "output": { "type": "object", "properties": { "text": { "type": "boolean" }, "audio": { "type": "boolean" }, "image": { "type": "boolean" }, "video": { "type": "boolean" }, "pdf": { "type": "boolean" } }, "required": [ "text", "audio", "image", "video", "pdf" ] }, "interleaved": { "anyOf": [ { "type": "boolean" }, { "type": "object", "properties": { "field": { "type": "string", "enum": [ "reasoning_content", "reasoning_details" ] } }, "required": [ "field" ] } ] } }, "required": [ "temperature", "reasoning", "attachment", "toolcall", "input", "output", "interleaved" ] }, "cost": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "cache": { "type": "object", "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, "required": [ "read", "write" ] }, "experimentalOver200K": { "type": "object", "properties": { "input": { "type": "number" }, "output": { "type": "number" }, "cache": { "type": "object", "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, "required": [ "read", "write" ] } }, "required": [ "input", "output", "cache" ] } }, "required": [ "input", "output", "cache" ] }, "limit": { "type": "object", "properties": { "context": { "type": "number" }, "input": { "type": "number" }, "output": { "type": "number" } }, "required": [ "context", "output" ] }, "status": { "type": "string", "enum": [ "alpha", "beta", "deprecated", "active" ] }, "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "headers": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "string" } }, "release_date": { "type": "string" }, "variants": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } } }, "required": [ "id", "providerID", "api", "name", "capabilities", "cost", "limit", "status", "options", "headers", "release_date" ] }, "Provider": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "source": { "type": "string", "enum": [ "env", "config", "custom", "api" ] }, "env": { "type": "array", "items": { "type": "string" } }, "key": { "type": "string" }, "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "models": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "$ref": "#/definitions/Model" } } }, "required": [ "id", "name", "source", "env", "options", "models" ] }, "ToolIDs": { "type": "array", "items": { "type": "string" } }, "ToolListItem": { "type": "object", "properties": { "id": { "type": "string" }, "description": { "type": "string" }, "parameters": {} }, "required": [ "id", "description", "parameters" ] }, "ToolList": { "type": "array", "items": { "$ref": "#/definitions/ToolListItem" } }, "Worktree": { "type": "object", "properties": { "name": { "type": "string" }, "branch": { "type": "string" }, "directory": { "type": "string" } }, "required": [ "name", "branch", "directory" ] }, "WorktreeCreateInput": { "type": "object", "properties": { "name": { "type": "string" }, "startCommand": { "description": "Additional startup script to run after the project's start command", "type": "string" } } }, "WorktreeRemoveInput": { "type": "object", "properties": { "directory": { "type": "string" } }, "required": [ "directory" ] }, "WorktreeResetInput": { "type": "object", "properties": { "directory": { "type": "string" } }, "required": [ "directory" ] }, "McpResource": { "type": "object", "properties": { "name": { "type": "string" }, "uri": { "type": "string" }, "description": { "type": "string" }, "mimeType": { "type": "string" }, "client": { "type": "string" } }, "required": [ "name", "uri", "client" ] }, "TextPartInput": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "const": "text" }, "text": { "type": "string" }, "synthetic": { "type": "boolean" }, "ignored": { "type": "boolean" }, "time": { "type": "object", "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, "required": [ "start" ] }, "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } }, "required": [ "type", "text" ] }, "FilePartInput": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "const": "file" }, "mime": { "type": "string" }, "filename": { "type": "string" }, "url": { "type": "string" }, "source": { "$ref": "#/definitions/FilePartSource" } }, "required": [ "type", "mime", "url" ] }, "AgentPartInput": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "const": "agent" }, "name": { "type": "string" }, "source": { "type": "object", "properties": { "value": { "type": "string" }, "start": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "end": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } }, "required": [ "value", "start", "end" ] } }, "required": [ "type", "name" ] }, "SubtaskPartInput": { "type": "object", "properties": { "id": { "type": "string" }, "type": { "type": "string", "const": "subtask" }, "prompt": { "type": "string" }, "description": { "type": "string" }, "agent": { "type": "string" }, "model": { "type": "object", "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, "required": [ "providerID", "modelID" ] }, "command": { "type": "string" } }, "required": [ "type", "prompt", "description", "agent" ] }, "ProviderAuthMethod": { "type": "object", "properties": { "type": { "anyOf": [ { "type": "string", "const": "oauth" }, { "type": "string", "const": "api" } ] }, "label": { "type": "string" } }, "required": [ "type", "label" ] }, "ProviderAuthAuthorization": { "type": "object", "properties": { "url": { "type": "string" }, "method": { "anyOf": [ { "type": "string", "const": "auto" }, { "type": "string", "const": "code" } ] }, "instructions": { "type": "string" } }, "required": [ "url", "method", "instructions" ] }, "Symbol": { "type": "object", "properties": { "name": { "type": "string" }, "kind": { "type": "number" }, "location": { "type": "object", "properties": { "uri": { "type": "string" }, "range": { "$ref": "#/definitions/Range" } }, "required": [ "uri", "range" ] } }, "required": [ "name", "kind", "location" ] }, "FileNode": { "type": "object", "properties": { "name": { "type": "string" }, "path": { "type": "string" }, "absolute": { "type": "string" }, "type": { "type": "string", "enum": [ "file", "directory" ] }, "ignored": { "type": "boolean" } }, "required": [ "name", "path", "absolute", "type", "ignored" ] }, "FileContent": { "type": "object", "properties": { "type": { "type": "string", "const": "text" }, "content": { "type": "string" }, "diff": { "type": "string" }, "patch": { "type": "object", "properties": { "oldFileName": { "type": "string" }, "newFileName": { "type": "string" }, "oldHeader": { "type": "string" }, "newHeader": { "type": "string" }, "hunks": { "type": "array", "items": { "type": "object", "properties": { "oldStart": { "type": "number" }, "oldLines": { "type": "number" }, "newStart": { "type": "number" }, "newLines": { "type": "number" }, "lines": { "type": "array", "items": { "type": "string" } } }, "required": [ "oldStart", "oldLines", "newStart", "newLines", "lines" ] } }, "index": { "type": "string" } }, "required": [ "oldFileName", "newFileName", "hunks" ] }, "encoding": { "type": "string", "const": "base64" }, "mimeType": { "type": "string" } }, "required": [ "type", "content" ] }, "File": { "type": "object", "properties": { "path": { "type": "string" }, "added": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "removed": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "status": { "type": "string", "enum": [ "added", "deleted", "modified" ] } }, "required": [ "path", "added", "removed", "status" ] }, "MCPStatusConnected": { "type": "object", "properties": { "status": { "type": "string", "const": "connected" } }, "required": [ "status" ] }, "MCPStatusDisabled": { "type": "object", "properties": { "status": { "type": "string", "const": "disabled" } }, "required": [ "status" ] }, "MCPStatusFailed": { "type": "object", "properties": { "status": { "type": "string", "const": "failed" }, "error": { "type": "string" } }, "required": [ "status", "error" ] }, "MCPStatusNeedsAuth": { "type": "object", "properties": { "status": { "type": "string", "const": "needs_auth" } }, "required": [ "status" ] }, "MCPStatusNeedsClientRegistration": { "type": "object", "properties": { "status": { "type": "string", "const": "needs_client_registration" }, "error": { "type": "string" } }, "required": [ "status", "error" ] }, "MCPStatus": { "anyOf": [ { "$ref": "#/definitions/MCPStatusConnected" }, { "$ref": "#/definitions/MCPStatusDisabled" }, { "$ref": "#/definitions/MCPStatusFailed" }, { "$ref": "#/definitions/MCPStatusNeedsAuth" }, { "$ref": "#/definitions/MCPStatusNeedsClientRegistration" } ] }, "Path": { "type": "object", "properties": { "home": { "type": "string" }, "state": { "type": "string" }, "config": { "type": "string" }, "worktree": { "type": "string" }, "directory": { "type": "string" } }, "required": [ "home", "state", "config", "worktree", "directory" ] }, "VcsInfo": { "type": "object", "properties": { "branch": { "type": "string" } }, "required": [ "branch" ] }, "Command": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "agent": { "type": "string" }, "model": { "type": "string" }, "mcp": { "type": "boolean" }, "template": { "anyOf": [ { "type": "string" }, { "type": "string" } ] }, "subtask": { "type": "boolean" }, "hints": { "type": "array", "items": { "type": "string" } } }, "required": [ "name", "template", "hints" ] }, "Agent": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "mode": { "type": "string", "enum": [ "subagent", "primary", "all" ] }, "native": { "type": "boolean" }, "hidden": { "type": "boolean" }, "topP": { "type": "number" }, "temperature": { "type": "number" }, "color": { "type": "string" }, "permission": { "$ref": "#/definitions/PermissionRuleset" }, "model": { "type": "object", "properties": { "modelID": { "type": "string" }, "providerID": { "type": "string" } }, "required": [ "modelID", "providerID" ] }, "prompt": { "type": "string" }, "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "steps": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } }, "required": [ "name", "mode", "permission", "options" ] }, "LSPStatus": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "root": { "type": "string" }, "status": { "anyOf": [ { "type": "string", "const": "connected" }, { "type": "string", "const": "error" } ] } }, "required": [ "id", "name", "root", "status" ] }, "FormatterStatus": { "type": "object", "properties": { "name": { "type": "string" }, "extensions": { "type": "array", "items": { "type": "string" } }, "enabled": { "type": "boolean" } }, "required": [ "name", "extensions", "enabled" ] }, "OAuth": { "type": "object", "properties": { "type": { "type": "string", "const": "oauth" }, "refresh": { "type": "string" }, "access": { "type": "string" }, "expires": { "type": "number" }, "accountId": { "type": "string" }, "enterpriseUrl": { "type": "string" } }, "required": [ "type", "refresh", "access", "expires" ] }, "ApiAuth": { "type": "object", "properties": { "type": { "type": "string", "const": "api" }, "key": { "type": "string" } }, "required": [ "type", "key" ] }, "WellKnownAuth": { "type": "object", "properties": { "type": { "type": "string", "const": "wellknown" }, "key": { "type": "string" }, "token": { "type": "string" } }, "required": [ "type", "key", "token" ] }, "Auth": { "anyOf": [ { "$ref": "#/definitions/OAuth" }, { "$ref": "#/definitions/ApiAuth" }, { "$ref": "#/definitions/WellKnownAuth" } ] } } }