mirror of
https://github.com/block/goose.git
synced 2026-04-26 10:40:45 +00:00
Some checks failed
Canary / Prepare Version (push) Waiting to run
Canary / build-cli (push) Blocked by required conditions
Canary / Upload Install Script (push) Blocked by required conditions
Canary / bundle-desktop (push) Blocked by required conditions
Canary / bundle-desktop-intel (push) Blocked by required conditions
Canary / bundle-desktop-linux (push) Blocked by required conditions
Canary / bundle-desktop-windows (push) Blocked by required conditions
Canary / Release (push) Blocked by required conditions
Unused Dependencies / machete (push) Waiting to run
CI / changes (push) Waiting to run
CI / Check Rust Code Format (push) Blocked by required conditions
CI / Build and Test Rust Project (push) Blocked by required conditions
CI / Build Rust Project on Windows (push) Waiting to run
CI / Lint Rust Code (push) Blocked by required conditions
CI / Check Generated Schemas are Up-to-Date (push) Blocked by required conditions
CI / Test and Lint Electron Desktop App (push) Blocked by required conditions
Live Provider Tests / check-fork (push) Waiting to run
Live Provider Tests / changes (push) Blocked by required conditions
Live Provider Tests / Build Binary (push) Blocked by required conditions
Live Provider Tests / Smoke Tests (push) Blocked by required conditions
Live Provider Tests / Smoke Tests (Code Execution) (push) Blocked by required conditions
Live Provider Tests / Compaction Tests (push) Blocked by required conditions
Live Provider Tests / goose server HTTP integration tests (push) Blocked by required conditions
Publish Docker Image / docker (push) Waiting to run
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Cargo Deny / deny (push) Has been cancelled
Signed-off-by: jh-block <jhugo@block.xyz>
8962 lines
216 KiB
JSON
8962 lines
216 KiB
JSON
{
|
|
"openapi": "3.0.3",
|
|
"info": {
|
|
"title": "goose-server",
|
|
"description": "An AI agent",
|
|
"contact": {
|
|
"name": "AAIF",
|
|
"email": "ai-oss-tools@block.xyz"
|
|
},
|
|
"license": {
|
|
"name": "Apache-2.0"
|
|
},
|
|
"version": "1.30.0"
|
|
},
|
|
"paths": {
|
|
"/action-required/tool-confirmation": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::action_required"
|
|
],
|
|
"operationId": "confirm_tool_action",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfirmToolActionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Tool confirmation action is confirmed",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/add_extension": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "agent_add_extension",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AddExtensionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Extension added",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"424": {
|
|
"description": "Agent not initialized"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/call_tool": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "call_tool",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CallToolRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Resource read successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CallToolResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"404": {
|
|
"description": "Resource not found"
|
|
},
|
|
"424": {
|
|
"description": "Agent not initialized"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/export_app/{name}": {
|
|
"get": {
|
|
"tags": [
|
|
"Agent"
|
|
],
|
|
"operationId": "export_app",
|
|
"parameters": [
|
|
{
|
|
"name": "name",
|
|
"in": "path",
|
|
"description": "Name of the app to export",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "App HTML exported successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "App not found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/agent/import_app": {
|
|
"post": {
|
|
"tags": [
|
|
"Agent"
|
|
],
|
|
"operationId": "import_app",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ImportAppRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "App imported successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ImportAppResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request - Invalid HTML",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/agent/list_apps": {
|
|
"get": {
|
|
"tags": [
|
|
"Agent"
|
|
],
|
|
"operationId": "list_apps",
|
|
"parameters": [
|
|
{
|
|
"name": "session_id",
|
|
"in": "query",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of apps retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ListAppsResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/agent/read_resource": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "read_resource",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReadResourceRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Resource read successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReadResourceResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"404": {
|
|
"description": "Resource not found"
|
|
},
|
|
"424": {
|
|
"description": "Agent not initialized"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/remove_extension": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "agent_remove_extension",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RemoveExtensionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Extension removed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"424": {
|
|
"description": "Agent not initialized"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/restart": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "restart_agent",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RestartAgentRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Agent restarted successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RestartAgentResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"404": {
|
|
"description": "Session not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/resume": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "resume_agent",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResumeAgentRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Agent started successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ResumeAgentResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request - invalid working directory"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/start": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "start_agent",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/StartAgentRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Agent started successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Session"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/stop": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "stop_agent",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/StopAgentRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Agent stopped successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"404": {
|
|
"description": "Session not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/tools": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "get_tools",
|
|
"parameters": [
|
|
{
|
|
"name": "extension_name",
|
|
"in": "query",
|
|
"description": "Optional extension name to filter tools",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
{
|
|
"name": "session_id",
|
|
"in": "query",
|
|
"description": "Required session ID to scope tools to a specific session",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Tools retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ToolInfo"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"424": {
|
|
"description": "Agent not initialized"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/update_from_session": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "update_from_session",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateFromSessionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Update agent from session data successfully"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"424": {
|
|
"description": "Agent not initialized"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/update_provider": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "update_agent_provider",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateProviderRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Provider updated successfully"
|
|
},
|
|
"400": {
|
|
"description": "Bad request - missing or invalid parameters"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"424": {
|
|
"description": "Agent not initialized"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/update_session": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "update_session",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateSessionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Session updated"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"500": {
|
|
"description": "Internal error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/agent/update_working_dir": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::agent"
|
|
],
|
|
"operationId": "update_working_dir",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateWorkingDirRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Working directory updated and agent restarted successfully"
|
|
},
|
|
"400": {
|
|
"description": "Bad request - invalid directory path"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid secret key"
|
|
},
|
|
"404": {
|
|
"description": "Session not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "read_all_config",
|
|
"responses": {
|
|
"200": {
|
|
"description": "All configuration values retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfigResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/backup": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "backup_config",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Config file backed up",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/canonical-model-info": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "get_canonical_model_info",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ModelInfoQuery"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model information retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ModelInfoResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/check_provider": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "check_provider",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CheckProviderRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {}
|
|
}
|
|
},
|
|
"/config/custom-providers": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "create_custom_provider",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateCustomProviderRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Custom provider created successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateCustomProviderResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/custom-providers/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "get_custom_provider",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Custom provider retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LoadedProvider"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Provider not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "update_custom_provider",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateCustomProviderRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Custom provider updated successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Provider not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "remove_custom_provider",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Custom provider removed successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Provider not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/extensions": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "get_extensions",
|
|
"responses": {
|
|
"200": {
|
|
"description": "All extensions retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExtensionResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "add_extension",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ExtensionQuery"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Extension added or updated successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"422": {
|
|
"description": "Could not serialize config.yaml"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/extensions/{name}": {
|
|
"delete": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "remove_extension",
|
|
"parameters": [
|
|
{
|
|
"name": "name",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Extension removed successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Extension not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/init": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "init_config",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Config initialization check completed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/permissions": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "upsert_permissions",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpsertPermissionsQuery"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Permission update completed",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/prompts": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::prompts"
|
|
],
|
|
"operationId": "get_prompts",
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of all available prompts",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PromptsListResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/prompts/{name}": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::prompts"
|
|
],
|
|
"operationId": "get_prompt",
|
|
"parameters": [
|
|
{
|
|
"name": "name",
|
|
"in": "path",
|
|
"description": "Prompt template name (e.g., system.md)",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Prompt content retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PromptContentResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Prompt not found"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"super::routes::prompts"
|
|
],
|
|
"operationId": "save_prompt",
|
|
"parameters": [
|
|
{
|
|
"name": "name",
|
|
"in": "path",
|
|
"description": "Prompt template name (e.g., system.md)",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SavePromptRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Prompt saved successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Prompt not found"
|
|
},
|
|
"500": {
|
|
"description": "Failed to save prompt"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"super::routes::prompts"
|
|
],
|
|
"operationId": "reset_prompt",
|
|
"parameters": [
|
|
{
|
|
"name": "name",
|
|
"in": "path",
|
|
"description": "Prompt template name (e.g., system.md)",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Prompt reset to default successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Prompt not found"
|
|
},
|
|
"500": {
|
|
"description": "Failed to reset prompt"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/provider-catalog": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "get_provider_catalog",
|
|
"parameters": [
|
|
{
|
|
"name": "format",
|
|
"in": "query",
|
|
"description": "Filter by provider format (openai, anthropic, ollama)",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Provider catalog retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProviderCatalogEntry"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid format parameter"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/provider-catalog/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "get_provider_catalog_template",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"description": "Provider ID from models.dev",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Provider template retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProviderTemplate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Provider not found in catalog"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/providers": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "providers",
|
|
"responses": {
|
|
"200": {
|
|
"description": "All configuration values retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProviderDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/providers/{name}/cleanup": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "cleanup_provider_cache",
|
|
"parameters": [
|
|
{
|
|
"name": "name",
|
|
"in": "path",
|
|
"description": "Provider name (e.g., githubcopilot)",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Provider cache cleaned up successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/providers/{name}/models": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "get_provider_models",
|
|
"parameters": [
|
|
{
|
|
"name": "name",
|
|
"in": "path",
|
|
"description": "Provider name (e.g., openai)",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Models fetched successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Unknown provider, provider not configured, or authentication error"
|
|
},
|
|
"429": {
|
|
"description": "Rate limit exceeded"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/providers/{name}/oauth": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "configure_provider_oauth",
|
|
"parameters": [
|
|
{
|
|
"name": "name",
|
|
"in": "path",
|
|
"description": "Provider name",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OAuth configuration completed"
|
|
},
|
|
"400": {
|
|
"description": "OAuth configuration failed"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/read": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "read_config",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfigKeyQuery"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Configuration value retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Unable to get the configuration value"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/recover": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "recover_config",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Config recovery attempted",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/remove": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "remove_config",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ConfigKeyQuery"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Configuration value removed successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Configuration key not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/set_provider": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "set_config_provider",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SetProviderRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {}
|
|
}
|
|
},
|
|
"/config/slash_commands": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "get_slash_commands",
|
|
"parameters": [
|
|
{
|
|
"name": "working_dir",
|
|
"in": "query",
|
|
"description": "Optional working directory to discover local skills from",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Slash commands retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SlashCommandsResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/upsert": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "upsert_config",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpsertConfigQuery"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Configuration value upserted successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/config/validate": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::config_management"
|
|
],
|
|
"operationId": "validate_config",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Config validation result",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"422": {
|
|
"description": "Config file is corrupted"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/diagnostics/{session_id}": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::status"
|
|
],
|
|
"operationId": "diagnostics",
|
|
"parameters": [
|
|
{
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Diagnostics zip file",
|
|
"content": {
|
|
"application/zip": {
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "binary"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Failed to generate diagnostics"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/dictation/config": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::dictation"
|
|
],
|
|
"operationId": "get_dictation_config",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Audio transcription provider configurations",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/DictationProviderStatus"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/dictation/models": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::dictation"
|
|
],
|
|
"operationId": "list_models",
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of available Whisper models",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/WhisperModelResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/dictation/models/{model_id}": {
|
|
"delete": {
|
|
"tags": [
|
|
"super::routes::dictation"
|
|
],
|
|
"operationId": "delete_model",
|
|
"parameters": [
|
|
{
|
|
"name": "model_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model deleted"
|
|
},
|
|
"404": {
|
|
"description": "Model not found or not downloaded"
|
|
},
|
|
"500": {
|
|
"description": "Failed to delete model"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/dictation/models/{model_id}/download": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::dictation"
|
|
],
|
|
"operationId": "get_download_progress",
|
|
"parameters": [
|
|
{
|
|
"name": "model_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Download progress",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DownloadProgress"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Download not found"
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::dictation"
|
|
],
|
|
"operationId": "download_model",
|
|
"parameters": [
|
|
{
|
|
"name": "model_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Download started"
|
|
},
|
|
"400": {
|
|
"description": "Download already in progress"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"super::routes::dictation"
|
|
],
|
|
"operationId": "cancel_download",
|
|
"parameters": [
|
|
{
|
|
"name": "model_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Download cancelled"
|
|
},
|
|
"404": {
|
|
"description": "Download not found"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/dictation/transcribe": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::dictation"
|
|
],
|
|
"operationId": "transcribe_dictation",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TranscribeRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Audio transcribed successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TranscribeResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid request (bad base64 or unsupported format)"
|
|
},
|
|
"401": {
|
|
"description": "Invalid API key"
|
|
},
|
|
"412": {
|
|
"description": "Provider not configured"
|
|
},
|
|
"413": {
|
|
"description": "Audio file too large (max 50MB)"
|
|
},
|
|
"429": {
|
|
"description": "Rate limit exceeded"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
},
|
|
"502": {
|
|
"description": "Provider API error"
|
|
},
|
|
"503": {
|
|
"description": "Service unavailable"
|
|
},
|
|
"504": {
|
|
"description": "Request timeout"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/features": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::features"
|
|
],
|
|
"operationId": "get_features",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Compile-time feature flags",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FeaturesResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/handle_nanogpt": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::setup"
|
|
],
|
|
"operationId": "start_nanogpt_setup",
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SetupResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/handle_openrouter": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::setup"
|
|
],
|
|
"operationId": "start_openrouter_setup",
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SetupResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/handle_tetrate": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::setup"
|
|
],
|
|
"operationId": "start_tetrate_setup",
|
|
"responses": {
|
|
"200": {
|
|
"description": "",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SetupResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/local-inference/download": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::local_inference"
|
|
],
|
|
"operationId": "download_hf_model",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DownloadModelRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"202": {
|
|
"description": "Download started",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/local-inference/models": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::local_inference"
|
|
],
|
|
"operationId": "list_local_models",
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of available local LLM models",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LocalModelResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/local-inference/models/{model_id}": {
|
|
"delete": {
|
|
"tags": [
|
|
"super::routes::local_inference"
|
|
],
|
|
"operationId": "delete_local_model",
|
|
"parameters": [
|
|
{
|
|
"name": "model_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model deleted"
|
|
},
|
|
"404": {
|
|
"description": "Model not found"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/local-inference/models/{model_id}/download": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::local_inference"
|
|
],
|
|
"operationId": "get_local_model_download_progress",
|
|
"parameters": [
|
|
{
|
|
"name": "model_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Download progress",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DownloadProgress"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "No active download"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"super::routes::local_inference"
|
|
],
|
|
"operationId": "cancel_local_model_download",
|
|
"parameters": [
|
|
{
|
|
"name": "model_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Download cancelled"
|
|
},
|
|
"404": {
|
|
"description": "No active download"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/local-inference/models/{model_id}/settings": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::local_inference"
|
|
],
|
|
"operationId": "get_model_settings",
|
|
"parameters": [
|
|
{
|
|
"name": "model_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model settings",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ModelSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Model not found"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"super::routes::local_inference"
|
|
],
|
|
"operationId": "update_model_settings",
|
|
"parameters": [
|
|
{
|
|
"name": "model_id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ModelSettings"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Settings updated",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ModelSettings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Model not found"
|
|
},
|
|
"500": {
|
|
"description": "Failed to save settings"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/local-inference/repo/{author}/{repo}/files": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::local_inference"
|
|
],
|
|
"operationId": "get_repo_files",
|
|
"parameters": [
|
|
{
|
|
"name": "author",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "repo",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "GGUF files in the repo",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RepoVariantsResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/local-inference/search": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::local_inference"
|
|
],
|
|
"operationId": "search_hf_models",
|
|
"parameters": [
|
|
{
|
|
"name": "q",
|
|
"in": "query",
|
|
"description": "Search query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"in": "query",
|
|
"description": "Max results",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Search results",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HfModelInfo"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Search failed"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/mcp-ui-proxy": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::mcp_ui_proxy"
|
|
],
|
|
"operationId": "mcp_ui_proxy",
|
|
"parameters": [
|
|
{
|
|
"name": "secret",
|
|
"in": "query",
|
|
"description": "Secret key for authentication",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "MCP UI proxy HTML page"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - invalid or missing secret"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/recipes/create": {
|
|
"post": {
|
|
"tags": [
|
|
"Recipe Management"
|
|
],
|
|
"operationId": "create_recipe",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateRecipeRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Recipe created successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateRecipeResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
},
|
|
"412": {
|
|
"description": "Precondition failed - Agent not available"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/recipes/decode": {
|
|
"post": {
|
|
"tags": [
|
|
"Recipe Management"
|
|
],
|
|
"operationId": "decode_recipe",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecodeRecipeRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Recipe decoded successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DecodeRecipeResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/recipes/delete": {
|
|
"post": {
|
|
"tags": [
|
|
"Recipe Management"
|
|
],
|
|
"operationId": "delete_recipe",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DeleteRecipeRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "Recipe deleted successfully"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"404": {
|
|
"description": "Recipe not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/recipes/encode": {
|
|
"post": {
|
|
"tags": [
|
|
"Recipe Management"
|
|
],
|
|
"operationId": "encode_recipe",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EncodeRecipeRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Recipe encoded successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EncodeRecipeResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/recipes/list": {
|
|
"get": {
|
|
"tags": [
|
|
"Recipe Management"
|
|
],
|
|
"operationId": "list_recipes",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Get recipe list successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ListRecipeResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/recipes/parse": {
|
|
"post": {
|
|
"tags": [
|
|
"Recipe Management"
|
|
],
|
|
"operationId": "parse_recipe",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ParseRecipeRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Recipe parsed successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ParseRecipeResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request - Invalid recipe format",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/recipes/save": {
|
|
"post": {
|
|
"tags": [
|
|
"Recipe Management"
|
|
],
|
|
"operationId": "save_recipe",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SaveRecipeRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"204": {
|
|
"description": "Recipe saved to file successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SaveRecipeResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/recipes/scan": {
|
|
"post": {
|
|
"tags": [
|
|
"Recipe Management"
|
|
],
|
|
"operationId": "scan_recipe",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScanRecipeRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Recipe scanned successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScanRecipeResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/recipes/schedule": {
|
|
"post": {
|
|
"tags": [
|
|
"Recipe Management"
|
|
],
|
|
"operationId": "schedule_recipe",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduleRecipeRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Recipe scheduled successfully"
|
|
},
|
|
"404": {
|
|
"description": "Recipe not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/recipes/slash-command": {
|
|
"post": {
|
|
"tags": [
|
|
"Recipe Management"
|
|
],
|
|
"operationId": "set_recipe_slash_command",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SetSlashCommandRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Slash command set successfully"
|
|
},
|
|
"404": {
|
|
"description": "Recipe not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/recipes/to-yaml": {
|
|
"post": {
|
|
"tags": [
|
|
"Recipe Management"
|
|
],
|
|
"operationId": "recipe_to_yaml",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RecipeToYamlRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Recipe converted to YAML successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RecipeToYamlResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request - Failed to convert recipe to YAML",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/reply": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::reply"
|
|
],
|
|
"operationId": "reply",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ChatRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Streaming response initiated",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MessageEvent"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"424": {
|
|
"description": "Agent not initialized"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schedule/create": {
|
|
"post": {
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"operationId": "create_schedule",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateScheduleRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Scheduled job created successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduledJob"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid cron expression or recipe file"
|
|
},
|
|
"409": {
|
|
"description": "Job ID already exists"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schedule/delete/{id}": {
|
|
"delete": {
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"operationId": "delete_schedule",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"description": "ID of the schedule to delete",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "Scheduled job deleted successfully"
|
|
},
|
|
"404": {
|
|
"description": "Scheduled job not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schedule/list": {
|
|
"get": {
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"operationId": "list_schedules",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A list of scheduled jobs",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ListSchedulesResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schedule/{id}": {
|
|
"put": {
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"operationId": "update_schedule",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"description": "ID of the schedule to update",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateScheduleRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Scheduled job updated successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ScheduledJob"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Cannot update a currently running job or invalid request"
|
|
},
|
|
"404": {
|
|
"description": "Scheduled job not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schedule/{id}/inspect": {
|
|
"get": {
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"operationId": "inspect_running_job",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"description": "ID of the schedule to inspect",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Running job information",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InspectJobResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Scheduled job not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schedule/{id}/kill": {
|
|
"post": {
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"operationId": "kill_running_job",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Running job killed successfully"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schedule/{id}/pause": {
|
|
"post": {
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"operationId": "pause_schedule",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"description": "ID of the schedule to pause",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "Scheduled job paused successfully"
|
|
},
|
|
"400": {
|
|
"description": "Cannot pause a currently running job"
|
|
},
|
|
"404": {
|
|
"description": "Scheduled job not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schedule/{id}/run_now": {
|
|
"post": {
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"operationId": "run_now_handler",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"description": "ID of the schedule to run",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Scheduled job triggered successfully, returns new session ID",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RunNowResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Scheduled job not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error when trying to run the job"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schedule/{id}/sessions": {
|
|
"get": {
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"operationId": "sessions_handler",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"description": "ID of the schedule",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"in": "query",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "A list of session display info",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SessionDisplayInfo"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/schedule/{id}/unpause": {
|
|
"post": {
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"operationId": "unpause_schedule",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"description": "ID of the schedule to unpause",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "Scheduled job unpaused successfully"
|
|
},
|
|
"404": {
|
|
"description": "Scheduled job not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/sessions": {
|
|
"get": {
|
|
"tags": [
|
|
"Session Management"
|
|
],
|
|
"operationId": "list_sessions",
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of available sessions retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SessionListResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/sessions/import": {
|
|
"post": {
|
|
"tags": [
|
|
"Session Management"
|
|
],
|
|
"operationId": "import_session",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ImportSessionRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Session imported successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Session"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request - Invalid JSON"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/sessions/insights": {
|
|
"get": {
|
|
"tags": [
|
|
"Session Management"
|
|
],
|
|
"operationId": "get_session_insights",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Session insights retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SessionInsights"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/sessions/search": {
|
|
"get": {
|
|
"tags": [
|
|
"Session Management"
|
|
],
|
|
"operationId": "search_sessions",
|
|
"parameters": [
|
|
{
|
|
"name": "query",
|
|
"in": "query",
|
|
"description": "Search query string",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"in": "query",
|
|
"description": "Maximum results (default: 10, max: 50)",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "integer",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
}
|
|
},
|
|
{
|
|
"name": "after_date",
|
|
"in": "query",
|
|
"description": "Filter after date (ISO 8601)",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
{
|
|
"name": "before_date",
|
|
"in": "query",
|
|
"description": "Filter before date (ISO 8601)",
|
|
"required": false,
|
|
"schema": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Matching sessions",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Session"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request - Invalid query"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/sessions/{id}/cancel": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::session_events"
|
|
],
|
|
"operationId": "session_cancel",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"description": "Session ID",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CancelRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Cancellation accepted"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/sessions/{id}/events": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::session_events"
|
|
],
|
|
"operationId": "session_events",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"description": "Session ID",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "SSE event stream",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/MessageEvent"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Session not found"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/sessions/{id}/reply": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::session_events"
|
|
],
|
|
"operationId": "session_reply",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"description": "Session ID",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SessionReplyRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Request accepted",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SessionReplyResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"404": {
|
|
"description": "Session not found"
|
|
},
|
|
"424": {
|
|
"description": "Agent not initialized"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/sessions/{session_id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Session Management"
|
|
],
|
|
"operationId": "get_session",
|
|
"parameters": [
|
|
{
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"description": "Unique identifier for the session",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Session history retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/Session"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"404": {
|
|
"description": "Session not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Session Management"
|
|
],
|
|
"operationId": "delete_session",
|
|
"parameters": [
|
|
{
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"description": "Unique identifier for the session",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Session deleted successfully"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"404": {
|
|
"description": "Session not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/sessions/{session_id}/export": {
|
|
"get": {
|
|
"tags": [
|
|
"Session Management"
|
|
],
|
|
"operationId": "export_session",
|
|
"parameters": [
|
|
{
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"description": "Unique identifier for the session",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Session exported successfully",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"404": {
|
|
"description": "Session not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/sessions/{session_id}/extensions": {
|
|
"get": {
|
|
"tags": [
|
|
"Session Management"
|
|
],
|
|
"operationId": "get_session_extensions",
|
|
"parameters": [
|
|
{
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"description": "Unique identifier for the session",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Session extensions retrieved successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SessionExtensionsResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"404": {
|
|
"description": "Session not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/sessions/{session_id}/fork": {
|
|
"post": {
|
|
"tags": [
|
|
"Session Management"
|
|
],
|
|
"operationId": "fork_session",
|
|
"parameters": [
|
|
{
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"description": "Unique identifier for the session",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ForkRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Session forked successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ForkResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request - truncate=true requires timestamp"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"404": {
|
|
"description": "Session not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/sessions/{session_id}/name": {
|
|
"put": {
|
|
"tags": [
|
|
"Session Management"
|
|
],
|
|
"operationId": "update_session_name",
|
|
"parameters": [
|
|
{
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"description": "Unique identifier for the session",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateSessionNameRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Session name updated successfully"
|
|
},
|
|
"400": {
|
|
"description": "Bad request - Name too long (max 200 characters)"
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"404": {
|
|
"description": "Session not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/sessions/{session_id}/user_recipe_values": {
|
|
"put": {
|
|
"tags": [
|
|
"Session Management"
|
|
],
|
|
"operationId": "update_session_user_recipe_values",
|
|
"parameters": [
|
|
{
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"description": "Unique identifier for the session",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateSessionUserRecipeValuesRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Session user recipe values updated successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateSessionUserRecipeValuesResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized - Invalid or missing API key"
|
|
},
|
|
"404": {
|
|
"description": "Session not found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"api_key": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"/status": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::status"
|
|
],
|
|
"operationId": "status",
|
|
"responses": {
|
|
"200": {
|
|
"description": "ok",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/system_info": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::status"
|
|
],
|
|
"operationId": "system_info",
|
|
"responses": {
|
|
"200": {
|
|
"description": "System information",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SystemInfo"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/telemetry/event": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::telemetry"
|
|
],
|
|
"operationId": "send_telemetry_event",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TelemetryEventRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"202": {
|
|
"description": "Event accepted for processing"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/tunnel/start": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::tunnel"
|
|
],
|
|
"summary": "Start the tunnel",
|
|
"operationId": "start_tunnel",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Tunnel started successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TunnelInfo"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/tunnel/status": {
|
|
"get": {
|
|
"tags": [
|
|
"super::routes::tunnel"
|
|
],
|
|
"summary": "Get tunnel info",
|
|
"operationId": "get_tunnel_status",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Tunnel info",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TunnelInfo"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/tunnel/stop": {
|
|
"post": {
|
|
"tags": [
|
|
"super::routes::tunnel"
|
|
],
|
|
"summary": "Stop the tunnel",
|
|
"operationId": "stop_tunnel",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Tunnel stopped successfully"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"ActionRequired": {
|
|
"type": "object",
|
|
"required": [
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"data": {
|
|
"$ref": "#/components/schemas/ActionRequiredData"
|
|
}
|
|
}
|
|
},
|
|
"ActionRequiredData": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"toolName",
|
|
"arguments",
|
|
"actionType"
|
|
],
|
|
"properties": {
|
|
"actionType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"toolConfirmation"
|
|
]
|
|
},
|
|
"arguments": {
|
|
"$ref": "#/components/schemas/JsonObject"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"prompt": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"toolName": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"message",
|
|
"requested_schema",
|
|
"actionType"
|
|
],
|
|
"properties": {
|
|
"actionType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"elicitation"
|
|
]
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"requested_schema": {}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"user_data",
|
|
"actionType"
|
|
],
|
|
"properties": {
|
|
"actionType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"elicitationResponse"
|
|
]
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"user_data": {}
|
|
}
|
|
}
|
|
],
|
|
"discriminator": {
|
|
"propertyName": "actionType"
|
|
}
|
|
},
|
|
"AddExtensionRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id",
|
|
"config"
|
|
],
|
|
"properties": {
|
|
"config": {
|
|
"$ref": "#/components/schemas/ExtensionConfig"
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"Annotations": {
|
|
"type": "object",
|
|
"properties": {
|
|
"audience": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Role"
|
|
}
|
|
},
|
|
"lastModified": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"priority": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"Author": {
|
|
"type": "object",
|
|
"properties": {
|
|
"contact": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"metadata": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"AuthorRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"contact": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"metadata": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"CallToolRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id",
|
|
"name",
|
|
"arguments"
|
|
],
|
|
"properties": {
|
|
"arguments": {},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"CallToolResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"content",
|
|
"isError"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"nullable": true
|
|
},
|
|
"content": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ContentBlock"
|
|
}
|
|
},
|
|
"isError": {
|
|
"type": "boolean"
|
|
},
|
|
"structuredContent": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"CancelRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"request_id"
|
|
],
|
|
"properties": {
|
|
"request_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ChatRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"user_message",
|
|
"session_id"
|
|
],
|
|
"properties": {
|
|
"override_conversation": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Message"
|
|
},
|
|
"description": "Override the server's conversation history. Only use this when you need absolute control\nover the conversation state (e.g., administrative tools). For normal operations, the server\nis the source of truth - use truncate/fork endpoints to modify conversation history instead.",
|
|
"nullable": true
|
|
},
|
|
"recipe_name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"recipe_version": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
},
|
|
"user_message": {
|
|
"$ref": "#/components/schemas/Message"
|
|
}
|
|
}
|
|
},
|
|
"CheckProviderRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"provider"
|
|
],
|
|
"properties": {
|
|
"provider": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"CommandType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Builtin",
|
|
"Recipe",
|
|
"Skill"
|
|
]
|
|
},
|
|
"ConfigKey": {
|
|
"type": "object",
|
|
"description": "Configuration key metadata for provider setup",
|
|
"required": [
|
|
"name",
|
|
"required",
|
|
"secret",
|
|
"oauth_flow"
|
|
],
|
|
"properties": {
|
|
"default": {
|
|
"type": "string",
|
|
"description": "Optional default value for the key",
|
|
"nullable": true
|
|
},
|
|
"device_code_flow": {
|
|
"type": "boolean",
|
|
"description": "Whether this OAuth flow uses the device code grant (RFC 8628)\nWhen true, the user must enter a verification code in the browser"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name of the configuration key (e.g., \"API_KEY\")"
|
|
},
|
|
"oauth_flow": {
|
|
"type": "boolean",
|
|
"description": "Whether this key should be configured using an OAuth flow\nWhen true, the provider's configure_oauth() method will be called instead of prompting for manual input"
|
|
},
|
|
"primary": {
|
|
"type": "boolean",
|
|
"description": "Whether this key should be shown prominently during provider setup\n(onboarding, settings modal, CLI configure)"
|
|
},
|
|
"required": {
|
|
"type": "boolean",
|
|
"description": "Whether this key is required for the provider to function"
|
|
},
|
|
"secret": {
|
|
"type": "boolean",
|
|
"description": "Whether this key should be stored securely (e.g., in keychain)"
|
|
}
|
|
}
|
|
},
|
|
"ConfigKeyQuery": {
|
|
"type": "object",
|
|
"required": [
|
|
"key",
|
|
"is_secret"
|
|
],
|
|
"properties": {
|
|
"is_secret": {
|
|
"type": "boolean"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ConfigResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"config"
|
|
],
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
}
|
|
}
|
|
},
|
|
"ConfirmToolActionRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"action",
|
|
"sessionId"
|
|
],
|
|
"properties": {
|
|
"action": {
|
|
"$ref": "#/components/schemas/Permission"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"principalType": {
|
|
"$ref": "#/components/schemas/PrincipalType"
|
|
},
|
|
"sessionId": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"Content": {
|
|
"oneOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"text"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/RawTextContent"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"image"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/RawImageContent"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"resource"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/RawEmbeddedResource"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"audio"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/RawAudioContent"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"resource_link"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/RawResource"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"ContentBlock": {
|
|
"oneOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"text"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/RawTextContent"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"image"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/RawImageContent"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"resource"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/RawEmbeddedResource"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"audio"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/RawAudioContent"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"resource_link"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "#/components/schemas/RawResource"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"Conversation": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Message"
|
|
}
|
|
},
|
|
"CreateCustomProviderResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"provider_name"
|
|
],
|
|
"properties": {
|
|
"provider_name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"CreateRecipeRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id"
|
|
],
|
|
"properties": {
|
|
"author": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/AuthorRequest"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"CreateRecipeResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"error": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"recipe": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Recipe"
|
|
}
|
|
],
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"CreateScheduleRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"recipe",
|
|
"cron"
|
|
],
|
|
"properties": {
|
|
"cron": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"recipe": {
|
|
"$ref": "#/components/schemas/Recipe"
|
|
}
|
|
}
|
|
},
|
|
"CspMetadata": {
|
|
"type": "object",
|
|
"description": "Content Security Policy metadata for MCP Apps\nSpecifies allowed domains for network connections and resource loading",
|
|
"properties": {
|
|
"baseUriDomains": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Domains allowed for base-uri",
|
|
"nullable": true
|
|
},
|
|
"connectDomains": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Domains allowed for connect-src (fetch, XHR, WebSocket)",
|
|
"nullable": true
|
|
},
|
|
"frameDomains": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Domains allowed for frame-src (nested iframes)",
|
|
"nullable": true
|
|
},
|
|
"resourceDomains": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Domains allowed for resource loading (scripts, styles, images, fonts, media)",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"DeclarativeProviderConfig": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"engine",
|
|
"display_name",
|
|
"base_url",
|
|
"models"
|
|
],
|
|
"properties": {
|
|
"api_key_env": {
|
|
"type": "string"
|
|
},
|
|
"base_path": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"base_url": {
|
|
"type": "string"
|
|
},
|
|
"catalog_provider_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"dynamic_models": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"engine": {
|
|
"$ref": "#/components/schemas/ProviderEngine"
|
|
},
|
|
"env_vars": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/EnvVarConfig"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"fast_model": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"headers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"models": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ModelInfo"
|
|
}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"requires_auth": {
|
|
"type": "boolean"
|
|
},
|
|
"skip_canonical_filtering": {
|
|
"type": "boolean"
|
|
},
|
|
"supports_streaming": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"timeout_seconds": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
}
|
|
}
|
|
},
|
|
"DecodeRecipeRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"deeplink"
|
|
],
|
|
"properties": {
|
|
"deeplink": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"DecodeRecipeResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"recipe"
|
|
],
|
|
"properties": {
|
|
"recipe": {
|
|
"$ref": "#/components/schemas/Recipe"
|
|
}
|
|
}
|
|
},
|
|
"DeleteRecipeRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"id"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"DictationProvider": {
|
|
"type": "string",
|
|
"enum": [
|
|
"openai",
|
|
"elevenlabs",
|
|
"groq",
|
|
"local"
|
|
]
|
|
},
|
|
"DictationProviderStatus": {
|
|
"type": "object",
|
|
"required": [
|
|
"configured",
|
|
"description",
|
|
"uses_provider_config"
|
|
],
|
|
"properties": {
|
|
"config_key": {
|
|
"type": "string",
|
|
"description": "Config key name if uses_provider_config is false",
|
|
"nullable": true
|
|
},
|
|
"configured": {
|
|
"type": "boolean",
|
|
"description": "Whether the provider is fully configured and ready to use"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Description of what this provider does"
|
|
},
|
|
"host": {
|
|
"type": "string",
|
|
"description": "Custom host URL if configured (only for providers that support it)",
|
|
"nullable": true
|
|
},
|
|
"settings_path": {
|
|
"type": "string",
|
|
"description": "Path to settings if uses_provider_config is true",
|
|
"nullable": true
|
|
},
|
|
"uses_provider_config": {
|
|
"type": "boolean",
|
|
"description": "Whether this provider uses the main provider config (true) or has its own key (false)"
|
|
}
|
|
}
|
|
},
|
|
"DownloadModelRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"spec"
|
|
],
|
|
"properties": {
|
|
"spec": {
|
|
"type": "string",
|
|
"description": "Model spec like \"bartowski/Llama-3.2-3B-Instruct-GGUF:Q4_K_M\""
|
|
}
|
|
}
|
|
},
|
|
"DownloadProgress": {
|
|
"type": "object",
|
|
"required": [
|
|
"model_id",
|
|
"status",
|
|
"bytes_downloaded",
|
|
"total_bytes",
|
|
"progress_percent"
|
|
],
|
|
"properties": {
|
|
"bytes_downloaded": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Bytes downloaded so far",
|
|
"minimum": 0
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"description": "Error message if failed",
|
|
"nullable": true
|
|
},
|
|
"eta_seconds": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Estimated time remaining in seconds",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"model_id": {
|
|
"type": "string",
|
|
"description": "Model ID being downloaded"
|
|
},
|
|
"progress_percent": {
|
|
"type": "number",
|
|
"format": "float",
|
|
"description": "Download progress percentage (0-100)"
|
|
},
|
|
"speed_bps": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Download speed in bytes per second",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"status": {
|
|
"$ref": "#/components/schemas/DownloadStatus"
|
|
},
|
|
"total_bytes": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Total bytes to download",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
},
|
|
"DownloadStatus": {
|
|
"type": "string",
|
|
"enum": [
|
|
"downloading",
|
|
"completed",
|
|
"failed",
|
|
"cancelled"
|
|
]
|
|
},
|
|
"EmbeddedResource": {
|
|
"type": "object",
|
|
"required": [
|
|
"resource"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"annotations": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Annotations"
|
|
},
|
|
{
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"resource": {
|
|
"$ref": "#/components/schemas/ResourceContents"
|
|
}
|
|
}
|
|
},
|
|
"EncodeRecipeRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"recipe"
|
|
],
|
|
"properties": {
|
|
"recipe": {
|
|
"$ref": "#/components/schemas/Recipe"
|
|
}
|
|
}
|
|
},
|
|
"EncodeRecipeResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"deeplink"
|
|
],
|
|
"properties": {
|
|
"deeplink": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"EnvVarConfig": {
|
|
"type": "object",
|
|
"required": [
|
|
"name"
|
|
],
|
|
"properties": {
|
|
"default": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"primary": {
|
|
"type": "boolean",
|
|
"description": "When true, the field is shown prominently in the UI (not collapsed).\nDefaults to the value of `required` if not specified.",
|
|
"nullable": true
|
|
},
|
|
"required": {
|
|
"type": "boolean"
|
|
},
|
|
"secret": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"Envs": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string",
|
|
"description": "A map of environment variables to set, e.g. API_KEY -> some_secret, HOST -> host"
|
|
}
|
|
},
|
|
"ErrorResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"message"
|
|
],
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ExtensionConfig": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"description": "SSE transport is no longer supported - kept only for config file compatibility",
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"sse"
|
|
]
|
|
},
|
|
"uri": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"description": "Standard I/O client with command and arguments",
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"cmd",
|
|
"args",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"args": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"available_tools": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"bundled": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"cmd": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"env_keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"envs": {
|
|
"$ref": "#/components/schemas/Envs"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name used to identify this extension"
|
|
},
|
|
"timeout": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"stdio"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"description": "Built-in extension that is part of the bundled goose MCP server",
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"available_tools": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"bundled": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name used to identify this extension"
|
|
},
|
|
"timeout": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"builtin"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"description": "Platform extensions that have direct access to the agent etc and run in the agent process",
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"available_tools": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"bundled": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name used to identify this extension"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"platform"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"description": "Streamable HTTP client with a URI endpoint using MCP Streamable HTTP specification",
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"uri",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"available_tools": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"bundled": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"env_keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"envs": {
|
|
"$ref": "#/components/schemas/Envs"
|
|
},
|
|
"headers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name used to identify this extension"
|
|
},
|
|
"timeout": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"streamable_http"
|
|
]
|
|
},
|
|
"uri": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"description": "Frontend-provided tools that will be called through the frontend",
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"tools",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"available_tools": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"bundled": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"instructions": {
|
|
"type": "string",
|
|
"description": "Instructions for how to use these tools",
|
|
"nullable": true
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name used to identify this extension"
|
|
},
|
|
"tools": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Tool"
|
|
},
|
|
"description": "The tools provided by the frontend"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"frontend"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"description": "Inline Python code that will be executed using uvx",
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"code",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"available_tools": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"code": {
|
|
"type": "string",
|
|
"description": "The Python code to execute"
|
|
},
|
|
"dependencies": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Python package dependencies required by this extension",
|
|
"nullable": true
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name used to identify this extension"
|
|
},
|
|
"timeout": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Timeout in seconds",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"inline_python"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"description": "Represents the different types of MCP extensions that can be added to the manager",
|
|
"discriminator": {
|
|
"propertyName": "type"
|
|
}
|
|
},
|
|
"ExtensionData": {
|
|
"type": "object",
|
|
"description": "Extension data containing all extension states\nKeys are in format \"extension_name.version\" (e.g., \"todo.v0\")",
|
|
"additionalProperties": {}
|
|
},
|
|
"ExtensionEntry": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ExtensionConfig"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ExtensionLoadResult": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"success"
|
|
],
|
|
"properties": {
|
|
"error": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"success": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"ExtensionQuery": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"config",
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"config": {
|
|
"$ref": "#/components/schemas/ExtensionConfig"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ExtensionResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"extensions"
|
|
],
|
|
"properties": {
|
|
"extensions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExtensionEntry"
|
|
}
|
|
},
|
|
"warnings": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"FeaturesResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"features"
|
|
],
|
|
"properties": {
|
|
"features": {
|
|
"type": "object",
|
|
"description": "Map of feature name to enabled status",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ForkRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"truncate",
|
|
"copy"
|
|
],
|
|
"properties": {
|
|
"copy": {
|
|
"type": "boolean"
|
|
},
|
|
"timestamp": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"nullable": true
|
|
},
|
|
"truncate": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"ForkResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"sessionId"
|
|
],
|
|
"properties": {
|
|
"sessionId": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"FrontendToolRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"toolCall"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"toolCall": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"GetToolsQuery": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id"
|
|
],
|
|
"properties": {
|
|
"extension_name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"GooseApp": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/McpAppResource"
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/WindowProps"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"mcpServers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"prd": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"GooseMode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"auto",
|
|
"approve",
|
|
"smart_approve",
|
|
"chat"
|
|
]
|
|
},
|
|
"HfGgufFile": {
|
|
"type": "object",
|
|
"description": "A single downloadable GGUF file (used internally and for downloads).",
|
|
"required": [
|
|
"filename",
|
|
"size_bytes",
|
|
"quantization",
|
|
"download_url"
|
|
],
|
|
"properties": {
|
|
"download_url": {
|
|
"type": "string"
|
|
},
|
|
"filename": {
|
|
"type": "string"
|
|
},
|
|
"quantization": {
|
|
"type": "string"
|
|
},
|
|
"size_bytes": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
},
|
|
"HfModelInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"repo_id",
|
|
"author",
|
|
"model_name",
|
|
"downloads",
|
|
"gguf_files"
|
|
],
|
|
"properties": {
|
|
"author": {
|
|
"type": "string"
|
|
},
|
|
"downloads": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 0
|
|
},
|
|
"gguf_files": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HfGgufFile"
|
|
}
|
|
},
|
|
"model_name": {
|
|
"type": "string"
|
|
},
|
|
"repo_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"HfQuantVariant": {
|
|
"type": "object",
|
|
"description": "A quantization variant — groups sharded files into one logical entry.",
|
|
"required": [
|
|
"quantization",
|
|
"size_bytes",
|
|
"filename",
|
|
"download_url",
|
|
"description",
|
|
"quality_rank"
|
|
],
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"download_url": {
|
|
"type": "string"
|
|
},
|
|
"filename": {
|
|
"type": "string"
|
|
},
|
|
"quality_rank": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0
|
|
},
|
|
"quantization": {
|
|
"type": "string"
|
|
},
|
|
"size_bytes": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
},
|
|
"Icon": {
|
|
"type": "object",
|
|
"required": [
|
|
"src"
|
|
],
|
|
"properties": {
|
|
"mimeType": {
|
|
"type": "string"
|
|
},
|
|
"sizes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"src": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ImageContent": {
|
|
"type": "object",
|
|
"required": [
|
|
"data",
|
|
"mimeType"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"annotations": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Annotations"
|
|
},
|
|
{
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"data": {
|
|
"type": "string"
|
|
},
|
|
"mimeType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ImportAppRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"html"
|
|
],
|
|
"properties": {
|
|
"html": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ImportAppResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"message"
|
|
],
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ImportSessionRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"json"
|
|
],
|
|
"properties": {
|
|
"json": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"InspectJobResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"processStartTime": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"runningDurationSeconds": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"nullable": true
|
|
},
|
|
"sessionId": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"JsonObject": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"KillJobResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"message"
|
|
],
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ListAppsRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"session_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"ListAppsResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"apps"
|
|
],
|
|
"properties": {
|
|
"apps": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/GooseApp"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ListRecipeResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"manifests"
|
|
],
|
|
"properties": {
|
|
"manifests": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RecipeManifest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ListSchedulesResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"jobs"
|
|
],
|
|
"properties": {
|
|
"jobs": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ScheduledJob"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"LoadedProvider": {
|
|
"type": "object",
|
|
"required": [
|
|
"config",
|
|
"is_editable"
|
|
],
|
|
"properties": {
|
|
"config": {
|
|
"$ref": "#/components/schemas/DeclarativeProviderConfig"
|
|
},
|
|
"is_editable": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"LocalModelResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"repo_id",
|
|
"filename",
|
|
"quantization",
|
|
"size_bytes",
|
|
"status",
|
|
"recommended",
|
|
"settings",
|
|
"vision_capable"
|
|
],
|
|
"properties": {
|
|
"filename": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"mmproj_status": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ModelDownloadStatus"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"quantization": {
|
|
"type": "string"
|
|
},
|
|
"recommended": {
|
|
"type": "boolean"
|
|
},
|
|
"repo_id": {
|
|
"type": "string"
|
|
},
|
|
"settings": {
|
|
"$ref": "#/components/schemas/ModelSettings"
|
|
},
|
|
"size_bytes": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 0
|
|
},
|
|
"status": {
|
|
"$ref": "#/components/schemas/ModelDownloadStatus"
|
|
},
|
|
"vision_capable": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"McpAppResource": {
|
|
"type": "object",
|
|
"description": "MCP App Resource\nRepresents a UI resource that can be rendered in an MCP App",
|
|
"required": [
|
|
"uri",
|
|
"name",
|
|
"mimeType"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ResourceMetadata"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"blob": {
|
|
"type": "string",
|
|
"description": "Base64-encoded binary content (alternative to text)",
|
|
"nullable": true
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Optional description of what this resource does",
|
|
"nullable": true
|
|
},
|
|
"mimeType": {
|
|
"type": "string",
|
|
"description": "MIME type (should be \"text/html;profile=mcp-app\" for MCP Apps)"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Human-readable name of the resource"
|
|
},
|
|
"text": {
|
|
"type": "string",
|
|
"description": "Text content of the resource (HTML for MCP Apps)",
|
|
"nullable": true
|
|
},
|
|
"uri": {
|
|
"type": "string",
|
|
"description": "URI of the resource (must use ui:// scheme)"
|
|
}
|
|
}
|
|
},
|
|
"Message": {
|
|
"type": "object",
|
|
"description": "A message to or from an LLM",
|
|
"required": [
|
|
"role",
|
|
"created",
|
|
"content",
|
|
"metadata"
|
|
],
|
|
"properties": {
|
|
"content": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/MessageContent"
|
|
}
|
|
},
|
|
"created": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
},
|
|
"id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"metadata": {
|
|
"$ref": "#/components/schemas/MessageMetadata"
|
|
},
|
|
"role": {
|
|
"$ref": "#/components/schemas/Role"
|
|
}
|
|
}
|
|
},
|
|
"MessageContent": {
|
|
"oneOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/TextContent"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"text"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ImageContent"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"image"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ToolRequest"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"toolRequest"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ToolResponse"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"toolResponse"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ToolConfirmationRequest"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"toolConfirmationRequest"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ActionRequired"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"actionRequired"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/FrontendToolRequest"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"frontendToolRequest"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ThinkingContent"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"thinking"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/RedactedThinkingContent"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"redactedThinking"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/SystemNotificationContent"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"systemNotification"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"description": "Content passed inside a message, which can be both simple content and tool content",
|
|
"discriminator": {
|
|
"propertyName": "type"
|
|
}
|
|
},
|
|
"MessageEvent": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"message",
|
|
"token_state",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"message": {
|
|
"$ref": "#/components/schemas/Message"
|
|
},
|
|
"token_state": {
|
|
"$ref": "#/components/schemas/TokenState"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Message"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"error",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"error": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Error"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"reason",
|
|
"token_state",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"reason": {
|
|
"type": "string"
|
|
},
|
|
"token_state": {
|
|
"$ref": "#/components/schemas/TokenState"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Finish"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"request_id",
|
|
"message",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"message": {
|
|
"type": "object"
|
|
},
|
|
"request_id": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Notification"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"conversation",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"conversation": {
|
|
"$ref": "#/components/schemas/Conversation"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"UpdateConversation"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"description": "Sent at the start of an SSE stream to inform the client about\nin-flight requests it can reattach to.",
|
|
"required": [
|
|
"request_ids",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"request_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ActiveRequests"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Ping"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"discriminator": {
|
|
"propertyName": "type"
|
|
}
|
|
},
|
|
"MessageMetadata": {
|
|
"type": "object",
|
|
"description": "Metadata for message visibility",
|
|
"required": [
|
|
"userVisible",
|
|
"agentVisible"
|
|
],
|
|
"properties": {
|
|
"agentVisible": {
|
|
"type": "boolean",
|
|
"description": "Whether the message should be included in the agent's context window"
|
|
},
|
|
"userVisible": {
|
|
"type": "boolean",
|
|
"description": "Whether the message should be visible to the user in the UI"
|
|
}
|
|
}
|
|
},
|
|
"ModelCapabilities": {
|
|
"type": "object",
|
|
"required": [
|
|
"tool_call",
|
|
"reasoning",
|
|
"attachment",
|
|
"temperature"
|
|
],
|
|
"properties": {
|
|
"attachment": {
|
|
"type": "boolean"
|
|
},
|
|
"reasoning": {
|
|
"type": "boolean"
|
|
},
|
|
"temperature": {
|
|
"type": "boolean"
|
|
},
|
|
"tool_call": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"ModelConfig": {
|
|
"type": "object",
|
|
"required": [
|
|
"model_name",
|
|
"toolshim"
|
|
],
|
|
"properties": {
|
|
"context_limit": {
|
|
"type": "integer",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"max_tokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"model_name": {
|
|
"type": "string"
|
|
},
|
|
"reasoning": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"request_params": {
|
|
"type": "object",
|
|
"description": "Provider-specific request parameters (e.g., anthropic_beta headers)",
|
|
"additionalProperties": {},
|
|
"nullable": true
|
|
},
|
|
"temperature": {
|
|
"type": "number",
|
|
"format": "float",
|
|
"nullable": true
|
|
},
|
|
"toolshim": {
|
|
"type": "boolean"
|
|
},
|
|
"toolshim_model": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"ModelDownloadStatus": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"state"
|
|
],
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"NotDownloaded"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"progress_percent",
|
|
"bytes_downloaded",
|
|
"total_bytes",
|
|
"state"
|
|
],
|
|
"properties": {
|
|
"bytes_downloaded": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 0
|
|
},
|
|
"progress_percent": {
|
|
"type": "number",
|
|
"format": "float"
|
|
},
|
|
"speed_bps": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Downloading"
|
|
]
|
|
},
|
|
"total_bytes": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"state"
|
|
],
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Downloaded"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"discriminator": {
|
|
"propertyName": "state"
|
|
}
|
|
},
|
|
"ModelInfo": {
|
|
"type": "object",
|
|
"description": "Information about a model's capabilities",
|
|
"required": [
|
|
"name",
|
|
"context_limit"
|
|
],
|
|
"properties": {
|
|
"context_limit": {
|
|
"type": "integer",
|
|
"description": "The maximum context length this model supports",
|
|
"minimum": 0
|
|
},
|
|
"currency": {
|
|
"type": "string",
|
|
"description": "Currency for the costs (default: \"$\")",
|
|
"nullable": true
|
|
},
|
|
"input_token_cost": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"description": "Cost per token for input in USD (optional)",
|
|
"nullable": true
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name of the model"
|
|
},
|
|
"output_token_cost": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"description": "Cost per token for output in USD (optional)",
|
|
"nullable": true
|
|
},
|
|
"supports_cache_control": {
|
|
"type": "boolean",
|
|
"description": "Whether this model supports cache control",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"ModelInfoData": {
|
|
"type": "object",
|
|
"required": [
|
|
"provider",
|
|
"model",
|
|
"context_limit",
|
|
"currency"
|
|
],
|
|
"properties": {
|
|
"cache_read_token_cost": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"nullable": true
|
|
},
|
|
"cache_write_token_cost": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"nullable": true
|
|
},
|
|
"context_limit": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"currency": {
|
|
"type": "string"
|
|
},
|
|
"input_token_cost": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"nullable": true
|
|
},
|
|
"max_output_tokens": {
|
|
"type": "integer",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"output_token_cost": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"nullable": true
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ModelInfoQuery": {
|
|
"type": "object",
|
|
"required": [
|
|
"provider",
|
|
"model"
|
|
],
|
|
"properties": {
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ModelInfoResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"source"
|
|
],
|
|
"properties": {
|
|
"model_info": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ModelInfoData"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"source": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ModelSettings": {
|
|
"type": "object",
|
|
"properties": {
|
|
"context_size": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"enable_thinking": {
|
|
"type": "boolean"
|
|
},
|
|
"flash_attention": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"frequency_penalty": {
|
|
"type": "number",
|
|
"format": "float"
|
|
},
|
|
"image_token_estimate": {
|
|
"type": "integer",
|
|
"description": "Estimated tokens per image for budget planning before mtmd tokenization.\nThe actual count is determined after tokenization via `chunks.total_tokens()`.",
|
|
"minimum": 0
|
|
},
|
|
"max_output_tokens": {
|
|
"type": "integer",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"mmproj_size_bytes": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Size of the mmproj file in bytes, used for memory accounting.",
|
|
"minimum": 0
|
|
},
|
|
"n_batch": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"n_gpu_layers": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"n_threads": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"native_tool_calling": {
|
|
"type": "boolean"
|
|
},
|
|
"presence_penalty": {
|
|
"type": "number",
|
|
"format": "float"
|
|
},
|
|
"repeat_last_n": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"repeat_penalty": {
|
|
"type": "number",
|
|
"format": "float"
|
|
},
|
|
"sampling": {
|
|
"$ref": "#/components/schemas/SamplingConfig"
|
|
},
|
|
"use_jinja": {
|
|
"type": "boolean"
|
|
},
|
|
"use_mlock": {
|
|
"type": "boolean"
|
|
},
|
|
"vision_capable": {
|
|
"type": "boolean",
|
|
"description": "Whether this model architecture supports vision input.\nDerived from the featured model table, not user-configurable."
|
|
}
|
|
}
|
|
},
|
|
"ModelTemplate": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"context_limit",
|
|
"capabilities",
|
|
"deprecated"
|
|
],
|
|
"properties": {
|
|
"capabilities": {
|
|
"$ref": "#/components/schemas/ModelCapabilities"
|
|
},
|
|
"context_limit": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"deprecated": {
|
|
"type": "boolean"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ParseRecipeRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"content"
|
|
],
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ParseRecipeResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"recipe"
|
|
],
|
|
"properties": {
|
|
"recipe": {
|
|
"$ref": "#/components/schemas/Recipe"
|
|
}
|
|
}
|
|
},
|
|
"Permission": {
|
|
"type": "string",
|
|
"enum": [
|
|
"always_allow",
|
|
"allow_once",
|
|
"cancel",
|
|
"deny_once",
|
|
"always_deny"
|
|
]
|
|
},
|
|
"PermissionLevel": {
|
|
"type": "string",
|
|
"description": "Enum representing the possible permission levels for a tool.",
|
|
"enum": [
|
|
"always_allow",
|
|
"ask_before",
|
|
"never_allow"
|
|
]
|
|
},
|
|
"PermissionsMetadata": {
|
|
"type": "object",
|
|
"description": "Sandbox permissions for MCP Apps\nSpecifies which browser capabilities the UI needs access to.\nMaps to the iframe Permission Policy `allow` attribute.",
|
|
"properties": {
|
|
"camera": {
|
|
"type": "boolean",
|
|
"description": "Request camera access (maps to Permission Policy `camera` feature)"
|
|
},
|
|
"clipboardWrite": {
|
|
"type": "boolean",
|
|
"description": "Request clipboard write access (maps to Permission Policy `clipboard-write` feature)"
|
|
},
|
|
"geolocation": {
|
|
"type": "boolean",
|
|
"description": "Request geolocation access (maps to Permission Policy `geolocation` feature)"
|
|
},
|
|
"microphone": {
|
|
"type": "boolean",
|
|
"description": "Request microphone access (maps to Permission Policy `microphone` feature)"
|
|
}
|
|
}
|
|
},
|
|
"PrincipalType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Extension",
|
|
"Tool"
|
|
]
|
|
},
|
|
"PromptContentResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"content",
|
|
"default_content",
|
|
"is_customized"
|
|
],
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"default_content": {
|
|
"type": "string"
|
|
},
|
|
"is_customized": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"PromptsListResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"prompts"
|
|
],
|
|
"properties": {
|
|
"prompts": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Template"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ProviderCatalogEntry": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"format",
|
|
"api_url",
|
|
"model_count",
|
|
"doc_url",
|
|
"env_var"
|
|
],
|
|
"properties": {
|
|
"api_url": {
|
|
"type": "string"
|
|
},
|
|
"doc_url": {
|
|
"type": "string"
|
|
},
|
|
"env_var": {
|
|
"type": "string"
|
|
},
|
|
"format": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"model_count": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ProviderDetails": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"metadata",
|
|
"is_configured",
|
|
"provider_type"
|
|
],
|
|
"properties": {
|
|
"is_configured": {
|
|
"type": "boolean"
|
|
},
|
|
"metadata": {
|
|
"$ref": "#/components/schemas/ProviderMetadata"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider_type": {
|
|
"$ref": "#/components/schemas/ProviderType"
|
|
}
|
|
}
|
|
},
|
|
"ProviderEngine": {
|
|
"type": "string",
|
|
"enum": [
|
|
"openai",
|
|
"ollama",
|
|
"anthropic"
|
|
]
|
|
},
|
|
"ProviderMetadata": {
|
|
"type": "object",
|
|
"description": "Metadata about a provider's configuration requirements and capabilities",
|
|
"required": [
|
|
"name",
|
|
"display_name",
|
|
"description",
|
|
"default_model",
|
|
"known_models",
|
|
"model_doc_link",
|
|
"config_keys"
|
|
],
|
|
"properties": {
|
|
"config_keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ConfigKey"
|
|
},
|
|
"description": "Required configuration keys"
|
|
},
|
|
"default_model": {
|
|
"type": "string",
|
|
"description": "The default/recommended model for this provider"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Description of the provider's capabilities"
|
|
},
|
|
"display_name": {
|
|
"type": "string",
|
|
"description": "Display name for the provider in UIs"
|
|
},
|
|
"known_models": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ModelInfo"
|
|
},
|
|
"description": "A list of currently known models with their capabilities"
|
|
},
|
|
"model_doc_link": {
|
|
"type": "string",
|
|
"description": "Link to the docs where models can be found"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The unique identifier for this provider"
|
|
},
|
|
"setup_steps": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "step-by-step instructions for set up providers eg: api key"
|
|
}
|
|
}
|
|
},
|
|
"ProviderTemplate": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"format",
|
|
"api_url",
|
|
"models",
|
|
"supports_streaming",
|
|
"env_var",
|
|
"doc_url"
|
|
],
|
|
"properties": {
|
|
"api_url": {
|
|
"type": "string"
|
|
},
|
|
"doc_url": {
|
|
"type": "string"
|
|
},
|
|
"env_var": {
|
|
"type": "string"
|
|
},
|
|
"format": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"models": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ModelTemplate"
|
|
}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"supports_streaming": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"ProviderType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Preferred",
|
|
"Builtin",
|
|
"Declarative",
|
|
"Custom"
|
|
]
|
|
},
|
|
"ProvidersResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"providers"
|
|
],
|
|
"properties": {
|
|
"providers": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProviderDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"RawAudioContent": {
|
|
"type": "object",
|
|
"required": [
|
|
"data",
|
|
"mimeType"
|
|
],
|
|
"properties": {
|
|
"data": {
|
|
"type": "string"
|
|
},
|
|
"mimeType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"RawEmbeddedResource": {
|
|
"type": "object",
|
|
"required": [
|
|
"resource"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"resource": {
|
|
"$ref": "#/components/schemas/ResourceContents"
|
|
}
|
|
}
|
|
},
|
|
"RawImageContent": {
|
|
"type": "object",
|
|
"required": [
|
|
"data",
|
|
"mimeType"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"data": {
|
|
"type": "string"
|
|
},
|
|
"mimeType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"RawResource": {
|
|
"type": "object",
|
|
"required": [
|
|
"uri",
|
|
"name"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"icons": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Icon"
|
|
}
|
|
},
|
|
"mimeType": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"size": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"uri": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"RawTextContent": {
|
|
"type": "object",
|
|
"required": [
|
|
"text"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ReadResourceRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id",
|
|
"extension_name",
|
|
"uri"
|
|
],
|
|
"properties": {
|
|
"extension_name": {
|
|
"type": "string"
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
},
|
|
"uri": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ReadResourceResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"uri",
|
|
"text"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object",
|
|
"additionalProperties": {},
|
|
"nullable": true
|
|
},
|
|
"mimeType": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
},
|
|
"uri": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"Recipe": {
|
|
"type": "object",
|
|
"required": [
|
|
"title",
|
|
"description"
|
|
],
|
|
"properties": {
|
|
"activities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"author": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Author"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"extensions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExtensionConfig"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"instructions": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"parameters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/RecipeParameter"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"prompt": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"response": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Response"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"retry": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/RetryConfig"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"settings": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Settings"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"sub_recipes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SubRecipe"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"RecipeManifest": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"recipe",
|
|
"file_path",
|
|
"last_modified"
|
|
],
|
|
"properties": {
|
|
"file_path": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"last_modified": {
|
|
"type": "string"
|
|
},
|
|
"recipe": {
|
|
"$ref": "#/components/schemas/Recipe"
|
|
},
|
|
"schedule_cron": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"slash_command": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"RecipeParameter": {
|
|
"type": "object",
|
|
"required": [
|
|
"key",
|
|
"input_type",
|
|
"requirement",
|
|
"description"
|
|
],
|
|
"properties": {
|
|
"default": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"input_type": {
|
|
"$ref": "#/components/schemas/RecipeParameterInputType"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"options": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"requirement": {
|
|
"$ref": "#/components/schemas/RecipeParameterRequirement"
|
|
}
|
|
}
|
|
},
|
|
"RecipeParameterInputType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"string",
|
|
"number",
|
|
"boolean",
|
|
"date",
|
|
"file",
|
|
"select"
|
|
]
|
|
},
|
|
"RecipeParameterRequirement": {
|
|
"type": "string",
|
|
"enum": [
|
|
"required",
|
|
"optional",
|
|
"user_prompt"
|
|
]
|
|
},
|
|
"RecipeToYamlRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"recipe"
|
|
],
|
|
"properties": {
|
|
"recipe": {
|
|
"$ref": "#/components/schemas/Recipe"
|
|
}
|
|
}
|
|
},
|
|
"RecipeToYamlResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"yaml"
|
|
],
|
|
"properties": {
|
|
"yaml": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"RedactedThinkingContent": {
|
|
"type": "object",
|
|
"required": [
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"data": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"RemoveExtensionRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"session_id"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"RepoVariantsResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"variants"
|
|
],
|
|
"properties": {
|
|
"recommended_index": {
|
|
"type": "integer",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"variants": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/HfQuantVariant"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ResourceContents": {
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"uri",
|
|
"text"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"mimeType": {
|
|
"type": "string"
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
},
|
|
"uri": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"uri",
|
|
"blob"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"blob": {
|
|
"type": "string"
|
|
},
|
|
"mimeType": {
|
|
"type": "string"
|
|
},
|
|
"uri": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ResourceMetadata": {
|
|
"type": "object",
|
|
"description": "Resource metadata containing UI configuration",
|
|
"properties": {
|
|
"ui": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/UiMetadata"
|
|
}
|
|
],
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"Response": {
|
|
"type": "object",
|
|
"properties": {
|
|
"json_schema": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"RestartAgentRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id"
|
|
],
|
|
"properties": {
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"RestartAgentResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"extension_results"
|
|
],
|
|
"properties": {
|
|
"extension_results": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExtensionLoadResult"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ResumeAgentRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id",
|
|
"load_model_and_extensions"
|
|
],
|
|
"properties": {
|
|
"load_model_and_extensions": {
|
|
"type": "boolean"
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ResumeAgentResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"session"
|
|
],
|
|
"properties": {
|
|
"extension_results": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExtensionLoadResult"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"session": {
|
|
"$ref": "#/components/schemas/Session"
|
|
}
|
|
}
|
|
},
|
|
"RetryConfig": {
|
|
"type": "object",
|
|
"description": "Configuration for retry logic in recipe execution",
|
|
"required": [
|
|
"max_retries",
|
|
"checks"
|
|
],
|
|
"properties": {
|
|
"checks": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SuccessCheck"
|
|
},
|
|
"description": "List of success checks to validate recipe completion"
|
|
},
|
|
"max_retries": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"description": "Maximum number of retry attempts before giving up",
|
|
"minimum": 0
|
|
},
|
|
"on_failure": {
|
|
"type": "string",
|
|
"description": "Optional shell command to run on failure for cleanup",
|
|
"nullable": true
|
|
},
|
|
"on_failure_timeout_seconds": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Timeout in seconds for on_failure commands (default: 600 seconds)",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"timeout_seconds": {
|
|
"type": "integer",
|
|
"format": "int64",
|
|
"description": "Timeout in seconds for individual shell commands (default: 300 seconds)",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
}
|
|
}
|
|
},
|
|
"Role": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"user"
|
|
]
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"assistant"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"RunNowResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id"
|
|
],
|
|
"properties": {
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SamplingConfig": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Greedy"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"temperature",
|
|
"top_k",
|
|
"top_p",
|
|
"min_p",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"min_p": {
|
|
"type": "number",
|
|
"format": "float"
|
|
},
|
|
"seed": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"temperature": {
|
|
"type": "number",
|
|
"format": "float"
|
|
},
|
|
"top_k": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"top_p": {
|
|
"type": "number",
|
|
"format": "float"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Temperature"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"tau",
|
|
"eta",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"eta": {
|
|
"type": "number",
|
|
"format": "float"
|
|
},
|
|
"seed": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"tau": {
|
|
"type": "number",
|
|
"format": "float"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"MirostatV2"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"discriminator": {
|
|
"propertyName": "type"
|
|
}
|
|
},
|
|
"SavePromptRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"content"
|
|
],
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SaveRecipeRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"recipe"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"recipe": {
|
|
"$ref": "#/components/schemas/Recipe"
|
|
}
|
|
}
|
|
},
|
|
"SaveRecipeResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"file_name",
|
|
"file_path"
|
|
],
|
|
"properties": {
|
|
"file_name": {
|
|
"type": "string"
|
|
},
|
|
"file_path": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ScanRecipeRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"recipe"
|
|
],
|
|
"properties": {
|
|
"recipe": {
|
|
"$ref": "#/components/schemas/Recipe"
|
|
}
|
|
}
|
|
},
|
|
"ScanRecipeResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"has_security_warnings"
|
|
],
|
|
"properties": {
|
|
"has_security_warnings": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"ScheduleRecipeRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"id"
|
|
],
|
|
"properties": {
|
|
"cron_schedule": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ScheduledJob": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"source",
|
|
"cron"
|
|
],
|
|
"properties": {
|
|
"cron": {
|
|
"type": "string"
|
|
},
|
|
"current_session_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"currently_running": {
|
|
"type": "boolean"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"last_run": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"paused": {
|
|
"type": "boolean"
|
|
},
|
|
"process_start_time": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"source": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"Session": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"working_dir",
|
|
"name",
|
|
"created_at",
|
|
"updated_at",
|
|
"extension_data",
|
|
"message_count"
|
|
],
|
|
"properties": {
|
|
"accumulated_input_tokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"accumulated_output_tokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"accumulated_total_tokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"conversation": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Conversation"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"extension_data": {
|
|
"$ref": "#/components/schemas/ExtensionData"
|
|
},
|
|
"goose_mode": {
|
|
"$ref": "#/components/schemas/GooseMode"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"input_tokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"message_count": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"model_config": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ModelConfig"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"output_tokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"provider_name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"recipe": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Recipe"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"schedule_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"session_type": {
|
|
"$ref": "#/components/schemas/SessionType"
|
|
},
|
|
"thread_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"total_tokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"updated_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"user_recipe_values": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"user_set_name": {
|
|
"type": "boolean"
|
|
},
|
|
"working_dir": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SessionDisplayInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"createdAt",
|
|
"workingDir",
|
|
"messageCount"
|
|
],
|
|
"properties": {
|
|
"accumulatedInputTokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"accumulatedOutputTokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"accumulatedTotalTokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"createdAt": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"inputTokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"messageCount": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"outputTokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"scheduleId": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"totalTokens": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"workingDir": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SessionExtensionsResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"extensions"
|
|
],
|
|
"properties": {
|
|
"extensions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExtensionConfig"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"SessionInsights": {
|
|
"type": "object",
|
|
"required": [
|
|
"totalSessions",
|
|
"totalTokens"
|
|
],
|
|
"properties": {
|
|
"totalSessions": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"totalTokens": {
|
|
"type": "integer",
|
|
"format": "int64"
|
|
}
|
|
}
|
|
},
|
|
"SessionListResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"sessions"
|
|
],
|
|
"properties": {
|
|
"sessions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Session"
|
|
},
|
|
"description": "List of available session information objects"
|
|
}
|
|
}
|
|
},
|
|
"SessionReplyRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"request_id",
|
|
"user_message"
|
|
],
|
|
"properties": {
|
|
"override_conversation": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Message"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"recipe_name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"recipe_version": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"request_id": {
|
|
"type": "string",
|
|
"description": "Client-generated UUIDv7 identifying this request."
|
|
},
|
|
"user_message": {
|
|
"$ref": "#/components/schemas/Message"
|
|
}
|
|
}
|
|
},
|
|
"SessionReplyResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"request_id"
|
|
],
|
|
"properties": {
|
|
"request_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SessionType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"user",
|
|
"scheduled",
|
|
"sub_agent",
|
|
"hidden",
|
|
"terminal",
|
|
"gateway",
|
|
"acp"
|
|
]
|
|
},
|
|
"SessionsQuery": {
|
|
"type": "object",
|
|
"required": [
|
|
"limit"
|
|
],
|
|
"properties": {
|
|
"limit": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
},
|
|
"SetProviderRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"provider",
|
|
"model"
|
|
],
|
|
"properties": {
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SetSlashCommandRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"id"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"slash_command": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"Settings": {
|
|
"type": "object",
|
|
"properties": {
|
|
"goose_model": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"goose_provider": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"max_turns": {
|
|
"type": "integer",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"temperature": {
|
|
"type": "number",
|
|
"format": "float",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"SetupResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"success",
|
|
"message"
|
|
],
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"success": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"SlashCommand": {
|
|
"type": "object",
|
|
"required": [
|
|
"command",
|
|
"help",
|
|
"command_type"
|
|
],
|
|
"properties": {
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"command_type": {
|
|
"$ref": "#/components/schemas/CommandType"
|
|
},
|
|
"help": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SlashCommandsResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"commands"
|
|
],
|
|
"properties": {
|
|
"commands": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SlashCommand"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"StartAgentRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"working_dir"
|
|
],
|
|
"properties": {
|
|
"extension_overrides": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ExtensionConfig"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"recipe": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Recipe"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"recipe_deeplink": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"recipe_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"working_dir": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"StopAgentRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id"
|
|
],
|
|
"properties": {
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SubRecipe": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"path"
|
|
],
|
|
"properties": {
|
|
"description": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"sequential_when_repeated": {
|
|
"type": "boolean"
|
|
},
|
|
"values": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"SuccessCheck": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"description": "Execute a shell command and check its exit status",
|
|
"required": [
|
|
"command",
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"command": {
|
|
"type": "string",
|
|
"description": "The shell command to execute"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Shell"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"description": "A single success check to validate recipe completion",
|
|
"discriminator": {
|
|
"propertyName": "type"
|
|
}
|
|
},
|
|
"SystemInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"app_version",
|
|
"os",
|
|
"os_version",
|
|
"architecture",
|
|
"enabled_extensions"
|
|
],
|
|
"properties": {
|
|
"app_version": {
|
|
"type": "string"
|
|
},
|
|
"architecture": {
|
|
"type": "string"
|
|
},
|
|
"enabled_extensions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"model": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"os": {
|
|
"type": "string"
|
|
},
|
|
"os_version": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"SystemNotificationContent": {
|
|
"type": "object",
|
|
"required": [
|
|
"notificationType",
|
|
"msg"
|
|
],
|
|
"properties": {
|
|
"data": {
|
|
"nullable": true
|
|
},
|
|
"msg": {
|
|
"type": "string"
|
|
},
|
|
"notificationType": {
|
|
"$ref": "#/components/schemas/SystemNotificationType"
|
|
}
|
|
}
|
|
},
|
|
"SystemNotificationType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"thinkingMessage",
|
|
"inlineMessage",
|
|
"creditsExhausted"
|
|
]
|
|
},
|
|
"TaskSupport": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"forbidden"
|
|
]
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"optional"
|
|
]
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"required"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"TelemetryEventRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"event_name"
|
|
],
|
|
"properties": {
|
|
"event_name": {
|
|
"type": "string"
|
|
},
|
|
"properties": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
}
|
|
}
|
|
},
|
|
"Template": {
|
|
"type": "object",
|
|
"description": "Information about a template including its content and customization status",
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"default_content",
|
|
"is_customized"
|
|
],
|
|
"properties": {
|
|
"default_content": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"is_customized": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"user_content": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"TextContent": {
|
|
"type": "object",
|
|
"required": [
|
|
"text"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"annotations": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/Annotations"
|
|
},
|
|
{
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ThinkingContent": {
|
|
"type": "object",
|
|
"required": [
|
|
"thinking",
|
|
"signature"
|
|
],
|
|
"properties": {
|
|
"signature": {
|
|
"type": "string"
|
|
},
|
|
"thinking": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"TokenState": {
|
|
"type": "object",
|
|
"required": [
|
|
"inputTokens",
|
|
"outputTokens",
|
|
"totalTokens",
|
|
"accumulatedInputTokens",
|
|
"accumulatedOutputTokens",
|
|
"accumulatedTotalTokens"
|
|
],
|
|
"properties": {
|
|
"accumulatedInputTokens": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"accumulatedOutputTokens": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"accumulatedTotalTokens": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"inputTokens": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"outputTokens": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"totalTokens": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
},
|
|
"Tool": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"inputSchema"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"annotations": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ToolAnnotations"
|
|
},
|
|
{
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"execution": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/ToolExecution"
|
|
},
|
|
{
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"icons": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Icon"
|
|
}
|
|
},
|
|
"inputSchema": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"outputSchema": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ToolAnnotations": {
|
|
"type": "object",
|
|
"properties": {
|
|
"destructiveHint": {
|
|
"type": "boolean"
|
|
},
|
|
"idempotentHint": {
|
|
"type": "boolean"
|
|
},
|
|
"openWorldHint": {
|
|
"type": "boolean"
|
|
},
|
|
"readOnlyHint": {
|
|
"type": "boolean"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ToolConfirmationRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"toolName",
|
|
"arguments"
|
|
],
|
|
"properties": {
|
|
"arguments": {
|
|
"$ref": "#/components/schemas/JsonObject"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"prompt": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"toolName": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ToolExecution": {
|
|
"type": "object",
|
|
"properties": {
|
|
"taskSupport": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/components/schemas/TaskSupport"
|
|
},
|
|
{
|
|
"type": "object"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"ToolInfo": {
|
|
"type": "object",
|
|
"description": "Information about the tool used for building prompts",
|
|
"required": [
|
|
"name",
|
|
"description",
|
|
"parameters"
|
|
],
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"input_schema": {
|
|
"type": "object"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"parameters": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"permission": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/PermissionLevel"
|
|
}
|
|
],
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"ToolPermission": {
|
|
"type": "object",
|
|
"required": [
|
|
"tool_name",
|
|
"permission"
|
|
],
|
|
"properties": {
|
|
"permission": {
|
|
"$ref": "#/components/schemas/PermissionLevel"
|
|
},
|
|
"tool_name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ToolRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"toolCall"
|
|
],
|
|
"properties": {
|
|
"_meta": {
|
|
"type": "object"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object"
|
|
},
|
|
"toolCall": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"ToolResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"toolResult"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object"
|
|
},
|
|
"toolResult": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"TranscribeRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"audio",
|
|
"mime_type",
|
|
"provider"
|
|
],
|
|
"properties": {
|
|
"audio": {
|
|
"type": "string",
|
|
"description": "Base64 encoded audio data"
|
|
},
|
|
"mime_type": {
|
|
"type": "string",
|
|
"description": "MIME type of the audio (e.g., \"audio/webm\", \"audio/wav\")"
|
|
},
|
|
"provider": {
|
|
"$ref": "#/components/schemas/DictationProvider"
|
|
}
|
|
}
|
|
},
|
|
"TranscribeResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"text"
|
|
],
|
|
"properties": {
|
|
"text": {
|
|
"type": "string",
|
|
"description": "Transcribed text from the audio"
|
|
}
|
|
}
|
|
},
|
|
"TunnelInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"state",
|
|
"url",
|
|
"hostname",
|
|
"secret"
|
|
],
|
|
"properties": {
|
|
"hostname": {
|
|
"type": "string"
|
|
},
|
|
"secret": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"$ref": "#/components/schemas/TunnelState"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"TunnelState": {
|
|
"type": "string",
|
|
"enum": [
|
|
"idle",
|
|
"starting",
|
|
"running",
|
|
"error",
|
|
"disabled"
|
|
]
|
|
},
|
|
"UiMetadata": {
|
|
"type": "object",
|
|
"description": "UI-specific metadata for MCP resources",
|
|
"properties": {
|
|
"csp": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/CspMetadata"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"domain": {
|
|
"type": "string",
|
|
"description": "Preferred domain for the app (used for CORS)",
|
|
"nullable": true
|
|
},
|
|
"permissions": {
|
|
"$ref": "#/components/schemas/PermissionsMetadata"
|
|
},
|
|
"prefersBorder": {
|
|
"type": "boolean",
|
|
"description": "Whether the app prefers to have a border around it",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"UpdateCustomProviderRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"engine",
|
|
"display_name",
|
|
"api_url",
|
|
"api_key",
|
|
"models"
|
|
],
|
|
"properties": {
|
|
"api_key": {
|
|
"type": "string"
|
|
},
|
|
"api_url": {
|
|
"type": "string"
|
|
},
|
|
"base_path": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"catalog_provider_id": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"engine": {
|
|
"type": "string"
|
|
},
|
|
"headers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"models": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"requires_auth": {
|
|
"type": "boolean"
|
|
},
|
|
"supports_streaming": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"UpdateFromSessionRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id"
|
|
],
|
|
"properties": {
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"UpdateProviderRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"provider",
|
|
"session_id"
|
|
],
|
|
"properties": {
|
|
"context_limit": {
|
|
"type": "integer",
|
|
"nullable": true,
|
|
"minimum": 0
|
|
},
|
|
"model": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
},
|
|
"request_params": {
|
|
"type": "object",
|
|
"additionalProperties": {},
|
|
"nullable": true
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"UpdateScheduleRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"cron"
|
|
],
|
|
"properties": {
|
|
"cron": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"UpdateSessionNameRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"name"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Updated name for the session (max 200 characters)"
|
|
}
|
|
}
|
|
},
|
|
"UpdateSessionRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id"
|
|
],
|
|
"properties": {
|
|
"goose_mode": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"UpdateSessionUserRecipeValuesRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"userRecipeValues"
|
|
],
|
|
"properties": {
|
|
"userRecipeValues": {
|
|
"type": "object",
|
|
"description": "Recipe parameter values entered by the user",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"UpdateSessionUserRecipeValuesResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"recipe"
|
|
],
|
|
"properties": {
|
|
"recipe": {
|
|
"$ref": "#/components/schemas/Recipe"
|
|
}
|
|
}
|
|
},
|
|
"UpdateWorkingDirRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"session_id",
|
|
"working_dir"
|
|
],
|
|
"properties": {
|
|
"session_id": {
|
|
"type": "string"
|
|
},
|
|
"working_dir": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"UpsertConfigQuery": {
|
|
"type": "object",
|
|
"required": [
|
|
"key",
|
|
"value",
|
|
"is_secret"
|
|
],
|
|
"properties": {
|
|
"is_secret": {
|
|
"type": "boolean"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"value": {}
|
|
}
|
|
},
|
|
"UpsertPermissionsQuery": {
|
|
"type": "object",
|
|
"required": [
|
|
"tool_permissions"
|
|
],
|
|
"properties": {
|
|
"tool_permissions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ToolPermission"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"WhisperModelResponse": {
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"size_mb",
|
|
"url",
|
|
"description"
|
|
],
|
|
"properties": {
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Description"
|
|
},
|
|
"id": {
|
|
"type": "string",
|
|
"description": "Model identifier (e.g., \"tiny\", \"base\", \"small\")"
|
|
},
|
|
"size_mb": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"description": "Model file size in MB",
|
|
"minimum": 0
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"description": "Download URL from HuggingFace"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"downloaded",
|
|
"recommended"
|
|
],
|
|
"properties": {
|
|
"downloaded": {
|
|
"type": "boolean"
|
|
},
|
|
"recommended": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"WindowProps": {
|
|
"type": "object",
|
|
"required": [
|
|
"width",
|
|
"height",
|
|
"resizable"
|
|
],
|
|
"properties": {
|
|
"height": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0
|
|
},
|
|
"resizable": {
|
|
"type": "boolean"
|
|
},
|
|
"width": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|