goose/ui/desktop/openapi.json
Will Pfleger 044b227fdb
Some checks are pending
Canary / bundle-desktop (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
Canary / Prepare Version (push) Waiting to run
Canary / build-cli (push) Blocked by required conditions
Canary / Upload Install Script (push) Blocked by required conditions
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 / Test and Lint Electron Desktop App (push) Blocked by required conditions
CI / bundle-desktop-unsigned (push) Blocked by required conditions
Documentation Site Preview / deploy (push) Waiting to run
Publish Docker Image / docker (push) Waiting to run
(re)Standardize Session Name Attribute (#5279)
2025-10-24 13:34:08 -04:00

4595 lines
No EOL
110 KiB
JSON

{
"openapi": "3.0.3",
"info": {
"title": "goose-server",
"description": "An AI agent",
"contact": {
"name": "Block",
"email": "ai-oss-tools@block.xyz"
},
"license": {
"name": "Apache-2.0"
},
"version": "1.11.0"
},
"paths": {
"/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/Session"
}
}
}
},
"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/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_router_tool_selector": {
"post": {
"tags": [
"super::routes::agent"
],
"operationId": "update_router_tool_selector",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateRouterToolSelectorRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Tool selection strategy updated successfully",
"content": {
"text/plain": {
"schema": {
"type": "string"
}
}
}
},
"401": {
"description": "Unauthorized - invalid secret key"
},
"424": {
"description": "Agent not initialized"
},
"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/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": {
"text/plain": {
"schema": {
"type": "string"
}
}
}
},
"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/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}/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/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/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"
}
}
}
},
"/confirm": {
"post": {
"tags": [
"super::routes::reply"
],
"operationId": "confirm_permission",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PermissionConfirmationRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Permission action is confirmed",
"content": {
"application/json": {
"schema": {}
}
}
},
"401": {
"description": "Unauthorized - invalid secret key"
},
"500": {
"description": "Internal server error"
}
}
}
},
"/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"
}
}
}
},
"/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"
}
}
}
}
}
}
},
"/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"
}
}
}
}
}
}
},
"/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"
},
"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": false,
"schema": {
"type": "integer",
"format": "int32",
"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/{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}/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"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"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
}
}
},
"ChatRequest": {
"type": "object",
"required": [
"messages",
"session_id"
],
"properties": {
"messages": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Message"
}
},
"recipe_name": {
"type": "string",
"nullable": true
},
"recipe_version": {
"type": "string",
"nullable": true
},
"session_id": {
"type": "string"
}
}
},
"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
},
"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 OAuth device code flow\nWhen true, the provider's configure_oauth() method will be called instead of prompting for manual input"
},
"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": {}
}
}
},
"Content": {
"oneOf": [
{
"allOf": [
{
"$ref": "#/components/schemas/RawTextContent"
}
]
},
{
"allOf": [
{
"$ref": "#/components/schemas/RawImageContent"
}
]
},
{
"allOf": [
{
"$ref": "#/components/schemas/RawEmbeddedResource"
}
]
},
{
"allOf": [
{
"$ref": "#/components/schemas/RawAudioContent"
}
]
},
{
"allOf": [
{
"$ref": "#/components/schemas/RawResource"
}
]
}
]
},
"Conversation": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Message"
}
},
"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_source",
"cron"
],
"properties": {
"cron": {
"type": "string"
},
"execution_mode": {
"type": "string",
"nullable": true
},
"id": {
"type": "string"
},
"recipe_source": {
"type": "string"
}
}
},
"DeclarativeProviderConfig": {
"type": "object",
"required": [
"name",
"engine",
"display_name",
"api_key_env",
"base_url",
"models"
],
"properties": {
"api_key_env": {
"type": "string"
},
"base_url": {
"type": "string"
},
"description": {
"type": "string",
"nullable": true
},
"display_name": {
"type": "string"
},
"engine": {
"$ref": "#/components/schemas/ProviderEngine"
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"nullable": true
},
"models": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ModelInfo"
}
},
"name": {
"type": "string"
},
"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"
}
}
},
"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"
}
}
},
"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": "Server-sent events client with a URI endpoint",
"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"
},
"name": {
"type": "string",
"description": "The name used to identify this extension"
},
"timeout": {
"type": "integer",
"format": "int64",
"nullable": true,
"minimum": 0
},
"type": {
"type": "string",
"enum": [
"sse"
]
},
"uri": {
"type": "string"
}
}
},
{
"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"
},
"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"
}
}
}
]
},
"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"
}
}
}
},
"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"
}
}
},
"Icon": {
"type": "object",
"required": [
"src"
],
"properties": {
"mimeType": {
"type": "string"
},
"sizes": {
"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"
}
}
},
"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"
}
}
},
"ListRecipeResponse": {
"type": "object",
"required": [
"recipe_manifest_responses"
],
"properties": {
"recipe_manifest_responses": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RecipeManifestResponse"
}
}
}
},
"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"
}
}
},
"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/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"
}
},
"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"
}
}
},
"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 (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 (optional)",
"nullable": true
},
"supports_cache_control": {
"type": "boolean",
"description": "Whether this model supports cache control",
"nullable": true
}
}
},
"ParseRecipeRequest": {
"type": "object",
"required": [
"content"
],
"properties": {
"content": {
"type": "string"
}
}
},
"ParseRecipeResponse": {
"type": "object",
"required": [
"recipe"
],
"properties": {
"recipe": {
"$ref": "#/components/schemas/Recipe"
}
}
},
"PermissionConfirmationRequest": {
"type": "object",
"required": [
"id",
"action",
"session_id"
],
"properties": {
"action": {
"type": "string"
},
"id": {
"type": "string"
},
"principal_type": {
"$ref": "#/components/schemas/PrincipalType"
},
"session_id": {
"type": "string"
}
}
},
"PermissionLevel": {
"type": "string",
"description": "Enum representing the possible permission levels for a tool.",
"enum": [
"always_allow",
"ask_before",
"never_allow"
]
},
"PrincipalType": {
"type": "string",
"enum": [
"Extension",
"Tool"
]
},
"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"
}
}
},
"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": {
"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"
}
}
},
"Recipe": {
"type": "object",
"required": [
"title",
"description"
],
"properties": {
"activities": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"author": {
"allOf": [
{
"$ref": "#/components/schemas/Author"
}
],
"nullable": true
},
"context": {
"type": "array",
"items": {
"type": "string"
},
"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"
}
}
},
"RecipeManifestResponse": {
"type": "object",
"required": [
"recipe",
"lastModified",
"id"
],
"properties": {
"id": {
"type": "string"
},
"lastModified": {
"type": "string"
},
"recipe": {
"$ref": "#/components/schemas/Recipe"
}
}
},
"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"
]
},
"RedactedThinkingContent": {
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "string"
}
}
},
"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"
}
}
}
]
},
"Response": {
"type": "object",
"properties": {
"json_schema": {
"nullable": true
}
}
},
"ResumeAgentRequest": {
"type": "object",
"required": [
"session_id",
"load_model_and_extensions"
],
"properties": {
"load_model_and_extensions": {
"type": "boolean"
},
"session_id": {
"type": "string"
}
}
},
"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"
},
{
"type": "string"
}
]
},
"RunNowResponse": {
"type": "object",
"required": [
"session_id"
],
"properties": {
"session_id": {
"type": "string"
}
}
},
"SaveRecipeRequest": {
"type": "object",
"required": [
"recipe"
],
"properties": {
"id": {
"type": "string",
"nullable": true
},
"recipe": {
"$ref": "#/components/schemas/Recipe"
}
}
},
"SaveRecipeResponse": {
"type": "object",
"required": [
"id"
],
"properties": {
"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"
}
}
},
"ScheduledJob": {
"type": "object",
"required": [
"id",
"source",
"cron"
],
"properties": {
"cron": {
"type": "string"
},
"current_session_id": {
"type": "string",
"nullable": true
},
"currently_running": {
"type": "boolean"
},
"execution_mode": {
"type": "string",
"nullable": true
},
"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"
},
"id": {
"type": "string"
},
"input_tokens": {
"type": "integer",
"format": "int32",
"nullable": true
},
"message_count": {
"type": "integer",
"minimum": 0
},
"name": {
"type": "string"
},
"output_tokens": {
"type": "integer",
"format": "int32",
"nullable": true
},
"recipe": {
"allOf": [
{
"$ref": "#/components/schemas/Recipe"
}
],
"nullable": true
},
"schedule_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"
}
}
},
"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"
}
}
},
"SessionsQuery": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"format": "int32",
"minimum": 0
}
}
},
"Settings": {
"type": "object",
"properties": {
"goose_model": {
"type": "string",
"nullable": true
},
"goose_provider": {
"type": "string",
"nullable": true
},
"temperature": {
"type": "number",
"format": "float",
"nullable": true
}
}
},
"SetupResponse": {
"type": "object",
"required": [
"success",
"message"
],
"properties": {
"message": {
"type": "string"
},
"success": {
"type": "boolean"
}
}
},
"StartAgentRequest": {
"type": "object",
"required": [
"working_dir"
],
"properties": {
"recipe": {
"allOf": [
{
"$ref": "#/components/schemas/Recipe"
}
],
"nullable": true
},
"recipe_deeplink": {
"type": "string",
"nullable": true
},
"recipe_id": {
"type": "string",
"nullable": true
},
"working_dir": {
"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"
}
},
"SystemNotificationContent": {
"type": "object",
"required": [
"notificationType",
"msg"
],
"properties": {
"msg": {
"type": "string"
},
"notificationType": {
"$ref": "#/components/schemas/SystemNotificationType"
}
}
},
"SystemNotificationType": {
"type": "string",
"enum": [
"thinkingMessage",
"inlineMessage"
]
},
"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"
}
}
},
"Tool": {
"type": "object",
"required": [
"name",
"inputSchema"
],
"properties": {
"annotations": {
"anyOf": [
{
"$ref": "#/components/schemas/ToolAnnotations"
},
{
"type": "object"
}
]
},
"description": {
"type": "string"
},
"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"
}
}
},
"ToolInfo": {
"type": "object",
"description": "Information about the tool used for building prompts",
"required": [
"name",
"description",
"parameters"
],
"properties": {
"description": {
"type": "string"
},
"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": {
"id": {
"type": "string"
},
"toolCall": {
"type": "object"
}
}
},
"ToolResponse": {
"type": "object",
"required": [
"id",
"toolResult"
],
"properties": {
"id": {
"type": "string"
},
"toolResult": {
"type": "object"
}
}
},
"UpdateCustomProviderRequest": {
"type": "object",
"required": [
"engine",
"display_name",
"api_url",
"api_key",
"models"
],
"properties": {
"api_key": {
"type": "string"
},
"api_url": {
"type": "string"
},
"display_name": {
"type": "string"
},
"engine": {
"type": "string"
},
"models": {
"type": "array",
"items": {
"type": "string"
}
},
"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": {
"model": {
"type": "string",
"nullable": true
},
"provider": {
"type": "string"
},
"session_id": {
"type": "string"
}
}
},
"UpdateRouterToolSelectorRequest": {
"type": "object",
"required": [
"session_id"
],
"properties": {
"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)"
}
}
},
"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"
}
}
},
"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"
}
}
}
}
}
}
}