{ "openapi": "3.0.3", "info": { "title": "Hermes Web UI API", "description": "BFF server API for Hermes Web UI — chat sessions, scheduled jobs, platform channels, model management, skills, memory, logs, file browser, group chat, and terminal.", "version": "0.5.9" }, "servers": [ { "url": "http://localhost:8648", "description": "Local development" } ], "tags": [ { "name": "Codex Auth", "description": "OpenAI Codex OAuth" }, { "name": "Config", "description": "Configuration management" }, { "name": "Copilot Auth", "description": "GitHub Copilot OAuth" }, { "name": "Jobs", "description": "Scheduled job management" }, { "name": "Download", "description": "File download" }, { "name": "Files", "description": "Hermes file browser" }, { "name": "Group Chat", "description": "Group chat management" }, { "name": "Logs", "description": "Log file access" }, { "name": "Memory", "description": "Agent memory files" }, { "name": "Models", "description": "Model configuration" }, { "name": "Nous Auth", "description": "Nous Research OAuth" }, { "name": "Profiles", "description": "Hermes profile management" }, { "name": "Providers", "description": "Model provider management" }, { "name": "Sessions", "description": "Chat session management" }, { "name": "Skills", "description": "Skill browsing and management" }, { "name": "Weixin", "description": "WeChat QR code login" }, { "name": "Health", "description": "Health check" }, { "name": "Update", "description": "Self-update management" }, { "name": "Upload", "description": "File upload" }, { "name": "Webhook", "description": "Incoming webhooks" }, { "name": "Auth", "description": "Authentication management" }, { "name": "Proxy", "description": "Gateway proxy to upstream Hermes API" }, { "name": "Terminal", "description": "WebSocket terminal access" } ], "paths": { "/api/auth/change-password": { "post": { "tags": [ "Auth" ], "summary": "Create change-password", "description": "POST /api/auth/change-password", "operationId": "changePassword", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/auth/change-username": { "post": { "tags": [ "Auth" ], "summary": "Create change-username", "description": "POST /api/auth/change-username", "operationId": "changeUsername", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/auth/locked-ips": { "get": { "tags": [ "Auth" ], "summary": "Get locked-ips", "description": "GET /api/auth/locked-ips", "operationId": "listLockedIps", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } }, "delete": { "tags": [ "Auth" ], "summary": "Delete locked-ips", "description": "DELETE /api/auth/locked-ips", "operationId": "unlockIpHandler", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/auth/login": { "post": { "tags": [ "Auth" ], "summary": "Create login", "description": "POST /api/auth/login", "operationId": "login", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/auth/password": { "delete": { "tags": [ "Auth" ], "summary": "Delete password", "description": "DELETE /api/auth/password", "operationId": "removePassword", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/auth/setup": { "post": { "tags": [ "Auth" ], "summary": "Create setup", "description": "POST /api/auth/setup", "operationId": "setupPassword", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/auth/status": { "get": { "tags": [ "Auth" ], "summary": "Get status", "description": "GET /api/auth/status", "operationId": "authStatus", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/cron-history": { "get": { "tags": [ "Jobs" ], "summary": "Get cron-history", "description": "GET /api/cron-history", "operationId": "listRuns", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/cron-history/{jobId}/{fileName}": { "get": { "tags": [ "Jobs" ], "summary": "Get :fileName", "description": "GET /api/cron-history/:jobId/:fileName", "operationId": "readRun", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/auth/codex/poll/{sessionId}": { "get": { "tags": [ "Codex Auth" ], "summary": "Get :sessionId", "description": "GET /api/hermes/auth/codex/poll/:sessionId", "operationId": "poll", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/auth/codex/start": { "post": { "tags": [ "Codex Auth" ], "summary": "Create start", "description": "POST /api/hermes/auth/codex/start", "operationId": "start", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/auth/codex/status": { "get": { "tags": [ "Codex Auth" ], "summary": "Get status", "description": "GET /api/hermes/auth/codex/status", "operationId": "status", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/auth/copilot/check-token": { "get": { "tags": [ "Copilot Auth" ], "summary": "Get check-token", "description": "GET /api/hermes/auth/copilot/check-token", "operationId": "checkToken", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/auth/copilot/disable": { "post": { "tags": [ "Copilot Auth" ], "summary": "Create disable", "description": "POST /api/hermes/auth/copilot/disable", "operationId": "disable", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/auth/copilot/enable": { "post": { "tags": [ "Copilot Auth" ], "summary": "Create enable", "description": "POST /api/hermes/auth/copilot/enable", "operationId": "enable", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/auth/copilot/poll/{sessionId}": { "get": { "tags": [ "Copilot Auth" ], "summary": "Get :sessionId", "description": "GET /api/hermes/auth/copilot/poll/:sessionId", "operationId": "poll", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/auth/copilot/start": { "post": { "tags": [ "Copilot Auth" ], "summary": "Create start", "description": "POST /api/hermes/auth/copilot/start", "operationId": "start", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/auth/nous/poll/{sessionId}": { "get": { "tags": [ "Nous Auth" ], "summary": "Get :sessionId", "description": "GET /api/hermes/auth/nous/poll/:sessionId", "operationId": "poll", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/auth/nous/start": { "post": { "tags": [ "Nous Auth" ], "summary": "Create start", "description": "POST /api/hermes/auth/nous/start", "operationId": "start", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/auth/nous/status": { "get": { "tags": [ "Nous Auth" ], "summary": "Get status", "description": "GET /api/hermes/auth/nous/status", "operationId": "status", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/available-models": { "get": { "tags": [ "Models" ], "summary": "Get available-models", "description": "GET /api/hermes/available-models", "operationId": "getAvailable", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/config": { "get": { "tags": [ "Config" ], "summary": "Get config", "description": "GET /api/hermes/config", "operationId": "getConfig", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } }, "put": { "tags": [ "Config" ], "summary": "Update config", "description": "PUT /api/hermes/config", "operationId": "updateConfig", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/config/credentials": { "put": { "tags": [ "Config" ], "summary": "Update credentials", "description": "PUT /api/hermes/config/credentials", "operationId": "updateCredentials", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/config/model": { "put": { "tags": [ "Models" ], "summary": "Update model", "description": "PUT /api/hermes/config/model", "operationId": "setConfigModel", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/config/models": { "get": { "tags": [ "Models" ], "summary": "Get models", "description": "GET /api/hermes/config/models", "operationId": "getConfigModels", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/config/providers": { "post": { "tags": [ "Providers" ], "summary": "Create providers", "description": "POST /api/hermes/config/providers", "operationId": "create", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/config/providers/{poolKey}": { "put": { "tags": [ "Providers" ], "summary": "Update :poolKey", "description": "PUT /api/hermes/config/providers/:poolKey", "operationId": "update", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } }, "delete": { "tags": [ "Providers" ], "summary": "Delete :poolKey", "description": "DELETE /api/hermes/config/providers/:poolKey", "operationId": "remove", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/custom-model": { "put": { "tags": [ "Models" ], "summary": "Update custom-model", "description": "PUT /api/hermes/custom-model", "operationId": "addCustomModel", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } }, "delete": { "tags": [ "Models" ], "summary": "Delete custom-model", "description": "DELETE /api/hermes/custom-model", "operationId": "removeCustomModel", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/download": { "get": { "tags": [ "Download" ], "summary": "Get download", "description": "GET /api/hermes/download", "operationId": "getDownload", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/files/copy": { "post": { "tags": [ "Files" ], "summary": "Create copy", "description": "POST /api/hermes/files/copy", "operationId": "createCopy", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/files/delete": { "delete": { "tags": [ "Files" ], "summary": "Delete delete", "description": "DELETE /api/hermes/files/delete", "operationId": "deleteDelete", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/files/list": { "get": { "tags": [ "Files" ], "summary": "Get list", "description": "GET /api/hermes/files/list", "operationId": "getList", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/files/mkdir": { "post": { "tags": [ "Files" ], "summary": "Create mkdir", "description": "POST /api/hermes/files/mkdir", "operationId": "createMkdir", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/files/read": { "get": { "tags": [ "Files" ], "summary": "Get read", "description": "GET /api/hermes/files/read", "operationId": "getRead", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/files/rename": { "post": { "tags": [ "Files" ], "summary": "Create rename", "description": "POST /api/hermes/files/rename", "operationId": "createRename", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/files/stat": { "get": { "tags": [ "Files" ], "summary": "Get stat", "description": "GET /api/hermes/files/stat", "operationId": "getStat", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/files/upload": { "post": { "tags": [ "Files" ], "summary": "Create upload", "description": "POST /api/hermes/files/upload", "operationId": "createUpload", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/files/write": { "put": { "tags": [ "Files" ], "summary": "Update write", "description": "PUT /api/hermes/files/write", "operationId": "updateWrite", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/group-chat/rooms": { "post": { "tags": [ "Group Chat" ], "summary": "Create rooms", "description": "POST /api/hermes/group-chat/rooms", "operationId": "createRooms", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } }, "get": { "tags": [ "Group Chat" ], "summary": "Get rooms", "description": "GET /api/hermes/group-chat/rooms", "operationId": "getRooms", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/group-chat/rooms/join/{code}": { "get": { "tags": [ "Group Chat" ], "summary": "Get :code", "description": "GET /api/hermes/group-chat/rooms/join/:code", "operationId": "getJoin", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/group-chat/rooms/{roomId}": { "get": { "tags": [ "Group Chat" ], "summary": "Get :roomId", "description": "GET /api/hermes/group-chat/rooms/:roomId", "operationId": "getRooms", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } }, "delete": { "tags": [ "Group Chat" ], "summary": "Delete :roomId", "description": "DELETE /api/hermes/group-chat/rooms/:roomId", "operationId": "deleteRooms", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/group-chat/rooms/{roomId}/agents": { "post": { "tags": [ "Group Chat" ], "summary": "Create agents", "description": "POST /api/hermes/group-chat/rooms/:roomId/agents", "operationId": "createAgents", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } }, "get": { "tags": [ "Group Chat" ], "summary": "Get agents", "description": "GET /api/hermes/group-chat/rooms/:roomId/agents", "operationId": "getAgents", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/group-chat/rooms/{roomId}/agents/{agentId}": { "delete": { "tags": [ "Group Chat" ], "summary": "Delete :agentId", "description": "DELETE /api/hermes/group-chat/rooms/:roomId/agents/:agentId", "operationId": "deleteAgents", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/group-chat/rooms/{roomId}/clear-context": { "post": { "tags": [ "Group Chat" ], "summary": "Create clear-context", "description": "POST /api/hermes/group-chat/rooms/:roomId/clear-context", "operationId": "createClear-context", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/group-chat/rooms/{roomId}/clone": { "post": { "tags": [ "Group Chat" ], "summary": "Create clone", "description": "POST /api/hermes/group-chat/rooms/:roomId/clone", "operationId": "createClone", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/group-chat/rooms/{roomId}/compress": { "post": { "tags": [ "Group Chat" ], "summary": "Create compress", "description": "POST /api/hermes/group-chat/rooms/:roomId/compress", "operationId": "createCompress", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/group-chat/rooms/{roomId}/config": { "put": { "tags": [ "Group Chat" ], "summary": "Update config", "description": "PUT /api/hermes/group-chat/rooms/:roomId/config", "operationId": "updateConfig", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/group-chat/rooms/{roomId}/invite-code": { "put": { "tags": [ "Group Chat" ], "summary": "Update invite-code", "description": "PUT /api/hermes/group-chat/rooms/:roomId/invite-code", "operationId": "updateInvite-code", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/jobs": { "get": { "tags": [ "Jobs" ], "summary": "List jobs", "description": "GET /api/hermes/jobs", "operationId": "list", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } }, "post": { "tags": [ "Jobs" ], "summary": "Create jobs", "description": "POST /api/hermes/jobs", "operationId": "create", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/jobs/{id}": { "get": { "tags": [ "Jobs" ], "summary": "Get :id", "description": "GET /api/hermes/jobs/:id", "operationId": "get", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } }, "patch": { "tags": [ "Jobs" ], "summary": "Update :id", "description": "PATCH /api/hermes/jobs/:id", "operationId": "update", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } }, "delete": { "tags": [ "Jobs" ], "summary": "Delete :id", "description": "DELETE /api/hermes/jobs/:id", "operationId": "remove", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/jobs/{id}/pause": { "post": { "tags": [ "Jobs" ], "summary": "Pause pause", "description": "POST /api/hermes/jobs/:id/pause", "operationId": "pause", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/jobs/{id}/resume": { "post": { "tags": [ "Jobs" ], "summary": "Resume resume", "description": "POST /api/hermes/jobs/:id/resume", "operationId": "resume", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/jobs/{id}/run": { "post": { "tags": [ "Jobs" ], "summary": "Run run", "description": "POST /api/hermes/jobs/:id/run", "operationId": "run", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/logs": { "get": { "tags": [ "Logs" ], "summary": "List logs", "description": "GET /api/hermes/logs", "operationId": "list", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/logs/{name}": { "get": { "tags": [ "Logs" ], "summary": "Get :name", "description": "GET /api/hermes/logs/:name", "operationId": "read", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/memory": { "get": { "tags": [ "Memory" ], "summary": "Get memory", "description": "GET /api/hermes/memory", "operationId": "get", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } }, "post": { "tags": [ "Memory" ], "summary": "Create memory", "description": "POST /api/hermes/memory", "operationId": "save", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/model-alias": { "put": { "tags": [ "Models" ], "summary": "Update model-alias", "description": "PUT /api/hermes/model-alias", "operationId": "setModelAlias", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/model-context": { "get": { "tags": [ "Models" ], "summary": "Get model-context", "description": "GET /api/hermes/model-context", "operationId": "getModelContext", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } }, "put": { "tags": [ "Models" ], "summary": "Update model-context", "description": "PUT /api/hermes/model-context", "operationId": "updateModelContext", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/model-context/{provider}/{model}": { "get": { "tags": [ "Models" ], "summary": "Get :model", "description": "GET /api/hermes/model-context/:provider/:model", "operationId": "getModelContext", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } }, "put": { "tags": [ "Models" ], "summary": "Update :model", "description": "PUT /api/hermes/model-context/:provider/:model", "operationId": "updateModelContext", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/model-visibility": { "put": { "tags": [ "Models" ], "summary": "Update model-visibility", "description": "PUT /api/hermes/model-visibility", "operationId": "setModelVisibility", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/profiles": { "get": { "tags": [ "Profiles" ], "summary": "List profiles", "description": "GET /api/hermes/profiles", "operationId": "list", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } }, "post": { "tags": [ "Profiles" ], "summary": "Create profiles", "description": "POST /api/hermes/profiles", "operationId": "create", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/profiles/active": { "put": { "tags": [ "Profiles" ], "summary": "Update active", "description": "PUT /api/hermes/profiles/active", "operationId": "switchProfile", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/profiles/import": { "post": { "tags": [ "Profiles" ], "summary": "Create import", "description": "POST /api/hermes/profiles/import", "operationId": "importProfile", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/profiles/runtime-statuses": { "get": { "tags": [ "Profiles" ], "summary": "Get runtime-statuses", "description": "GET /api/hermes/profiles/runtime-statuses", "operationId": "runtimeStatuses", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/profiles/{name}": { "get": { "tags": [ "Profiles" ], "summary": "Get :name", "description": "GET /api/hermes/profiles/:name", "operationId": "get", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } }, "delete": { "tags": [ "Profiles" ], "summary": "Delete :name", "description": "DELETE /api/hermes/profiles/:name", "operationId": "remove", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/profiles/{name}/avatar": { "put": { "tags": [ "Profiles" ], "summary": "Update avatar", "description": "PUT /api/hermes/profiles/:name/avatar", "operationId": "updateAvatar", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } }, "delete": { "tags": [ "Profiles" ], "summary": "Delete avatar", "description": "DELETE /api/hermes/profiles/:name/avatar", "operationId": "deleteAvatar", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/profiles/{name}/export": { "post": { "tags": [ "Profiles" ], "summary": "Create export", "description": "POST /api/hermes/profiles/:name/export", "operationId": "exportProfile", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/profiles/{name}/gateway/restart": { "post": { "tags": [ "Profiles" ], "summary": "Create restart", "description": "POST /api/hermes/profiles/:name/gateway/restart", "operationId": "restartGatewayForProfile", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/profiles/{name}/rename": { "post": { "tags": [ "Profiles" ], "summary": "Rename rename", "description": "POST /api/hermes/profiles/:name/rename", "operationId": "rename", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/profiles/{name}/restart": { "post": { "tags": [ "Profiles" ], "summary": "Create restart", "description": "POST /api/hermes/profiles/:name/restart", "operationId": "restartProfileRuntime", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/profiles/{name}/runtime-status": { "get": { "tags": [ "Profiles" ], "summary": "Get runtime-status", "description": "GET /api/hermes/profiles/:name/runtime-status", "operationId": "runtimeStatus", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/provider-models": { "post": { "tags": [ "Models" ], "summary": "Create provider-models", "description": "POST /api/hermes/provider-models", "operationId": "fetchProviderModelList", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/search/sessions": { "get": { "tags": [ "Sessions" ], "summary": "Search sessions", "description": "GET /api/hermes/search/sessions", "operationId": "search", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions": { "get": { "tags": [ "Sessions" ], "summary": "List sessions", "description": "GET /api/hermes/sessions", "operationId": "list", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions/batch-delete": { "post": { "tags": [ "Sessions" ], "summary": "Create batch-delete", "description": "POST /api/hermes/sessions/batch-delete", "operationId": "batchRemove", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/sessions/context-length": { "get": { "tags": [ "Sessions" ], "summary": "Get context-length", "description": "GET /api/hermes/sessions/context-length", "operationId": "contextLength", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions/conversations": { "get": { "tags": [ "Sessions" ], "summary": "Get conversations", "description": "GET /api/hermes/sessions/conversations", "operationId": "listConversations", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions/conversations/{id}/messages": { "get": { "tags": [ "Sessions" ], "summary": "Get messages", "description": "GET /api/hermes/sessions/conversations/:id/messages", "operationId": "getConversationMessages", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions/conversations/{id}/messages/paginated": { "get": { "tags": [ "Sessions" ], "summary": "Get paginated", "description": "GET /api/hermes/sessions/conversations/:id/messages/paginated", "operationId": "getConversationMessagesPaginated", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions/hermes": { "get": { "tags": [ "Sessions" ], "summary": "Get hermes", "description": "GET /api/hermes/sessions/hermes", "operationId": "listHermesSessions", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions/hermes/{id}": { "get": { "tags": [ "Sessions" ], "summary": "Get :id", "description": "GET /api/hermes/sessions/hermes/:id", "operationId": "getHermesSession", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions/search": { "get": { "tags": [ "Sessions" ], "summary": "Search search", "description": "GET /api/hermes/sessions/search", "operationId": "search", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions/usage": { "get": { "tags": [ "Sessions" ], "summary": "Get usage", "description": "GET /api/hermes/sessions/usage", "operationId": "usageBatch", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions/{id}": { "get": { "tags": [ "Sessions" ], "summary": "Get :id", "description": "GET /api/hermes/sessions/:id", "operationId": "get", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } }, "delete": { "tags": [ "Sessions" ], "summary": "Delete :id", "description": "DELETE /api/hermes/sessions/:id", "operationId": "remove", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/sessions/{id}/export": { "get": { "tags": [ "Sessions" ], "summary": "Get export", "description": "GET /api/hermes/sessions/:id/export", "operationId": "exportSession", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions/{id}/model": { "post": { "tags": [ "Sessions" ], "summary": "Create model", "description": "POST /api/hermes/sessions/:id/model", "operationId": "setModel", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/sessions/{id}/rename": { "post": { "tags": [ "Sessions" ], "summary": "Rename rename", "description": "POST /api/hermes/sessions/:id/rename", "operationId": "rename", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/sessions/{id}/usage": { "get": { "tags": [ "Sessions" ], "summary": "Get usage", "description": "GET /api/hermes/sessions/:id/usage", "operationId": "usageSingle", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/sessions/{id}/workspace": { "post": { "tags": [ "Sessions" ], "summary": "Create workspace", "description": "POST /api/hermes/sessions/:id/workspace", "operationId": "setWorkspace", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/skills": { "get": { "tags": [ "Skills" ], "summary": "List skills", "description": "GET /api/hermes/skills", "operationId": "list", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/skills/pin": { "put": { "tags": [ "Skills" ], "summary": "Update pin", "description": "PUT /api/hermes/skills/pin", "operationId": "pin_", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/skills/toggle": { "put": { "tags": [ "Skills" ], "summary": "Update toggle", "description": "PUT /api/hermes/skills/toggle", "operationId": "toggle", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/skills/usage/stats": { "get": { "tags": [ "Skills" ], "summary": "Get stats", "description": "GET /api/hermes/skills/usage/stats", "operationId": "usageStats", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/skills/{*path}": { "get": { "tags": [ "Skills" ], "summary": "Get skills by *path", "description": "GET /api/hermes/skills/{*path}", "operationId": "readFile_", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/skills/{category}/{skill}/files": { "get": { "tags": [ "Skills" ], "summary": "Get files", "description": "GET /api/hermes/skills/:category/:skill/files", "operationId": "listFiles", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/update": { "post": { "tags": [ "Update" ], "summary": "Create update", "description": "POST /api/hermes/update", "operationId": "handleUpdate", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/usage/stats": { "get": { "tags": [ "Sessions" ], "summary": "Get stats", "description": "GET /api/hermes/usage/stats", "operationId": "usageStats", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/weixin/qrcode": { "get": { "tags": [ "Weixin" ], "summary": "Get qrcode", "description": "GET /api/hermes/weixin/qrcode", "operationId": "getQrcode", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/weixin/qrcode/status": { "get": { "tags": [ "Weixin" ], "summary": "Get status", "description": "GET /api/hermes/weixin/qrcode/status", "operationId": "pollStatus", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/api/hermes/weixin/save": { "post": { "tags": [ "Weixin" ], "summary": "Create save", "description": "POST /api/hermes/weixin/save", "operationId": "save", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/workspace/folders": { "get": { "tags": [ "Sessions" ], "summary": "Get folders", "description": "GET /api/hermes/workspace/folders", "operationId": "listWorkspaceFolders", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/health": { "get": { "tags": [ "Health" ], "summary": "Get health", "description": "GET /health", "operationId": "healthCheck", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Not found" } } } }, "/upload": { "post": { "tags": [ "Upload" ], "summary": "Create upload", "description": "POST /upload", "operationId": "handleUpload", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/webhook": { "post": { "tags": [ "Webhook" ], "summary": "Create webhook", "description": "POST /webhook", "operationId": "handleWebhook", "security": [ { "BearerAuth": [] } ], "responses": { "200": { "description": "Success" }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/{*any}": { "get": { "tags": [ "Proxy" ], "summary": "Proxy to upstream Hermes API", "description": "Forwards unmatched /api/hermes/* requests to upstream Hermes gateway. Supports all upstream endpoints.", "operationId": "proxyHermes", "responses": { "200": { "description": "Proxied response from upstream" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "502": { "description": "Proxy failure" } } }, "post": { "tags": [ "Proxy" ], "summary": "Proxy to upstream Hermes API", "description": "Forwards unmatched /api/hermes/* requests to upstream Hermes gateway. Supports all upstream endpoints.", "operationId": "proxyHermesPost", "responses": { "200": { "description": "Proxied response from upstream" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "502": { "description": "Proxy failure" } } }, "put": { "tags": [ "Proxy" ], "summary": "Proxy to upstream Hermes API", "description": "Forwards unmatched /api/hermes/* requests to upstream Hermes gateway. Supports all upstream endpoints.", "operationId": "proxyHermesPut", "responses": { "200": { "description": "Proxied response from upstream" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "502": { "description": "Proxy failure" } } }, "delete": { "tags": [ "Proxy" ], "summary": "Proxy to upstream Hermes API", "description": "Forwards unmatched /api/hermes/* requests to upstream Hermes gateway. Supports all upstream endpoints.", "operationId": "proxyHermesDelete", "responses": { "200": { "description": "Proxied response from upstream" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "502": { "description": "Proxy failure" } } } }, "/v1/{*any}": { "get": { "tags": [ "Proxy" ], "summary": "Proxy to upstream Hermes v1 API", "description": "Forwards /v1/* requests to upstream Hermes gateway. Supports all upstream v1 endpoints.", "operationId": "proxyV1", "responses": { "200": { "description": "Proxied response from upstream" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "502": { "description": "Proxy failure" } } }, "post": { "tags": [ "Proxy" ], "summary": "Proxy to upstream Hermes v1 API", "description": "Forwards /v1/* requests to upstream Hermes gateway. Supports all upstream v1 endpoints.", "operationId": "proxyV1Post", "responses": { "200": { "description": "Proxied response from upstream" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "502": { "description": "Proxy failure" } } } }, "/api/hermes/terminal": { "get": { "tags": [ "Terminal" ], "summary": "WebSocket terminal connection", "description": "Establish a WebSocket connection for interactive terminal access. Uses the `ws` or `wss` protocol with `?token=` for authentication.", "operationId": "terminalWebSocket", "responses": { "101": { "description": "Switching Protocols - WebSocket connection established" }, "401": { "$ref": "#/components/responses/Unauthorized" } } } }, "/api/hermes/v1/runs/{runId}/events": { "get": { "tags": [ "Chat" ], "summary": "Server-Sent Events for chat streaming", "description": "Stream chat events using Server-Sent Events (SSE). Authentication via `?token=` query parameter.", "operationId": "chatStreamEvents", "parameters": [ { "name": "runId", "in": "path", "required": true, "description": "Chat run ID", "schema": { "type": "string" } }, { "name": "token", "in": "query", "required": true, "description": "Authentication token", "schema": { "type": "string" } } ], "responses": { "200": { "description": "SSE stream established", "content": { "text/event-stream": { "schema": { "type": "object", "properties": { "event": { "type": "string", "enum": [ "run.created", "run.queued", "run.started", "run.streaming", "run.completed", "run.failed" ] }, "data": { "type": "object" } } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "Run not found" } } } } }, "components": { "securitySchemes": { "BearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "API Token" } }, "schemas": {}, "responses": { "Unauthorized": { "description": "Unauthorized - Invalid or missing authentication token", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Unauthorized" } } } } } }, "BadRequest": { "description": "Bad Request - Invalid parameters", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Invalid request" } } } } } }, "NotFound": { "description": "Resource not found", "content": { "application/json": { "schema": { "type": "object", "properties": { "error": { "type": "string", "example": "Not found" } } } } } } } } }