Files
ez-api/docs/swagger.json
RC-CHN 770a9fef2b feat: Add Swagger documentation for admin and master API endpoints
- Added Swagger documentation for the following admin endpoints:
  - Create a new master tenant
  - Create a new provider
  - Register a new model
  - List all models
  - Update a model
  - Force sync snapshot
  - Ingest logs

- Added Swagger documentation for the master endpoint:
  - Issue a child key

- Updated go.mod and go.sum to include necessary dependencies for Swagger.
2025-12-05 15:01:35 +08:00

663 lines
21 KiB
JSON

{
"swagger": "2.0",
"info": {
"description": "Management API for EZ-API Gateway system.",
"title": "EZ-API Control Plane",
"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": "0.0.1"
},
"host": "localhost:8080",
"basePath": "/",
"paths": {
"/admin/masters": {
"post": {
"security": [
{
"AdminAuth": []
}
],
"description": "Create a new master account (tenant)",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "Create a new master tenant",
"parameters": [
{
"description": "Master Info",
"name": "master",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/internal_api.CreateMasterRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/gin.H"
}
}
}
}
},
"/admin/models": {
"get": {
"security": [
{
"AdminAuth": []
}
],
"description": "Get a list of all registered models",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "List all models",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Model"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/gin.H"
}
}
}
},
"post": {
"security": [
{
"AdminAuth": []
}
],
"description": "Register a supported model with its capabilities",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "Register a new model",
"parameters": [
{
"description": "Model Info",
"name": "model",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github_com_ez-api_ez-api_internal_dto.ModelDTO"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Model"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/gin.H"
}
}
}
}
},
"/admin/models/{id}": {
"put": {
"security": [
{
"AdminAuth": []
}
],
"description": "Update an existing model's configuration",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "Update a model",
"parameters": [
{
"type": "integer",
"description": "Model ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Model Info",
"name": "model",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github_com_ez-api_ez-api_internal_dto.ModelDTO"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Model"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/gin.H"
}
}
}
}
},
"/admin/providers": {
"post": {
"security": [
{
"AdminAuth": []
}
],
"description": "Register a new upstream AI provider",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "Create a new provider",
"parameters": [
{
"description": "Provider Info",
"name": "provider",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github_com_ez-api_ez-api_internal_dto.ProviderDTO"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Provider"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/gin.H"
}
}
}
}
},
"/admin/sync/snapshot": {
"post": {
"security": [
{
"AdminAuth": []
}
],
"description": "Force full synchronization of DB state to Redis",
"produces": [
"application/json"
],
"tags": [
"admin"
],
"summary": "Force sync snapshot",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/gin.H"
}
}
}
}
},
"/logs": {
"post": {
"description": "Internal endpoint for ingesting logs from Balancer",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"system"
],
"summary": "Ingest logs",
"parameters": [
{
"description": "Log Record",
"name": "log",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.LogRecord"
}
}
],
"responses": {
"202": {
"description": "Accepted",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/gin.H"
}
}
}
}
},
"/v1/tokens": {
"post": {
"security": [
{
"MasterAuth": []
}
],
"description": "Issue a new access token (child key) for the authenticated master",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"master"
],
"summary": "Issue a child key",
"parameters": [
{
"description": "Key Request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/internal_api.IssueChildKeyRequest"
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/gin.H"
}
}
}
}
}
},
"definitions": {
"gin.H": {
"type": "object",
"additionalProperties": {}
},
"github_com_ez-api_ez-api_internal_dto.ModelDTO": {
"type": "object",
"properties": {
"context_window": {
"type": "integer"
},
"cost_per_token": {
"type": "number"
},
"max_output_tokens": {
"type": "integer"
},
"name": {
"type": "string"
},
"supports_fim": {
"type": "boolean"
},
"supports_functions": {
"type": "boolean"
},
"supports_tool_choice": {
"type": "boolean"
},
"supports_vision": {
"type": "boolean"
}
}
},
"github_com_ez-api_ez-api_internal_dto.ProviderDTO": {
"type": "object",
"properties": {
"api_key": {
"type": "string"
},
"base_url": {
"type": "string"
},
"group": {
"type": "string"
},
"models": {
"description": "List of supported model names",
"type": "array",
"items": {
"type": "string"
}
},
"name": {
"type": "string"
},
"type": {
"type": "string"
}
}
},
"github_com_ez-api_ez-api_internal_model.LogRecord": {
"type": "object",
"properties": {
"audit_reason": {
"type": "string"
},
"client_ip": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"deletedAt": {
"$ref": "#/definitions/gorm.DeletedAt"
},
"error_message": {
"type": "string"
},
"group": {
"type": "string"
},
"id": {
"type": "integer"
},
"key_id": {
"type": "integer"
},
"latency_ms": {
"type": "integer"
},
"model": {
"type": "string"
},
"request_body": {
"description": "optional, only when audit triggered",
"type": "string"
},
"request_size": {
"type": "integer"
},
"response_body": {
"description": "optional, only when audit triggered",
"type": "string"
},
"response_size": {
"type": "integer"
},
"status_code": {
"type": "integer"
},
"tokens_in": {
"type": "integer"
},
"tokens_out": {
"type": "integer"
},
"updatedAt": {
"type": "string"
}
}
},
"github_com_ez-api_ez-api_internal_model.Model": {
"type": "object",
"properties": {
"context_window": {
"type": "integer"
},
"cost_per_token": {
"type": "number"
},
"createdAt": {
"type": "string"
},
"deletedAt": {
"$ref": "#/definitions/gorm.DeletedAt"
},
"id": {
"type": "integer"
},
"max_output_tokens": {
"type": "integer"
},
"name": {
"type": "string"
},
"supports_fim": {
"type": "boolean"
},
"supports_functions": {
"type": "boolean"
},
"supports_tool_choice": {
"type": "boolean"
},
"supports_vision": {
"type": "boolean"
},
"updatedAt": {
"type": "string"
}
}
},
"github_com_ez-api_ez-api_internal_model.Provider": {
"type": "object",
"properties": {
"api_key": {
"type": "string"
},
"base_url": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"deletedAt": {
"$ref": "#/definitions/gorm.DeletedAt"
},
"group": {
"description": "routing group/tier",
"type": "string"
},
"id": {
"type": "integer"
},
"models": {
"description": "comma-separated list of supported models (e.g. \"gpt-4,gpt-3.5-turbo\")",
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"description": "openai, anthropic, etc.",
"type": "string"
},
"updatedAt": {
"type": "string"
}
}
},
"gorm.DeletedAt": {
"type": "object",
"properties": {
"time": {
"type": "string"
},
"valid": {
"description": "Valid is true if Time is not NULL",
"type": "boolean"
}
}
},
"internal_api.CreateMasterRequest": {
"type": "object",
"required": [
"group",
"name"
],
"properties": {
"global_qps": {
"type": "integer"
},
"group": {
"type": "string"
},
"max_child_keys": {
"type": "integer"
},
"name": {
"type": "string"
}
}
},
"internal_api.IssueChildKeyRequest": {
"type": "object",
"properties": {
"group": {
"type": "string"
},
"scopes": {
"type": "string"
}
}
}
},
"securityDefinitions": {
"AdminAuth": {
"type": "apiKey",
"name": "Authorization",
"in": "header"
},
"MasterAuth": {
"type": "apiKey",
"name": "Authorization",
"in": "header"
}
}
}