{ "openapi": "3.1.0", "info": { "title": "AstrBot OpenAPI v1", "version": "0.1.0", "description": "Target REST contract for migrating AstrBot HTTP APIs to /api/v1. Dynamic AstrBot configuration payloads are intentionally modeled as open JSON objects because their schemas are provided at runtime by template endpoints. Developer API keys currently support these scopes only: bot, provider, persona, im, config, chat, plugin, mcp, skill. The config scope also grants bot and provider access.\n" }, "servers": [ { "url": "http://localhost:6185", "description": "Local AstrBot server" } ], "security": [ { "ApiKeyAuth": [] } ], "tags": [ { "name": "Auth" }, { "name": "API Keys" }, { "name": "System Config" }, { "name": "Config Profiles" }, { "name": "Bot Config Routes" }, { "name": "Bots" }, { "name": "Provider Sources" }, { "name": "Providers" }, { "name": "Chat" }, { "name": "IM" }, { "name": "Files" }, { "name": "Plugins" }, { "name": "Plugin Sources" }, { "name": "Plugin Pages" }, { "name": "Commands" }, { "name": "Tools" }, { "name": "MCP" }, { "name": "Skills" }, { "name": "Knowledge Base" }, { "name": "Personas" }, { "name": "Sessions" }, { "name": "Conversations" }, { "name": "Stats" }, { "name": "Backups" }, { "name": "Updates" }, { "name": "Cron" }, { "name": "Logs" }, { "name": "T2I" }, { "name": "Subagents" }, { "name": "Webhooks" } ], "paths": { "/api/v1/auth/login": { "post": { "tags": [ "Auth" ], "summary": "Login to the dashboard API", "operationId": "login", "security": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" }, "401": { "$ref": "#/components/responses/Error" } } } }, "/api/v1/auth/logout": { "post": { "tags": [ "Auth" ], "summary": "Logout from the dashboard API", "operationId": "logout", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/auth/setup-status": { "get": { "tags": [ "Auth" ], "summary": "Get first-run setup status", "operationId": "getAuthSetupStatus", "security": [], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/auth/setup": { "post": { "tags": [ "Auth" ], "summary": "Complete first-run dashboard account setup", "operationId": "setupAuth", "security": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetupAuthRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/auth/totp/setup": { "post": { "tags": [ "Auth" ], "summary": "Start or refresh TOTP setup", "operationId": "setupTotp", "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TotpSetupRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/auth/totp/recovery": { "post": { "tags": [ "Auth" ], "summary": "Generate or rotate TOTP recovery codes", "operationId": "recoverTotp", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/auth/account": { "patch": { "tags": [ "Auth" ], "summary": "Update dashboard account credentials", "operationId": "updateAuthAccount", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAccountRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/api-keys": { "get": { "tags": [ "API Keys" ], "summary": "List OpenAPI keys", "operationId": "listApiKeys", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "API Keys" ], "summary": "Create an OpenAPI key", "operationId": "createApiKey", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateApiKeyRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/api-keys/{key_id}/revoke": { "post": { "tags": [ "API Keys" ], "summary": "Revoke an OpenAPI key", "operationId": "revokeApiKey", "parameters": [ { "$ref": "#/components/parameters/KeyId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/api-keys/{key_id}": { "delete": { "tags": [ "API Keys" ], "summary": "Delete an OpenAPI key", "operationId": "deleteApiKey", "parameters": [ { "$ref": "#/components/parameters/KeyId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/system-config/schema": { "get": { "tags": [ "System Config" ], "summary": "Get the system configuration schema", "operationId": "getSystemConfigSchema", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/system-config": { "get": { "tags": [ "System Config" ], "summary": "Get the system configuration", "operationId": "getSystemConfig", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "System Config" ], "summary": "Replace the system configuration", "operationId": "updateSystemConfig", "x-astrbot-scope": "config", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicConfig" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/system-config/runtime": { "get": { "tags": [ "System Config" ], "summary": "Get runtime-enriched system configuration metadata", "operationId": "getSystemConfigRuntime", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/config-profiles/schema": { "get": { "tags": [ "Config Profiles" ], "summary": "Get the configuration profile schema", "operationId": "getConfigProfileSchema", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/config-profiles": { "get": { "tags": [ "Config Profiles" ], "summary": "List configuration profiles", "operationId": "listConfigProfiles", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Config Profiles" ], "summary": "Create a configuration profile", "operationId": "createConfigProfile", "x-astrbot-scope": "config", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateConfigProfileRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/config-profiles/{config_id}": { "get": { "tags": [ "Config Profiles" ], "summary": "Get a configuration profile", "operationId": "getConfigProfile", "x-astrbot-scope": "config", "parameters": [ { "$ref": "#/components/parameters/ConfigId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Config Profiles" ], "summary": "Replace a configuration profile", "operationId": "updateConfigProfileContent", "x-astrbot-scope": "config", "parameters": [ { "$ref": "#/components/parameters/ConfigId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicConfig" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "patch": { "tags": [ "Config Profiles" ], "summary": "Rename a configuration profile", "operationId": "renameConfigProfile", "x-astrbot-scope": "config", "parameters": [ { "$ref": "#/components/parameters/ConfigId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RenameRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Config Profiles" ], "summary": "Delete a configuration profile", "operationId": "deleteConfigProfile", "x-astrbot-scope": "config", "parameters": [ { "$ref": "#/components/parameters/ConfigId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/config-routes": { "get": { "tags": [ "Bot Config Routes" ], "summary": "List UMO to configuration profile bindings", "operationId": "listConfigRoutes", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Bot Config Routes" ], "summary": "Replace all UMO to configuration profile bindings", "operationId": "replaceConfigRoutes", "x-astrbot-scope": "config", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfigRoutesReplaceRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/config-routes/{umo}": { "put": { "tags": [ "Bot Config Routes" ], "summary": "Bind a UMO to a configuration profile", "operationId": "upsertConfigRoute", "x-astrbot-scope": "config", "parameters": [ { "$ref": "#/components/parameters/Umo" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfigRouteUpsertRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Bot Config Routes" ], "summary": "Remove a UMO configuration profile binding", "operationId": "deleteConfigRoute", "x-astrbot-scope": "config", "parameters": [ { "$ref": "#/components/parameters/Umo" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/bot-types": { "get": { "tags": [ "Bots" ], "summary": "List configurable bot types and their schemas", "operationId": "listBotTypes", "x-astrbot-scope": "bot", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/bot-types/{bot_type}/registration": { "post": { "tags": [ "Bots" ], "summary": "Run a bot type registration flow action", "operationId": "registerBotType", "x-astrbot-scope": "bot", "parameters": [ { "name": "bot_type", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BotRegistrationRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/bots": { "get": { "tags": [ "Bots" ], "summary": "List created bots and their configurations", "operationId": "listBots", "x-astrbot-scope": "bot", "parameters": [ { "name": "enabled", "in": "query", "schema": { "type": "boolean" } }, { "name": "type", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Bots" ], "summary": "Create a bot from configuration", "operationId": "createBot", "x-astrbot-scope": "bot", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BotConfigRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/bots/stats": { "get": { "tags": [ "Bots" ], "summary": "List runtime status for all bots", "operationId": "listBotStats", "x-astrbot-scope": "bot", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/bots/by-id": { "get": { "tags": [ "Bots" ], "summary": "Get a bot configuration by query ID", "operationId": "getBotById", "x-astrbot-scope": "bot", "parameters": [ { "name": "bot_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Bots" ], "summary": "Replace a bot configuration by body ID", "operationId": "updateBotById", "x-astrbot-scope": "bot", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "bot_id", "config" ], "properties": { "bot_id": { "type": "string" }, "config": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Bots" ], "summary": "Delete a bot by query ID", "operationId": "deleteBotById", "x-astrbot-scope": "bot", "parameters": [ { "name": "bot_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/bots/enabled": { "patch": { "tags": [ "Bots" ], "summary": "Enable or disable a bot by body ID", "operationId": "setBotEnabledById", "x-astrbot-scope": "bot", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "bot_id", "enabled" ], "properties": { "bot_id": { "type": "string" }, "enabled": { "type": "boolean" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/bots/test": { "post": { "tags": [ "Bots" ], "summary": "Test a bot registration or connection by body ID", "operationId": "testBotById", "x-astrbot-scope": "bot", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "bot_id" ], "properties": { "bot_id": { "type": "string" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/bots/{bot_id}": { "get": { "tags": [ "Bots" ], "summary": "Get a bot configuration", "operationId": "getBot", "x-astrbot-scope": "bot", "parameters": [ { "$ref": "#/components/parameters/BotId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Bots" ], "summary": "Replace a bot configuration", "operationId": "updateBot", "x-astrbot-scope": "bot", "parameters": [ { "$ref": "#/components/parameters/BotId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BotConfigRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Bots" ], "summary": "Delete a bot", "operationId": "deleteBot", "x-astrbot-scope": "bot", "parameters": [ { "$ref": "#/components/parameters/BotId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/bots/{bot_id}/enabled": { "patch": { "tags": [ "Bots" ], "summary": "Enable or disable a bot", "operationId": "setBotEnabled", "x-astrbot-scope": "bot", "parameters": [ { "$ref": "#/components/parameters/BotId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnabledPatch" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/bots/{bot_id}/test": { "post": { "tags": [ "Bots" ], "summary": "Test a bot registration or connection", "operationId": "testBot", "x-astrbot-scope": "bot", "parameters": [ { "$ref": "#/components/parameters/BotId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/providers/schema": { "get": { "tags": [ "Providers" ], "summary": "Get the overall provider configuration schema", "operationId": "getProviderSchema", "x-astrbot-scope": "provider", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/provider-sources": { "get": { "tags": [ "Provider Sources" ], "summary": "List provider sources", "operationId": "listProviderSources", "x-astrbot-scope": "provider", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Provider Sources" ], "summary": "Create a provider source", "operationId": "createProviderSource", "x-astrbot-scope": "provider", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderSourceConfigRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/provider-sources/by-id": { "get": { "tags": [ "Provider Sources" ], "summary": "Get a provider source by query ID", "operationId": "getProviderSourceById", "x-astrbot-scope": "provider", "parameters": [ { "name": "source_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Provider Sources" ], "summary": "Update a provider source by body ID", "operationId": "upsertProviderSourceById", "x-astrbot-scope": "provider", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "source_id", "config" ], "properties": { "source_id": { "type": "string" }, "config": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Provider Sources" ], "summary": "Delete a provider source by query ID", "operationId": "deleteProviderSourceById", "x-astrbot-scope": "provider", "parameters": [ { "name": "source_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/provider-sources/models": { "get": { "tags": [ "Provider Sources" ], "summary": "List models available from a provider source by query ID", "operationId": "listProviderSourceModelsById", "x-astrbot-scope": "provider", "parameters": [ { "name": "source_id", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "capability", "in": "query", "schema": { "$ref": "#/components/schemas/ProviderCapability" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/provider-sources/providers": { "get": { "tags": [ "Providers" ], "summary": "List providers under a provider source by query ID", "operationId": "listProvidersBySourceId", "x-astrbot-scope": "provider", "parameters": [ { "name": "source_id", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "capability", "in": "query", "schema": { "$ref": "#/components/schemas/ProviderCapability" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Providers" ], "summary": "Create a provider under a provider source by body ID", "operationId": "createProviderInSourceById", "x-astrbot-scope": "provider", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "source_id", "config" ], "properties": { "source_id": { "type": "string" }, "config": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/provider-sources/{source_id}": { "get": { "tags": [ "Provider Sources" ], "summary": "Get a provider source", "operationId": "getProviderSource", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/SourceId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Provider Sources" ], "summary": "Update a provider source or create it if missing", "operationId": "upsertProviderSource", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/SourceId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderSourceConfigRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Provider Sources" ], "summary": "Delete a provider source and providers that reference it", "operationId": "deleteProviderSource", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/SourceId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/provider-sources/{source_id}/models": { "get": { "tags": [ "Provider Sources" ], "summary": "List models available from a provider source", "operationId": "listProviderSourceModels", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/SourceId" }, { "name": "capability", "in": "query", "schema": { "$ref": "#/components/schemas/ProviderCapability" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/provider-sources/{source_id}/providers": { "get": { "tags": [ "Providers" ], "summary": "List providers under a provider source", "operationId": "listProvidersBySource", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/SourceId" }, { "name": "capability", "in": "query", "schema": { "$ref": "#/components/schemas/ProviderCapability" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Providers" ], "summary": "Create a provider under a provider source", "operationId": "createProviderInSource", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/SourceId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderConfigRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/providers": { "get": { "tags": [ "Providers" ], "summary": "List providers by capability or source", "operationId": "listProviders", "x-astrbot-scope": "provider", "parameters": [ { "name": "capability", "in": "query", "schema": { "$ref": "#/components/schemas/ProviderCapability" } }, { "name": "source_id", "in": "query", "schema": { "type": "string" } }, { "name": "enabled", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Providers" ], "summary": "Create a standalone provider", "operationId": "createProvider", "x-astrbot-scope": "provider", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderConfigRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/providers/by-id": { "get": { "tags": [ "Providers" ], "summary": "Get a provider configuration by query ID", "operationId": "getProviderById", "x-astrbot-scope": "provider", "parameters": [ { "name": "provider_id", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "merged", "in": "query", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Providers" ], "summary": "Replace a provider configuration by body ID", "operationId": "updateProviderById", "x-astrbot-scope": "provider", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "provider_id", "config" ], "properties": { "provider_id": { "type": "string" }, "config": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Providers" ], "summary": "Delete a provider by query ID", "operationId": "deleteProviderById", "x-astrbot-scope": "provider", "parameters": [ { "name": "provider_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/providers/enabled": { "patch": { "tags": [ "Providers" ], "summary": "Enable or disable a provider by body ID", "operationId": "setProviderEnabledById", "x-astrbot-scope": "provider", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "provider_id", "enabled" ], "properties": { "provider_id": { "type": "string" }, "enabled": { "type": "boolean" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/providers/test": { "post": { "tags": [ "Providers" ], "summary": "Test a provider by body ID", "operationId": "testProviderById", "x-astrbot-scope": "provider", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "provider_id" ], "properties": { "provider_id": { "type": "string" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/providers/embedding-dimension": { "post": { "tags": [ "Providers" ], "summary": "Probe embedding dimension for a provider by body ID", "operationId": "getProviderEmbeddingDimensionById", "x-astrbot-scope": "provider", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "provider_id" ], "properties": { "provider_id": { "type": "string" }, "provider_config": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/providers/{provider_id}": { "get": { "tags": [ "Providers" ], "summary": "Get a provider configuration", "operationId": "getProvider", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/ProviderId" }, { "name": "merged", "in": "query", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Providers" ], "summary": "Replace a provider configuration", "operationId": "updateProvider", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/ProviderId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderConfigRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Providers" ], "summary": "Delete a provider", "operationId": "deleteProvider", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/ProviderId" } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicConfig" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/providers/{provider_id}/enabled": { "patch": { "tags": [ "Providers" ], "summary": "Enable or disable a provider", "operationId": "setProviderEnabled", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/ProviderId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnabledPatch" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/providers/{provider_id}/test": { "post": { "tags": [ "Providers" ], "summary": "Test a provider", "operationId": "testProvider", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/ProviderId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/providers/{provider_id}/embedding-dimension": { "post": { "tags": [ "Providers" ], "summary": "Probe embedding dimension for a provider", "operationId": "getProviderEmbeddingDimension", "x-astrbot-scope": "provider", "parameters": [ { "$ref": "#/components/parameters/ProviderId" } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicConfig" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat": { "post": { "tags": [ "Chat" ], "summary": "Send a webchat message", "operationId": "sendChatMessage", "x-astrbot-scope": "chat", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChatRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/ws": { "get": { "tags": [ "Chat" ], "summary": "Open a streaming chat WebSocket", "operationId": "openChatWebSocket", "x-websocket": true, "x-astrbot-scope": "chat", "parameters": [ { "name": "api_key", "in": "query", "schema": { "type": "string" } }, { "name": "key", "in": "query", "schema": { "type": "string" } } ], "responses": { "101": { "description": "WebSocket upgrade accepted" } } } }, "/api/v1/live-chat/ws": { "get": { "tags": [ "Chat" ], "summary": "Open the live voice chat WebSocket", "operationId": "openLiveChatWebSocket", "x-websocket": true, "x-astrbot-scope": "chat", "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "101": { "description": "WebSocket upgrade accepted" } } } }, "/api/v1/unified-chat/ws": { "get": { "tags": [ "Chat" ], "summary": "Open the unified live/chat WebSocket", "operationId": "openUnifiedChatWebSocket", "x-websocket": true, "x-astrbot-scope": "chat", "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "101": { "description": "WebSocket upgrade accepted" } } } }, "/api/v1/chat/sessions": { "get": { "tags": [ "Chat" ], "summary": "List webchat sessions", "operationId": "listChatSessions", "x-astrbot-scope": "chat", "parameters": [ { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PageSize" }, { "name": "username", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/sessions/new": { "get": { "tags": [ "Chat" ], "summary": "Create a webchat session", "operationId": "createChatSession", "x-astrbot-scope": "chat", "parameters": [ { "name": "platform_id", "in": "query", "schema": { "type": "string", "default": "webchat" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/sessions/batch-delete": { "post": { "tags": [ "Chat" ], "summary": "Delete multiple webchat sessions", "operationId": "batchDeleteChatSessions", "x-astrbot-scope": "chat", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChatSessionBatchDeleteRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/sessions/{session_id}": { "get": { "tags": [ "Chat" ], "summary": "Get a webchat session and its messages", "operationId": "getChatSession", "x-astrbot-scope": "chat", "parameters": [ { "$ref": "#/components/parameters/SessionId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "patch": { "tags": [ "Chat" ], "summary": "Update a webchat session", "operationId": "updateChatSession", "x-astrbot-scope": "chat", "parameters": [ { "$ref": "#/components/parameters/SessionId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChatSessionPatchRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Chat" ], "summary": "Delete a webchat session", "operationId": "deleteChatSession", "x-astrbot-scope": "chat", "parameters": [ { "$ref": "#/components/parameters/SessionId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/sessions/{session_id}/stop": { "post": { "tags": [ "Chat" ], "summary": "Stop active webchat work for a session", "operationId": "stopChatSession", "x-astrbot-scope": "chat", "parameters": [ { "$ref": "#/components/parameters/SessionId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/sessions/{session_id}/messages/{message_id}": { "patch": { "tags": [ "Chat" ], "summary": "Update the latest user message in a webchat session", "operationId": "updateChatMessage", "x-astrbot-scope": "chat", "parameters": [ { "$ref": "#/components/parameters/SessionId" }, { "name": "message_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChatMessagePatchRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/sessions/{session_id}/messages/{message_id}/regenerate": { "post": { "tags": [ "Chat" ], "summary": "Regenerate a bot message in a webchat session", "operationId": "regenerateChatMessage", "x-astrbot-scope": "chat", "parameters": [ { "$ref": "#/components/parameters/SessionId" }, { "name": "message_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChatMessageRegenerateRequest" } } } }, "responses": { "200": { "description": "Server-sent chat stream or an error envelope" } } } }, "/api/v1/chat/configs": { "get": { "tags": [ "Chat" ], "summary": "List chat-selectable configuration profiles", "operationId": "listChatConfigs", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/threads": { "post": { "tags": [ "Chat" ], "summary": "Create or reuse a side thread from a webchat message", "operationId": "createChatThread", "x-astrbot-scope": "chat", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChatThreadCreateRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/threads/{thread_id}": { "get": { "tags": [ "Chat" ], "summary": "Get a webchat side thread", "operationId": "getChatThread", "x-astrbot-scope": "chat", "parameters": [ { "name": "thread_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Chat" ], "summary": "Delete a webchat side thread", "operationId": "deleteChatThread", "x-astrbot-scope": "chat", "parameters": [ { "name": "thread_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/threads/{thread_id}/messages": { "post": { "tags": [ "Chat" ], "summary": "Send a message inside a webchat side thread", "operationId": "sendChatThreadMessage", "x-astrbot-scope": "chat", "parameters": [ { "name": "thread_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChatThreadMessageRequest" } } } }, "responses": { "200": { "description": "Server-sent chat stream or an error envelope" } } } }, "/api/v1/chat/projects": { "get": { "tags": [ "Chat" ], "summary": "List ChatUI projects", "operationId": "listChatProjects", "x-astrbot-scope": "chat", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Chat" ], "summary": "Create a ChatUI project", "operationId": "createChatProject", "x-astrbot-scope": "chat", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChatProjectRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/projects/{project_id}": { "get": { "tags": [ "Chat" ], "summary": "Get a ChatUI project", "operationId": "getChatProject", "x-astrbot-scope": "chat", "parameters": [ { "name": "project_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "patch": { "tags": [ "Chat" ], "summary": "Update a ChatUI project", "operationId": "updateChatProject", "x-astrbot-scope": "chat", "parameters": [ { "name": "project_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChatProjectRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Chat" ], "summary": "Delete a ChatUI project", "operationId": "deleteChatProject", "x-astrbot-scope": "chat", "parameters": [ { "name": "project_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/projects/{project_id}/sessions": { "get": { "tags": [ "Chat" ], "summary": "List sessions in a ChatUI project", "operationId": "listChatProjectSessions", "x-astrbot-scope": "chat", "parameters": [ { "name": "project_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/projects/{project_id}/sessions/{session_id}": { "post": { "tags": [ "Chat" ], "summary": "Add a session to a ChatUI project", "operationId": "addChatProjectSession", "x-astrbot-scope": "chat", "parameters": [ { "name": "project_id", "in": "path", "required": true, "schema": { "type": "string" } }, { "$ref": "#/components/parameters/SessionId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/chat/projects/sessions/{session_id}": { "delete": { "tags": [ "Chat" ], "summary": "Remove a session from its ChatUI project", "operationId": "removeChatProjectSession", "x-astrbot-scope": "chat", "parameters": [ { "$ref": "#/components/parameters/SessionId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/im/messages": { "post": { "tags": [ "IM" ], "summary": "Send a message to a UMO", "operationId": "sendImMessage", "x-astrbot-scope": "im", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImMessageRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/im/bots": { "get": { "tags": [ "IM" ], "summary": "List active IM bot IDs", "operationId": "listImBots", "x-astrbot-scope": "im", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/files": { "post": { "tags": [ "Files" ], "summary": "Upload a file", "operationId": "uploadFile", "x-astrbot-scope": "file", "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/FileUploadRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/files/content": { "get": { "tags": [ "Files" ], "summary": "Get an uploaded file by stored filename", "operationId": "getFileByName", "x-astrbot-scope": "file", "parameters": [ { "name": "filename", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "File bytes or an error envelope", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } } } } }, "/api/v1/files/tokens/{file_token}": { "get": { "tags": [ "Files" ], "summary": "Get a tokenized public file", "operationId": "getTokenFile", "x-astrbot-scope": "file", "parameters": [ { "name": "file_token", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Tokenized file bytes or an error envelope", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } } } } }, "/api/v1/files/{attachment_id}": { "get": { "tags": [ "Files" ], "summary": "Get attachment metadata", "operationId": "getAttachment", "x-astrbot-scope": "file", "parameters": [ { "$ref": "#/components/parameters/AttachmentId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Files" ], "summary": "Delete an attachment", "operationId": "deleteAttachment", "x-astrbot-scope": "file", "parameters": [ { "$ref": "#/components/parameters/AttachmentId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/files/{attachment_id}/content": { "get": { "tags": [ "Files" ], "summary": "Download attachment content", "operationId": "downloadAttachment", "x-astrbot-scope": "file", "parameters": [ { "$ref": "#/components/parameters/AttachmentId" } ], "responses": { "200": { "description": "File content", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } } } } }, "/api/v1/plugins": { "get": { "tags": [ "Plugins" ], "summary": "List installed plugins", "operationId": "listPlugins", "x-astrbot-scope": "plugin", "parameters": [ { "name": "include_reserved", "in": "query", "schema": { "type": "boolean", "default": true } }, { "name": "enabled", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/by-id": { "get": { "tags": [ "Plugins" ], "summary": "Get plugin details by query ID", "operationId": "getPluginById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Plugins" ], "summary": "Uninstall a plugin by query ID", "operationId": "uninstallPluginById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "delete_config": { "type": "boolean" }, "delete_data": { "type": "boolean" } }, "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/config": { "get": { "tags": [ "Plugins" ], "summary": "Get plugin configuration by query ID", "operationId": "getPluginConfigById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Plugins" ], "summary": "Save plugin configuration by body ID", "operationId": "updatePluginConfigById", "x-astrbot-scope": "plugin", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "plugin_id", "config" ], "properties": { "plugin_id": { "type": "string" }, "config": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/config/schema": { "get": { "tags": [ "Plugins" ], "summary": "Get plugin configuration schema by query ID", "operationId": "getPluginConfigSchemaById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/config-files": { "get": { "tags": [ "Plugins" ], "summary": "List uploaded files for a plugin file configuration item by query ID", "operationId": "listPluginConfigFilesById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "config_key", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Plugins" ], "summary": "Upload files for a plugin file configuration item by query ID", "operationId": "uploadPluginConfigFilesById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "config_key", "in": "query", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Plugins" ], "summary": "Delete a plugin file configuration upload by query ID", "operationId": "deletePluginConfigFileById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PluginConfigFileDeleteRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/readme": { "get": { "tags": [ "Plugins" ], "summary": "Get plugin README content by query ID", "operationId": "getPluginReadmeById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Text" } } } }, "/api/v1/plugins/changelog": { "get": { "tags": [ "Plugins" ], "summary": "Get plugin CHANGELOG content by query ID", "operationId": "getPluginChangelogById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Text" } } } }, "/api/v1/plugins/reload": { "post": { "tags": [ "Plugins" ], "summary": "Reload a plugin by body ID", "operationId": "reloadPluginById", "x-astrbot-scope": "plugin", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "plugin_id" ], "properties": { "plugin_id": { "type": "string" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/enabled": { "patch": { "tags": [ "Plugins" ], "summary": "Enable or disable a plugin by body ID", "operationId": "setPluginEnabledById", "x-astrbot-scope": "plugin", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "plugin_id", "enabled" ], "properties": { "plugin_id": { "type": "string" }, "enabled": { "type": "boolean" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/pages": { "get": { "tags": [ "Plugin Pages" ], "summary": "List plugin pages by query ID", "operationId": "listPluginPagesById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/page": { "get": { "tags": [ "Plugin Pages" ], "summary": "Get plugin page entry HTML by query ID", "operationId": "getPluginPageById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "page_name", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Html" } } } }, "/api/v1/plugins/page/assets": { "get": { "tags": [ "Plugin Pages" ], "summary": "Get a plugin page asset by query ID", "operationId": "getPluginPageAssetById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_id", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "page_name", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "asset_path", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Plugin asset content" } } } }, "/api/v1/plugins/{plugin_id}": { "get": { "tags": [ "Plugins" ], "summary": "Get plugin details", "operationId": "getPlugin", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "delete_config": { "type": "boolean" }, "delete_data": { "type": "boolean" } }, "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Plugins" ], "summary": "Uninstall a plugin", "operationId": "uninstallPlugin", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "delete_config": { "type": "boolean" }, "delete_data": { "type": "boolean" } }, "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/{plugin_id}/config": { "get": { "tags": [ "Plugins" ], "summary": "Get plugin configuration", "operationId": "getPluginConfig", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Plugins" ], "summary": "Save plugin configuration", "operationId": "updatePluginConfig", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicConfig" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/{plugin_id}/config/schema": { "get": { "tags": [ "Plugins" ], "summary": "Get plugin configuration schema", "operationId": "getPluginConfigSchema", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/{plugin_id}/config-files/{config_key}": { "get": { "tags": [ "Plugins" ], "summary": "List uploaded files for a plugin file configuration item", "operationId": "listPluginConfigFiles", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" }, { "name": "config_key", "in": "path", "required": true, "description": "URL-encoded configuration key path.", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Plugins" ], "summary": "Upload files for a plugin file configuration item", "operationId": "uploadPluginConfigFiles", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" }, { "name": "config_key", "in": "path", "required": true, "description": "URL-encoded configuration key path.", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/{plugin_id}/config-files": { "delete": { "tags": [ "Plugins" ], "summary": "Delete a plugin file configuration upload", "operationId": "deletePluginConfigFile", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PluginConfigFileDeleteRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/{plugin_id}/readme": { "get": { "tags": [ "Plugins" ], "summary": "Get plugin README content", "operationId": "getPluginReadme", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "responses": { "200": { "$ref": "#/components/responses/Text" } } } }, "/api/v1/plugins/{plugin_id}/changelog": { "get": { "tags": [ "Plugins" ], "summary": "Get plugin CHANGELOG content", "operationId": "getPluginChangelog", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "responses": { "200": { "$ref": "#/components/responses/Text" } } } }, "/api/v1/plugins/{plugin_id}/reload": { "post": { "tags": [ "Plugins" ], "summary": "Reload a plugin", "operationId": "reloadPlugin", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/{plugin_id}/enabled": { "patch": { "tags": [ "Plugins" ], "summary": "Enable or disable a plugin", "operationId": "setPluginEnabled", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnabledPatch" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/{plugin_id}/update": { "post": { "tags": [ "Plugins" ], "summary": "Update or reinstall a plugin", "operationId": "updatePlugin", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PluginUpdateRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/update": { "post": { "tags": [ "Plugins" ], "summary": "Update multiple plugins", "operationId": "updatePlugins", "x-astrbot-scope": "plugin", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PluginBatchUpdateRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/version-support/check": { "post": { "tags": [ "Plugins" ], "summary": "Check whether a plugin version constraint is supported", "operationId": "checkPluginVersionSupport", "x-astrbot-scope": "plugin", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PluginVersionSupportRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/failed": { "get": { "tags": [ "Plugins" ], "summary": "List failed plugins and errors", "operationId": "listFailedPlugins", "x-astrbot-scope": "plugin", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/failed/{plugin_id}": { "delete": { "tags": [ "Plugins" ], "summary": "Uninstall a failed plugin", "operationId": "uninstallFailedPlugin", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "delete_config": { "type": "boolean" }, "delete_data": { "type": "boolean" } }, "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/failed/{plugin_id}/reload": { "post": { "tags": [ "Plugins" ], "summary": "Reload a failed plugin", "operationId": "reloadFailedPlugin", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/install/github": { "post": { "tags": [ "Plugins" ], "summary": "Install a plugin from GitHub", "operationId": "installPluginFromGithub", "x-astrbot-scope": "plugin", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PluginGithubInstallRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/install/url": { "post": { "tags": [ "Plugins" ], "summary": "Install a plugin from a downloadable ZIP URL", "operationId": "installPluginFromUrl", "x-astrbot-scope": "plugin", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PluginUrlInstallRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/install/upload": { "post": { "tags": [ "Plugins" ], "summary": "Install a plugin from an uploaded ZIP file", "operationId": "installPluginFromUpload", "x-astrbot-scope": "plugin", "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PluginUploadInstallRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/market": { "get": { "tags": [ "Plugins" ], "summary": "List plugin marketplace entries", "operationId": "listPluginMarket", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PageSize" }, { "name": "category", "in": "query", "schema": { "type": "string" } }, { "name": "sort", "in": "query", "schema": { "type": "string", "enum": [ "recommended", "downloads", "updated", "name" ] } }, { "name": "keyword", "in": "query", "schema": { "type": "string" } }, { "name": "force_refresh", "in": "query", "schema": { "type": "boolean" } }, { "name": "custom_registry", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/market/categories": { "get": { "tags": [ "Plugins" ], "summary": "List plugin marketplace categories", "operationId": "listPluginMarketCategories", "x-astrbot-scope": "plugin", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugin-sources": { "get": { "tags": [ "Plugin Sources" ], "summary": "List plugin sources", "operationId": "listPluginSources", "x-astrbot-scope": "plugin", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Plugin Sources" ], "summary": "Add a plugin source", "operationId": "createPluginSource", "x-astrbot-scope": "plugin", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PluginSourceRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Plugin Sources" ], "summary": "Replace plugin sources", "operationId": "replacePluginSources", "x-astrbot-scope": "plugin", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "sources" ], "properties": { "sources": { "type": "array", "items": { "$ref": "#/components/schemas/PluginSourceRequest" } } } } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugin-sources/{source_id}": { "delete": { "tags": [ "Plugin Sources" ], "summary": "Delete a plugin source", "operationId": "deletePluginSource", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/SourceId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugin-sources/by-id": { "delete": { "tags": [ "Plugin Sources" ], "summary": "Delete a plugin source by query ID", "operationId": "deletePluginSourceById", "x-astrbot-scope": "plugin", "parameters": [ { "name": "source_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/{plugin_id}/pages": { "get": { "tags": [ "Plugin Pages" ], "summary": "List plugin pages", "operationId": "listPluginPages", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/plugins/{plugin_id}/pages/{page_name}": { "get": { "tags": [ "Plugin Pages" ], "summary": "Get plugin page entry HTML", "operationId": "getPluginPage", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" }, { "name": "page_name", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Html" } } } }, "/api/v1/plugins/{plugin_id}/pages/{page_name}/assets/{asset_path}": { "get": { "tags": [ "Plugin Pages" ], "summary": "Get a plugin page asset", "operationId": "getPluginPageAsset", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/PluginId" }, { "name": "page_name", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "asset_path", "in": "path", "required": true, "description": "URL-encoded relative asset path.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Plugin asset content" } } } }, "/api/v1/plugins/page-bridge-sdk.js": { "get": { "tags": [ "Plugin Pages" ], "summary": "Get the plugin page bridge SDK", "operationId": "getPluginPageBridgeSdk", "x-astrbot-scope": "plugin", "responses": { "200": { "description": "JavaScript bridge SDK", "content": { "application/javascript": { "schema": { "type": "string" } } } } } } }, "/api/v1/plugins/extensions/{plugin_path}": { "get": { "tags": [ "Plugin Pages" ], "summary": "Proxy a plugin extension GET route", "operationId": "getPluginExtensionRoute", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_path", "in": "path", "required": true, "description": "Plugin extension path after /api/plug/. It may contain slash-separated segments.", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Plugin Pages" ], "summary": "Proxy a plugin extension POST route", "operationId": "postPluginExtensionRoute", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_path", "in": "path", "required": true, "description": "Plugin extension path after /api/plug/. It may contain slash-separated segments.", "schema": { "type": "string" } } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicConfig" } }, "multipart/form-data": { "schema": { "type": "object", "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Plugin Pages" ], "summary": "Proxy a plugin extension PUT route", "operationId": "putPluginExtensionRoute", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_path", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicConfig" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "patch": { "tags": [ "Plugin Pages" ], "summary": "Proxy a plugin extension PATCH route", "operationId": "patchPluginExtensionRoute", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_path", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicConfig" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Plugin Pages" ], "summary": "Proxy a plugin extension DELETE route", "operationId": "deletePluginExtensionRoute", "x-astrbot-scope": "plugin", "parameters": [ { "name": "plugin_path", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/commands": { "get": { "tags": [ "Commands" ], "summary": "List plugin commands", "operationId": "listCommands", "x-astrbot-scope": "plugin", "parameters": [ { "name": "config_id", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/commands/{command_id}": { "patch": { "tags": [ "Commands" ], "summary": "Update command enabled state, alias, or permission group", "operationId": "updateCommand", "x-astrbot-scope": "plugin", "parameters": [ { "$ref": "#/components/parameters/CommandId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CommandPatchRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/commands/conflicts": { "get": { "tags": [ "Commands" ], "summary": "List command conflicts", "operationId": "listCommandConflicts", "x-astrbot-scope": "plugin", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/tools": { "get": { "tags": [ "Tools" ], "summary": "List LLM tools", "operationId": "listTools", "x-astrbot-scope": "tool", "parameters": [ { "name": "origin", "in": "query", "schema": { "type": "string", "enum": [ "builtin", "plugin", "mcp" ] } }, { "name": "enabled", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/tools/{tool_id}/enabled": { "patch": { "tags": [ "Tools" ], "summary": "Enable or disable an LLM tool", "operationId": "setToolEnabled", "x-astrbot-scope": "tool", "parameters": [ { "$ref": "#/components/parameters/ToolId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnabledPatch" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/tools/{tool_id}/permission": { "patch": { "tags": [ "Tools" ], "summary": "Update an LLM tool permission", "operationId": "setToolPermission", "x-astrbot-scope": "tool", "parameters": [ { "$ref": "#/components/parameters/ToolId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolPermissionPatch" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/mcp/servers": { "get": { "tags": [ "MCP" ], "summary": "List MCP servers", "operationId": "listMcpServers", "x-astrbot-scope": "mcp", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "MCP" ], "summary": "Add an MCP server", "operationId": "createMcpServer", "x-astrbot-scope": "mcp", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/McpServerConfig" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/mcp/servers/by-name": { "put": { "tags": [ "MCP" ], "summary": "Update an MCP server by body name", "operationId": "updateMcpServerByName", "x-astrbot-scope": "mcp", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "server_name" ], "properties": { "server_name": { "type": "string" }, "config": { "$ref": "#/components/schemas/DynamicConfig" }, "enabled": { "type": "boolean" } }, "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "MCP" ], "summary": "Delete an MCP server by query name", "operationId": "deleteMcpServerByName", "x-astrbot-scope": "mcp", "parameters": [ { "name": "server_name", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/mcp/servers/enabled": { "patch": { "tags": [ "MCP" ], "summary": "Enable or disable an MCP server by body name", "operationId": "setMcpServerEnabledByName", "x-astrbot-scope": "mcp", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "server_name", "enabled" ], "properties": { "server_name": { "type": "string" }, "enabled": { "type": "boolean" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/mcp/servers/test": { "post": { "tags": [ "MCP" ], "summary": "Test an MCP server connection by body name", "operationId": "testMcpServerByName", "x-astrbot-scope": "mcp", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "server_name" ], "properties": { "server_name": { "type": "string" }, "mcp_server_config": { "$ref": "#/components/schemas/DynamicConfig" }, "config": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/mcp/servers/{server_name}": { "put": { "tags": [ "MCP" ], "summary": "Update an MCP server", "operationId": "updateMcpServer", "x-astrbot-scope": "mcp", "parameters": [ { "$ref": "#/components/parameters/ServerName" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/McpServerConfig" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "MCP" ], "summary": "Delete an MCP server", "operationId": "deleteMcpServer", "x-astrbot-scope": "mcp", "parameters": [ { "$ref": "#/components/parameters/ServerName" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/mcp/servers/{server_name}/enabled": { "patch": { "tags": [ "MCP" ], "summary": "Enable or disable an MCP server", "operationId": "setMcpServerEnabled", "x-astrbot-scope": "mcp", "parameters": [ { "$ref": "#/components/parameters/ServerName" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnabledPatch" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/mcp/servers/{server_name}/test": { "post": { "tags": [ "MCP" ], "summary": "Test an MCP server connection", "operationId": "testMcpServer", "x-astrbot-scope": "mcp", "parameters": [ { "$ref": "#/components/parameters/ServerName" } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "mcp_server_config": { "type": "object", "additionalProperties": true } }, "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/mcp/providers/modelscope/sync": { "post": { "tags": [ "MCP" ], "summary": "Sync MCP servers from ModelScope", "operationId": "syncModelScopeMcpServers", "x-astrbot-scope": "mcp", "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ModelScopeSyncRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills": { "get": { "tags": [ "Skills" ], "summary": "List skills", "operationId": "listSkills", "x-astrbot-scope": "skill", "parameters": [ { "name": "enabled", "in": "query", "schema": { "type": "boolean" } }, { "name": "source", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Skills" ], "summary": "Upload or import a skill archive", "operationId": "uploadSkill", "x-astrbot-scope": "skill", "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/SkillUploadRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/batch": { "post": { "tags": [ "Skills" ], "summary": "Upload multiple skill archives", "operationId": "uploadSkillsBatch", "x-astrbot-scope": "skill", "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "required": [ "files" ], "properties": { "files": { "type": "array", "items": { "type": "string", "format": "binary" } } } } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/by-name": { "patch": { "tags": [ "Skills" ], "summary": "Update skill metadata or enabled state by body name", "operationId": "updateSkillByName", "x-astrbot-scope": "skill", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "skill_name" ], "properties": { "skill_name": { "type": "string" }, "enabled": { "type": "boolean" }, "active": { "type": "boolean" } }, "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Skills" ], "summary": "Delete a skill by query name", "operationId": "deleteSkillByName", "x-astrbot-scope": "skill", "parameters": [ { "name": "skill_name", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/archive": { "get": { "tags": [ "Skills" ], "summary": "Download a skill archive by query name", "operationId": "downloadSkillByName", "x-astrbot-scope": "skill", "parameters": [ { "name": "skill_name", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Skill archive", "content": { "application/zip": { "schema": { "type": "string", "format": "binary" } } } } } } }, "/api/v1/skills/files": { "get": { "tags": [ "Skills" ], "summary": "List files in a skill by query name", "operationId": "listSkillFilesByName", "x-astrbot-scope": "skill", "parameters": [ { "name": "skill_name", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "path", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/file": { "get": { "tags": [ "Skills" ], "summary": "Get skill file content by query name and path", "operationId": "getSkillFileByName", "x-astrbot-scope": "skill", "parameters": [ { "name": "skill_name", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "path", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Text" } } }, "put": { "tags": [ "Skills" ], "summary": "Update skill file content by body name and path", "operationId": "updateSkillFileByName", "x-astrbot-scope": "skill", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "skill_name", "path", "content" ], "properties": { "skill_name": { "type": "string" }, "path": { "type": "string" }, "content": { "type": "string" } }, "additionalProperties": false } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/{skill_name}": { "patch": { "tags": [ "Skills" ], "summary": "Update skill metadata or enabled state", "operationId": "updateSkill", "x-astrbot-scope": "skill", "parameters": [ { "$ref": "#/components/parameters/SkillName" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SkillPatchRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Skills" ], "summary": "Delete a skill", "operationId": "deleteSkill", "x-astrbot-scope": "skill", "parameters": [ { "$ref": "#/components/parameters/SkillName" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/{skill_name}/archive": { "get": { "tags": [ "Skills" ], "summary": "Download a skill archive", "operationId": "downloadSkill", "x-astrbot-scope": "skill", "parameters": [ { "$ref": "#/components/parameters/SkillName" } ], "responses": { "200": { "description": "Skill archive", "content": { "application/zip": { "schema": { "type": "string", "format": "binary" } } } } } } }, "/api/v1/skills/{skill_name}/files": { "get": { "tags": [ "Skills" ], "summary": "List files in a skill", "operationId": "listSkillFiles", "x-astrbot-scope": "skill", "parameters": [ { "$ref": "#/components/parameters/SkillName" }, { "name": "path", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/{skill_name}/files/{file_path}": { "get": { "tags": [ "Skills" ], "summary": "Get skill file content", "operationId": "getSkillFile", "x-astrbot-scope": "skill", "parameters": [ { "$ref": "#/components/parameters/SkillName" }, { "$ref": "#/components/parameters/FilePath" } ], "responses": { "200": { "$ref": "#/components/responses/Text" } } }, "put": { "tags": [ "Skills" ], "summary": "Update skill file content", "operationId": "updateSkillFile", "x-astrbot-scope": "skill", "parameters": [ { "$ref": "#/components/parameters/SkillName" }, { "$ref": "#/components/parameters/FilePath" } ], "requestBody": { "required": true, "content": { "text/plain": { "schema": { "type": "string" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/neo/candidates": { "get": { "tags": [ "Skills" ], "summary": "List Shipyard Neo skill candidates", "operationId": "listNeoSkillCandidates", "x-astrbot-scope": "skill", "parameters": [ { "name": "skill_key", "in": "query", "schema": { "type": "string" } }, { "name": "status", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/neo/releases": { "get": { "tags": [ "Skills" ], "summary": "List Shipyard Neo skill releases", "operationId": "listNeoSkillReleases", "x-astrbot-scope": "skill", "parameters": [ { "name": "skill_key", "in": "query", "schema": { "type": "string" } }, { "name": "stage", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/neo/payload": { "get": { "tags": [ "Skills" ], "summary": "Get a Shipyard Neo skill payload", "operationId": "getNeoSkillPayload", "x-astrbot-scope": "skill", "parameters": [ { "name": "payload_ref", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/neo/evaluate": { "post": { "tags": [ "Skills" ], "summary": "Evaluate a Shipyard Neo skill candidate", "operationId": "evaluateNeoSkillCandidate", "x-astrbot-scope": "skill", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NeoCandidateActionRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/neo/promote": { "post": { "tags": [ "Skills" ], "summary": "Promote a Shipyard Neo skill candidate", "operationId": "promoteNeoSkillCandidate", "x-astrbot-scope": "skill", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NeoCandidateActionRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/neo/rollback": { "post": { "tags": [ "Skills" ], "summary": "Roll back a Shipyard Neo skill release", "operationId": "rollbackNeoSkillRelease", "x-astrbot-scope": "skill", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NeoReleaseActionRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/neo/sync": { "post": { "tags": [ "Skills" ], "summary": "Sync a Shipyard Neo skill release", "operationId": "syncNeoSkillRelease", "x-astrbot-scope": "skill", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NeoReleaseActionRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/neo/candidates/delete": { "post": { "tags": [ "Skills" ], "summary": "Delete a Shipyard Neo skill candidate", "operationId": "deleteNeoSkillCandidate", "x-astrbot-scope": "skill", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NeoCandidateActionRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/skills/neo/releases/delete": { "post": { "tags": [ "Skills" ], "summary": "Delete a Shipyard Neo skill release", "operationId": "deleteNeoSkillRelease", "x-astrbot-scope": "skill", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NeoReleaseActionRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/knowledge-bases": { "get": { "tags": [ "Knowledge Base" ], "summary": "List knowledge bases", "operationId": "listKnowledgeBases", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PageSize" }, { "name": "refresh_stats", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Knowledge Base" ], "summary": "Create a knowledge base", "operationId": "createKnowledgeBase", "x-astrbot-scope": "kb", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KnowledgeBaseRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/knowledge-bases/{kb_id}": { "get": { "tags": [ "Knowledge Base" ], "summary": "Get a knowledge base", "operationId": "getKnowledgeBase", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Knowledge Base" ], "summary": "Update a knowledge base", "operationId": "updateKnowledgeBase", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KnowledgeBaseRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Knowledge Base" ], "summary": "Delete a knowledge base", "operationId": "deleteKnowledgeBase", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/knowledge-bases/{kb_id}/stats": { "get": { "tags": [ "Knowledge Base" ], "summary": "Get knowledge base stats", "operationId": "getKnowledgeBaseStats", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/knowledge-bases/{kb_id}/documents": { "get": { "tags": [ "Knowledge Base" ], "summary": "List knowledge base documents", "operationId": "listKnowledgeDocuments", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PageSize" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Knowledge Base" ], "summary": "Upload a document to a knowledge base", "operationId": "uploadKnowledgeDocument", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/KnowledgeDocumentUploadRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/knowledge-bases/{kb_id}/documents/import": { "post": { "tags": [ "Knowledge Base" ], "summary": "Import documents already available on the server", "operationId": "importKnowledgeDocuments", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KnowledgeDocumentImportRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/knowledge-bases/{kb_id}/documents/import-url": { "post": { "tags": [ "Knowledge Base" ], "summary": "Import a document from URL", "operationId": "importKnowledgeDocumentFromUrl", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KnowledgeDocumentUrlImportRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/knowledge-bases/{kb_id}/documents/{document_id}": { "get": { "tags": [ "Knowledge Base" ], "summary": "Get a knowledge base document", "operationId": "getKnowledgeDocument", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" }, { "$ref": "#/components/parameters/DocumentId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Knowledge Base" ], "summary": "Delete a knowledge base document", "operationId": "deleteKnowledgeDocument", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" }, { "$ref": "#/components/parameters/DocumentId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/knowledge-bases/{kb_id}/chunks": { "get": { "tags": [ "Knowledge Base" ], "summary": "List document chunks", "operationId": "listKnowledgeChunks", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" }, { "name": "document_id", "in": "query", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PageSize" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/knowledge-bases/{kb_id}/chunks/{chunk_id}": { "delete": { "tags": [ "Knowledge Base" ], "summary": "Delete a document chunk", "operationId": "deleteKnowledgeChunk", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" }, { "$ref": "#/components/parameters/ChunkId" }, { "name": "document_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/knowledge-bases/{kb_id}/retrieve": { "post": { "tags": [ "Knowledge Base" ], "summary": "Retrieve knowledge base chunks", "operationId": "retrieveKnowledgeBase", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/KbId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KnowledgeRetrieveRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/knowledge-bases/tasks/{task_id}": { "get": { "tags": [ "Knowledge Base" ], "summary": "Get knowledge base import task progress", "operationId": "getKnowledgeTask", "x-astrbot-scope": "kb", "parameters": [ { "$ref": "#/components/parameters/TaskId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/personas/tree": { "get": { "tags": [ "Personas" ], "summary": "Get persona folder tree", "operationId": "getPersonaTree", "x-astrbot-scope": "persona", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/personas": { "get": { "tags": [ "Personas" ], "summary": "List personas", "operationId": "listPersonas", "x-astrbot-scope": "persona", "parameters": [ { "name": "folder_id", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Personas" ], "summary": "Create a persona", "operationId": "createPersona", "x-astrbot-scope": "persona", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PersonaRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/personas/by-id": { "get": { "tags": [ "Personas" ], "summary": "Get a persona by query ID", "operationId": "getPersonaById", "x-astrbot-scope": "persona", "parameters": [ { "name": "persona_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Personas" ], "summary": "Update a persona by body ID", "operationId": "updatePersonaById", "x-astrbot-scope": "persona", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "persona_id" ], "properties": { "persona_id": { "type": "string" } }, "additionalProperties": true } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Personas" ], "summary": "Delete a persona by query ID", "operationId": "deletePersonaById", "x-astrbot-scope": "persona", "parameters": [ { "name": "persona_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/personas/{persona_id}": { "get": { "tags": [ "Personas" ], "summary": "Get a persona", "operationId": "getPersona", "x-astrbot-scope": "persona", "parameters": [ { "$ref": "#/components/parameters/PersonaId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Personas" ], "summary": "Update a persona", "operationId": "updatePersona", "x-astrbot-scope": "persona", "parameters": [ { "$ref": "#/components/parameters/PersonaId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PersonaRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Personas" ], "summary": "Delete a persona", "operationId": "deletePersona", "x-astrbot-scope": "persona", "parameters": [ { "$ref": "#/components/parameters/PersonaId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/persona-folders": { "get": { "tags": [ "Personas" ], "summary": "List persona folders", "operationId": "listPersonaFolders", "x-astrbot-scope": "persona", "parameters": [ { "name": "parent_id", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Personas" ], "summary": "Create a persona folder", "operationId": "createPersonaFolder", "x-astrbot-scope": "persona", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PersonaFolderRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/persona-folders/{folder_id}": { "put": { "tags": [ "Personas" ], "summary": "Update a persona folder", "operationId": "updatePersonaFolder", "x-astrbot-scope": "persona", "parameters": [ { "$ref": "#/components/parameters/FolderId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PersonaFolderRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Personas" ], "summary": "Delete a persona folder", "operationId": "deletePersonaFolder", "x-astrbot-scope": "persona", "parameters": [ { "$ref": "#/components/parameters/FolderId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/personas/move": { "post": { "tags": [ "Personas" ], "summary": "Move a persona or folder", "operationId": "movePersonaItem", "x-astrbot-scope": "persona", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PersonaMoveRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/personas/reorder": { "post": { "tags": [ "Personas" ], "summary": "Reorder personas or folders", "operationId": "reorderPersonaItems", "x-astrbot-scope": "persona", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReorderRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/sessions": { "get": { "tags": [ "Sessions" ], "summary": "List active UMOs and session status", "operationId": "listSessions", "x-astrbot-scope": "data", "parameters": [ { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PageSize" }, { "name": "search", "in": "query", "schema": { "type": "string" } }, { "name": "platform", "in": "query", "schema": { "type": "string" } }, { "name": "message_type", "in": "query", "schema": { "type": "string", "enum": [ "all", "group", "private" ] } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/sessions/active-umos": { "get": { "tags": [ "Sessions" ], "summary": "List active and known UMOs", "operationId": "listActiveUmos", "x-astrbot-scope": "data", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/sessions/rules": { "get": { "tags": [ "Sessions" ], "summary": "List session rules", "operationId": "listSessionRules", "x-astrbot-scope": "data", "parameters": [ { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PageSize" }, { "name": "search", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Sessions" ], "summary": "Update or create a session rule", "operationId": "upsertSessionRule", "x-astrbot-scope": "data", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionRuleRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/sessions/rules/delete": { "post": { "tags": [ "Sessions" ], "summary": "Delete one or more session rules", "operationId": "deleteSessionRules", "x-astrbot-scope": "data", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UmoListRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/sessions/provider": { "patch": { "tags": [ "Sessions" ], "summary": "Batch update session provider selection", "operationId": "batchUpdateSessionProvider", "x-astrbot-scope": "data", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchSessionProviderRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/sessions/service": { "patch": { "tags": [ "Sessions" ], "summary": "Batch update session service settings", "operationId": "batchUpdateSessionService", "x-astrbot-scope": "data", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchSessionServiceRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/session-groups": { "get": { "tags": [ "Sessions" ], "summary": "List session groups", "operationId": "listSessionGroups", "x-astrbot-scope": "data", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Sessions" ], "summary": "Create a session group", "operationId": "createSessionGroup", "x-astrbot-scope": "data", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionGroupRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/session-groups/{group_id}": { "put": { "tags": [ "Sessions" ], "summary": "Update a session group", "operationId": "updateSessionGroup", "x-astrbot-scope": "data", "parameters": [ { "$ref": "#/components/parameters/GroupId" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionGroupRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Sessions" ], "summary": "Delete a session group", "operationId": "deleteSessionGroup", "x-astrbot-scope": "data", "parameters": [ { "$ref": "#/components/parameters/GroupId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/conversations": { "get": { "tags": [ "Conversations" ], "summary": "List conversation history data", "operationId": "listConversations", "x-astrbot-scope": "data", "parameters": [ { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PageSize" }, { "name": "platform_id", "in": "query", "schema": { "type": "string" } }, { "name": "user_id", "in": "query", "schema": { "type": "string" } }, { "name": "search", "in": "query", "schema": { "type": "string" } }, { "name": "platforms", "in": "query", "schema": { "type": "string" }, "description": "Comma-separated platform IDs." }, { "name": "message_types", "in": "query", "schema": { "type": "string" }, "description": "Comma-separated message types." }, { "name": "exclude_ids", "in": "query", "schema": { "type": "string" }, "description": "Comma-separated user IDs to exclude." }, { "name": "exclude_platforms", "in": "query", "schema": { "type": "string" }, "description": "Comma-separated platforms to exclude." } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/conversations/batch-delete": { "post": { "tags": [ "Conversations" ], "summary": "Delete multiple conversations", "operationId": "batchDeleteConversations", "x-astrbot-scope": "data", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConversationBatchDeleteRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/conversations/{conversation_id}": { "get": { "tags": [ "Conversations" ], "summary": "Get conversation details and messages", "operationId": "getConversation", "x-astrbot-scope": "data", "parameters": [ { "$ref": "#/components/parameters/ConversationId" }, { "name": "user_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "patch": { "tags": [ "Conversations" ], "summary": "Update conversation metadata", "operationId": "updateConversation", "x-astrbot-scope": "data", "parameters": [ { "$ref": "#/components/parameters/ConversationId" }, { "name": "user_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConversationPatchRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Conversations" ], "summary": "Delete a conversation", "operationId": "deleteConversation", "x-astrbot-scope": "data", "parameters": [ { "$ref": "#/components/parameters/ConversationId" }, { "name": "user_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/conversations/{conversation_id}/messages": { "put": { "tags": [ "Conversations" ], "summary": "Replace conversation message history", "operationId": "replaceConversationMessages", "x-astrbot-scope": "data", "parameters": [ { "$ref": "#/components/parameters/ConversationId" }, { "name": "user_id", "in": "query", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConversationMessagesReplaceRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/conversations/export": { "post": { "tags": [ "Conversations" ], "summary": "Export conversations", "operationId": "exportConversations", "x-astrbot-scope": "data", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConversationExportRequest" } } } }, "responses": { "200": { "description": "Exported conversation data" } } } }, "/api/v1/stats": { "get": { "tags": [ "Stats" ], "summary": "Get runtime statistics", "operationId": "getStats", "x-astrbot-scope": "system", "parameters": [ { "name": "offset_sec", "in": "query", "schema": { "type": "integer", "default": 86400 } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/stats/provider-tokens": { "get": { "tags": [ "Stats" ], "summary": "Get provider token usage statistics", "operationId": "getProviderTokenStats", "x-astrbot-scope": "system", "parameters": [ { "name": "days", "in": "query", "schema": { "type": "integer", "minimum": 1 } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/stats/version": { "get": { "tags": [ "Stats" ], "summary": "Get AstrBot version", "operationId": "getVersion", "x-astrbot-scope": "system", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/stats/first-notice": { "get": { "tags": [ "Stats" ], "summary": "Get first-run dashboard notice content", "operationId": "getFirstNotice", "x-astrbot-scope": "system", "parameters": [ { "name": "locale", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/stats/ghproxy/test": { "post": { "tags": [ "Stats" ], "summary": "Test a GitHub proxy endpoint", "operationId": "testGhproxyConnection", "x-astrbot-scope": "system", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GhproxyTestRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/changelogs": { "get": { "tags": [ "Stats" ], "summary": "List available changelog versions", "operationId": "listChangelogVersions", "x-astrbot-scope": "system", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/changelogs/{version}": { "get": { "tags": [ "Stats" ], "summary": "Get changelog content for a version", "operationId": "getChangelog", "x-astrbot-scope": "system", "parameters": [ { "name": "version", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" }, "404": { "$ref": "#/components/responses/Error" } } } }, "/api/v1/stats/start-time": { "get": { "tags": [ "Stats" ], "summary": "Get runtime start time", "operationId": "getStartTime", "security": [], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/stats/storage": { "get": { "tags": [ "Stats" ], "summary": "Get storage status", "operationId": "getStorageStatus", "x-astrbot-scope": "system", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/stats/storage/cleanup": { "post": { "tags": [ "Stats" ], "summary": "Clean storage", "operationId": "cleanupStorage", "x-astrbot-scope": "system", "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicConfig" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/system/restart": { "post": { "tags": [ "Stats" ], "summary": "Restart AstrBot core", "operationId": "restartCore", "x-astrbot-scope": "system", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/backups": { "get": { "tags": [ "Backups" ], "summary": "List backups", "operationId": "listBackups", "x-astrbot-scope": "system", "parameters": [ { "$ref": "#/components/parameters/Page" }, { "$ref": "#/components/parameters/PageSize" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Backups" ], "summary": "Export a backup", "operationId": "createBackup", "x-astrbot-scope": "system", "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BackupExportRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/backups/upload": { "post": { "tags": [ "Backups" ], "summary": "Upload a backup file", "operationId": "uploadBackup", "x-astrbot-scope": "system", "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BackupUploadRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/backups/upload/init": { "post": { "tags": [ "Backups" ], "summary": "Initialize chunked backup upload", "operationId": "initBackupUpload", "x-astrbot-scope": "system", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BackupUploadInitRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/backups/upload/chunk": { "post": { "tags": [ "Backups" ], "summary": "Upload a backup chunk", "operationId": "uploadBackupChunk", "x-astrbot-scope": "system", "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BackupChunkUploadRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/backups/upload/complete": { "post": { "tags": [ "Backups" ], "summary": "Complete chunked backup upload", "operationId": "completeBackupUpload", "x-astrbot-scope": "system", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BackupUploadSessionRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/backups/upload/abort": { "post": { "tags": [ "Backups" ], "summary": "Abort chunked backup upload", "operationId": "abortBackupUpload", "x-astrbot-scope": "system", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BackupUploadSessionRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/backups/tasks/{task_id}": { "get": { "tags": [ "Backups" ], "summary": "Get backup task progress", "operationId": "getBackupProgress", "x-astrbot-scope": "system", "parameters": [ { "name": "task_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/backups/{filename}": { "get": { "tags": [ "Backups" ], "summary": "Download a backup", "operationId": "downloadBackup", "x-astrbot-scope": "system", "parameters": [ { "$ref": "#/components/parameters/Filename" } ], "responses": { "200": { "description": "Backup archive" } } }, "patch": { "tags": [ "Backups" ], "summary": "Rename a backup", "operationId": "renameBackup", "x-astrbot-scope": "system", "parameters": [ { "$ref": "#/components/parameters/Filename" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BackupRenameRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Backups" ], "summary": "Delete a backup", "operationId": "deleteBackup", "x-astrbot-scope": "system", "parameters": [ { "$ref": "#/components/parameters/Filename" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/backups/{filename}/check": { "post": { "tags": [ "Backups" ], "summary": "Check a backup before import", "operationId": "checkBackup", "x-astrbot-scope": "system", "parameters": [ { "$ref": "#/components/parameters/Filename" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/backups/{filename}/import": { "post": { "tags": [ "Backups" ], "summary": "Import a backup", "operationId": "importBackup", "x-astrbot-scope": "system", "parameters": [ { "$ref": "#/components/parameters/Filename" } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BackupImportRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/updates/check": { "get": { "tags": [ "Updates" ], "summary": "Check for updates", "operationId": "checkUpdate", "x-astrbot-scope": "system", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/updates/releases": { "get": { "tags": [ "Updates" ], "summary": "List releases", "operationId": "listReleases", "x-astrbot-scope": "system", "parameters": [ { "name": "type", "in": "query", "schema": { "type": "string", "enum": [ "core", "dashboard" ] } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/updates/core": { "post": { "tags": [ "Updates" ], "summary": "Update AstrBot core", "operationId": "updateCore", "x-astrbot-scope": "system", "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/updates/dashboard": { "post": { "tags": [ "Updates" ], "summary": "Update dashboard assets", "operationId": "updateDashboard", "x-astrbot-scope": "system", "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/updates/progress/{task_id}": { "get": { "tags": [ "Updates" ], "summary": "Get update progress", "operationId": "getUpdateProgress", "x-astrbot-scope": "system", "parameters": [ { "$ref": "#/components/parameters/TaskId" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/pip/install": { "post": { "tags": [ "Updates" ], "summary": "Install a Python package", "operationId": "installPipPackage", "x-astrbot-scope": "system", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipInstallRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/migrations": { "post": { "tags": [ "Updates" ], "summary": "Run pending migrations", "operationId": "runMigrations", "x-astrbot-scope": "system", "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MigrationRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/cron/jobs": { "get": { "tags": [ "Cron" ], "summary": "List cron jobs", "operationId": "listCronJobs", "x-astrbot-scope": "system", "parameters": [ { "name": "type", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "Cron" ], "summary": "Create a cron job", "operationId": "createCronJob", "x-astrbot-scope": "system", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CronJobRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/cron/jobs/{job_id}": { "patch": { "tags": [ "Cron" ], "summary": "Update a cron job", "operationId": "updateCronJob", "x-astrbot-scope": "system", "parameters": [ { "name": "job_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CronJobPatchRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "Cron" ], "summary": "Delete a cron job", "operationId": "deleteCronJob", "x-astrbot-scope": "system", "parameters": [ { "name": "job_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/cron/jobs/{job_id}/run": { "post": { "tags": [ "Cron" ], "summary": "Run a cron job immediately", "operationId": "runCronJob", "x-astrbot-scope": "system", "parameters": [ { "name": "job_id", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/logs/live": { "get": { "tags": [ "Logs" ], "summary": "Stream live logs", "operationId": "streamLiveLogs", "x-astrbot-scope": "system", "responses": { "200": { "description": "Server-sent log stream", "content": { "text/event-stream": { "schema": { "type": "string" } } } } } } }, "/api/v1/logs/history": { "get": { "tags": [ "Logs" ], "summary": "Get log history", "operationId": "getLogHistory", "x-astrbot-scope": "system", "responses": { "200": { "$ref": "#/components/responses/Text" } } } }, "/api/v1/trace/settings": { "get": { "tags": [ "Logs" ], "summary": "Get trace settings", "operationId": "getTraceSettings", "x-astrbot-scope": "system", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Logs" ], "summary": "Update trace settings", "operationId": "updateTraceSettings", "x-astrbot-scope": "system", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TraceSettingsRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/t2i/templates": { "get": { "tags": [ "T2I" ], "summary": "List text-to-image templates", "operationId": "listT2iTemplates", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "post": { "tags": [ "T2I" ], "summary": "Create a text-to-image template", "operationId": "createT2iTemplate", "x-astrbot-scope": "config", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/T2iTemplateRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/t2i/templates/active": { "get": { "tags": [ "T2I" ], "summary": "Get active text-to-image template", "operationId": "getActiveT2iTemplate", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "T2I" ], "summary": "Set active text-to-image template", "operationId": "setActiveT2iTemplate", "x-astrbot-scope": "config", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NameRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/t2i/templates/default/reset": { "post": { "tags": [ "T2I" ], "summary": "Reset the default text-to-image template", "operationId": "resetDefaultT2iTemplate", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/t2i/templates/{name}": { "get": { "tags": [ "T2I" ], "summary": "Get a text-to-image template", "operationId": "getT2iTemplate", "x-astrbot-scope": "config", "parameters": [ { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "T2I" ], "summary": "Update a text-to-image template", "operationId": "updateT2iTemplate", "x-astrbot-scope": "config", "parameters": [ { "$ref": "#/components/parameters/Name" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/T2iTemplateContentRequest" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "delete": { "tags": [ "T2I" ], "summary": "Delete a text-to-image template", "operationId": "deleteT2iTemplate", "x-astrbot-scope": "config", "parameters": [ { "$ref": "#/components/parameters/Name" } ], "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/subagents/config": { "get": { "tags": [ "Subagents" ], "summary": "Get subagent orchestrator configuration", "operationId": "getSubagentConfig", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } }, "put": { "tags": [ "Subagents" ], "summary": "Update subagent orchestrator configuration", "operationId": "updateSubagentConfig", "x-astrbot-scope": "config", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicConfig" } } } }, "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/subagents/available-tools": { "get": { "tags": [ "Subagents" ], "summary": "List tools available to subagents", "operationId": "listSubagentAvailableTools", "x-astrbot-scope": "config", "responses": { "200": { "$ref": "#/components/responses/Ok" } } } }, "/api/v1/webhooks/platforms/{webhook_uuid}": { "get": { "tags": [ "Webhooks" ], "summary": "Verify a platform webhook", "operationId": "verifyPlatformWebhook", "security": [], "parameters": [ { "$ref": "#/components/parameters/WebhookUuid" } ], "responses": { "200": { "description": "Webhook verification response" } } }, "post": { "tags": [ "Webhooks" ], "summary": "Receive a platform webhook", "operationId": "receivePlatformWebhook", "security": [], "parameters": [ { "$ref": "#/components/parameters/WebhookUuid" } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DynamicConfig" } }, "application/octet-stream": { "schema": { "type": "string", "format": "binary" } } } }, "responses": { "200": { "description": "Webhook accepted" } } } } }, "components": { "securitySchemes": { "ApiKeyAuth": { "type": "apiKey", "in": "header", "name": "X-API-Key" }, "BearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } }, "responses": { "Ok": { "description": "Standard AstrBot success response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessEnvelope" } } } }, "Error": { "description": "Standard AstrBot error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorEnvelope" } } } }, "Text": { "description": "Text response", "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "$ref": "#/components/schemas/SuccessEnvelope" } } } }, "Html": { "description": "HTML response", "content": { "text/html": { "schema": { "type": "string" } } } } }, "parameters": { "AttachmentId": { "name": "attachment_id", "in": "path", "required": true, "schema": { "type": "string" } }, "BotId": { "name": "bot_id", "in": "path", "required": true, "schema": { "type": "string" } }, "ChunkId": { "name": "chunk_id", "in": "path", "required": true, "schema": { "type": "string" } }, "CommandId": { "name": "command_id", "in": "path", "required": true, "description": "URL-encoded command handler full name.", "schema": { "type": "string" } }, "ConfigId": { "name": "config_id", "in": "path", "required": true, "schema": { "type": "string" } }, "ConversationId": { "name": "conversation_id", "in": "path", "required": true, "schema": { "type": "string" } }, "DocumentId": { "name": "document_id", "in": "path", "required": true, "schema": { "type": "string" } }, "FilePath": { "name": "file_path", "in": "path", "required": true, "description": "URL-encoded relative file path.", "schema": { "type": "string" } }, "Filename": { "name": "filename", "in": "path", "required": true, "schema": { "type": "string" } }, "FolderId": { "name": "folder_id", "in": "path", "required": true, "schema": { "type": "string" } }, "GroupId": { "name": "group_id", "in": "path", "required": true, "schema": { "type": "string" } }, "KbId": { "name": "kb_id", "in": "path", "required": true, "schema": { "type": "string" } }, "KeyId": { "name": "key_id", "in": "path", "required": true, "schema": { "type": "string" } }, "Name": { "name": "name", "in": "path", "required": true, "schema": { "type": "string" } }, "Page": { "name": "page", "in": "query", "schema": { "type": "integer", "minimum": 1, "default": 1 } }, "PageSize": { "name": "page_size", "in": "query", "schema": { "type": "integer", "minimum": 1, "maximum": 200, "default": 20 } }, "PersonaId": { "name": "persona_id", "in": "path", "required": true, "schema": { "type": "string" } }, "PluginId": { "name": "plugin_id", "in": "path", "required": true, "schema": { "type": "string" } }, "ProviderId": { "name": "provider_id", "in": "path", "required": true, "schema": { "type": "string" } }, "SessionId": { "name": "session_id", "in": "path", "required": true, "schema": { "type": "string" } }, "ServerName": { "name": "server_name", "in": "path", "required": true, "schema": { "type": "string" } }, "SkillName": { "name": "skill_name", "in": "path", "required": true, "schema": { "type": "string" } }, "SourceId": { "name": "source_id", "in": "path", "required": true, "schema": { "type": "string" } }, "TaskId": { "name": "task_id", "in": "path", "required": true, "schema": { "type": "string" } }, "ToolId": { "name": "tool_id", "in": "path", "required": true, "schema": { "type": "string" } }, "Umo": { "name": "umo", "in": "path", "required": true, "description": "URL-encoded unified message origin.", "schema": { "type": "string" } }, "WebhookUuid": { "name": "webhook_uuid", "in": "path", "required": true, "schema": { "type": "string" } } }, "schemas": { "SuccessEnvelope": { "type": "object", "required": [ "status", "data" ], "properties": { "status": { "type": "string", "const": "ok" }, "message": { "type": "string" }, "data": {} }, "additionalProperties": false }, "ErrorEnvelope": { "type": "object", "required": [ "status", "message" ], "properties": { "status": { "type": "string", "const": "error" }, "message": { "type": "string" }, "data": {} }, "additionalProperties": false }, "DynamicConfig": { "type": "object", "additionalProperties": true }, "JsonSchema": { "type": "object", "additionalProperties": true }, "ProviderCapability": { "type": "string", "enum": [ "chat", "agent", "stt", "tts", "embedding", "rerank" ] }, "LoginRequest": { "type": "object", "required": [ "username", "password" ], "properties": { "username": { "type": "string" }, "password": { "type": "string" }, "code": { "type": "string", "description": "TOTP code or recovery code when two-factor authentication is required." }, "trust_device_flag": { "type": "boolean" } }, "additionalProperties": false }, "SetupAuthRequest": { "type": "object", "required": [ "username", "password", "confirm_password" ], "properties": { "username": { "type": "string" }, "password": { "type": "string" }, "confirm_password": { "type": "string" } }, "additionalProperties": false }, "UpdateAccountRequest": { "type": "object", "required": [ "password" ], "properties": { "password": { "type": "string" }, "new_password": { "type": "string" }, "confirm_password": { "type": "string" }, "new_username": { "type": "string" } }, "additionalProperties": false }, "TotpSetupRequest": { "type": "object", "properties": { "code": { "type": "string" }, "secret": { "type": "string" } }, "additionalProperties": false }, "CreateApiKeyRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" }, "scopes": { "type": "array", "items": { "type": "string", "enum": [ "bot", "provider", "persona", "im", "config", "chat", "plugin", "mcp", "skill" ] }, "example": [ "bot", "provider", "persona", "im", "config", "chat", "plugin", "mcp", "skill" ] }, "expires_at": { "type": "string", "format": "date-time" }, "expires_in_days": { "type": "integer", "minimum": 1 } }, "additionalProperties": false }, "CreateConfigProfileRequest": { "type": "object", "properties": { "name": { "type": "string" }, "config": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": false }, "RenameRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" } }, "additionalProperties": false }, "NameRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" } }, "additionalProperties": false }, "ConfigRoutesReplaceRequest": { "type": "object", "required": [ "routing" ], "properties": { "routing": { "type": "object", "additionalProperties": { "type": "string" } } }, "additionalProperties": false }, "ConfigRouteUpsertRequest": { "type": "object", "required": [ "config_id" ], "properties": { "config_id": { "type": "string", "description": "Use \"default\" to remove a custom route and fall back." } }, "additionalProperties": false }, "BotConfigRequest": { "type": "object", "required": [ "type", "config" ], "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string", "description": "Platform adapter type, such as aiocqhttp, telegram, lark." }, "enabled": { "type": "boolean", "default": true }, "config": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": false }, "BotRegistrationRequest": { "type": "object", "required": [ "action" ], "properties": { "action": { "type": "string", "enum": [ "start", "poll" ] }, "platform_config": { "$ref": "#/components/schemas/DynamicConfig" }, "registration_code": { "type": "string" }, "device_code": { "type": "string" }, "qrcode": { "type": "string" } }, "additionalProperties": true }, "EnabledPatch": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } }, "additionalProperties": false }, "ToolPermissionPatch": { "type": "object", "required": [ "permission" ], "properties": { "permission": { "type": "string", "enum": [ "admin", "member" ] } }, "additionalProperties": false }, "ProviderSourceConfigRequest": { "type": "object", "required": [ "config" ], "properties": { "id": { "type": "string" }, "config": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": false }, "ProviderConfigRequest": { "type": "object", "required": [ "config" ], "properties": { "id": { "type": "string" }, "provider_source_id": { "type": "string" }, "capability": { "$ref": "#/components/schemas/ProviderCapability" }, "enabled": { "type": "boolean", "default": true }, "config": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": false }, "ChatRequest": { "type": "object", "required": [ "message" ], "properties": { "username": { "type": "string" }, "session_id": { "type": "string" }, "conversation_id": { "type": "string", "description": "Deprecated alias for session_id." }, "message": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "$ref": "#/components/schemas/MessagePart" } } ] }, "config_id": { "type": "string" }, "config_name": { "type": "string" }, "selected_provider": { "type": "string" }, "selected_model": { "type": "string" }, "enable_streaming": { "type": "boolean", "default": true }, "_skip_user_history": { "type": "boolean", "description": "Internal WebUI flag for edit/regenerate flows." }, "_llm_checkpoint_id": { "type": "string", "description": "Internal WebUI checkpoint override." }, "_platform_history_id": { "type": "string", "description": "Internal WebUI platform history override." }, "_thread_selected_text": { "type": "string", "description": "Internal WebUI side-thread context." } }, "additionalProperties": false }, "ChatSessionBatchDeleteRequest": { "type": "object", "required": [ "session_ids" ], "properties": { "session_ids": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "ChatSessionPatchRequest": { "type": "object", "properties": { "display_name": { "type": "string" } }, "additionalProperties": false }, "ChatMessagePatchRequest": { "type": "object", "required": [ "content" ], "properties": { "content": { "type": "object", "additionalProperties": true } }, "additionalProperties": false }, "ChatMessageRegenerateRequest": { "type": "object", "properties": { "selected_provider": { "type": "string" }, "selected_model": { "type": "string" }, "enable_streaming": { "type": "boolean", "default": true } }, "additionalProperties": false }, "ChatThreadCreateRequest": { "type": "object", "required": [ "session_id", "parent_message_id", "selected_text" ], "properties": { "session_id": { "type": "string" }, "parent_message_id": { "oneOf": [ { "type": "string" }, { "type": "integer" } ] }, "selected_text": { "type": "string" } }, "additionalProperties": false }, "ChatThreadMessageRequest": { "type": "object", "required": [ "message" ], "properties": { "message": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "$ref": "#/components/schemas/MessagePart" } } ] }, "selected_provider": { "type": "string" }, "selected_model": { "type": "string" }, "enable_streaming": { "type": "boolean", "default": true } }, "additionalProperties": false }, "ChatProjectRequest": { "type": "object", "properties": { "title": { "type": "string" }, "emoji": { "type": "string" }, "description": { "type": "string" } }, "additionalProperties": false }, "MessagePart": { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "text", "plain", "image", "file", "audio", "record", "video", "reply" ] }, "text": { "type": "string" }, "attachment_id": { "type": "string" }, "url": { "type": "string" }, "filename": { "type": "string" }, "mime_type": { "type": "string" } }, "additionalProperties": true }, "ImMessageRequest": { "type": "object", "required": [ "umo", "message" ], "properties": { "umo": { "type": "string" }, "message": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "$ref": "#/components/schemas/MessagePart" } } ] } }, "additionalProperties": false }, "FileUploadRequest": { "type": "object", "required": [ "file" ], "properties": { "file": { "type": "string", "format": "binary" } } }, "PluginUpdateRequest": { "type": "object", "properties": { "reinstall": { "type": "boolean", "default": false } }, "additionalProperties": false }, "PluginBatchUpdateRequest": { "type": "object", "properties": { "plugin_id": { "type": "string", "description": "When set, update this single plugin instead of a batch." }, "plugin_ids": { "type": "array", "items": { "type": "string" } }, "reinstall": { "type": "boolean", "default": false }, "update_all": { "type": "boolean", "default": false } }, "additionalProperties": true }, "PluginVersionSupportRequest": { "type": "object", "properties": { "astrbot_version": { "type": "string" } }, "additionalProperties": false }, "PluginGithubInstallRequest": { "type": "object", "required": [ "repository" ], "properties": { "repository": { "type": "string", "description": "GitHub URL or owner/repository slug." }, "ref": { "type": "string" }, "download_url": { "type": "string", "description": "Optional downloadable ZIP URL to use instead of GitHub archive resolution." }, "proxy": { "type": "string" }, "ignore_version_check": { "type": "boolean" } }, "additionalProperties": false }, "PluginUrlInstallRequest": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "format": "uri" }, "download_url": { "type": "string", "format": "uri", "description": "Optional downloadable ZIP URL when url is the plugin source page or repository." }, "proxy": { "type": "string" }, "ignore_version_check": { "type": "boolean" } }, "additionalProperties": false }, "PluginUploadInstallRequest": { "type": "object", "required": [ "file" ], "properties": { "file": { "type": "string", "format": "binary" } } }, "PluginConfigFileDeleteRequest": { "type": "object", "required": [ "path" ], "properties": { "path": { "type": "string" } }, "additionalProperties": false }, "PluginSourceRequest": { "type": "object", "required": [ "url" ], "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "url": { "type": "string", "format": "uri" } }, "additionalProperties": false }, "CommandPatchRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "alias": { "type": "string" }, "aliases": { "type": "array", "items": { "type": "string" } }, "permission_group": { "type": "string" } }, "additionalProperties": false }, "McpServerConfig": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" }, "enabled": { "type": "boolean", "default": true }, "transport": { "type": "string", "enum": [ "stdio", "sse", "streamable_http" ] }, "command": { "type": "string" }, "args": { "type": "array", "items": { "type": "string" } }, "url": { "type": "string" }, "headers": { "type": "object", "additionalProperties": { "type": "string" } }, "timeout": { "type": "integer" } }, "additionalProperties": true }, "ModelScopeSyncRequest": { "type": "object", "properties": { "access_token": { "type": "string" } }, "additionalProperties": false }, "SkillUploadRequest": { "type": "object", "required": [ "file" ], "properties": { "file": { "type": "string", "format": "binary" }, "overwrite": { "type": "boolean", "default": false } } }, "SkillPatchRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "display_name": { "type": "string" }, "description": { "type": "string" } }, "additionalProperties": false }, "NeoCandidateActionRequest": { "type": "object", "required": [ "candidate_id" ], "properties": { "candidate_id": { "type": "string" } }, "additionalProperties": true }, "NeoReleaseActionRequest": { "type": "object", "required": [ "release_id" ], "properties": { "release_id": { "type": "string" } }, "additionalProperties": true }, "KnowledgeBaseRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "embedding_provider_id": { "type": "string" }, "rerank_provider_id": { "type": "string" }, "chunking": { "$ref": "#/components/schemas/DynamicConfig" }, "metadata": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": false }, "KnowledgeDocumentUploadRequest": { "type": "object", "required": [ "file" ], "properties": { "file": { "type": "string", "format": "binary" }, "parser": { "type": "string" } } }, "KnowledgeDocumentImportRequest": { "type": "object", "required": [ "paths" ], "properties": { "paths": { "type": "array", "items": { "type": "string" } }, "parser": { "type": "string" } }, "additionalProperties": false }, "KnowledgeDocumentUrlImportRequest": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "format": "uri" }, "parser": { "type": "string" } }, "additionalProperties": false }, "KnowledgeRetrieveRequest": { "type": "object", "required": [ "query" ], "properties": { "query": { "type": "string" }, "top_k": { "type": "integer", "default": 5 }, "score_threshold": { "type": "number" } }, "additionalProperties": false }, "PersonaRequest": { "type": "object", "required": [ "persona_id", "system_prompt" ], "properties": { "persona_id": { "type": "string" }, "system_prompt": { "type": "string" }, "begin_dialogs": { "type": "array", "items": { "type": "string" } }, "folder_id": { "type": "string" }, "tools": { "type": "array", "items": { "type": "string" } }, "skills": { "type": "array", "items": { "type": "string" } }, "custom_error_message": { "type": "string" } }, "additionalProperties": true }, "PersonaFolderRequest": { "type": "object", "properties": { "name": { "type": "string" }, "parent_id": { "type": "string" }, "description": { "type": "string" } }, "additionalProperties": true }, "PersonaMoveRequest": { "type": "object", "required": [ "persona_id" ], "properties": { "persona_id": { "type": "string" }, "folder_id": { "type": "string" } }, "additionalProperties": true }, "ReorderRequest": { "type": "object", "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "type": "object", "required": [ "id", "type", "sort_order" ], "properties": { "id": { "type": "string" }, "type": { "type": "string", "enum": [ "persona", "folder" ] }, "sort_order": { "type": "integer" } } } } }, "additionalProperties": false }, "SessionRuleRequest": { "type": "object", "required": [ "umo", "rule_key" ], "properties": { "umo": { "type": "string" }, "rule_key": { "type": "string" }, "rule_value": { "$ref": "#/components/schemas/DynamicConfig" } }, "additionalProperties": true }, "UmoListRequest": { "type": "object", "properties": { "umo": { "type": "string" }, "umos": { "type": "array", "items": { "type": "string" } }, "scope": { "type": "string", "enum": [ "all", "group", "private", "custom_group" ] }, "group_id": { "type": "string" }, "rule_key": { "type": "string" } }, "additionalProperties": false }, "BatchSessionProviderRequest": { "allOf": [ { "$ref": "#/components/schemas/UmoListRequest" }, { "type": "object", "required": [ "provider_id", "provider_type" ], "properties": { "provider_id": { "type": "string" }, "provider_type": { "type": "string", "enum": [ "chat_completion", "speech_to_text", "text_to_speech" ] } } } ] }, "BatchSessionServiceRequest": { "allOf": [ { "$ref": "#/components/schemas/UmoListRequest" }, { "type": "object", "properties": { "session_enabled": { "type": "boolean" }, "llm_enabled": { "type": "boolean" }, "tts_enabled": { "type": "boolean" } } } ] }, "SessionGroupRequest": { "type": "object", "properties": { "name": { "type": "string" }, "umos": { "type": "array", "items": { "type": "string" } }, "add_umos": { "type": "array", "items": { "type": "string" } }, "remove_umos": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "ConversationPatchRequest": { "type": "object", "properties": { "title": { "type": "string" }, "persona_id": { "type": "string" } }, "additionalProperties": false }, "ConversationMessagesReplaceRequest": { "type": "object", "properties": { "user_id": { "type": "string" }, "messages": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "history": { "type": "array", "items": { "type": "object", "additionalProperties": true } } }, "additionalProperties": false }, "ConversationRef": { "type": "object", "required": [ "user_id", "cid" ], "properties": { "user_id": { "type": "string" }, "cid": { "type": "string" } }, "additionalProperties": false }, "ConversationBatchDeleteRequest": { "type": "object", "required": [ "conversations" ], "properties": { "conversations": { "type": "array", "items": { "$ref": "#/components/schemas/ConversationRef" } } }, "additionalProperties": false }, "ConversationExportRequest": { "type": "object", "properties": { "conversations": { "type": "array", "items": { "$ref": "#/components/schemas/ConversationRef" } }, "conversation_ids": { "type": "array", "items": { "type": "string" } }, "format": { "type": "string", "enum": [ "json", "markdown" ], "default": "json" } }, "additionalProperties": false }, "CronJobRequest": { "type": "object", "properties": { "name": { "type": "string" }, "cron_expression": { "type": "string" }, "timezone": { "type": "string" }, "session": { "type": "string" }, "note": { "type": "string" }, "description": { "type": "string" }, "persona_id": { "type": "string" }, "provider_id": { "type": "string" }, "enabled": { "type": "boolean", "default": true }, "run_once": { "type": "boolean", "default": false }, "run_at": { "type": "string", "format": "date-time" }, "payload": { "type": "object", "additionalProperties": true } }, "additionalProperties": true }, "CronJobPatchRequest": { "allOf": [ { "$ref": "#/components/schemas/CronJobRequest" } ] }, "BackupExportRequest": { "type": "object", "properties": { "include": { "type": "array", "items": { "type": "string" } }, "exclude": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "BackupUploadRequest": { "type": "object", "required": [ "file" ], "properties": { "file": { "type": "string", "format": "binary" } } }, "BackupUploadInitRequest": { "type": "object", "required": [ "filename", "total_size" ], "properties": { "filename": { "type": "string" }, "total_size": { "type": "integer", "minimum": 1 } }, "additionalProperties": false }, "BackupUploadSessionRequest": { "type": "object", "required": [ "upload_id" ], "properties": { "upload_id": { "type": "string" } }, "additionalProperties": false }, "BackupChunkUploadRequest": { "type": "object", "required": [ "upload_id", "chunk_index", "chunk" ], "properties": { "upload_id": { "type": "string" }, "chunk_index": { "type": "integer", "minimum": 0 }, "chunk": { "type": "string", "format": "binary" } } }, "BackupRenameRequest": { "type": "object", "required": [ "new_name" ], "properties": { "new_name": { "type": "string" } }, "additionalProperties": false }, "BackupImportRequest": { "type": "object", "properties": { "confirmed": { "type": "boolean", "default": true } }, "additionalProperties": false }, "UpdateRequest": { "type": "object", "properties": { "version": { "type": "string" }, "proxy": { "type": "string" }, "reboot": { "type": "boolean" }, "progress_id": { "type": "string" } }, "additionalProperties": false }, "PipInstallRequest": { "type": "object", "required": [ "package" ], "properties": { "package": { "type": "string" }, "mirror": { "type": "string" } }, "additionalProperties": false }, "MigrationRequest": { "type": "object", "properties": { "platform_id_map": { "type": "object", "additionalProperties": true } }, "additionalProperties": true }, "GhproxyTestRequest": { "type": "object", "required": [ "proxy_url" ], "properties": { "proxy_url": { "type": "string" } }, "additionalProperties": false }, "TraceSettingsRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "level": { "type": "string" } }, "additionalProperties": true }, "T2iTemplateRequest": { "type": "object", "required": [ "name", "content" ], "properties": { "name": { "type": "string" }, "content": { "type": "string" } }, "additionalProperties": true }, "T2iTemplateContentRequest": { "type": "object", "required": [ "content" ], "properties": { "content": { "type": "string" } }, "additionalProperties": true } } } }