mirror of
https://github.com/EZ-Api/ez-api.git
synced 2026-01-13 17:47:51 +00:00
- 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.
688 lines
22 KiB
Go
688 lines
22 KiB
Go
// Package docs Code generated by swaggo/swag. DO NOT EDIT
|
|
package docs
|
|
|
|
import "github.com/swaggo/swag"
|
|
|
|
const docTemplate = `{
|
|
"schemes": {{ marshal .Schemes }},
|
|
"swagger": "2.0",
|
|
"info": {
|
|
"description": "{{escape .Description}}",
|
|
"title": "{{.Title}}",
|
|
"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": "{{.Version}}"
|
|
},
|
|
"host": "{{.Host}}",
|
|
"basePath": "{{.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"
|
|
}
|
|
}
|
|
}`
|
|
|
|
// SwaggerInfo holds exported Swagger Info so clients can modify it
|
|
var SwaggerInfo = &swag.Spec{
|
|
Version: "0.0.1",
|
|
Host: "localhost:8080",
|
|
BasePath: "/",
|
|
Schemes: []string{},
|
|
Title: "EZ-API Control Plane",
|
|
Description: "Management API for EZ-API Gateway system.",
|
|
InfoInstanceName: "swagger",
|
|
SwaggerTemplate: docTemplate,
|
|
LeftDelim: "{{",
|
|
RightDelim: "}}",
|
|
}
|
|
|
|
func init() {
|
|
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
|
|
}
|