From 27e82f80f1473362dcc13a1daa08c1628b847208 Mon Sep 17 00:00:00 2001 From: d3m0k1d Date: Fri, 3 Apr 2026 23:01:59 +0300 Subject: [PATCH] docs: add docs for agents list --- backend/cmd/main.go | 2 -- backend/docs/docs.go | 45 ++++++++++++++++++++++++++++- backend/docs/swagger.json | 45 ++++++++++++++++++++++++++++- backend/docs/swagger.yaml | 29 ++++++++++++++++++- backend/internal/handlers/agents.go | 36 +++++++++-------------- 5 files changed, 129 insertions(+), 28 deletions(-) diff --git a/backend/cmd/main.go b/backend/cmd/main.go index 06bd01c..e93101b 100644 --- a/backend/cmd/main.go +++ b/backend/cmd/main.go @@ -50,8 +50,6 @@ func main() { agentsGroup := v1.Group("/agents") { agentsGroup.GET("", agents.List) - agentsGroup.GET("/:id", agents.GetByID) - agentsGroup.POST("", agents.Create) } } diff --git a/backend/docs/docs.go b/backend/docs/docs.go index a91df67..09a782f 100644 --- a/backend/docs/docs.go +++ b/backend/docs/docs.go @@ -14,7 +14,50 @@ const docTemplate = `{ }, "host": "{{.Host}}", "basePath": "{{.BasePath}}", - "paths": {}, + "paths": { + "/agents": { + "get": { + "description": "Returns a list of all agents currently connected via gRPC streaming", + "produces": [ + "application/json" + ], + "tags": [ + "agents" + ], + "summary": "Get connected agents", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/internal_handlers.AgentInfo" + } + } + } + } + } + } + }, + "definitions": { + "internal_handlers.AgentInfo": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "services": { + "type": "array", + "items": { + "type": "string" + } + }, + "token": { + "type": "string" + } + } + } + }, "securityDefinitions": { "Bearer": { "description": "Type \"Bearer\" followed by a space and the JWT token.", diff --git a/backend/docs/swagger.json b/backend/docs/swagger.json index 5173354..7dd312c 100644 --- a/backend/docs/swagger.json +++ b/backend/docs/swagger.json @@ -3,7 +3,50 @@ "info": { "contact": {} }, - "paths": {}, + "paths": { + "/agents": { + "get": { + "description": "Returns a list of all agents currently connected via gRPC streaming", + "produces": [ + "application/json" + ], + "tags": [ + "agents" + ], + "summary": "Get connected agents", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/internal_handlers.AgentInfo" + } + } + } + } + } + } + }, + "definitions": { + "internal_handlers.AgentInfo": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "services": { + "type": "array", + "items": { + "type": "string" + } + }, + "token": { + "type": "string" + } + } + } + }, "securityDefinitions": { "Bearer": { "description": "Type \"Bearer\" followed by a space and the JWT token.", diff --git a/backend/docs/swagger.yaml b/backend/docs/swagger.yaml index 0dbe493..1c3570d 100644 --- a/backend/docs/swagger.yaml +++ b/backend/docs/swagger.yaml @@ -1,6 +1,33 @@ +definitions: + internal_handlers.AgentInfo: + properties: + label: + type: string + services: + items: + type: string + type: array + token: + type: string + type: object info: contact: {} -paths: {} +paths: + /agents: + get: + description: Returns a list of all agents currently connected via gRPC streaming + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/internal_handlers.AgentInfo' + type: array + summary: Get connected agents + tags: + - agents securityDefinitions: Bearer: description: Type "Bearer" followed by a space and the JWT token. diff --git a/backend/internal/handlers/agents.go b/backend/internal/handlers/agents.go index 9bd6f4e..4848346 100644 --- a/backend/internal/handlers/agents.go +++ b/backend/internal/handlers/agents.go @@ -1,36 +1,26 @@ package handlers import ( - "net/http" - "github.com/gin-gonic/gin" + "net/http" ) -// AgentsGroup — группа хэндлеров для агентов type AgentsGroup struct { *Handlers } -// List GET /api/v1/agents +type AgentInfo struct { + Token string `json:"token"` + Label string `json:"label"` + Services []string `json:"services"` +} + +// @Summary Get connected agents +// @Description Returns a list of all agents currently connected via gRPC streaming +// @Tags agents +// @Produce json +// @Success 200 {array} AgentInfo +// @Router /agents [get] func (ag *AgentsGroup) List(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"message": "Agents list"}) } - -// GetByID GET /api/v1/agents/:id -func (ag *AgentsGroup) GetByID(c *gin.Context) { - id := c.Param("id") - - c.JSON(http.StatusOK, gin.H{"id": id}) -} - -// Create POST /api/v1/agents -func (ag *AgentsGroup) Create(c *gin.Context) { - var body struct { - Name string `json:"name" binding:"required"` - } - if err := c.ShouldBindJSON(&body); err != nil { - c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) - return - } - c.JSON(http.StatusCreated, gin.H{"name": body.Name}) -}