{ "swagger": "2.0", "info": { "description": "Baihu Panel API Server documentation.", "title": "Baihu Panel API", "termsOfService": "http://swagger.io/terms/", "contact": { "name": "API Support", "url": "http://www.swagger.io/support", "email": "support@swagger.io" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" }, "version": "1.0" }, "host": "localhost:8052", "basePath": "/api/v1", "paths": { "/env": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "分页获取环境变量列表,支持按名称筛选", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "环境变量" ], "summary": "获取环境变量列表", "parameters": [ { "type": "string", "description": "按名称模糊查询", "name": "name", "in": "query" }, { "type": "integer", "description": "页码", "name": "page", "in": "query" }, { "type": "integer", "description": "每页数量", "name": "page_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/definitions/utils.PaginationData" }, { "type": "object", "properties": { "list": { "type": "array", "items": { "$ref": "#/definitions/vo.EnvVO" } } } } ] } } } ] } } } }, "post": { "security": [ { "ApiKeyAuth": [] } ], "description": "创建新的环境变量", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "环境变量" ], "summary": "创建环境变量", "parameters": [ { "description": "环境变量信息", "name": "body", "in": "body", "required": true, "schema": { "type": "object" } } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/vo.EnvVO" } } } ] } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } } } } }, "/env/all": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "获取当前用户的所有环境变量(不分页)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "环境变量" ], "summary": "获取所有环境变量", "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/vo.EnvVO" } } } } ] } } } } }, "/env/{id}": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "根据 ID 获取环境变量详情", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "环境变量" ], "summary": "获取环境变量详情", "parameters": [ { "type": "string", "description": "环境变量ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/vo.EnvVO" } } } ] } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } } } }, "put": { "security": [ { "ApiKeyAuth": [] } ], "description": "根据 ID 更新环境变量信息", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "环境变量" ], "summary": "更新环境变量", "parameters": [ { "type": "string", "description": "环境变量ID", "name": "id", "in": "path", "required": true }, { "description": "更新信息", "name": "body", "in": "body", "required": true, "schema": { "type": "object" } } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/vo.EnvVO" } } } ] } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } } } }, "delete": { "security": [ { "ApiKeyAuth": [] } ], "description": "根据 ID 删除环境变量,支持强制删除", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "环境变量" ], "summary": "删除环境变量", "parameters": [ { "type": "string", "description": "环境变量ID", "name": "id", "in": "path", "required": true }, { "type": "boolean", "description": "是否强制删除", "name": "force", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } }, "409": { "description": "引用冲突", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/vo.TaskVO" } } } } ] } } } } }, "/env/{id}/tasks": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "获取引用了该环境变量的任务列表", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "环境变量" ], "summary": "获取关联任务", "parameters": [ { "type": "string", "description": "环境变量ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/vo.TaskVO" } } } } ] } } } } }, "/logs": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "分页获取任务日志列表,支持按任务 ID、任务名称、状态筛选", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "日志" ], "summary": "获取任务日志列表", "parameters": [ { "type": "string", "description": "任务 ID", "name": "task_id", "in": "query" }, { "type": "string", "description": "任务名称", "name": "task_name", "in": "query" }, { "type": "string", "description": "状态", "name": "status", "in": "query" }, { "type": "integer", "description": "页码", "name": "page", "in": "query" }, { "type": "integer", "description": "每页数量", "name": "page_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/definitions/utils.PaginationData" }, { "type": "object", "properties": { "list": { "type": "array", "items": { "$ref": "#/definitions/vo.TaskLogVO" } } } } ] } } } ] } } } } }, "/logs/clear": { "post": { "security": [ { "ApiKeyAuth": [] } ], "description": "清空所有日志或指定任务的日志", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "日志" ], "summary": "清空日志", "parameters": [ { "description": "清空范围信息", "name": "body", "in": "body", "schema": { "type": "object" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } } } } }, "/logs/{id}": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "根据 ID 获取任务日志详细内容(包含输出)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "日志" ], "summary": "获取日志详情", "parameters": [ { "type": "string", "description": "日志ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/vo.TaskLogVO" } } } ] } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } } } }, "delete": { "security": [ { "ApiKeyAuth": [] } ], "description": "根据 ID 删除单条任务日志", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "日志" ], "summary": "删除日志", "parameters": [ { "type": "string", "description": "日志ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } } } } }, "/tasks": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "分页获取任务列表,支持按名称、Agent ID、标签、类型筛选", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "任务" ], "summary": "获取任务列表", "parameters": [ { "type": "string", "description": "任务名称", "name": "name", "in": "query" }, { "type": "string", "description": "Agent ID", "name": "agent_id", "in": "query" }, { "type": "string", "description": "标签", "name": "tags", "in": "query" }, { "type": "string", "description": "任务类型", "name": "type", "in": "query" }, { "type": "integer", "description": "页码", "name": "page", "in": "query" }, { "type": "integer", "description": "每页数量", "name": "page_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/definitions/utils.PaginationData" }, { "type": "object", "properties": { "list": { "type": "array", "items": { "$ref": "#/definitions/vo.TaskVO" } } } } ] } } } ] } } } } }, "/tasks/stop/{logID}": { "post": { "security": [ { "ApiKeyAuth": [] } ], "description": "根据运行日志 ID 停止正在执行的任务", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "任务" ], "summary": "停止任务", "parameters": [ { "type": "string", "description": "运行日志ID", "name": "logID", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } } } } }, "/tasks/{id}": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "根据 ID 获取任务详情", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "任务" ], "summary": "获取任务详情", "parameters": [ { "type": "string", "description": "任务ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/vo.TaskVO" } } } ] } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } } } }, "put": { "security": [ { "ApiKeyAuth": [] } ], "description": "根据 ID 更新任务信息", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "任务" ], "summary": "更新任务", "parameters": [ { "type": "string", "description": "任务ID", "name": "id", "in": "path", "required": true }, { "description": "任务更新信息", "name": "body", "in": "body", "required": true, "schema": { "type": "object" } } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/vo.TaskVO" } } } ] } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } } } }, "delete": { "security": [ { "ApiKeyAuth": [] } ], "description": "根据 ID 删除任务", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "任务" ], "summary": "删除任务", "parameters": [ { "type": "string", "description": "任务ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/github_com_engigu_baihu-panel_internal_utils.Response" } } } } } }, "definitions": { "github_com_engigu_baihu-panel_internal_utils.Response": { "type": "object", "properties": { "code": { "type": "integer" }, "data": {}, "msg": { "type": "string" } } }, "utils.PaginationData": { "type": "object", "properties": { "list": {}, "page": { "type": "integer" }, "page_size": { "type": "integer" }, "total": { "type": "integer" } } }, "vo.EnvVO": { "type": "object", "properties": { "created_at": { "type": "string" }, "hidden": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "remark": { "type": "string" }, "updated_at": { "type": "string" }, "value": { "type": "string" } } }, "vo.TaskLogVO": { "type": "object", "properties": { "agent_id": { "type": "string" }, "command": { "type": "string" }, "created_at": { "type": "string" }, "duration": { "type": "integer" }, "end_time": { "type": "string" }, "error": { "type": "string" }, "exit_code": { "type": "integer" }, "id": { "type": "string" }, "output": { "type": "string" }, "start_time": { "type": "string" }, "status": { "type": "string" }, "task_id": { "type": "string" }, "task_name": { "type": "string" }, "task_type": { "type": "string" } } }, "vo.TaskVO": { "type": "object", "properties": { "agent_id": { "type": "string" }, "clean_config": { "type": "string" }, "command": { "type": "string" }, "config": { "type": "string" }, "created_at": { "type": "string" }, "enabled": { "type": "boolean" }, "envs": { "type": "string" }, "id": { "type": "string" }, "languages": { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "string" } } }, "last_run": { "type": "string" }, "name": { "type": "string" }, "next_run": { "type": "string" }, "random_range": { "type": "integer" }, "retry_count": { "type": "integer" }, "retry_interval": { "type": "integer" }, "schedule": { "type": "string" }, "tags": { "type": "string" }, "timeout": { "type": "integer" }, "trigger_type": { "type": "string" }, "type": { "type": "string" }, "updated_at": { "type": "string" }, "work_dir": { "type": "string" } } } }, "securityDefinitions": { "ApiKeyAuth": { "type": "apiKey", "name": "Authorization", "in": "header" } } }