mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-25 07:00:48 +09:00
e4aca0db13
Expose a dedicated container metrics endpoint and surface current CPU, memory, and root filesystem usage in the bot container view. This gives operators a quick health snapshot while degrading cleanly on unsupported backends.
14162 lines
474 KiB
Go
14162 lines
474 KiB
Go
// Package spec Code generated by swaggo/swag. DO NOT EDIT
|
|
package spec
|
|
|
|
import "github.com/swaggo/swag"
|
|
|
|
const docTemplate = `{
|
|
"schemes": {{ marshal .Schemes }},
|
|
"swagger": "2.0",
|
|
"info": {
|
|
"description": "{{escape .Description}}",
|
|
"title": "{{.Title}}",
|
|
"contact": {},
|
|
"version": "{{.Version}}"
|
|
},
|
|
"host": "{{.Host}}",
|
|
"basePath": "{{.BasePath}}",
|
|
"paths": {
|
|
"/auth/login": {
|
|
"post": {
|
|
"description": "Validate user credentials and issue a JWT",
|
|
"tags": [
|
|
"auth"
|
|
],
|
|
"summary": "Login",
|
|
"parameters": [
|
|
{
|
|
"description": "Login request",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.LoginRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.LoginResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/auth/refresh": {
|
|
"post": {
|
|
"security": [
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"description": "Issue a new JWT using the existing claims with updated expiration",
|
|
"tags": [
|
|
"auth"
|
|
],
|
|
"summary": "Refresh Token",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.RefreshResponse"
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots": {
|
|
"get": {
|
|
"description": "List bots accessible to current user (admin can specify owner_id)",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "List bots",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Owner user ID (admin only)",
|
|
"name": "owner_id",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/bots.ListBotsResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Create a bot user owned by current user (or admin-specified owner)",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Create bot user",
|
|
"parameters": [
|
|
{
|
|
"description": "Bot payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/bots.CreateBotRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/bots.Bot"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/acl/channel-identities": {
|
|
"get": {
|
|
"description": "Search locally observed channel identities for building ACL rules",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Search ACL channel identity candidates",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Search query",
|
|
"name": "q",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Max results",
|
|
"name": "limit",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/acl.ChannelIdentityCandidateListResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/acl/channel-identities/{channel_identity_id}/conversations": {
|
|
"get": {
|
|
"description": "List previously observed conversation candidates for a channel identity, for scoped rule building",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "List observed conversations for a channel identity",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Channel Identity ID",
|
|
"name": "channel_identity_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/acl.ObservedConversationCandidateListResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/acl/channel-types/{channel_type}/conversations": {
|
|
"get": {
|
|
"description": "List previously observed group/thread conversation candidates for a channel type under this bot",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "List observed conversations for a platform type",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Channel type (e.g. telegram, discord)",
|
|
"name": "channel_type",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/acl.ObservedConversationCandidateListResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/acl/default-effect": {
|
|
"get": {
|
|
"description": "Get the fallback effect when no rule matches",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Get bot ACL default effect",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/acl.DefaultEffectResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Set the fallback effect when no rule matches (allow or deny)",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Set bot ACL default effect",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Default effect payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/acl.DefaultEffectResponse"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/acl/rules": {
|
|
"get": {
|
|
"description": "List all ACL rules for a bot ordered by priority",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "List bot ACL rules",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/acl.ListRulesResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Create a new priority-ordered ACL rule for chat.trigger",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Create ACL rule",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Rule payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/acl.CreateRuleRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/acl.Rule"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/acl/rules/reorder": {
|
|
"put": {
|
|
"description": "Batch-update priorities for multiple ACL rules",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Reorder ACL rules",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Reorder payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/acl.ReorderRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/acl/rules/{rule_id}": {
|
|
"put": {
|
|
"description": "Update an existing ACL rule",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Update ACL rule",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Rule ID",
|
|
"name": "rule_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Rule payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/acl.UpdateRuleRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/acl.Rule"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete an ACL rule by ID",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Delete ACL rule",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Rule ID",
|
|
"name": "rule_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/compaction/logs": {
|
|
"get": {
|
|
"description": "List compaction logs for a bot",
|
|
"tags": [
|
|
"compaction"
|
|
],
|
|
"summary": "List compaction logs",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 50,
|
|
"description": "Limit",
|
|
"name": "limit",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "Offset",
|
|
"name": "offset",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/compaction.ListLogsResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete all compaction logs for a bot",
|
|
"tags": [
|
|
"compaction"
|
|
],
|
|
"summary": "Delete compaction logs",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container": {
|
|
"get": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Get container info for bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.GetContainerResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Create and start MCP container for bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Create container payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.CreateContainerRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "SSE stream of container creation events",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.CreateContainerResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Delete MCP container for bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"description": "Export /data before deletion",
|
|
"name": "preserve_data",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/data/export": {
|
|
"post": {
|
|
"produces": [
|
|
"application/gzip"
|
|
],
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Export container /data as a tar.gz archive",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "file"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/data/import": {
|
|
"post": {
|
|
"consumes": [
|
|
"multipart/form-data"
|
|
],
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Import a tar.gz archive into container /data",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "file",
|
|
"description": "tar.gz archive",
|
|
"name": "file",
|
|
"in": "formData",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/data/restore": {
|
|
"post": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Restore previously preserved data into container",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/fs": {
|
|
"get": {
|
|
"description": "Returns metadata about a file or directory at the given container path",
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Get file or directory info",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Container path",
|
|
"name": "path",
|
|
"in": "query",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.FSFileInfo"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/fs/delete": {
|
|
"post": {
|
|
"description": "Deletes a file or directory at the given container path",
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Delete a file or directory",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Delete request",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.FSDeleteRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.fsOpResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/fs/download": {
|
|
"get": {
|
|
"description": "Downloads a file from the container with appropriate Content-Type",
|
|
"produces": [
|
|
"application/octet-stream"
|
|
],
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Download a file as binary stream",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Container file path",
|
|
"name": "path",
|
|
"in": "query",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "file"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/fs/list": {
|
|
"get": {
|
|
"description": "Lists files and directories at the given container path",
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "List directory contents",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Container directory path",
|
|
"name": "path",
|
|
"in": "query",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.FSListResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/fs/mkdir": {
|
|
"post": {
|
|
"description": "Creates a directory (and parents) at the given container path",
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Create a directory",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Mkdir request",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.FSMkdirRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.fsOpResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/fs/read": {
|
|
"get": {
|
|
"description": "Reads the content of a file and returns it as a JSON string",
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Read file content as text",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Container file path",
|
|
"name": "path",
|
|
"in": "query",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.FSReadResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/fs/rename": {
|
|
"post": {
|
|
"description": "Renames or moves a file/directory from oldPath to newPath",
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Rename or move a file/directory",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Rename request",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.FSRenameRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.fsOpResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/fs/upload": {
|
|
"post": {
|
|
"description": "Uploads a binary file to the given container path",
|
|
"consumes": [
|
|
"multipart/form-data"
|
|
],
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Upload a file via multipart form",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Destination container path",
|
|
"name": "path",
|
|
"in": "formData",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "file",
|
|
"description": "File to upload",
|
|
"name": "file",
|
|
"in": "formData",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.FSUploadResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/fs/write": {
|
|
"post": {
|
|
"description": "Creates or overwrites a file with the provided text content",
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Write text content to a file",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Write request",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.FSWriteRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.fsOpResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/metrics": {
|
|
"get": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Get current container metrics for bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.GetContainerMetricsResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/skills": {
|
|
"get": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "List skills from the bot container",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.SkillsResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Upload skills into Memoh-managed directory",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Skills payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.SkillsUpsertRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.skillsOpResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Delete Memoh-managed skills",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Delete skills payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.SkillsDeleteRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.skillsOpResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/skills/actions": {
|
|
"post": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Apply an action to a discovered or managed skill source",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Skill action payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.SkillsActionRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.skillsOpResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/snapshots": {
|
|
"get": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "List snapshots",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Snapshotter name",
|
|
"name": "snapshotter",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ListSnapshotsResponse"
|
|
}
|
|
},
|
|
"501": {
|
|
"description": "Snapshots currently not supported on this backend",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Create container snapshot for bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Create snapshot payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.CreateSnapshotRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.CreateSnapshotResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"501": {
|
|
"description": "Snapshots currently not supported on this backend",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/snapshots/rollback": {
|
|
"post": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Rollback container to a previous snapshot version",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Rollback payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.RollbackRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/start": {
|
|
"post": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Start container task for bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/stop": {
|
|
"post": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Stop container task for bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/terminal": {
|
|
"get": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Check terminal availability for bot container",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.terminalInfoResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/container/terminal/ws": {
|
|
"get": {
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Interactive WebSocket terminal for bot container",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 80,
|
|
"description": "Initial terminal columns",
|
|
"name": "cols",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 24,
|
|
"description": "Initial terminal rows",
|
|
"name": "rows",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Auth token",
|
|
"name": "token",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"101": {
|
|
"description": "WebSocket upgrade"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/email-bindings": {
|
|
"get": {
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"email-bindings"
|
|
],
|
|
"summary": "List email bindings for a bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/email.BindingResponse"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"email-bindings"
|
|
],
|
|
"summary": "Bind an email provider to a bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Binding configuration",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/email.CreateBindingRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/email.BindingResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/email-bindings/{id}": {
|
|
"put": {
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"email-bindings"
|
|
],
|
|
"summary": "Update an email binding",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Binding ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Updated binding",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/email.UpdateBindingRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/email.BindingResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"email-bindings"
|
|
],
|
|
"summary": "Remove an email binding",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Binding ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/email-outbox": {
|
|
"get": {
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"email-outbox"
|
|
],
|
|
"summary": "List outbox emails for a bot (audit)",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 20,
|
|
"description": "Limit",
|
|
"name": "limit",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "Offset",
|
|
"name": "offset",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/email-outbox/{id}": {
|
|
"get": {
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"email-outbox"
|
|
],
|
|
"summary": "Get outbox email detail",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Email ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/email.OutboxItemResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/heartbeat/logs": {
|
|
"get": {
|
|
"description": "List heartbeat execution logs for a bot",
|
|
"tags": [
|
|
"heartbeat"
|
|
],
|
|
"summary": "List heartbeat logs",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 50,
|
|
"description": "Limit",
|
|
"name": "limit",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "Offset",
|
|
"name": "offset",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/heartbeat.ListLogsResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete all heartbeat execution logs for a bot",
|
|
"tags": [
|
|
"heartbeat"
|
|
],
|
|
"summary": "Delete heartbeat logs",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/local/messages": {
|
|
"post": {
|
|
"description": "Post a user message (with optional attachments) through the local channel pipeline.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"local-channel"
|
|
],
|
|
"summary": "Send a message to a local channel",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Message payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.LocalChannelMessageRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/local/stream": {
|
|
"get": {
|
|
"description": "Open a persistent SSE connection to receive real-time stream events for the given bot.",
|
|
"produces": [
|
|
"text/event-stream"
|
|
],
|
|
"tags": [
|
|
"local-channel"
|
|
],
|
|
"summary": "Subscribe to local channel events via SSE",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "SSE stream",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/local/ws": {
|
|
"get": {
|
|
"description": "Upgrade to WebSocket for bidirectional chat streaming with abort support.",
|
|
"tags": [
|
|
"local-channel"
|
|
],
|
|
"summary": "WebSocket chat endpoint",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"101": {
|
|
"description": "Switching Protocols",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp": {
|
|
"get": {
|
|
"description": "List MCP connections for a bot",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "List MCP connections",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/mcp.ListResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Create a MCP connection for a bot",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Create MCP connection",
|
|
"parameters": [
|
|
{
|
|
"description": "MCP payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/mcp.UpsertRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/github_com_memohai_memoh_internal_mcp.Connection"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp-ops/batch-delete": {
|
|
"post": {
|
|
"description": "Delete multiple MCP connections by IDs.",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Batch delete MCP connections",
|
|
"parameters": [
|
|
{
|
|
"description": "IDs to delete",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.BatchDeleteRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp-stdio": {
|
|
"post": {
|
|
"description": "Start a stdio MCP process in the bot container and expose it as MCP HTTP endpoint.",
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Create MCP stdio proxy",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Stdio MCP payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.MCPStdioRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.MCPStdioResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp-stdio/{connection_id}": {
|
|
"post": {
|
|
"description": "Proxies MCP JSON-RPC requests to a stdio MCP process in the container.",
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "MCP stdio proxy (JSON-RPC)",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Connection ID",
|
|
"name": "connection_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "JSON-RPC request",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "JSON-RPC response: {jsonrpc,id,result|error}",
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp/export": {
|
|
"get": {
|
|
"description": "Export all MCP connections for a bot in standard mcpServers format.",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Export MCP connections",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/mcp.ExportResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp/import": {
|
|
"put": {
|
|
"description": "Batch import MCP connections from standard mcpServers format. Existing connections (matched by name) get config updated with is_active preserved. New connections are created as active.",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Import MCP connections",
|
|
"parameters": [
|
|
{
|
|
"description": "mcpServers dict",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/mcp.ImportRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/mcp.ListResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp/{id}": {
|
|
"get": {
|
|
"description": "Get a MCP connection by ID",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Get MCP connection",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "MCP ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/github_com_memohai_memoh_internal_mcp.Connection"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update a MCP connection by ID",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Update MCP connection",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "MCP ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "MCP payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/mcp.UpsertRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/github_com_memohai_memoh_internal_mcp.Connection"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete a MCP connection by ID",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Delete MCP connection",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "MCP ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp/{id}/oauth/authorize": {
|
|
"post": {
|
|
"description": "Generate PKCE and return authorization URL for the user to authorize",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Start OAuth authorization flow",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "MCP connection ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Optional client_id",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.oauthAuthorizeRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/mcp.AuthorizeResult"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp/{id}/oauth/discover": {
|
|
"post": {
|
|
"description": "Probe MCP server URL for OAuth requirements and discover authorization server metadata",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Discover OAuth configuration for MCP server",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "MCP connection ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Optional URL override",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.oauthDiscoverRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/mcp.DiscoveryResult"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp/{id}/oauth/exchange": {
|
|
"post": {
|
|
"description": "Frontend callback page calls this to exchange the authorization code for access/refresh tokens",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Exchange OAuth authorization code for tokens",
|
|
"parameters": [
|
|
{
|
|
"description": "Authorization code and state",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.oauthExchangeRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp/{id}/oauth/status": {
|
|
"get": {
|
|
"description": "Returns the current OAuth status including whether tokens are available",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Get OAuth status for MCP connection",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "MCP connection ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/mcp.OAuthStatus"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp/{id}/oauth/token": {
|
|
"delete": {
|
|
"description": "Clears stored OAuth tokens",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Revoke OAuth tokens for MCP connection",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "MCP connection ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/mcp/{id}/probe": {
|
|
"post": {
|
|
"description": "Probe a MCP connection to discover tools and verify connectivity",
|
|
"tags": [
|
|
"mcp"
|
|
],
|
|
"summary": "Probe MCP connection",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "MCP connection ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ProbeResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/memory": {
|
|
"get": {
|
|
"description": "List all memories in the bot-shared namespace",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory"
|
|
],
|
|
"summary": "Get all memories",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"description": "Skip optional stats in memory search response",
|
|
"name": "no_stats",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.SearchResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Service Unavailable",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Add memory into the bot-shared namespace",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory"
|
|
],
|
|
"summary": "Add memory",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Memory add payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.memoryAddPayload"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.SearchResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Service Unavailable",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete specific memories by IDs, or delete all memories if no IDs are provided",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory"
|
|
],
|
|
"summary": "Delete memories",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Optional: specify memory_ids to delete; if omitted, deletes all",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.memoryDeletePayload"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.DeleteResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Service Unavailable",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/memory/compact": {
|
|
"post": {
|
|
"description": "Consolidate memories by merging similar/redundant entries using LLM.\n\n**ratio** (required, range (0,1]):\n- 0.8 = light compression, mostly dedup, keep ~80% of entries\n- 0.5 = moderate compression, merge similar facts, keep ~50%\n- 0.3 = aggressive compression, heavily consolidate, keep ~30%\n\n**decay_days** (optional): enable time decay — memories older than N days are treated as low priority and more likely to be merged/dropped.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory"
|
|
],
|
|
"summary": "Compact memories",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "ratio (0,1] required; decay_days optional",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.memoryCompactPayload"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.CompactResult"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Service Unavailable",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/memory/rebuild": {
|
|
"post": {
|
|
"description": "Read memory files from the container filesystem (source of truth) and restore missing entries to memory storage",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory"
|
|
],
|
|
"summary": "Rebuild memories from filesystem",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.RebuildResult"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Service Unavailable",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/memory/search": {
|
|
"post": {
|
|
"description": "Search memory in the bot-shared namespace",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory"
|
|
],
|
|
"summary": "Search memory",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Memory search payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.memorySearchPayload"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.SearchResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Service Unavailable",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/memory/status": {
|
|
"get": {
|
|
"description": "Get the resolved memory runtime status for a bot, including index health and source counts",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory"
|
|
],
|
|
"summary": "Get memory runtime status",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.MemoryStatusResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Conflict",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Service Unavailable",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/memory/usage": {
|
|
"get": {
|
|
"description": "Query the estimated storage usage of current memories",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory"
|
|
],
|
|
"summary": "Get memory usage",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.UsageResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Service Unavailable",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/memory/{id}": {
|
|
"delete": {
|
|
"description": "Delete a single memory by its ID",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory"
|
|
],
|
|
"summary": "Delete a single memory",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Memory ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.DeleteResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"503": {
|
|
"description": "Service Unavailable",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/messages": {
|
|
"get": {
|
|
"description": "List messages for a bot history with optional pagination",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"messages"
|
|
],
|
|
"summary": "List bot history messages",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Limit",
|
|
"name": "limit",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Before",
|
|
"name": "before",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/message.Message"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Clear all persisted bot-level history messages",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"messages"
|
|
],
|
|
"summary": "Delete all bot history messages",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/schedule": {
|
|
"get": {
|
|
"description": "List schedules for current user",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"summary": "List schedules",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/schedule.ListResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Create a schedule for current user",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"summary": "Create schedule",
|
|
"parameters": [
|
|
{
|
|
"description": "Schedule payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/schedule.CreateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/schedule.Schedule"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/schedule/logs": {
|
|
"get": {
|
|
"description": "List schedule execution logs for a bot",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"summary": "List schedule logs",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 50,
|
|
"description": "Limit",
|
|
"name": "limit",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "Offset",
|
|
"name": "offset",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/schedule.ListLogsResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete all schedule execution logs for a bot",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"summary": "Delete schedule logs",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/schedule/{id}": {
|
|
"get": {
|
|
"description": "Get a schedule by ID",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"summary": "Get schedule",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Schedule ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/schedule.Schedule"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update a schedule by ID",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"summary": "Update schedule",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Schedule ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Schedule payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/schedule.UpdateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/schedule.Schedule"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete a schedule by ID",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"summary": "Delete schedule",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Schedule ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/schedule/{id}/logs": {
|
|
"get": {
|
|
"description": "List execution logs for a specific schedule",
|
|
"tags": [
|
|
"schedule"
|
|
],
|
|
"summary": "List schedule logs by schedule",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Schedule ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 50,
|
|
"description": "Limit",
|
|
"name": "limit",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "Offset",
|
|
"name": "offset",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/schedule.ListLogsResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/sessions": {
|
|
"get": {
|
|
"tags": [
|
|
"sessions"
|
|
],
|
|
"summary": "List bot sessions",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/session.Session"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"sessions"
|
|
],
|
|
"summary": "Create a new chat session",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Session data",
|
|
"name": "body",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.createSessionRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/session.Session"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/sessions/{session_id}": {
|
|
"get": {
|
|
"tags": [
|
|
"sessions"
|
|
],
|
|
"summary": "Get a session by ID",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Session ID",
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/session.Session"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"sessions"
|
|
],
|
|
"summary": "Soft-delete a session",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Session ID",
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"patch": {
|
|
"tags": [
|
|
"sessions"
|
|
],
|
|
"summary": "Update a session",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Session ID",
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Fields to update",
|
|
"name": "body",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.updateSessionRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/session.Session"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/sessions/{session_id}/compact": {
|
|
"post": {
|
|
"description": "Run context compaction synchronously for a session",
|
|
"tags": [
|
|
"compaction"
|
|
],
|
|
"summary": "Trigger immediate context compaction",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Session ID",
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.TriggerCompactResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/sessions/{session_id}/status": {
|
|
"get": {
|
|
"description": "Get aggregated info for a chat session including message count, context usage, cache stats, and used skills",
|
|
"tags": [
|
|
"sessions"
|
|
],
|
|
"summary": "Get session info",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Session ID",
|
|
"name": "session_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Optional model UUID override for context window",
|
|
"name": "model_id",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.SessionInfoResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/settings": {
|
|
"get": {
|
|
"description": "Get agent settings for current user",
|
|
"tags": [
|
|
"settings"
|
|
],
|
|
"summary": "Get user settings",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/settings.Settings"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update or create agent settings for current user",
|
|
"tags": [
|
|
"settings"
|
|
],
|
|
"summary": "Update user settings",
|
|
"parameters": [
|
|
{
|
|
"description": "Settings payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/settings.UpsertRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/settings.Settings"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Update or create agent settings for current user",
|
|
"tags": [
|
|
"settings"
|
|
],
|
|
"summary": "Update user settings",
|
|
"parameters": [
|
|
{
|
|
"description": "Settings payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/settings.UpsertRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/settings.Settings"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Remove agent settings for current user",
|
|
"tags": [
|
|
"settings"
|
|
],
|
|
"summary": "Delete user settings",
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/supermarket/install-mcp": {
|
|
"post": {
|
|
"tags": [
|
|
"supermarket"
|
|
],
|
|
"summary": "Install MCP from supermarket to bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Install MCP request",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.InstallMcpRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/github_com_memohai_memoh_internal_mcp.Connection"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"502": {
|
|
"description": "Bad Gateway",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/supermarket/install-skill": {
|
|
"post": {
|
|
"tags": [
|
|
"supermarket"
|
|
],
|
|
"summary": "Install skill from supermarket to bot container",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Install skill request",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.InstallSkillRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"502": {
|
|
"description": "Bad Gateway",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/token-usage": {
|
|
"get": {
|
|
"description": "Get daily aggregated token usage for a bot, split by chat, heartbeat, and schedule session types, with optional model filter and per-model breakdown",
|
|
"tags": [
|
|
"token-usage"
|
|
],
|
|
"summary": "Get token usage statistics",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Start date (YYYY-MM-DD)",
|
|
"name": "from",
|
|
"in": "query",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "End date exclusive (YYYY-MM-DD)",
|
|
"name": "to",
|
|
"in": "query",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Optional model UUID to filter by",
|
|
"name": "model_id",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.TokenUsageResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/token-usage/records": {
|
|
"get": {
|
|
"description": "Paginated list of individual LLM call records (assistant messages with usage) for a bot, with optional model and session type filters",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"token-usage"
|
|
],
|
|
"summary": "List per-call token usage records",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Start date (YYYY-MM-DD)",
|
|
"name": "from",
|
|
"in": "query",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "End date exclusive (YYYY-MM-DD)",
|
|
"name": "to",
|
|
"in": "query",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Optional model UUID to filter by",
|
|
"name": "model_id",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Optional session type: chat, heartbeat, or schedule",
|
|
"name": "session_type",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Page size (default 20, max 100)",
|
|
"name": "limit",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "Offset",
|
|
"name": "offset",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.TokenUsageRecordsResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/tools": {
|
|
"post": {
|
|
"description": "MCP endpoint for tool discovery and invocation.",
|
|
"tags": [
|
|
"containerd"
|
|
],
|
|
"summary": "Unified MCP tools gateway",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "JSON-RPC request",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "JSON-RPC response: {jsonrpc,id,result|error}",
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{bot_id}/tts/synthesize": {
|
|
"post": {
|
|
"description": "Stream-synthesize text using the bot's configured TTS model, write to temp file",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Synthesize speech for a bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "bot_id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Text to synthesize",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.synthesizeRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.synthesizeResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{id}": {
|
|
"get": {
|
|
"description": "Get a bot by ID (owner/admin only)",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Get bot details",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/bots.Bot"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update bot profile (owner/admin only)",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Update bot details",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Bot update payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/bots.UpdateBotRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/bots.Bot"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete a bot user (owner/admin only)",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Delete bot",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Accepted",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{id}/channel/{platform}": {
|
|
"get": {
|
|
"description": "Get bot channel configuration",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Get bot channel config",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Channel platform",
|
|
"name": "platform",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/channel.ChannelConfig"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update bot channel configuration",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Update bot channel config",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Channel platform",
|
|
"name": "platform",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Channel config payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/channel.UpsertConfigRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/channel.ChannelConfig"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Remove bot channel configuration",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Delete bot channel config",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Channel platform",
|
|
"name": "platform",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{id}/channel/{platform}/send": {
|
|
"post": {
|
|
"description": "Send a message using bot channel configuration",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Send message via bot channel",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Channel platform",
|
|
"name": "platform",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Send payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/channel.SendRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{id}/channel/{platform}/send_chat": {
|
|
"post": {
|
|
"description": "Send a message using a session-scoped token (reply only)",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Send message via bot channel session token",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Channel platform",
|
|
"name": "platform",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Send payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/channel.SendRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{id}/channel/{platform}/status": {
|
|
"patch": {
|
|
"description": "Update bot channel enabled/disabled status",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Update bot channel status",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Channel platform",
|
|
"name": "platform",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Channel status payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/channel.UpdateChannelStatusRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/channel.ChannelConfig"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{id}/checks": {
|
|
"get": {
|
|
"description": "Evaluate bot attached resource checks in runtime",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "List bot runtime checks",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/bots.ListChecksResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/bots/{id}/owner": {
|
|
"put": {
|
|
"description": "Transfer bot ownership to another human user",
|
|
"tags": [
|
|
"bots"
|
|
],
|
|
"summary": "Transfer bot owner (admin only)",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Bot ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Transfer payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/bots.TransferBotRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/bots.Bot"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/browser-contexts": {
|
|
"get": {
|
|
"description": "List all browser context configurations",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"browser-contexts"
|
|
],
|
|
"summary": "List browser contexts",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/browsercontexts.BrowserContext"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Create a browser context configuration",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"browser-contexts"
|
|
],
|
|
"summary": "Create a browser context",
|
|
"parameters": [
|
|
{
|
|
"description": "Browser context configuration",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/browsercontexts.CreateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/browsercontexts.BrowserContext"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/browser-contexts/cores": {
|
|
"get": {
|
|
"description": "Get the list of browser cores available in the Browser Gateway container",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"browser-contexts"
|
|
],
|
|
"summary": "Get available browser cores",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.BrowserCoresResponse"
|
|
}
|
|
},
|
|
"502": {
|
|
"description": "Bad Gateway",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/browser-contexts/{id}": {
|
|
"get": {
|
|
"description": "Get browser context by ID",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"browser-contexts"
|
|
],
|
|
"summary": "Get a browser context",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Browser Context ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/browsercontexts.BrowserContext"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update browser context by ID",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"browser-contexts"
|
|
],
|
|
"summary": "Update a browser context",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Browser Context ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Updated configuration",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/browsercontexts.UpdateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/browsercontexts.BrowserContext"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete browser context by ID",
|
|
"tags": [
|
|
"browser-contexts"
|
|
],
|
|
"summary": "Delete a browser context",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Browser Context ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/channels": {
|
|
"get": {
|
|
"description": "List channel meta information including capabilities and schemas",
|
|
"tags": [
|
|
"channel"
|
|
],
|
|
"summary": "List channel capabilities and schemas",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.ChannelMeta"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/channels/{platform}": {
|
|
"get": {
|
|
"description": "Get channel meta information including capabilities and schemas",
|
|
"tags": [
|
|
"channel"
|
|
],
|
|
"summary": "Get channel capabilities and schemas",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Channel platform",
|
|
"name": "platform",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ChannelMeta"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/email-providers": {
|
|
"get": {
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"email-providers"
|
|
],
|
|
"summary": "List email providers",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider type filter",
|
|
"name": "provider",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/email.ProviderResponse"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"email-providers"
|
|
],
|
|
"summary": "Create an email provider",
|
|
"parameters": [
|
|
{
|
|
"description": "Email provider configuration",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/email.CreateProviderRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/email.ProviderResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/email-providers/meta": {
|
|
"get": {
|
|
"description": "List available email provider types and config schemas",
|
|
"tags": [
|
|
"email-providers"
|
|
],
|
|
"summary": "List email provider metadata",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/email.ProviderMeta"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/email-providers/{id}": {
|
|
"get": {
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"email-providers"
|
|
],
|
|
"summary": "Get an email provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/email.ProviderResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"email-providers"
|
|
],
|
|
"summary": "Update an email provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Updated configuration",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/email.UpdateProviderRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/email.ProviderResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"email-providers"
|
|
],
|
|
"summary": "Delete an email provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/email-providers/{id}/oauth/authorize": {
|
|
"get": {
|
|
"description": "Returns the authorization URL to redirect the user to",
|
|
"tags": [
|
|
"email-oauth"
|
|
],
|
|
"summary": "Start OAuth2 authorization for an email provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Email provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/email-providers/{id}/oauth/status": {
|
|
"get": {
|
|
"tags": [
|
|
"email-oauth"
|
|
],
|
|
"summary": "Get OAuth2 status for an email provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Email provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.emailOAuthStatusResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/email-providers/{id}/oauth/token": {
|
|
"delete": {
|
|
"tags": [
|
|
"email-oauth"
|
|
],
|
|
"summary": "Revoke stored OAuth2 tokens for an email provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Email provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/email/mailgun/webhook/{config_id}": {
|
|
"post": {
|
|
"description": "Receives inbound emails from Mailgun",
|
|
"tags": [
|
|
"email-webhook"
|
|
],
|
|
"summary": "Mailgun inbound email webhook",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Email provider config ID",
|
|
"name": "config_id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/email/oauth/callback": {
|
|
"get": {
|
|
"description": "Handles the OAuth2 callback, exchanges the code for tokens",
|
|
"tags": [
|
|
"email-oauth"
|
|
],
|
|
"summary": "OAuth2 callback for email providers",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Authorization code",
|
|
"name": "code",
|
|
"in": "query",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "State parameter",
|
|
"name": "state",
|
|
"in": "query",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/memory-providers": {
|
|
"get": {
|
|
"description": "List configured memory providers",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory-providers"
|
|
],
|
|
"summary": "List memory providers",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/adapters.ProviderGetResponse"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Create a memory provider configuration",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory-providers"
|
|
],
|
|
"summary": "Create a memory provider",
|
|
"parameters": [
|
|
{
|
|
"description": "Memory provider configuration",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.ProviderCreateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.ProviderGetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/memory-providers/meta": {
|
|
"get": {
|
|
"description": "List available memory provider types and config schemas",
|
|
"tags": [
|
|
"memory-providers"
|
|
],
|
|
"summary": "List memory provider metadata",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/adapters.ProviderMeta"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/memory-providers/{id}": {
|
|
"get": {
|
|
"description": "Get memory provider by ID",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory-providers"
|
|
],
|
|
"summary": "Get a memory provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.ProviderGetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update memory provider by ID",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory-providers"
|
|
],
|
|
"summary": "Update a memory provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Updated configuration",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.ProviderUpdateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.ProviderGetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete memory provider by ID",
|
|
"tags": [
|
|
"memory-providers"
|
|
],
|
|
"summary": "Delete a memory provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/memory-providers/{id}/status": {
|
|
"get": {
|
|
"description": "Get runtime status data for a memory provider",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"memory-providers"
|
|
],
|
|
"summary": "Get memory provider status",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/adapters.ProviderStatusResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/models": {
|
|
"get": {
|
|
"description": "Get a list of all configured models, optionally filtered by type or provider client type",
|
|
"tags": [
|
|
"models"
|
|
],
|
|
"summary": "List all models",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model type (chat, embedding)",
|
|
"name": "type",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Provider client type (openai-responses, openai-completions, anthropic-messages, google-generative-ai)",
|
|
"name": "client_type",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/models.GetResponse"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Create a new model configuration",
|
|
"tags": [
|
|
"models"
|
|
],
|
|
"summary": "Create a new model",
|
|
"parameters": [
|
|
{
|
|
"description": "Model configuration",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.AddRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.AddResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/models/count": {
|
|
"get": {
|
|
"description": "Get the total count of models, optionally filtered by type",
|
|
"tags": [
|
|
"models"
|
|
],
|
|
"summary": "Get model count",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model type (chat, embedding)",
|
|
"name": "type",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.CountResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/models/model/{modelId}": {
|
|
"get": {
|
|
"description": "Get a model configuration by its model_id field (e.g., gpt-4)",
|
|
"tags": [
|
|
"models"
|
|
],
|
|
"summary": "Get model by model ID",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model ID (e.g., gpt-4)",
|
|
"name": "modelId",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.GetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update a model configuration by its model_id field (e.g., gpt-4)",
|
|
"tags": [
|
|
"models"
|
|
],
|
|
"summary": "Update model by model ID",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model ID (e.g., gpt-4)",
|
|
"name": "modelId",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Updated model configuration",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.UpdateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.GetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete a model configuration by its model_id field (e.g., gpt-4)",
|
|
"tags": [
|
|
"models"
|
|
],
|
|
"summary": "Delete model by model ID",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model ID (e.g., gpt-4)",
|
|
"name": "modelId",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/models/{id}": {
|
|
"get": {
|
|
"description": "Get a model configuration by its internal UUID",
|
|
"tags": [
|
|
"models"
|
|
],
|
|
"summary": "Get model by internal ID",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model internal ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.GetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update a model configuration by its internal UUID",
|
|
"tags": [
|
|
"models"
|
|
],
|
|
"summary": "Update model by internal ID",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model internal ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Updated model configuration",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.UpdateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.GetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete a model configuration by its internal UUID",
|
|
"tags": [
|
|
"models"
|
|
],
|
|
"summary": "Delete model by internal ID",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model internal ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/models/{id}/test": {
|
|
"post": {
|
|
"description": "Probe a model's provider endpoint using the model's real model_id and client_type to verify configuration",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"models"
|
|
],
|
|
"summary": "Test model connectivity",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model internal ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.TestResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/ping": {
|
|
"get": {
|
|
"tags": [
|
|
"system"
|
|
],
|
|
"summary": "Health check with server capabilities",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.PingResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers": {
|
|
"get": {
|
|
"description": "Get a list of all configured LLM providers",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"providers"
|
|
],
|
|
"summary": "List all LLM providers",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/providers.GetResponse"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Create a new LLM provider configuration",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"providers"
|
|
],
|
|
"summary": "Create a new LLM provider",
|
|
"parameters": [
|
|
{
|
|
"description": "Provider configuration",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.CreateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.GetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers/count": {
|
|
"get": {
|
|
"description": "Get the total count of providers",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"providers"
|
|
],
|
|
"summary": "Count providers",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.CountResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers/name/{name}": {
|
|
"get": {
|
|
"description": "Get a provider configuration by its name",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"providers"
|
|
],
|
|
"summary": "Get provider by name",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider name",
|
|
"name": "name",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.GetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers/oauth/callback": {
|
|
"get": {
|
|
"tags": [
|
|
"providers-oauth"
|
|
],
|
|
"summary": "OAuth2 callback for LLM providers",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Authorization code",
|
|
"name": "code",
|
|
"in": "query",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "State parameter",
|
|
"name": "state",
|
|
"in": "query",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "HTML success page",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers/{id}": {
|
|
"get": {
|
|
"description": "Get a provider configuration by its ID",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"providers"
|
|
],
|
|
"summary": "Get provider by ID",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.GetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update an existing provider configuration",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"providers"
|
|
],
|
|
"summary": "Update provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Updated provider configuration",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.UpdateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.GetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete a provider configuration",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"providers"
|
|
],
|
|
"summary": "Delete provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers/{id}/import-models": {
|
|
"post": {
|
|
"description": "Fetch models from provider's /v1/models endpoint and import them",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"providers"
|
|
],
|
|
"summary": "Import models from provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.ImportModelsResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers/{id}/models": {
|
|
"get": {
|
|
"description": "Get models for a provider by id, optionally filtered by type",
|
|
"tags": [
|
|
"providers"
|
|
],
|
|
"summary": "List provider models",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Model type (chat, embedding)",
|
|
"name": "type",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/models.GetResponse"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers/{id}/oauth/authorize": {
|
|
"get": {
|
|
"tags": [
|
|
"providers-oauth"
|
|
],
|
|
"summary": "Start OAuth2 authorization for an LLM provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.OAuthAuthorizeResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers/{id}/oauth/poll": {
|
|
"post": {
|
|
"tags": [
|
|
"providers-oauth"
|
|
],
|
|
"summary": "Poll OAuth device authorization for an LLM provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.OAuthStatus"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers/{id}/oauth/status": {
|
|
"get": {
|
|
"tags": [
|
|
"providers-oauth"
|
|
],
|
|
"summary": "Get OAuth2 status for an LLM provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.OAuthStatus"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers/{id}/oauth/token": {
|
|
"delete": {
|
|
"tags": [
|
|
"providers-oauth"
|
|
],
|
|
"summary": "Revoke stored OAuth2 tokens for an LLM provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/providers/{id}/test": {
|
|
"post": {
|
|
"description": "Probe a provider's base URL to check reachability, supported client types, and embedding support",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"providers"
|
|
],
|
|
"summary": "Test provider connectivity",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/providers.TestResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/search-providers": {
|
|
"get": {
|
|
"description": "List configured search providers",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"search-providers"
|
|
],
|
|
"summary": "List search providers",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider filter (brave)",
|
|
"name": "provider",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/searchproviders.GetResponse"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Create a search provider configuration",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"search-providers"
|
|
],
|
|
"summary": "Create a search provider",
|
|
"parameters": [
|
|
{
|
|
"description": "Search provider configuration",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/searchproviders.CreateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/searchproviders.GetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/search-providers/meta": {
|
|
"get": {
|
|
"description": "List available search provider types and config schemas",
|
|
"tags": [
|
|
"search-providers"
|
|
],
|
|
"summary": "List search provider metadata",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/searchproviders.ProviderMeta"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/search-providers/{id}": {
|
|
"get": {
|
|
"description": "Get search provider by ID",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"search-providers"
|
|
],
|
|
"summary": "Get a search provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/searchproviders.GetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update search provider by ID",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"search-providers"
|
|
],
|
|
"summary": "Update a search provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Updated configuration",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/searchproviders.UpdateRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/searchproviders.GetResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"description": "Delete search provider by ID",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"search-providers"
|
|
],
|
|
"summary": "Delete a search provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/speech-models": {
|
|
"get": {
|
|
"description": "List all models of type 'speech' (filtered view of unified models table)",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"speech-models"
|
|
],
|
|
"summary": "List all speech models",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.SpeechModelResponse"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/speech-models/{id}": {
|
|
"get": {
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"speech-models"
|
|
],
|
|
"summary": "Get a speech model",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.SpeechModelResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"speech-models"
|
|
],
|
|
"summary": "Update a speech model",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Model update payload",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.UpdateSpeechModelRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.SpeechModelResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/speech-models/{id}/capabilities": {
|
|
"get": {
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"speech-models"
|
|
],
|
|
"summary": "Get speech model capabilities",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.ModelCapabilities"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/speech-models/{id}/test": {
|
|
"post": {
|
|
"description": "Synthesize text using a specific model's config and return audio",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/octet-stream"
|
|
],
|
|
"tags": [
|
|
"speech-models"
|
|
],
|
|
"summary": "Test speech model synthesis",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Text to synthesize",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.TestSynthesizeRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Audio data",
|
|
"schema": {
|
|
"type": "file"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/speech-providers": {
|
|
"get": {
|
|
"description": "List providers that support speech (filtered view of unified providers table)",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"speech-providers"
|
|
],
|
|
"summary": "List speech providers",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.SpeechProviderResponse"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/speech-providers/meta": {
|
|
"get": {
|
|
"description": "List available speech provider types with their models and capabilities",
|
|
"tags": [
|
|
"speech-providers"
|
|
],
|
|
"summary": "List speech provider metadata",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.ProviderMetaResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/speech-providers/{id}": {
|
|
"get": {
|
|
"description": "Get a speech provider with masked config values",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"speech-providers"
|
|
],
|
|
"summary": "Get speech provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.SpeechProviderResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/speech-providers/{id}/import-models": {
|
|
"post": {
|
|
"description": "Fetch models using the configured speech provider and import them into the unified models table",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"speech-providers"
|
|
],
|
|
"summary": "Import speech models from provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.ImportModelsResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/speech-providers/{id}/models": {
|
|
"get": {
|
|
"description": "List models of type 'speech' for a specific speech provider",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"speech-providers"
|
|
],
|
|
"summary": "List speech models by provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.SpeechModelResponse"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/supermarket/mcps": {
|
|
"get": {
|
|
"tags": [
|
|
"supermarket"
|
|
],
|
|
"summary": "List MCPs from supermarket",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Search query",
|
|
"name": "q",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Filter by tag",
|
|
"name": "tag",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Filter by transport type",
|
|
"name": "transport",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Page number",
|
|
"name": "page",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Items per page",
|
|
"name": "limit",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.SupermarketMcpListResponse"
|
|
}
|
|
},
|
|
"502": {
|
|
"description": "Bad Gateway",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/supermarket/mcps/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"supermarket"
|
|
],
|
|
"summary": "Get MCP detail from supermarket",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "MCP ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.SupermarketMcpEntry"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"502": {
|
|
"description": "Bad Gateway",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/supermarket/skills": {
|
|
"get": {
|
|
"tags": [
|
|
"supermarket"
|
|
],
|
|
"summary": "List skills from supermarket",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Search query",
|
|
"name": "q",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Filter by tag",
|
|
"name": "tag",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Page number",
|
|
"name": "page",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Items per page",
|
|
"name": "limit",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.SupermarketSkillListResponse"
|
|
}
|
|
},
|
|
"502": {
|
|
"description": "Bad Gateway",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/supermarket/skills/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"supermarket"
|
|
],
|
|
"summary": "Get skill detail from supermarket",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Skill ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.SupermarketSkillEntry"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"502": {
|
|
"description": "Bad Gateway",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/supermarket/tags": {
|
|
"get": {
|
|
"tags": [
|
|
"supermarket"
|
|
],
|
|
"summary": "List all tags from supermarket",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.SupermarketTagsResponse"
|
|
}
|
|
},
|
|
"502": {
|
|
"description": "Bad Gateway",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/transcription-models": {
|
|
"get": {
|
|
"description": "List all models of type 'transcription' (filtered view of unified models table)",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"transcription-models"
|
|
],
|
|
"summary": "List all transcription models",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.TranscriptionModelResponse"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/transcription-models/{id}": {
|
|
"get": {
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"transcription-models"
|
|
],
|
|
"summary": "Get a transcription model",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.TranscriptionModelResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"transcription-models"
|
|
],
|
|
"summary": "Update a transcription model",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Model update payload",
|
|
"name": "request",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.UpdateSpeechModelRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.TranscriptionModelResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/transcription-models/{id}/capabilities": {
|
|
"get": {
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"transcription-models"
|
|
],
|
|
"summary": "Get transcription model capabilities",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.ModelCapabilities"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/transcription-models/{id}/test": {
|
|
"post": {
|
|
"description": "Transcribe uploaded audio using a specific model's config and return structured text output",
|
|
"consumes": [
|
|
"multipart/form-data"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"transcription-models"
|
|
],
|
|
"summary": "Test transcription model recognition",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Model ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "file",
|
|
"description": "Audio file",
|
|
"name": "file",
|
|
"in": "formData",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Optional JSON config",
|
|
"name": "config",
|
|
"in": "formData"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.TestTranscriptionResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/transcription-providers": {
|
|
"get": {
|
|
"description": "List providers that support transcription (filtered view of unified providers table)",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"transcription-providers"
|
|
],
|
|
"summary": "List transcription providers",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.SpeechProviderResponse"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/transcription-providers/meta": {
|
|
"get": {
|
|
"description": "List available transcription provider types with their models and capabilities",
|
|
"tags": [
|
|
"transcription-providers"
|
|
],
|
|
"summary": "List transcription provider metadata",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.ProviderMetaResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/transcription-providers/{id}": {
|
|
"get": {
|
|
"description": "Get a speech provider with masked config values",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"speech-providers"
|
|
],
|
|
"summary": "Get speech provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.SpeechProviderResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/transcription-providers/{id}/import-models": {
|
|
"post": {
|
|
"description": "Fetch models using the configured transcription provider and import them into the unified models table",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"transcription-providers"
|
|
],
|
|
"summary": "Import transcription models from provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/audio.ImportModelsResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/transcription-providers/{id}/models": {
|
|
"get": {
|
|
"description": "List models of type 'transcription' for a specific transcription provider",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"transcription-providers"
|
|
],
|
|
"summary": "List transcription models by provider",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Provider ID (UUID)",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.TranscriptionModelResponse"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users": {
|
|
"get": {
|
|
"description": "List users",
|
|
"tags": [
|
|
"users"
|
|
],
|
|
"summary": "List users (admin only)",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/accounts.ListAccountsResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"description": "Create a new human user account",
|
|
"tags": [
|
|
"users"
|
|
],
|
|
"summary": "Create human user (admin only)",
|
|
"parameters": [
|
|
{
|
|
"description": "User payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/accounts.CreateAccountRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"schema": {
|
|
"$ref": "#/definitions/accounts.Account"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/me": {
|
|
"get": {
|
|
"description": "Get current user profile",
|
|
"tags": [
|
|
"users"
|
|
],
|
|
"summary": "Get current user",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/accounts.Account"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update current user display name or avatar",
|
|
"tags": [
|
|
"users"
|
|
],
|
|
"summary": "Update current user profile",
|
|
"parameters": [
|
|
{
|
|
"description": "Profile payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/accounts.UpdateProfileRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/accounts.Account"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/me/channels/{platform}": {
|
|
"get": {
|
|
"description": "Get channel binding configuration for current user",
|
|
"tags": [
|
|
"channel"
|
|
],
|
|
"summary": "Get channel user config",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Channel platform",
|
|
"name": "platform",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/channel.ChannelIdentityBinding"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update channel binding configuration for current user",
|
|
"tags": [
|
|
"channel"
|
|
],
|
|
"summary": "Update channel user config",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Channel platform",
|
|
"name": "platform",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Channel user config payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/channel.UpsertChannelIdentityConfigRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/channel.ChannelIdentityBinding"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/me/identities": {
|
|
"get": {
|
|
"description": "List all channel identities linked to current user",
|
|
"tags": [
|
|
"users"
|
|
],
|
|
"summary": "List current user's channel identities",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.listMyIdentitiesResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/me/password": {
|
|
"put": {
|
|
"description": "Update current user password with current password check",
|
|
"tags": [
|
|
"users"
|
|
],
|
|
"summary": "Update current user password",
|
|
"parameters": [
|
|
{
|
|
"description": "Password payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/accounts.UpdatePasswordRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/{id}": {
|
|
"get": {
|
|
"description": "Get user details (self or admin only)",
|
|
"tags": [
|
|
"users"
|
|
],
|
|
"summary": "Get user by ID",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "User ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/accounts.Account"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"description": "Update user profile and status",
|
|
"tags": [
|
|
"users"
|
|
],
|
|
"summary": "Update user (admin only)",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "User ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "User update payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/accounts.UpdateAccountRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/accounts.Account"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/users/{id}/password": {
|
|
"put": {
|
|
"description": "Reset a user password",
|
|
"tags": [
|
|
"users"
|
|
],
|
|
"summary": "Reset user password (admin only)",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "User ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "Password payload",
|
|
"name": "payload",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/accounts.ResetPasswordRequest"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/handlers.ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"definitions": {
|
|
"accounts.Account": {
|
|
"type": "object",
|
|
"properties": {
|
|
"avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"is_active": {
|
|
"type": "boolean"
|
|
},
|
|
"last_login_at": {
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"accounts.CreateAccountRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"is_active": {
|
|
"type": "boolean"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"accounts.ListAccountsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/accounts.Account"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"accounts.ResetPasswordRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"new_password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"accounts.UpdateAccountRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"is_active": {
|
|
"type": "boolean"
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"accounts.UpdatePasswordRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"current_password": {
|
|
"type": "string"
|
|
},
|
|
"new_password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"accounts.UpdateProfileRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"acl.ChannelIdentityCandidate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"channel": {
|
|
"type": "string"
|
|
},
|
|
"channel_subject_id": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"linked_avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"linked_display_name": {
|
|
"type": "string"
|
|
},
|
|
"linked_user_id": {
|
|
"type": "string"
|
|
},
|
|
"linked_username": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"acl.ChannelIdentityCandidateListResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/acl.ChannelIdentityCandidate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"acl.CreateRuleRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_identity_id": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"effect": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
},
|
|
"source_scope": {
|
|
"$ref": "#/definitions/acl.SourceScope"
|
|
},
|
|
"subject_channel_type": {
|
|
"type": "string"
|
|
},
|
|
"subject_kind": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"acl.DefaultEffectResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"default_effect": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"acl.ListRulesResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/acl.Rule"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"acl.ObservedConversationCandidate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel": {
|
|
"type": "string"
|
|
},
|
|
"conversation_id": {
|
|
"type": "string"
|
|
},
|
|
"conversation_name": {
|
|
"type": "string"
|
|
},
|
|
"conversation_type": {
|
|
"type": "string"
|
|
},
|
|
"last_observed_at": {
|
|
"type": "string"
|
|
},
|
|
"route_id": {
|
|
"type": "string"
|
|
},
|
|
"thread_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"acl.ObservedConversationCandidateListResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/acl.ObservedConversationCandidate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"acl.ReorderItem": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"acl.ReorderRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/acl.ReorderItem"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"acl.Rule": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string"
|
|
},
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"channel_identity_avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"channel_identity_display_name": {
|
|
"type": "string"
|
|
},
|
|
"channel_identity_id": {
|
|
"type": "string"
|
|
},
|
|
"channel_subject_id": {
|
|
"type": "string"
|
|
},
|
|
"channel_type": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"effect": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"linked_user_avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"linked_user_display_name": {
|
|
"type": "string"
|
|
},
|
|
"linked_user_id": {
|
|
"type": "string"
|
|
},
|
|
"linked_user_username": {
|
|
"type": "string"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
},
|
|
"source_scope": {
|
|
"$ref": "#/definitions/acl.SourceScope"
|
|
},
|
|
"subject_channel_type": {
|
|
"type": "string"
|
|
},
|
|
"subject_kind": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"acl.SourceScope": {
|
|
"type": "object",
|
|
"properties": {
|
|
"conversation_id": {
|
|
"type": "string"
|
|
},
|
|
"conversation_type": {
|
|
"type": "string"
|
|
},
|
|
"thread_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"acl.UpdateRuleRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_identity_id": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"effect": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"priority": {
|
|
"type": "integer"
|
|
},
|
|
"source_scope": {
|
|
"$ref": "#/definitions/acl.SourceScope"
|
|
},
|
|
"subject_channel_type": {
|
|
"type": "string"
|
|
},
|
|
"subject_kind": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"adapters.CDFPoint": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cumulative": {
|
|
"description": "cumulative weight fraction [0.0, 1.0]",
|
|
"type": "number"
|
|
},
|
|
"k": {
|
|
"description": "rank position (1-based, sorted by value desc)",
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"adapters.CompactResult": {
|
|
"type": "object",
|
|
"properties": {
|
|
"after_count": {
|
|
"type": "integer"
|
|
},
|
|
"before_count": {
|
|
"type": "integer"
|
|
},
|
|
"ratio": {
|
|
"type": "number"
|
|
},
|
|
"results": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/adapters.MemoryItem"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"adapters.DeleteResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"adapters.HealthStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"error": {
|
|
"type": "string"
|
|
},
|
|
"ok": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"adapters.MemoryItem": {
|
|
"type": "object",
|
|
"properties": {
|
|
"agent_id": {
|
|
"type": "string"
|
|
},
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"cdf_curve": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/adapters.CDFPoint"
|
|
}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"hash": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"memory": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"run_id": {
|
|
"type": "string"
|
|
},
|
|
"score": {
|
|
"type": "number"
|
|
},
|
|
"top_k_buckets": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/adapters.TopKBucket"
|
|
}
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"adapters.MemoryStatusResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"can_manual_sync": {
|
|
"type": "boolean"
|
|
},
|
|
"encoder": {
|
|
"$ref": "#/definitions/adapters.HealthStatus"
|
|
},
|
|
"indexed_count": {
|
|
"type": "integer"
|
|
},
|
|
"markdown_file_count": {
|
|
"type": "integer"
|
|
},
|
|
"memory_mode": {
|
|
"type": "string"
|
|
},
|
|
"overview_path": {
|
|
"type": "string"
|
|
},
|
|
"provider_type": {
|
|
"type": "string"
|
|
},
|
|
"qdrant": {
|
|
"$ref": "#/definitions/adapters.HealthStatus"
|
|
},
|
|
"qdrant_collection": {
|
|
"type": "string"
|
|
},
|
|
"source_count": {
|
|
"type": "integer"
|
|
},
|
|
"source_dir": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"adapters.Message": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"adapters.ProviderCollectionStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"exists": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "integer"
|
|
},
|
|
"qdrant": {
|
|
"$ref": "#/definitions/adapters.HealthStatus"
|
|
}
|
|
}
|
|
},
|
|
"adapters.ProviderConfigSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"fields": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/adapters.ProviderFieldSchema"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"adapters.ProviderCreateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"$ref": "#/definitions/adapters.ProviderType"
|
|
}
|
|
}
|
|
},
|
|
"adapters.ProviderFieldSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"example": {},
|
|
"required": {
|
|
"type": "boolean"
|
|
},
|
|
"secret": {
|
|
"type": "boolean"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"adapters.ProviderGetResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"is_default": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"adapters.ProviderMeta": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config_schema": {
|
|
"$ref": "#/definitions/adapters.ProviderConfigSchema"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"adapters.ProviderStatusResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"collections": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/adapters.ProviderCollectionStatus"
|
|
}
|
|
},
|
|
"embedding_model_id": {
|
|
"type": "string"
|
|
},
|
|
"memory_mode": {
|
|
"type": "string"
|
|
},
|
|
"provider_type": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"adapters.ProviderType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"builtin",
|
|
"mem0",
|
|
"openviking"
|
|
],
|
|
"x-enum-varnames": [
|
|
"ProviderBuiltin",
|
|
"ProviderMem0",
|
|
"ProviderOpenViking"
|
|
]
|
|
},
|
|
"adapters.ProviderUpdateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"adapters.RebuildResult": {
|
|
"type": "object",
|
|
"properties": {
|
|
"fs_count": {
|
|
"type": "integer"
|
|
},
|
|
"missing_count": {
|
|
"type": "integer"
|
|
},
|
|
"restored_count": {
|
|
"type": "integer"
|
|
},
|
|
"storage_count": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"adapters.SearchResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"relations": {
|
|
"type": "array",
|
|
"items": {}
|
|
},
|
|
"results": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/adapters.MemoryItem"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"adapters.TopKBucket": {
|
|
"type": "object",
|
|
"properties": {
|
|
"index": {
|
|
"description": "sparse dimension index (term hash)",
|
|
"type": "integer"
|
|
},
|
|
"value": {
|
|
"description": "weight (term frequency)",
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"adapters.UsageResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"avg_text_bytes": {
|
|
"type": "integer"
|
|
},
|
|
"count": {
|
|
"type": "integer"
|
|
},
|
|
"estimated_storage_bytes": {
|
|
"type": "integer"
|
|
},
|
|
"total_text_bytes": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"audio.ConfigSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"fields": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.FieldSchema"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"audio.FieldSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"advanced": {
|
|
"type": "boolean"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"enum": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"order": {
|
|
"type": "integer"
|
|
},
|
|
"required": {
|
|
"type": "boolean"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"audio.ImportModelsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"created": {
|
|
"type": "integer"
|
|
},
|
|
"models": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"skipped": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"audio.ModelCapabilities": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config_schema": {
|
|
"$ref": "#/definitions/audio.ConfigSchema"
|
|
},
|
|
"formats": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"pitch": {
|
|
"$ref": "#/definitions/audio.ParamConstraint"
|
|
},
|
|
"speed": {
|
|
"$ref": "#/definitions/audio.ParamConstraint"
|
|
},
|
|
"voices": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.VoiceInfo"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"audio.ModelInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"capabilities": {
|
|
"$ref": "#/definitions/audio.ModelCapabilities"
|
|
},
|
|
"config_schema": {
|
|
"$ref": "#/definitions/audio.ConfigSchema"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"template_only": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"audio.ParamConstraint": {
|
|
"type": "object",
|
|
"properties": {
|
|
"default": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"options": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"audio.ProviderMetaResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config_schema": {
|
|
"$ref": "#/definitions/audio.ConfigSchema"
|
|
},
|
|
"default_model": {
|
|
"type": "string"
|
|
},
|
|
"default_synthesis_model": {
|
|
"type": "string"
|
|
},
|
|
"default_transcription_model": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"models": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.ModelInfo"
|
|
}
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
},
|
|
"supports_synthesis_list": {
|
|
"type": "boolean"
|
|
},
|
|
"supports_transcription_list": {
|
|
"type": "boolean"
|
|
},
|
|
"synthesis_models": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.ModelInfo"
|
|
}
|
|
},
|
|
"transcription_models": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.ModelInfo"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"audio.SpeechModelResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"model_id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider_id": {
|
|
"type": "string"
|
|
},
|
|
"provider_type": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"audio.SpeechProviderResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"client_type": {
|
|
"type": "string"
|
|
},
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"enable": {
|
|
"type": "boolean"
|
|
},
|
|
"icon": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"audio.TestSynthesizeRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"audio.TestTranscriptionResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"duration_seconds": {
|
|
"type": "number"
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
},
|
|
"words": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/audio.TranscriptionWord"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"audio.TranscriptionModelResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"model_id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider_id": {
|
|
"type": "string"
|
|
},
|
|
"provider_type": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"audio.TranscriptionWord": {
|
|
"type": "object",
|
|
"properties": {
|
|
"end": {
|
|
"type": "number"
|
|
},
|
|
"speaker_id": {
|
|
"type": "string"
|
|
},
|
|
"start": {
|
|
"type": "number"
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"audio.UpdateSpeechModelRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"audio.VoiceInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"lang": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"bots.Bot": {
|
|
"type": "object",
|
|
"properties": {
|
|
"avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"check_issue_count": {
|
|
"type": "integer"
|
|
},
|
|
"check_state": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"is_active": {
|
|
"type": "boolean"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"owner_user_id": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"bots.BotCheck": {
|
|
"type": "object",
|
|
"properties": {
|
|
"detail": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"subtitle": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"title_key": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"bots.CreateBotRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"acl_preset": {
|
|
"type": "string"
|
|
},
|
|
"avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"is_active": {
|
|
"type": "boolean"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"bots.ListBotsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/bots.Bot"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"bots.ListChecksResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/bots.BotCheck"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"bots.TransferBotRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"owner_user_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"bots.UpdateBotRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"is_active": {
|
|
"type": "boolean"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"browsercontexts.BrowserContext": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"browsercontexts.CreateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"browsercontexts.UpdateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"channel.Action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"channel.Attachment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"base64": {
|
|
"description": "data URL for agent delivery",
|
|
"type": "string"
|
|
},
|
|
"caption": {
|
|
"type": "string"
|
|
},
|
|
"content_hash": {
|
|
"type": "string"
|
|
},
|
|
"duration_ms": {
|
|
"type": "integer"
|
|
},
|
|
"height": {
|
|
"type": "integer"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"mime": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"platform_key": {
|
|
"type": "string"
|
|
},
|
|
"size": {
|
|
"type": "integer"
|
|
},
|
|
"source_platform": {
|
|
"type": "string"
|
|
},
|
|
"thumbnail_url": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/channel.AttachmentType"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
},
|
|
"width": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"channel.AttachmentType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"image",
|
|
"audio",
|
|
"video",
|
|
"voice",
|
|
"file",
|
|
"gif"
|
|
],
|
|
"x-enum-varnames": [
|
|
"AttachmentImage",
|
|
"AttachmentAudio",
|
|
"AttachmentVideo",
|
|
"AttachmentVoice",
|
|
"AttachmentFile",
|
|
"AttachmentGIF"
|
|
]
|
|
},
|
|
"channel.ChannelCapabilities": {
|
|
"type": "object",
|
|
"properties": {
|
|
"attachments": {
|
|
"type": "boolean"
|
|
},
|
|
"block_streaming": {
|
|
"type": "boolean"
|
|
},
|
|
"buttons": {
|
|
"type": "boolean"
|
|
},
|
|
"chat_types": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"edit": {
|
|
"type": "boolean"
|
|
},
|
|
"markdown": {
|
|
"type": "boolean"
|
|
},
|
|
"media": {
|
|
"type": "boolean"
|
|
},
|
|
"native_commands": {
|
|
"type": "boolean"
|
|
},
|
|
"polls": {
|
|
"type": "boolean"
|
|
},
|
|
"reactions": {
|
|
"type": "boolean"
|
|
},
|
|
"reply": {
|
|
"type": "boolean"
|
|
},
|
|
"rich_text": {
|
|
"type": "boolean"
|
|
},
|
|
"streaming": {
|
|
"type": "boolean"
|
|
},
|
|
"text": {
|
|
"type": "boolean"
|
|
},
|
|
"threads": {
|
|
"type": "boolean"
|
|
},
|
|
"unsend": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"channel.ChannelConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"channel_type": {
|
|
"$ref": "#/definitions/channel.ChannelType"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"credentials": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"disabled": {
|
|
"type": "boolean"
|
|
},
|
|
"external_identity": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"routing": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"self_identity": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
},
|
|
"verified_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"channel.ChannelIdentityBinding": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_identity_id": {
|
|
"type": "string"
|
|
},
|
|
"channel_type": {
|
|
"$ref": "#/definitions/channel.ChannelType"
|
|
},
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"channel.ChannelType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"telegram",
|
|
"feishu",
|
|
"dingtalk",
|
|
"matrix",
|
|
"discord",
|
|
"qq",
|
|
"wecom",
|
|
"weixin",
|
|
"wechatoa",
|
|
"local",
|
|
"slack"
|
|
],
|
|
"x-enum-varnames": [
|
|
"ChannelTypeTelegram",
|
|
"ChannelTypeFeishu",
|
|
"ChannelTypeDingtalk",
|
|
"ChannelTypeMatrix",
|
|
"ChannelTypeDiscord",
|
|
"ChannelTypeQQ",
|
|
"ChannelTypeWecom",
|
|
"ChannelTypeWeixin",
|
|
"ChannelTypeWeChatOA",
|
|
"ChannelTypeLocal",
|
|
"ChannelTypeSlack"
|
|
]
|
|
},
|
|
"channel.ConfigSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"fields": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/channel.FieldSchema"
|
|
}
|
|
},
|
|
"version": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"channel.FieldSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"enum": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {},
|
|
"order": {
|
|
"type": "integer"
|
|
},
|
|
"required": {
|
|
"type": "boolean"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/channel.FieldType"
|
|
}
|
|
}
|
|
},
|
|
"channel.FieldType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"string",
|
|
"secret",
|
|
"bool",
|
|
"number",
|
|
"enum"
|
|
],
|
|
"x-enum-varnames": [
|
|
"FieldString",
|
|
"FieldSecret",
|
|
"FieldBool",
|
|
"FieldNumber",
|
|
"FieldEnum"
|
|
]
|
|
},
|
|
"channel.Message": {
|
|
"type": "object",
|
|
"properties": {
|
|
"actions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/channel.Action"
|
|
}
|
|
},
|
|
"attachments": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/channel.Attachment"
|
|
}
|
|
},
|
|
"format": {
|
|
"$ref": "#/definitions/channel.MessageFormat"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"parts": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/channel.MessagePart"
|
|
}
|
|
},
|
|
"reply": {
|
|
"$ref": "#/definitions/channel.ReplyRef"
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
},
|
|
"thread": {
|
|
"$ref": "#/definitions/channel.ThreadRef"
|
|
}
|
|
}
|
|
},
|
|
"channel.MessageFormat": {
|
|
"type": "string",
|
|
"enum": [
|
|
"plain",
|
|
"markdown",
|
|
"rich"
|
|
],
|
|
"x-enum-varnames": [
|
|
"MessageFormatPlain",
|
|
"MessageFormatMarkdown",
|
|
"MessageFormatRich"
|
|
]
|
|
},
|
|
"channel.MessagePart": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_identity_id": {
|
|
"type": "string"
|
|
},
|
|
"emoji": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"styles": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/channel.MessageTextStyle"
|
|
}
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/channel.MessagePartType"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"channel.MessagePartType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"text",
|
|
"link",
|
|
"code_block",
|
|
"mention",
|
|
"emoji"
|
|
],
|
|
"x-enum-varnames": [
|
|
"MessagePartText",
|
|
"MessagePartLink",
|
|
"MessagePartCodeBlock",
|
|
"MessagePartMention",
|
|
"MessagePartEmoji"
|
|
]
|
|
},
|
|
"channel.MessageTextStyle": {
|
|
"type": "string",
|
|
"enum": [
|
|
"bold",
|
|
"italic",
|
|
"strikethrough",
|
|
"code"
|
|
],
|
|
"x-enum-varnames": [
|
|
"MessageStyleBold",
|
|
"MessageStyleItalic",
|
|
"MessageStyleStrikethrough",
|
|
"MessageStyleCode"
|
|
]
|
|
},
|
|
"channel.ReplyRef": {
|
|
"type": "object",
|
|
"properties": {
|
|
"message_id": {
|
|
"type": "string"
|
|
},
|
|
"preview": {
|
|
"type": "string"
|
|
},
|
|
"sender": {
|
|
"type": "string"
|
|
},
|
|
"target": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"channel.SendRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_identity_id": {
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"$ref": "#/definitions/channel.Message"
|
|
},
|
|
"target": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"channel.TargetHint": {
|
|
"type": "object",
|
|
"properties": {
|
|
"example": {
|
|
"type": "string"
|
|
},
|
|
"label": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"channel.TargetSpec": {
|
|
"type": "object",
|
|
"properties": {
|
|
"format": {
|
|
"type": "string"
|
|
},
|
|
"hints": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/channel.TargetHint"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"channel.ThreadRef": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"channel.UpdateChannelStatusRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"disabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"channel.UpsertChannelIdentityConfigRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
}
|
|
}
|
|
},
|
|
"channel.UpsertConfigRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"credentials": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"disabled": {
|
|
"type": "boolean"
|
|
},
|
|
"external_identity": {
|
|
"type": "string"
|
|
},
|
|
"routing": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"self_identity": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"verified_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"compaction.ListLogsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/compaction.Log"
|
|
}
|
|
},
|
|
"total_count": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"compaction.Log": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"completed_at": {
|
|
"type": "string"
|
|
},
|
|
"error_message": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"message_count": {
|
|
"type": "integer"
|
|
},
|
|
"model_id": {
|
|
"type": "string"
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
},
|
|
"started_at": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"usage": {}
|
|
}
|
|
},
|
|
"email.BindingResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"can_delete": {
|
|
"type": "boolean"
|
|
},
|
|
"can_read": {
|
|
"type": "boolean"
|
|
},
|
|
"can_write": {
|
|
"type": "boolean"
|
|
},
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"email_address": {
|
|
"type": "string"
|
|
},
|
|
"email_provider_id": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"email.ConfigSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"fields": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/email.FieldSchema"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"email.CreateBindingRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"can_delete": {
|
|
"type": "boolean"
|
|
},
|
|
"can_read": {
|
|
"type": "boolean"
|
|
},
|
|
"can_write": {
|
|
"type": "boolean"
|
|
},
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"email_address": {
|
|
"type": "string"
|
|
},
|
|
"email_provider_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"email.CreateProviderRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"email.FieldSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"enum": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"order": {
|
|
"type": "integer"
|
|
},
|
|
"required": {
|
|
"type": "boolean"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"email.OutboxItemResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"attachments": {
|
|
"type": "array",
|
|
"items": {}
|
|
},
|
|
"body_html": {
|
|
"type": "string"
|
|
},
|
|
"body_text": {
|
|
"type": "string"
|
|
},
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"error": {
|
|
"type": "string"
|
|
},
|
|
"from": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"message_id": {
|
|
"type": "string"
|
|
},
|
|
"provider_id": {
|
|
"type": "string"
|
|
},
|
|
"sent_at": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"subject": {
|
|
"type": "string"
|
|
},
|
|
"to": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"email.ProviderMeta": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config_schema": {
|
|
"$ref": "#/definitions/email.ConfigSchema"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"email.ProviderResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"email.UpdateBindingRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"can_delete": {
|
|
"type": "boolean"
|
|
},
|
|
"can_read": {
|
|
"type": "boolean"
|
|
},
|
|
"can_write": {
|
|
"type": "boolean"
|
|
},
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"email_address": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"email.UpdateProviderRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"github_com_memohai_memoh_internal_mcp.Connection": {
|
|
"type": "object",
|
|
"properties": {
|
|
"auth_type": {
|
|
"type": "string"
|
|
},
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"is_active": {
|
|
"type": "boolean"
|
|
},
|
|
"last_probed_at": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"status_message": {
|
|
"type": "string"
|
|
},
|
|
"tools_cache": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/mcp.ToolDescriptor"
|
|
}
|
|
},
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.BatchDeleteRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.BrowserCoresResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cores": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.CacheStats": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cache_hit_rate": {
|
|
"type": "number"
|
|
},
|
|
"cache_read_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"cache_write_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"total_input_tokens": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.ChannelMeta": {
|
|
"type": "object",
|
|
"properties": {
|
|
"capabilities": {
|
|
"$ref": "#/definitions/channel.ChannelCapabilities"
|
|
},
|
|
"config_schema": {
|
|
"$ref": "#/definitions/channel.ConfigSchema"
|
|
},
|
|
"configless": {
|
|
"type": "boolean"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"target_spec": {
|
|
"$ref": "#/definitions/channel.TargetSpec"
|
|
},
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"user_config_schema": {
|
|
"$ref": "#/definitions/channel.ConfigSchema"
|
|
}
|
|
}
|
|
},
|
|
"handlers.ContainerCPUMetricsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"kernel_nanoseconds": {
|
|
"type": "integer"
|
|
},
|
|
"usage_nanoseconds": {
|
|
"type": "integer"
|
|
},
|
|
"usage_percent": {
|
|
"type": "number"
|
|
},
|
|
"user_nanoseconds": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.ContainerGPURequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"devices": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.ContainerMemoryMetricsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"limit_bytes": {
|
|
"type": "integer"
|
|
},
|
|
"usage_bytes": {
|
|
"type": "integer"
|
|
},
|
|
"usage_percent": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"handlers.ContainerMetricsPayloadResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cpu": {
|
|
"$ref": "#/definitions/handlers.ContainerCPUMetricsResponse"
|
|
},
|
|
"memory": {
|
|
"$ref": "#/definitions/handlers.ContainerMemoryMetricsResponse"
|
|
},
|
|
"storage": {
|
|
"$ref": "#/definitions/handlers.ContainerStorageMetricsResponse"
|
|
}
|
|
}
|
|
},
|
|
"handlers.ContainerMetricsStatusResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"exists": {
|
|
"type": "boolean"
|
|
},
|
|
"task_running": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"handlers.ContainerStorageMetricsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"used_bytes": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.ContextUsage": {
|
|
"type": "object",
|
|
"properties": {
|
|
"context_window": {
|
|
"type": "integer"
|
|
},
|
|
"used_tokens": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.CreateContainerRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"gpu": {
|
|
"$ref": "#/definitions/handlers.ContainerGPURequest"
|
|
},
|
|
"image": {
|
|
"type": "string"
|
|
},
|
|
"restore_data": {
|
|
"type": "boolean"
|
|
},
|
|
"snapshotter": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.CreateContainerResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cdi_devices": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"container_id": {
|
|
"type": "string"
|
|
},
|
|
"data_restored": {
|
|
"type": "boolean"
|
|
},
|
|
"has_preserved_data": {
|
|
"type": "boolean"
|
|
},
|
|
"image": {
|
|
"type": "string"
|
|
},
|
|
"snapshotter": {
|
|
"type": "string"
|
|
},
|
|
"started": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"handlers.CreateSnapshotRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"snapshot_name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.CreateSnapshotResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"container_id": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"runtime_snapshot_name": {
|
|
"type": "string"
|
|
},
|
|
"snapshot_name": {
|
|
"type": "string"
|
|
},
|
|
"snapshotter": {
|
|
"type": "string"
|
|
},
|
|
"source": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.DailyTokenUsage": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cache_read_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"cache_write_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"day": {
|
|
"type": "string"
|
|
},
|
|
"input_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"output_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"reasoning_tokens": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.ErrorResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.FSDeleteRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"recursive": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"handlers.FSFileInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"isDir": {
|
|
"type": "boolean"
|
|
},
|
|
"modTime": {
|
|
"type": "string"
|
|
},
|
|
"mode": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"size": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.FSListResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"entries": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.FSFileInfo"
|
|
}
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.FSMkdirRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.FSReadResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"size": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.FSRenameRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"newPath": {
|
|
"type": "string"
|
|
},
|
|
"oldPath": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.FSUploadResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"size": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.FSWriteRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.GetContainerMetricsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"backend": {
|
|
"type": "string"
|
|
},
|
|
"metrics": {
|
|
"$ref": "#/definitions/handlers.ContainerMetricsPayloadResponse"
|
|
},
|
|
"sampled_at": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"$ref": "#/definitions/handlers.ContainerMetricsStatusResponse"
|
|
},
|
|
"supported": {
|
|
"type": "boolean"
|
|
},
|
|
"unsupported_reason": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.GetContainerResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cdi_devices": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"container_id": {
|
|
"type": "string"
|
|
},
|
|
"container_path": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"has_preserved_data": {
|
|
"type": "boolean"
|
|
},
|
|
"image": {
|
|
"type": "string"
|
|
},
|
|
"legacy": {
|
|
"type": "boolean"
|
|
},
|
|
"namespace": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"task_running": {
|
|
"type": "boolean"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.InstallMcpRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"env": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"mcp_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.InstallSkillRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"skill_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.ListSnapshotsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"snapshots": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.SnapshotInfo"
|
|
}
|
|
},
|
|
"snapshotter": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.LocalChannelMessageRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"message": {
|
|
"$ref": "#/definitions/channel.Message"
|
|
},
|
|
"model_id": {
|
|
"type": "string"
|
|
},
|
|
"reasoning_effort": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.LoginRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"password": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.LoginResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"access_token": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"expires_at": {
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
},
|
|
"token_type": {
|
|
"type": "string"
|
|
},
|
|
"user_id": {
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.MCPStdioRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"args": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"cwd": {
|
|
"type": "string"
|
|
},
|
|
"env": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.MCPStdioResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"connection_id": {
|
|
"type": "string"
|
|
},
|
|
"tools": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.ModelTokenUsage": {
|
|
"type": "object",
|
|
"properties": {
|
|
"input_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"model_id": {
|
|
"type": "string"
|
|
},
|
|
"model_name": {
|
|
"type": "string"
|
|
},
|
|
"model_slug": {
|
|
"type": "string"
|
|
},
|
|
"output_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"provider_name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.PingResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"commit_hash": {
|
|
"type": "string"
|
|
},
|
|
"container_backend": {
|
|
"type": "string"
|
|
},
|
|
"snapshot_supported": {
|
|
"type": "boolean"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.ProbeResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"auth_required": {
|
|
"type": "boolean"
|
|
},
|
|
"error": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"tools": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/mcp.ToolDescriptor"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.RefreshResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"access_token": {
|
|
"type": "string"
|
|
},
|
|
"expires_at": {
|
|
"type": "string"
|
|
},
|
|
"token_type": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.RollbackRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.SessionInfoResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cache_stats": {
|
|
"$ref": "#/definitions/handlers.CacheStats"
|
|
},
|
|
"context_usage": {
|
|
"$ref": "#/definitions/handlers.ContextUsage"
|
|
},
|
|
"message_count": {
|
|
"type": "integer"
|
|
},
|
|
"skills": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.SkillItem": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"managed": {
|
|
"type": "boolean"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"raw": {
|
|
"type": "string"
|
|
},
|
|
"shadowed_by": {
|
|
"type": "string"
|
|
},
|
|
"source_kind": {
|
|
"type": "string"
|
|
},
|
|
"source_path": {
|
|
"type": "string"
|
|
},
|
|
"source_root": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.SkillsActionRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string"
|
|
},
|
|
"target_path": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.SkillsDeleteRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"names": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.SkillsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"skills": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.SkillItem"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.SkillsUpsertRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"skills": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.SnapshotInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"type": "string"
|
|
},
|
|
"labels": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"managed": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"parent": {
|
|
"type": "string"
|
|
},
|
|
"runtime_snapshot_name": {
|
|
"type": "string"
|
|
},
|
|
"snapshotter": {
|
|
"type": "string"
|
|
},
|
|
"source": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.SupermarketAuthor": {
|
|
"type": "object",
|
|
"properties": {
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.SupermarketConfigVar": {
|
|
"type": "object",
|
|
"properties": {
|
|
"defaultValue": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.SupermarketMcpEntry": {
|
|
"type": "object",
|
|
"properties": {
|
|
"args": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"author": {
|
|
"$ref": "#/definitions/handlers.SupermarketAuthor"
|
|
},
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"env": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.SupermarketConfigVar"
|
|
}
|
|
},
|
|
"headers": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.SupermarketConfigVar"
|
|
}
|
|
},
|
|
"homepage": {
|
|
"type": "string"
|
|
},
|
|
"icon": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"transport": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.SupermarketMcpListResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"data": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.SupermarketMcpEntry"
|
|
}
|
|
},
|
|
"limit": {
|
|
"type": "integer"
|
|
},
|
|
"page": {
|
|
"type": "integer"
|
|
},
|
|
"total": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.SupermarketSkillEntry": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"files": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"$ref": "#/definitions/handlers.SupermarketSkillMetadata"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.SupermarketSkillListResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"data": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.SupermarketSkillEntry"
|
|
}
|
|
},
|
|
"limit": {
|
|
"type": "integer"
|
|
},
|
|
"page": {
|
|
"type": "integer"
|
|
},
|
|
"total": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.SupermarketSkillMetadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"author": {
|
|
"$ref": "#/definitions/handlers.SupermarketAuthor"
|
|
},
|
|
"homepage": {
|
|
"type": "string"
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.SupermarketTagsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.TokenUsageRecord": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cache_read_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"cache_write_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"input_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"model_id": {
|
|
"type": "string"
|
|
},
|
|
"model_name": {
|
|
"type": "string"
|
|
},
|
|
"model_slug": {
|
|
"type": "string"
|
|
},
|
|
"output_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"provider_name": {
|
|
"type": "string"
|
|
},
|
|
"reasoning_tokens": {
|
|
"type": "integer"
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
},
|
|
"session_type": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.TokenUsageRecordsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.TokenUsageRecord"
|
|
}
|
|
},
|
|
"total": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"handlers.TokenUsageResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"by_model": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.ModelTokenUsage"
|
|
}
|
|
},
|
|
"chat": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.DailyTokenUsage"
|
|
}
|
|
},
|
|
"heartbeat": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.DailyTokenUsage"
|
|
}
|
|
},
|
|
"schedule": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/handlers.DailyTokenUsage"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.TriggerCompactResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"message_count": {
|
|
"type": "integer"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.createSessionRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"channel_type": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.emailOAuthStatusResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"configured": {
|
|
"type": "boolean"
|
|
},
|
|
"email_address": {
|
|
"type": "string"
|
|
},
|
|
"expired": {
|
|
"type": "boolean"
|
|
},
|
|
"expires_at": {
|
|
"type": "string"
|
|
},
|
|
"has_token": {
|
|
"type": "boolean"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.fsOpResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ok": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"handlers.listMyIdentitiesResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/identities.ChannelIdentity"
|
|
}
|
|
},
|
|
"user_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.memoryAddPayload": {
|
|
"type": "object",
|
|
"properties": {
|
|
"embedding_enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"filters": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"infer": {
|
|
"type": "boolean"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"messages": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/adapters.Message"
|
|
}
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"namespace": {
|
|
"type": "string"
|
|
},
|
|
"run_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.memoryCompactPayload": {
|
|
"type": "object",
|
|
"properties": {
|
|
"decay_days": {
|
|
"type": "integer"
|
|
},
|
|
"ratio": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"handlers.memoryDeletePayload": {
|
|
"type": "object",
|
|
"properties": {
|
|
"memory_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.memorySearchPayload": {
|
|
"type": "object",
|
|
"properties": {
|
|
"embedding_enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"filters": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"limit": {
|
|
"type": "integer"
|
|
},
|
|
"no_stats": {
|
|
"type": "boolean"
|
|
},
|
|
"query": {
|
|
"type": "string"
|
|
},
|
|
"run_id": {
|
|
"type": "string"
|
|
},
|
|
"sources": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"handlers.oauthAuthorizeRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"callback_url": {
|
|
"type": "string"
|
|
},
|
|
"client_id": {
|
|
"type": "string"
|
|
},
|
|
"client_secret": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.oauthDiscoverRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.oauthExchangeRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.skillsOpResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ok": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"handlers.synthesizeRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.synthesizeResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content_type": {
|
|
"type": "string"
|
|
},
|
|
"size": {
|
|
"type": "integer"
|
|
},
|
|
"temp_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.terminalInfoResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"available": {
|
|
"type": "boolean"
|
|
},
|
|
"shell": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"handlers.updateSessionRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"heartbeat.ListLogsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/heartbeat.Log"
|
|
}
|
|
},
|
|
"total_count": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"heartbeat.Log": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"completed_at": {
|
|
"type": "string"
|
|
},
|
|
"error_message": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"result_text": {
|
|
"type": "string"
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
},
|
|
"started_at": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"usage": {}
|
|
}
|
|
},
|
|
"identities.ChannelIdentity": {
|
|
"type": "object",
|
|
"properties": {
|
|
"avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"channel": {
|
|
"type": "string"
|
|
},
|
|
"channel_subject_id": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
},
|
|
"user_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"mcp.AuthorizeResult": {
|
|
"type": "object",
|
|
"properties": {
|
|
"authorization_url": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"mcp.DiscoveryResult": {
|
|
"type": "object",
|
|
"properties": {
|
|
"authorization_endpoint": {
|
|
"type": "string"
|
|
},
|
|
"authorization_server_url": {
|
|
"type": "string"
|
|
},
|
|
"registration_endpoint": {
|
|
"type": "string"
|
|
},
|
|
"resource_metadata_url": {
|
|
"type": "string"
|
|
},
|
|
"resource_uri": {
|
|
"type": "string"
|
|
},
|
|
"scopes_supported": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"token_endpoint": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"mcp.ExportResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mcpServers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/mcp.MCPServerEntry"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"mcp.ImportRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mcpServers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/mcp.MCPServerEntry"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"mcp.ListResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/github_com_memohai_memoh_internal_mcp.Connection"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"mcp.MCPServerEntry": {
|
|
"type": "object",
|
|
"properties": {
|
|
"args": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"cwd": {
|
|
"type": "string"
|
|
},
|
|
"env": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"headers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"transport": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"mcp.OAuthStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"auth_server": {
|
|
"type": "string"
|
|
},
|
|
"callback_url": {
|
|
"type": "string"
|
|
},
|
|
"configured": {
|
|
"type": "boolean"
|
|
},
|
|
"expired": {
|
|
"type": "boolean"
|
|
},
|
|
"expires_at": {
|
|
"type": "string"
|
|
},
|
|
"has_token": {
|
|
"type": "boolean"
|
|
},
|
|
"scopes": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"mcp.ToolDescriptor": {
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"inputSchema": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"mcp.UpsertRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"args": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"auth_type": {
|
|
"type": "string"
|
|
},
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"cwd": {
|
|
"type": "string"
|
|
},
|
|
"env": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"headers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"is_active": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"transport": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"message.Message": {
|
|
"type": "object",
|
|
"properties": {
|
|
"assets": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/message.MessageAsset"
|
|
}
|
|
},
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"compact_id": {
|
|
"type": "string"
|
|
},
|
|
"content": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"display_content": {
|
|
"type": "string"
|
|
},
|
|
"event_id": {
|
|
"type": "string"
|
|
},
|
|
"external_message_id": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"platform": {
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
},
|
|
"sender_avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"sender_channel_identity_id": {
|
|
"type": "string"
|
|
},
|
|
"sender_display_name": {
|
|
"type": "string"
|
|
},
|
|
"sender_user_id": {
|
|
"type": "string"
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
},
|
|
"source_reply_to_message_id": {
|
|
"type": "string"
|
|
},
|
|
"usage": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"message.MessageAsset": {
|
|
"type": "object",
|
|
"properties": {
|
|
"content_hash": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"mime": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"ordinal": {
|
|
"type": "integer"
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
},
|
|
"size_bytes": {
|
|
"type": "integer"
|
|
},
|
|
"storage_key": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"models.AddRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"$ref": "#/definitions/models.ModelConfig"
|
|
},
|
|
"model_id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider_id": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/models.ModelType"
|
|
}
|
|
}
|
|
},
|
|
"models.AddResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"model_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"models.CountResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"count": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"models.GetResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"$ref": "#/definitions/models.ModelConfig"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"model_id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider_id": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/models.ModelType"
|
|
}
|
|
}
|
|
},
|
|
"models.ModelConfig": {
|
|
"type": "object",
|
|
"properties": {
|
|
"compatibilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"context_window": {
|
|
"type": "integer"
|
|
},
|
|
"dimensions": {
|
|
"type": "integer"
|
|
},
|
|
"reasoning_efforts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"models.ModelType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"chat",
|
|
"embedding",
|
|
"speech",
|
|
"transcription"
|
|
],
|
|
"x-enum-varnames": [
|
|
"ModelTypeChat",
|
|
"ModelTypeEmbedding",
|
|
"ModelTypeSpeech",
|
|
"ModelTypeTranscription"
|
|
]
|
|
},
|
|
"models.TestResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"latency_ms": {
|
|
"type": "integer"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"reachable": {
|
|
"type": "boolean"
|
|
},
|
|
"status": {
|
|
"$ref": "#/definitions/models.TestStatus"
|
|
}
|
|
}
|
|
},
|
|
"models.TestStatus": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ok",
|
|
"auth_error",
|
|
"model_not_supported",
|
|
"error"
|
|
],
|
|
"x-enum-varnames": [
|
|
"TestStatusOK",
|
|
"TestStatusAuthError",
|
|
"TestStatusModelNotSupported",
|
|
"TestStatusError"
|
|
]
|
|
},
|
|
"models.UpdateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"$ref": "#/definitions/models.ModelConfig"
|
|
},
|
|
"model_id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider_id": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/models.ModelType"
|
|
}
|
|
}
|
|
},
|
|
"providers.CountResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"count": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"providers.CreateRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"client_type",
|
|
"name"
|
|
],
|
|
"properties": {
|
|
"client_type": {
|
|
"type": "string"
|
|
},
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"icon": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"providers.GetResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"client_type": {
|
|
"type": "string"
|
|
},
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"enable": {
|
|
"type": "boolean"
|
|
},
|
|
"icon": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"providers.ImportModelsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"created": {
|
|
"type": "integer"
|
|
},
|
|
"models": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"skipped": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"providers.OAuthAccount": {
|
|
"type": "object",
|
|
"properties": {
|
|
"avatar_url": {
|
|
"type": "string"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"login": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"profile_url": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"providers.OAuthAuthorizeResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"auth_url": {
|
|
"type": "string"
|
|
},
|
|
"device": {
|
|
"$ref": "#/definitions/providers.OAuthDeviceStatus"
|
|
},
|
|
"mode": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"providers.OAuthDeviceStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"expires_at": {
|
|
"type": "string"
|
|
},
|
|
"interval_seconds": {
|
|
"type": "integer"
|
|
},
|
|
"pending": {
|
|
"type": "boolean"
|
|
},
|
|
"user_code": {
|
|
"type": "string"
|
|
},
|
|
"verification_uri": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"providers.OAuthStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"account": {
|
|
"$ref": "#/definitions/providers.OAuthAccount"
|
|
},
|
|
"callback_url": {
|
|
"type": "string"
|
|
},
|
|
"configured": {
|
|
"type": "boolean"
|
|
},
|
|
"device": {
|
|
"$ref": "#/definitions/providers.OAuthDeviceStatus"
|
|
},
|
|
"expired": {
|
|
"type": "boolean"
|
|
},
|
|
"expires_at": {
|
|
"type": "string"
|
|
},
|
|
"has_token": {
|
|
"type": "boolean"
|
|
},
|
|
"mode": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"providers.TestResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"latency_ms": {
|
|
"type": "integer"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"reachable": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"providers.UpdateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"client_type": {
|
|
"type": "string"
|
|
},
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"enable": {
|
|
"type": "boolean"
|
|
},
|
|
"icon": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"schedule.CreateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"max_calls": {
|
|
"$ref": "#/definitions/schedule.NullableInt"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"pattern": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"schedule.ListLogsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/schedule.Log"
|
|
}
|
|
},
|
|
"total_count": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"schedule.ListResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/schedule.Schedule"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"schedule.Log": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"completed_at": {
|
|
"type": "string"
|
|
},
|
|
"error_message": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"result_text": {
|
|
"type": "string"
|
|
},
|
|
"schedule_id": {
|
|
"type": "string"
|
|
},
|
|
"session_id": {
|
|
"type": "string"
|
|
},
|
|
"started_at": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"usage": {}
|
|
}
|
|
},
|
|
"schedule.NullableInt": {
|
|
"type": "object",
|
|
"properties": {
|
|
"set": {
|
|
"type": "boolean"
|
|
},
|
|
"value": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"schedule.Schedule": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"current_calls": {
|
|
"type": "integer"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"max_calls": {
|
|
"type": "integer"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"pattern": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"schedule.UpdateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"command": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"max_calls": {
|
|
"$ref": "#/definitions/schedule.NullableInt"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"pattern": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"searchproviders.CreateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"$ref": "#/definitions/searchproviders.ProviderName"
|
|
}
|
|
}
|
|
},
|
|
"searchproviders.GetResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"enable": {
|
|
"type": "boolean"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"searchproviders.ProviderConfigSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"fields": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/searchproviders.ProviderFieldSchema"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"searchproviders.ProviderFieldSchema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"enum": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {},
|
|
"required": {
|
|
"type": "boolean"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"searchproviders.ProviderMeta": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config_schema": {
|
|
"$ref": "#/definitions/searchproviders.ProviderConfigSchema"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"searchproviders.ProviderName": {
|
|
"type": "string",
|
|
"enum": [
|
|
"brave",
|
|
"bing",
|
|
"google",
|
|
"tavily",
|
|
"sogou",
|
|
"serper",
|
|
"searxng",
|
|
"jina",
|
|
"exa",
|
|
"bocha",
|
|
"duckduckgo",
|
|
"yandex"
|
|
],
|
|
"x-enum-varnames": [
|
|
"ProviderBrave",
|
|
"ProviderBing",
|
|
"ProviderGoogle",
|
|
"ProviderTavily",
|
|
"ProviderSogou",
|
|
"ProviderSerper",
|
|
"ProviderSearXNG",
|
|
"ProviderJina",
|
|
"ProviderExa",
|
|
"ProviderBocha",
|
|
"ProviderDuckDuckGo",
|
|
"ProviderYandex"
|
|
]
|
|
},
|
|
"searchproviders.UpdateRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"config": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"enable": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"provider": {
|
|
"$ref": "#/definitions/searchproviders.ProviderName"
|
|
}
|
|
}
|
|
},
|
|
"session.Session": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bot_id": {
|
|
"type": "string"
|
|
},
|
|
"channel_type": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"parent_session_id": {
|
|
"type": "string"
|
|
},
|
|
"route_conversation_type": {
|
|
"type": "string"
|
|
},
|
|
"route_id": {
|
|
"type": "string"
|
|
},
|
|
"route_metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"settings.Settings": {
|
|
"type": "object",
|
|
"properties": {
|
|
"acl_default_effect": {
|
|
"type": "string"
|
|
},
|
|
"browser_context_id": {
|
|
"type": "string"
|
|
},
|
|
"chat_model_id": {
|
|
"type": "string"
|
|
},
|
|
"compaction_enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"compaction_model_id": {
|
|
"type": "string"
|
|
},
|
|
"compaction_ratio": {
|
|
"type": "integer"
|
|
},
|
|
"compaction_threshold": {
|
|
"type": "integer"
|
|
},
|
|
"discuss_probe_model_id": {
|
|
"type": "string"
|
|
},
|
|
"heartbeat_enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"heartbeat_interval": {
|
|
"type": "integer"
|
|
},
|
|
"heartbeat_model_id": {
|
|
"type": "string"
|
|
},
|
|
"image_model_id": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
},
|
|
"memory_provider_id": {
|
|
"type": "string"
|
|
},
|
|
"persist_full_tool_results": {
|
|
"type": "boolean"
|
|
},
|
|
"reasoning_effort": {
|
|
"type": "string"
|
|
},
|
|
"reasoning_enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"search_provider_id": {
|
|
"type": "string"
|
|
},
|
|
"show_tool_calls_in_im": {
|
|
"type": "boolean"
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
},
|
|
"title_model_id": {
|
|
"type": "string"
|
|
},
|
|
"transcription_model_id": {
|
|
"type": "string"
|
|
},
|
|
"tts_model_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"settings.UpsertRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"acl_default_effect": {
|
|
"type": "string"
|
|
},
|
|
"browser_context_id": {
|
|
"type": "string"
|
|
},
|
|
"chat_model_id": {
|
|
"type": "string"
|
|
},
|
|
"compaction_enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"compaction_model_id": {
|
|
"type": "string"
|
|
},
|
|
"compaction_ratio": {
|
|
"type": "integer"
|
|
},
|
|
"compaction_threshold": {
|
|
"type": "integer"
|
|
},
|
|
"discuss_probe_model_id": {
|
|
"type": "string"
|
|
},
|
|
"heartbeat_enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"heartbeat_interval": {
|
|
"type": "integer"
|
|
},
|
|
"heartbeat_model_id": {
|
|
"type": "string"
|
|
},
|
|
"image_model_id": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
},
|
|
"memory_provider_id": {
|
|
"type": "string"
|
|
},
|
|
"persist_full_tool_results": {
|
|
"type": "boolean"
|
|
},
|
|
"reasoning_effort": {
|
|
"type": "string"
|
|
},
|
|
"reasoning_enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"search_provider_id": {
|
|
"type": "string"
|
|
},
|
|
"show_tool_calls_in_im": {
|
|
"type": "boolean"
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
},
|
|
"title_model_id": {
|
|
"type": "string"
|
|
},
|
|
"transcription_model_id": {
|
|
"type": "string"
|
|
},
|
|
"tts_model_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}`
|
|
|
|
// SwaggerInfo holds exported Swagger Info so clients can modify it
|
|
var SwaggerInfo = &swag.Spec{
|
|
Version: "1.0.0",
|
|
Host: "",
|
|
BasePath: "",
|
|
Schemes: []string{},
|
|
Title: "Memoh API",
|
|
Description: "",
|
|
InfoInstanceName: "swagger",
|
|
SwaggerTemplate: docTemplate,
|
|
LeftDelim: "{{",
|
|
RightDelim: "}}",
|
|
}
|
|
|
|
func init() {
|
|
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
|
|
}
|