{ "openapi": "3.0.0", "paths": { "/api/v1/health": { "get": { "operationId": "HealthController_getHealth", "parameters": [], "responses": { "200": { "description": "" } }, "tags": [ "health" ] } }, "/api/v1/tools": { "get": { "operationId": "ToolsController_getTools", "parameters": [ { "name": "query", "required": false, "in": "query", "description": "Search keyword", "schema": { "type": "string" } }, { "name": "category", "required": false, "in": "query", "description": "Category id or all", "schema": { "default": "all", "type": "string" } }, { "name": "sortBy", "required": false, "in": "query", "schema": { "default": "latest", "type": "string", "enum": [ "popular", "latest", "rating", "name" ] } }, { "name": "page", "required": false, "in": "query", "schema": { "default": 1, "type": "number" } }, { "name": "pageSize", "required": false, "in": "query", "schema": { "maximum": 50, "default": 6, "type": "number" } } ], "responses": { "200": { "description": "" } }, "summary": "Query tools", "tags": [ "public-tools" ] } }, "/api/v1/tools/{id}": { "get": { "operationId": "ToolsController_getToolDetail", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "summary": "Get tool detail", "tags": [ "public-tools" ] } }, "/api/v1/categories": { "get": { "operationId": "CategoriesController_getCategories", "parameters": [], "responses": { "200": { "description": "" } }, "summary": "Get categories with tool count", "tags": [ "public-categories" ] } }, "/api/v1/keywords/hot": { "get": { "operationId": "KeywordsController_getHotKeywords", "parameters": [], "responses": { "200": { "description": "" } }, "summary": "Get hot keywords", "tags": [ "public-keywords" ] } }, "/api/v1/overview": { "get": { "operationId": "OverviewController_getOverview", "parameters": [], "responses": { "200": { "description": "" } }, "summary": "Get site overview KPIs", "tags": [ "public-overview" ] } }, "/api/v1/tools/{id}/launch": { "post": { "operationId": "AccessController_launchTool", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LaunchToolDto" } } } }, "responses": { "201": { "description": "" } }, "summary": "Unified launch endpoint (web/download)", "tags": [ "public-launch" ] } }, "/api/v1/downloads/{ticket}": { "get": { "operationId": "DownloadsController_consumeTicket", "parameters": [ { "name": "ticket", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "summary": "Consume ticket and stream artifact file", "tags": [ "public-downloads" ] } }, "/api/v1/admin/auth/login": { "post": { "operationId": "AdminAuthController_login", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginDto" } } } }, "responses": { "201": { "description": "" } }, "summary": "Admin login", "tags": [ "admin-auth" ] } }, "/api/v1/admin/auth/refresh": { "post": { "operationId": "AdminAuthController_refresh", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshTokenDto" } } } }, "responses": { "201": { "description": "" } }, "summary": "Refresh admin token", "tags": [ "admin-auth" ] } }, "/api/v1/admin/auth/logout": { "post": { "operationId": "AdminAuthController_logout", "parameters": [], "responses": { "201": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Admin logout", "tags": [ "admin-auth" ] } }, "/api/v1/admin/auth/me": { "get": { "operationId": "AdminAuthController_me", "parameters": [], "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Get current admin profile", "tags": [ "admin-auth" ] } }, "/api/v1/admin/tools": { "get": { "operationId": "AdminToolsController_getTools", "parameters": [ { "name": "query", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "categoryId", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "status", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "draft", "published", "archived" ] } }, { "name": "accessMode", "required": false, "in": "query", "schema": { "type": "string", "enum": [ "web", "download" ] } }, { "name": "page", "required": false, "in": "query", "schema": { "default": 1, "type": "number" } }, { "name": "pageSize", "required": false, "in": "query", "schema": { "maximum": 50, "default": 10, "type": "number" } } ], "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Admin query tools", "tags": [ "admin-tools" ] }, "post": { "operationId": "AdminToolsController_createTool", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateToolDto" } } } }, "responses": { "201": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Admin create tool", "tags": [ "admin-tools" ] } }, "/api/v1/admin/tools/{id}": { "get": { "operationId": "AdminToolsController_getToolById", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Admin get tool detail", "tags": [ "admin-tools" ] }, "patch": { "operationId": "AdminToolsController_updateTool", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateToolDto" } } } }, "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Admin update tool", "tags": [ "admin-tools" ] }, "delete": { "operationId": "AdminToolsController_deleteTool", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Admin soft-delete tool", "tags": [ "admin-tools" ] } }, "/api/v1/admin/tools/{id}/status": { "patch": { "operationId": "AdminToolsController_updateToolStatus", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateToolStatusDto" } } } }, "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Admin update tool status", "tags": [ "admin-tools" ] } }, "/api/v1/admin/tools/{id}/access-mode": { "patch": { "operationId": "AdminToolsController_updateAccessMode", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateAccessModeDto" } } } }, "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Admin update tool access mode", "tags": [ "admin-tools" ] } }, "/api/v1/admin/tools/{id}/artifacts": { "post": { "operationId": "AdminArtifactsController_uploadArtifact", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "file": { "type": "string", "format": "binary" }, "version": { "type": "string", "example": "1.0.0" }, "releaseNotes": { "type": "string", "example": "Initial release" }, "isLatest": { "type": "boolean", "example": true } }, "required": [ "file", "version" ] } } } }, "responses": { "201": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Upload artifact file for tool", "tags": [ "admin-artifacts" ] }, "get": { "operationId": "AdminArtifactsController_listArtifacts", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "List tool artifacts", "tags": [ "admin-artifacts" ] } }, "/api/v1/admin/tools/{id}/artifacts/{artifactId}/latest": { "patch": { "operationId": "AdminArtifactsController_setLatestArtifact", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "artifactId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Set latest artifact", "tags": [ "admin-artifacts" ] } }, "/api/v1/admin/tools/{id}/artifacts/{artifactId}/status": { "patch": { "operationId": "AdminArtifactsController_updateArtifactStatus", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "artifactId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateArtifactStatusDto" } } } }, "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Update artifact status", "tags": [ "admin-artifacts" ] } }, "/api/v1/admin/tools/{id}/artifacts/{artifactId}": { "delete": { "operationId": "AdminArtifactsController_deleteArtifact", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "artifactId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Delete artifact metadata (soft via status=deleted)", "tags": [ "admin-artifacts" ] } }, "/api/v1/admin/audit-logs": { "get": { "operationId": "AdminAuditController_getAuditLogs", "parameters": [ { "name": "action", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "resourceType", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "adminUserId", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "page", "required": false, "in": "query", "schema": { "default": 1, "type": "number" } }, { "name": "pageSize", "required": false, "in": "query", "schema": { "maximum": 100, "default": 20, "type": "number" } } ], "responses": { "200": { "description": "" } }, "security": [ { "admin-access-token": [] } ], "summary": "Query admin audit logs", "tags": [ "admin-audit" ] } } }, "info": { "title": "ToolsShow Backend API", "description": "Generated OpenAPI document for ToolsShow backend.", "version": "1.0.0", "contact": {} }, "tags": [], "servers": [], "components": { "securitySchemes": { "admin-access-token": { "scheme": "bearer", "bearerFormat": "JWT", "type": "http" } }, "schemas": { "LaunchToolDto": { "type": "object", "properties": { "channel": { "type": "string", "example": "official" }, "clientVersion": { "type": "string", "example": "web-1.0.0" } } }, "LoginDto": { "type": "object", "properties": { "username": { "type": "string", "example": "admin" }, "password": { "type": "string", "example": "admin123456" } }, "required": [ "username", "password" ] }, "RefreshTokenDto": { "type": "object", "properties": { "refreshToken": { "type": "string" } }, "required": [ "refreshToken" ] }, "CreateToolDto": { "type": "object", "properties": { "name": { "type": "string" }, "categoryId": { "type": "string" }, "description": { "type": "string" }, "rating": { "type": "number", "minimum": 0, "maximum": 5, "default": 0 }, "tags": { "description": "Tag ids", "type": "array", "items": { "type": "string" } }, "features": { "type": "array", "items": { "type": "string" } }, "accessMode": { "type": "string", "enum": [ "web", "download" ], "default": "download" }, "openUrl": { "type": "string", "description": "Required when accessMode=web" }, "openInNewTab": { "type": "boolean", "default": true }, "status": { "type": "string", "enum": [ "draft", "published", "archived" ], "default": "draft" } }, "required": [ "name", "categoryId", "description", "accessMode" ] }, "UpdateToolDto": { "type": "object", "properties": { "name": { "type": "string" }, "categoryId": { "type": "string" }, "description": { "type": "string" }, "rating": { "type": "number", "minimum": 0, "maximum": 5, "default": 0 }, "tags": { "description": "Tag ids", "type": "array", "items": { "type": "string" } }, "features": { "type": "array", "items": { "type": "string" } }, "accessMode": { "type": "string", "enum": [ "web", "download" ], "default": "download" }, "openUrl": { "type": "string", "description": "Required when accessMode=web" }, "openInNewTab": { "type": "boolean", "default": true }, "status": { "type": "string", "enum": [ "draft", "published", "archived" ], "default": "draft" } } }, "UpdateToolStatusDto": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "draft", "published", "archived" ] } }, "required": [ "status" ] }, "UpdateAccessModeDto": { "type": "object", "properties": { "accessMode": { "type": "string", "enum": [ "web", "download" ] }, "openUrl": { "type": "string", "description": "Required when accessMode=web" }, "openInNewTab": { "type": "boolean", "default": true } }, "required": [ "accessMode" ] }, "UpdateArtifactStatusDto": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "active", "deprecated", "deleted" ] } }, "required": [ "status" ] } } } }