mirror of
https://github.com/langbot-app/LangBot.git
synced 2025-11-25 03:15:06 +08:00
* Initial plan * feat: Add API key authentication system backend Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * feat: Add API key management UI in frontend sidebar Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * fix: Correct import paths in API controller groups Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * fix: Address code review feedback - add i18n and validation Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * refactor: Enable API key auth on existing endpoints instead of creating separate service API - Added USER_TOKEN_OR_API_KEY auth type that accepts both authentication methods - Removed separate /api/service/v1/models endpoints - Updated existing endpoints (models, bots, pipelines) to accept API keys - External services can now use API keys to access all existing LangBot APIs - Updated documentation to reflect unified API approach Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * docs: Add OpenAPI specification for API key authenticated endpoints Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * chore: rename openapi spec * perf: ui and i18n * fix: ui bug * chore: tidy docs * chore: fix linter errors --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> Co-authored-by: Junyan Qin <rockchinq@gmail.com>
1944 lines
48 KiB
JSON
1944 lines
48 KiB
JSON
{
|
|
"openapi": "3.0.3",
|
|
"info": {
|
|
"title": "LangBot API with API Key Authentication",
|
|
"description": "LangBot external service API documentation. These endpoints support API Key authentication \nfor external systems to programmatically access LangBot resources.\n\n**Authentication Methods:**\n- User Token (via `Authorization: Bearer <token>`)\n- API Key (via `X-API-Key: <key>` or `Authorization: Bearer <key>`)\n\nAll endpoints documented here accept BOTH authentication methods.\n",
|
|
"version": "4.4.1",
|
|
"contact": {
|
|
"name": "LangBot",
|
|
"url": "https://langbot.app"
|
|
},
|
|
"license": {
|
|
"name": "AGPL-3.0",
|
|
"url": "https://github.com/langbot-app/LangBot/blob/master/LICENSE"
|
|
}
|
|
},
|
|
"servers": [
|
|
{
|
|
"url": "http://localhost:5300",
|
|
"description": "Local development server"
|
|
}
|
|
],
|
|
"tags": [
|
|
{
|
|
"name": "Models - LLM",
|
|
"description": "Large Language Model management operations"
|
|
},
|
|
{
|
|
"name": "Models - Embedding",
|
|
"description": "Embedding model management operations"
|
|
},
|
|
{
|
|
"name": "Bots",
|
|
"description": "Bot instance management operations"
|
|
},
|
|
{
|
|
"name": "Pipelines",
|
|
"description": "Pipeline configuration management operations"
|
|
}
|
|
],
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"paths": {
|
|
"/api/v1/provider/models/llm": {
|
|
"get": {
|
|
"tags": [
|
|
"Models - LLM"
|
|
],
|
|
"summary": "List all LLM models",
|
|
"description": "Retrieve a list of all configured LLM models",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"models": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/LLMModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Models - LLM"
|
|
],
|
|
"summary": "Create a new LLM model",
|
|
"description": "Create and configure a new LLM model",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LLMModelCreate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model created successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"uuid": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"example": "550e8400-e29b-41d4-a716-446655440000"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"500": {
|
|
"$ref": "#/components/responses/InternalServerError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/provider/models/llm/{model_uuid}": {
|
|
"get": {
|
|
"tags": [
|
|
"Models - LLM"
|
|
],
|
|
"summary": "Get a specific LLM model",
|
|
"description": "Retrieve details of a specific LLM model by UUID",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ModelUUID"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"model": {
|
|
"$ref": "#/components/schemas/LLMModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Models - LLM"
|
|
],
|
|
"summary": "Update an LLM model",
|
|
"description": "Update the configuration of an existing LLM model",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ModelUUID"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/LLMModelUpdate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model updated successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SuccessResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Models - LLM"
|
|
],
|
|
"summary": "Delete an LLM model",
|
|
"description": "Remove an LLM model from the system",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ModelUUID"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model deleted successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SuccessResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/provider/models/llm/{model_uuid}/test": {
|
|
"post": {
|
|
"tags": [
|
|
"Models - LLM"
|
|
],
|
|
"summary": "Test an LLM model",
|
|
"description": "Test the connectivity and functionality of an LLM model",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ModelUUID"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"description": "Model configuration to test"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model test successful",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SuccessResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
},
|
|
"500": {
|
|
"$ref": "#/components/responses/InternalServerError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/provider/models/embedding": {
|
|
"get": {
|
|
"tags": [
|
|
"Models - Embedding"
|
|
],
|
|
"summary": "List all embedding models",
|
|
"description": "Retrieve a list of all configured embedding models",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"models": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/EmbeddingModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Models - Embedding"
|
|
],
|
|
"summary": "Create a new embedding model",
|
|
"description": "Create and configure a new embedding model",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EmbeddingModelCreate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model created successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"uuid": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/provider/models/embedding/{model_uuid}": {
|
|
"get": {
|
|
"tags": [
|
|
"Models - Embedding"
|
|
],
|
|
"summary": "Get a specific embedding model",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ModelUUID"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"model": {
|
|
"$ref": "#/components/schemas/EmbeddingModel"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Models - Embedding"
|
|
],
|
|
"summary": "Update an embedding model",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ModelUUID"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/EmbeddingModelUpdate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model updated successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SuccessResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Models - Embedding"
|
|
],
|
|
"summary": "Delete an embedding model",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ModelUUID"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model deleted successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SuccessResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/provider/models/embedding/{model_uuid}/test": {
|
|
"post": {
|
|
"tags": [
|
|
"Models - Embedding"
|
|
],
|
|
"summary": "Test an embedding model",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/components/parameters/ModelUUID"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Model test successful",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SuccessResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/platform/bots": {
|
|
"get": {
|
|
"tags": [
|
|
"Bots"
|
|
],
|
|
"summary": "List all bots",
|
|
"description": "Retrieve a list of all configured bot instances",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bots": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Bot"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Bots"
|
|
],
|
|
"summary": "Create a new bot",
|
|
"description": "Create and configure a new bot instance",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BotCreate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Bot created successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"uuid": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/platform/bots/{bot_uuid}": {
|
|
"get": {
|
|
"tags": [
|
|
"Bots"
|
|
],
|
|
"summary": "Get a specific bot",
|
|
"description": "Retrieve details of a specific bot instance",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "bot_uuid",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"description": "Bot UUID"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bot": {
|
|
"$ref": "#/components/schemas/Bot"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Bots"
|
|
],
|
|
"summary": "Update a bot",
|
|
"description": "Update the configuration of an existing bot instance",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "bot_uuid",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BotUpdate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Bot updated successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SuccessResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Bots"
|
|
],
|
|
"summary": "Delete a bot",
|
|
"description": "Remove a bot instance from the system",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "bot_uuid",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Bot deleted successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SuccessResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/platform/bots/{bot_uuid}/logs": {
|
|
"post": {
|
|
"tags": [
|
|
"Bots"
|
|
],
|
|
"summary": "Get bot event logs",
|
|
"description": "Retrieve event logs for a specific bot",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "bot_uuid",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"from_index": {
|
|
"type": "integer",
|
|
"default": -1,
|
|
"description": "Starting index for logs (-1 for latest)"
|
|
},
|
|
"max_count": {
|
|
"type": "integer",
|
|
"default": 10,
|
|
"description": "Maximum number of logs to retrieve"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"logs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"total_count": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/pipelines": {
|
|
"get": {
|
|
"tags": [
|
|
"Pipelines"
|
|
],
|
|
"summary": "List all pipelines",
|
|
"description": "Retrieve a list of all configured pipelines",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "sort_by",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": "created_at"
|
|
},
|
|
"description": "Field to sort by"
|
|
},
|
|
{
|
|
"name": "sort_order",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ASC",
|
|
"DESC"
|
|
],
|
|
"default": "DESC"
|
|
},
|
|
"description": "Sort order"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pipelines": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Pipeline"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Pipelines"
|
|
],
|
|
"summary": "Create a new pipeline",
|
|
"description": "Create and configure a new pipeline",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PipelineCreate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Pipeline created successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"uuid": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/pipelines/_/metadata": {
|
|
"get": {
|
|
"tags": [
|
|
"Pipelines"
|
|
],
|
|
"summary": "Get pipeline metadata",
|
|
"description": "Retrieve metadata and configuration options for pipelines",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"configs": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/pipelines/{pipeline_uuid}": {
|
|
"get": {
|
|
"tags": [
|
|
"Pipelines"
|
|
],
|
|
"summary": "Get a specific pipeline",
|
|
"description": "Retrieve details of a specific pipeline",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "pipeline_uuid",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pipeline": {
|
|
"$ref": "#/components/schemas/Pipeline"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Pipelines"
|
|
],
|
|
"summary": "Update a pipeline",
|
|
"description": "Update the configuration of an existing pipeline",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "pipeline_uuid",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PipelineUpdate"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Pipeline updated successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SuccessResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Pipelines"
|
|
],
|
|
"summary": "Delete a pipeline",
|
|
"description": "Remove a pipeline from the system",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "pipeline_uuid",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Pipeline deleted successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SuccessResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/pipelines/{pipeline_uuid}/extensions": {
|
|
"get": {
|
|
"tags": [
|
|
"Pipelines"
|
|
],
|
|
"summary": "Get pipeline extensions",
|
|
"description": "Retrieve extensions and plugins configured for a pipeline",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "pipeline_uuid",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful response",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Pipelines"
|
|
],
|
|
"summary": "Update pipeline extensions",
|
|
"description": "Update the extensions configuration for a pipeline",
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
},
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "pipeline_uuid",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Extensions updated successfully",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SuccessResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"$ref": "#/components/responses/UnauthorizedError"
|
|
},
|
|
"404": {
|
|
"$ref": "#/components/responses/NotFoundError"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"securitySchemes": {
|
|
"ApiKeyAuth": {
|
|
"type": "apiKey",
|
|
"in": "header",
|
|
"name": "X-API-Key",
|
|
"description": "API Key authentication using X-API-Key header.\nExample: `X-API-Key: lbk_your_api_key_here`\n"
|
|
},
|
|
"BearerAuth": {
|
|
"type": "http",
|
|
"scheme": "bearer",
|
|
"description": "Bearer token authentication. Can be either a user JWT token or an API key.\nExample: `Authorization: Bearer <token_or_key>`\n"
|
|
}
|
|
},
|
|
"parameters": {
|
|
"ModelUUID": {
|
|
"name": "model_uuid",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"description": "Model UUID"
|
|
}
|
|
},
|
|
"schemas": {
|
|
"LLMModel": {
|
|
"type": "object",
|
|
"properties": {
|
|
"uuid": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "GPT-4"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"example": "OpenAI GPT-4 model"
|
|
},
|
|
"requester": {
|
|
"type": "string",
|
|
"example": "openai-chat-completions"
|
|
},
|
|
"requester_config": {
|
|
"type": "object",
|
|
"properties": {
|
|
"model": {
|
|
"type": "string",
|
|
"example": "gpt-4"
|
|
},
|
|
"args": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"api_keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"abilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"example": [
|
|
"chat",
|
|
"vision"
|
|
]
|
|
},
|
|
"extra_args": {
|
|
"type": "object"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"updated_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
},
|
|
"LLMModelCreate": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"requester",
|
|
"requester_config",
|
|
"api_keys"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"requester": {
|
|
"type": "string"
|
|
},
|
|
"requester_config": {
|
|
"type": "object"
|
|
},
|
|
"api_keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"abilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"extra_args": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"LLMModelUpdate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"requester_config": {
|
|
"type": "object"
|
|
},
|
|
"api_keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"abilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"extra_args": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"EmbeddingModel": {
|
|
"type": "object",
|
|
"properties": {
|
|
"uuid": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"requester": {
|
|
"type": "string"
|
|
},
|
|
"requester_config": {
|
|
"type": "object"
|
|
},
|
|
"api_keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"extra_args": {
|
|
"type": "object"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"updated_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
},
|
|
"EmbeddingModelCreate": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"requester",
|
|
"requester_config",
|
|
"api_keys"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"requester": {
|
|
"type": "string"
|
|
},
|
|
"requester_config": {
|
|
"type": "object"
|
|
},
|
|
"api_keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"extra_args": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"EmbeddingModelUpdate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"requester_config": {
|
|
"type": "object"
|
|
},
|
|
"api_keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"extra_args": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"Bot": {
|
|
"type": "object",
|
|
"properties": {
|
|
"uuid": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"adapter": {
|
|
"type": "string",
|
|
"example": "telegram"
|
|
},
|
|
"config": {
|
|
"type": "object"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"updated_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
},
|
|
"BotCreate": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"adapter",
|
|
"config"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"adapter": {
|
|
"type": "string"
|
|
},
|
|
"config": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"BotUpdate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"config": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"Pipeline": {
|
|
"type": "object",
|
|
"properties": {
|
|
"uuid": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"config": {
|
|
"type": "object"
|
|
},
|
|
"is_default": {
|
|
"type": "boolean"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"updated_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
},
|
|
"PipelineCreate": {
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"config"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"config": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"PipelineUpdate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"config": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"SuccessResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 0
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "ok"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"ErrorResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": -1
|
|
},
|
|
"msg": {
|
|
"type": "string",
|
|
"example": "Error message"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"UnauthorizedError": {
|
|
"description": "Authentication required or invalid credentials",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
},
|
|
"examples": {
|
|
"no_auth": {
|
|
"value": {
|
|
"code": -1,
|
|
"msg": "No valid authentication provided (user token or API key required)"
|
|
}
|
|
},
|
|
"invalid_key": {
|
|
"value": {
|
|
"code": -1,
|
|
"msg": "Invalid API key"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"NotFoundError": {
|
|
"description": "Resource not found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
},
|
|
"example": {
|
|
"code": -1,
|
|
"msg": "Resource not found"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"InternalServerError": {
|
|
"description": "Internal server error",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponse"
|
|
},
|
|
"example": {
|
|
"code": -2,
|
|
"msg": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |