// Package swagger Code generated by swaggo/swag. DO NOT EDIT package swagger 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": { "/about": { "get": { "description": "Returns system metadata for display on an about page", "produces": [ "application/json" ], "tags": [ "Public" ], "summary": "Get system information", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AboutResponse" } } } } }, "/admin/alerts": { "get": { "security": [ { "AdminAuth": [] } ], "description": "List system alerts with optional filters", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "List alerts", "parameters": [ { "type": "integer", "description": "limit (default 50, max 200)", "name": "limit", "in": "query" }, { "type": "integer", "description": "offset", "name": "offset", "in": "query" }, { "type": "string", "description": "filter by status (active, acknowledged, resolved, dismissed)", "name": "status", "in": "query" }, { "type": "string", "description": "filter by severity (info, warning, critical)", "name": "severity", "in": "query" }, { "type": "string", "description": "filter by type (rate_limit, error_spike, quota_exceeded, key_disabled, key_expired, provider_down, traffic_spike)", "name": "type", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.ListAlertsResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "post": { "security": [ { "AdminAuth": [] } ], "description": "Create a new system alert", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Create alert", "parameters": [ { "description": "Alert data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.CreateAlertRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/internal_api.AlertView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/alerts/stats": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Get alert count statistics by status and severity", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Alert statistics", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AlertStats" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/alerts/thresholds": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Get current alert threshold configuration for traffic spike detection", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get alert thresholds", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AlertThresholdView" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Update alert threshold configuration for traffic spike detection", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update alert thresholds", "parameters": [ { "description": "Threshold configuration", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.UpdateAlertThresholdsRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AlertThresholdView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/alerts/{id}": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Get a single alert by ID", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get alert", "parameters": [ { "type": "integer", "description": "Alert ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AlertView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gin.H" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Dismiss an alert (soft delete)", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Dismiss alert", "parameters": [ { "type": "integer", "description": "Alert ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "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/alerts/{id}/ack": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Mark an alert as acknowledged", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Acknowledge alert", "parameters": [ { "type": "integer", "description": "Alert ID", "name": "id", "in": "path", "required": true }, { "description": "Ack data", "name": "request", "in": "body", "schema": { "$ref": "#/definitions/internal_api.AckAlertRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AlertView" } }, "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/alerts/{id}/resolve": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Mark an alert as resolved", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Resolve alert", "parameters": [ { "type": "integer", "description": "Alert ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AlertView" } }, "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/api-keys": { "get": { "security": [ { "AdminAuth": [] } ], "description": "List API keys with optional filters", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "List API keys", "parameters": [ { "type": "integer", "description": "page (1-based)", "name": "page", "in": "query" }, { "type": "integer", "description": "limit (default 50, max 200)", "name": "limit", "in": "query" }, { "type": "integer", "description": "filter by group_id", "name": "group_id", "in": "query" }, { "type": "string", "description": "filter by status (active, suspended, auto_disabled, manual_disabled)", "name": "status", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.APIKey" } } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "post": { "security": [ { "AdminAuth": [] } ], "description": "Create an API key for a provider group", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Create an API key", "parameters": [ { "description": "API key payload", "name": "key", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_dto.APIKeyDTO" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.APIKey" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/api-keys/batch": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Batch delete or status update for api keys", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Batch api keys", "parameters": [ { "description": "Batch payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.BatchActionRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.BatchResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/api-keys/{id}": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Get an API key by id", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get API key", "parameters": [ { "type": "integer", "description": "APIKey ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.APIKey" } }, "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" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Update an API key", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update API key", "parameters": [ { "type": "integer", "description": "APIKey ID", "name": "id", "in": "path", "required": true }, { "description": "API key payload", "name": "key", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_dto.APIKeyDTO" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.APIKey" } }, "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" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Delete an API key", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Delete API key", "parameters": [ { "type": "integer", "description": "APIKey ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "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/apikey-stats/summary": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Aggregate APIKey success/failure stats across all provider groups", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "APIKey stats summary (admin)", "parameters": [ { "type": "integer", "description": "Start time (unix seconds)", "name": "since", "in": "query" }, { "type": "integer", "description": "End time (unix seconds)", "name": "until", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.APIKeyStatsSummaryResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/bindings": { "get": { "security": [ { "AdminAuth": [] } ], "description": "List all configured bindings", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "List bindings", "parameters": [ { "type": "integer", "description": "page (1-based)", "name": "page", "in": "query" }, { "type": "integer", "description": "limit (default 50, max 200)", "name": "limit", "in": "query" }, { "type": "string", "description": "search by namespace/public_model", "name": "search", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Binding" } } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "post": { "security": [ { "AdminAuth": [] } ], "description": "Create a new (namespace, public_model) binding to a provider group and selector", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Create a new binding", "parameters": [ { "description": "Binding Info", "name": "binding", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_dto.BindingDTO" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Binding" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/bindings/batch": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Batch delete or status update for bindings", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Batch bindings", "parameters": [ { "description": "Batch payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.BatchActionRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.BatchResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/bindings/{id}": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Get a binding by id", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get a binding", "parameters": [ { "type": "integer", "description": "Binding ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Binding" } }, "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" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Update an existing binding", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update a binding", "parameters": [ { "type": "integer", "description": "Binding ID", "name": "id", "in": "path", "required": true }, { "description": "Binding Info", "name": "binding", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_dto.BindingDTO" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Binding" } }, "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" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Delete a binding by id and rebuild bindings snapshot", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Delete a binding", "parameters": [ { "type": "integer", "description": "Binding ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "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/dashboard/summary": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Returns aggregated metrics for dashboard display including requests, tokens, latency, masters, keys, and provider keys statistics", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Dashboard summary", "parameters": [ { "type": "string", "description": "time period: today, week, month, last7d, last30d, all", "name": "period", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "since", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "until", "in": "query" }, { "type": "boolean", "description": "include trend data comparing to previous period", "name": "include_trends", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.DashboardSummaryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/features": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Returns all feature flags stored in Redis (meta:features)", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "List feature flags", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Updates selected feature flags (meta:features). Values are stored as strings.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update feature flags", "parameters": [ { "description": "Feature map", "name": "request", "in": "body", "required": true, "schema": { "type": "object" } } ], "responses": { "200": { "description": "OK", "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/ip-bans": { "get": { "security": [ { "AdminAuth": [] } ], "description": "List all global IP/CIDR ban rules", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin", "ip-bans" ], "summary": "List IP bans", "parameters": [ { "type": "string", "description": "Filter by status (active, expired)", "name": "status", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/internal_api.IPBanView" } } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "post": { "security": [ { "AdminAuth": [] } ], "description": "Create a new global IP/CIDR ban rule", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin", "ip-bans" ], "summary": "Create an IP ban", "parameters": [ { "description": "IP Ban Info", "name": "ban", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.CreateIPBanRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/internal_api.IPBanView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/ip-bans/{id}": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Get a single global IP/CIDR ban rule by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin", "ip-bans" ], "summary": "Get an IP ban", "parameters": [ { "type": "integer", "description": "IP Ban ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.IPBanView" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Update a global IP/CIDR ban rule", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin", "ip-bans" ], "summary": "Update an IP ban", "parameters": [ { "type": "integer", "description": "IP Ban ID", "name": "id", "in": "path", "required": true }, { "description": "IP Ban Update", "name": "ban", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.UpdateIPBanRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.IPBanView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gin.H" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Delete a global IP/CIDR ban rule", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin", "ip-bans" ], "summary": "Delete an IP ban", "parameters": [ { "type": "integer", "description": "IP Ban ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/keys/{id}/access": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Returns key default_namespace and namespaces", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get key access settings", "parameters": [ { "type": "integer", "description": "Key ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AccessResponse" } }, "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" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Updates key default_namespace and namespaces and syncs to Redis", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update key access settings", "parameters": [ { "type": "integer", "description": "Key ID", "name": "id", "in": "path", "required": true }, { "description": "Access settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.UpdateAccessRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AccessResponse" } }, "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/logs": { "get": { "security": [ { "AdminAuth": [] } ], "description": "List request logs with basic filtering/pagination. Returns full log records including request_body.", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "List logs (admin)", "parameters": [ { "type": "integer", "description": "limit (default 50, max 200)", "name": "limit", "in": "query" }, { "type": "integer", "description": "offset", "name": "offset", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "since", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "until", "in": "query" }, { "type": "integer", "description": "key id", "name": "key_id", "in": "query" }, { "type": "string", "description": "route group", "name": "group", "in": "query" }, { "type": "string", "description": "model", "name": "model", "in": "query" }, { "type": "integer", "description": "status code", "name": "status_code", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.ListLogsResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Delete logs before a given timestamp with optional filters", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Delete logs (admin)", "parameters": [ { "description": "Delete filters", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.DeleteLogsRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.DeleteLogsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/logs/stats": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Aggregate log stats with basic filtering. Use group_by param for grouped statistics (model/day/month/hour/minute). Without group_by returns LogStatsResponse; with group_by returns GroupedStatsResponse. Note: minute-level aggregation is limited to 6-hour time ranges.", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Log stats (admin)", "parameters": [ { "type": "integer", "description": "unix seconds", "name": "since", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "until", "in": "query" }, { "enum": [ "model", "day", "month", "hour", "minute" ], "type": "string", "description": "group by dimension: model, day, month, hour, minute. Returns GroupedStatsResponse when specified.", "name": "group_by", "in": "query" } ], "responses": { "200": { "description": "Grouped stats (when group_by is specified)", "schema": { "$ref": "#/definitions/internal_api.GroupedStatsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/logs/stats/traffic-chart": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Get time × model aggregated data for stacked traffic charts. Returns a shared time axis under ` + "`" + `x` + "`" + ` and per-model series arrays aligned to that axis. Models outside top_n are aggregated under the series name \"other\".", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Traffic chart data (admin)", "parameters": [ { "enum": [ "hour", "minute" ], "type": "string", "description": "Time granularity: hour (default) or minute", "name": "granularity", "in": "query" }, { "type": "integer", "description": "Start time (unix seconds), defaults to 24h ago", "name": "since", "in": "query" }, { "type": "integer", "description": "End time (unix seconds), defaults to now", "name": "until", "in": "query" }, { "type": "integer", "description": "Number of top models to return (1-20), defaults to 5", "name": "top_n", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.TrafficChartResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/logs/webhook": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Returns current webhook notification config", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get log webhook config", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_service.LogWebhookConfig" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Updates webhook notification config", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update log webhook config", "parameters": [ { "description": "Webhook config", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_service.LogWebhookConfig" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_service.LogWebhookConfig" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/masters": { "get": { "security": [ { "AdminAuth": [] } ], "description": "List all master tenants", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "List masters", "parameters": [ { "type": "integer", "description": "page (1-based)", "name": "page", "in": "query" }, { "type": "integer", "description": "limit (default 50, max 200)", "name": "limit", "in": "query" }, { "type": "string", "description": "search by name/group", "name": "search", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/internal_api.MasterView" } } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "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/masters/batch": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Batch delete or status update for masters", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Batch masters", "parameters": [ { "description": "Batch payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.BatchActionRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.BatchResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/masters/{id}": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Get a master tenant by id", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get master", "parameters": [ { "type": "integer", "description": "Master ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.MasterView" } }, "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" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Update master fields; optionally propagate group to existing keys", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update master", "parameters": [ { "type": "integer", "description": "Master ID", "name": "id", "in": "path", "required": true }, { "description": "Update payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.UpdateMasterRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.MasterView" } }, "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" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Suspends a master and revokes all existing keys by bumping epoch and syncing to Redis", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Delete (revoke) master", "parameters": [ { "type": "integer", "description": "Master ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "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/masters/{id}/access": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Returns master default_namespace and namespaces", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get master access settings", "parameters": [ { "type": "integer", "description": "Master ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AccessResponse" } }, "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" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Updates master default_namespace and namespaces; optionally propagate to existing keys", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update master access settings", "parameters": [ { "type": "integer", "description": "Master ID", "name": "id", "in": "path", "required": true }, { "description": "Access settings", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.UpdateAccessRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AccessResponse" } }, "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/masters/{id}/keys": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Issue a new access token (child key) for a specified master. The key still belongs to the master; issuer is recorded as admin for audit.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Issue a child key on behalf of a master", "parameters": [ { "type": "integer", "description": "Master ID", "name": "id", "in": "path", "required": true }, { "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" } }, "403": { "description": "Forbidden", "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/masters/{id}/manage": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Freeze or unfreeze a master tenant", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Manage master status", "parameters": [ { "type": "integer", "description": "Master ID", "name": "id", "in": "path", "required": true }, { "description": "Action", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.ManageMasterRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.MasterView" } }, "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/masters/{id}/realtime": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Return realtime counters for the specified master", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Master realtime stats (admin)", "parameters": [ { "type": "integer", "description": "Master ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.MasterRealtimeView" } }, "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/model-registry/check": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Checks models.dev commit SHA for a ref and indicates whether refresh is needed (does not apply changes)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Check model registry upstream version", "parameters": [ { "description": "optional override ref", "name": "body", "in": "body", "schema": { "$ref": "#/definitions/internal_api.refreshModelRegistryRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_service.ModelRegistryCheckResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/model-registry/refresh": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Fetches models.dev, computes per-binding capabilities, and updates Redis meta:models", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Refresh model registry from models.dev", "parameters": [ { "description": "optional override ref", "name": "body", "in": "body", "schema": { "$ref": "#/definitions/internal_api.refreshModelRegistryRequest" } } ], "responses": { "200": { "description": "OK", "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/model-registry/rollback": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Rollback meta:models to previous cached last-good version", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Rollback model registry", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/model-registry/status": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Returns Redis meta and local last-good cache info for model capability registry", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get model registry status", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_service.ModelRegistryStatus" } }, "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", "parameters": [ { "type": "integer", "description": "page (1-based)", "name": "page", "in": "query" }, { "type": "integer", "description": "limit (default 50, max 200)", "name": "limit", "in": "query" }, { "type": "string", "description": "search by name/kind", "name": "search", "in": "query" } ], "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/batch": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Batch delete for models", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Batch models", "parameters": [ { "description": "Batch payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.BatchActionRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.BatchResponse" } }, "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" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Delete a model by id", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Delete a model", "parameters": [ { "type": "integer", "description": "Model ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "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/namespaces": { "get": { "security": [ { "AdminAuth": [] } ], "description": "List all namespaces", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "List namespaces", "parameters": [ { "type": "integer", "description": "page (1-based)", "name": "page", "in": "query" }, { "type": "integer", "description": "limit (default 50, max 200)", "name": "limit", "in": "query" }, { "type": "string", "description": "search by name/description", "name": "search", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Namespace" } } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "post": { "security": [ { "AdminAuth": [] } ], "description": "Create a namespace for bindings", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Create namespace", "parameters": [ { "description": "Namespace payload", "name": "namespace", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.NamespaceRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Namespace" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/namespaces/{id}": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Get a namespace by id", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get namespace", "parameters": [ { "type": "integer", "description": "Namespace ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Namespace" } }, "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" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Update a namespace", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update namespace", "parameters": [ { "type": "integer", "description": "Namespace ID", "name": "id", "in": "path", "required": true }, { "description": "Update payload", "name": "namespace", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.UpdateNamespaceRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.Namespace" } }, "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" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Delete a namespace and its bindings", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Delete namespace", "parameters": [ { "type": "integer", "description": "Namespace ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "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/operation-logs": { "get": { "security": [ { "AdminAuth": [] } ], "description": "List admin operation logs", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "List operation logs", "parameters": [ { "type": "integer", "description": "page (1-based)", "name": "page", "in": "query" }, { "type": "integer", "description": "limit (default 50, max 200)", "name": "limit", "in": "query" }, { "type": "string", "description": "search by actor/method/path", "name": "search", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/internal_api.OperationLogView" } } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/provider-groups": { "get": { "security": [ { "AdminAuth": [] } ], "description": "List all provider groups", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "List provider groups", "parameters": [ { "type": "integer", "description": "page (1-based)", "name": "page", "in": "query" }, { "type": "integer", "description": "limit (default 50, max 200)", "name": "limit", "in": "query" }, { "type": "string", "description": "search by name/type", "name": "search", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.ProviderGroup" } } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "post": { "security": [ { "AdminAuth": [] } ], "description": "Create a provider group definition", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Create a provider group", "parameters": [ { "description": "Provider group payload", "name": "group", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_dto.ProviderGroupDTO" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.ProviderGroup" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/provider-groups/{id}": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Get a provider group by id", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get provider group", "parameters": [ { "type": "integer", "description": "ProviderGroup ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.ProviderGroup" } }, "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" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Update a provider group", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update provider group", "parameters": [ { "type": "integer", "description": "ProviderGroup ID", "name": "id", "in": "path", "required": true }, { "description": "Provider group payload", "name": "group", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_dto.ProviderGroupDTO" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_model.ProviderGroup" } }, "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" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Delete a provider group and its api keys/bindings", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Delete provider group", "parameters": [ { "type": "integer", "description": "ProviderGroup ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "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/realtime": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Return aggregated realtime counters across all masters", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "System-level realtime stats (admin)", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.SystemRealtimeView" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/admin/stats": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Aggregate request stats across all masters", "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Usage stats (admin)", "parameters": [ { "type": "string", "description": "today|week|month|all", "name": "period", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "since", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "until", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.AdminUsageStatsResponse" } }, "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" } } } } }, "/auth/whoami": { "get": { "security": [ { "AdminAuth": [] }, { "MasterAuth": [] } ], "description": "Returns complete identity and realtime statistics of the authenticated user.\nSupports Admin Token, Master Key, and Child Key (API Key) authentication.\nThis endpoint is designed for frontend initialization - call once after login\nand store the response for subsequent use.\n\n**Response varies by token type:**\n\n**Admin Token:**\n- type: \"admin\"\n- role: \"admin\"\n- permissions: [\"*\"] (full access)\n\n**Master Key:**\n- type: \"master\"\n- Basic info: id, name, group, namespaces, status, epoch, max_child_keys, global_qps\n- Timestamps: created_at, updated_at\n- Realtime stats: requests, tokens, qps, qps_limit, rate_limited\n\n**Child Key (API Key):**\n- type: \"key\"\n- Basic info: id, master_id, master_name, group, scopes, namespaces, status\n- Security: issued_at_epoch, issued_by, allow_ips, deny_ips, expires_at\n- Model limits: model_limits, model_limits_enabled\n- Quota: quota_limit, quota_used, quota_reset_at, quota_reset_type\n- Usage stats: request_count, used_tokens, last_accessed_at\n- Realtime stats: requests, tokens, qps, qps_limit, rate_limited\n\n**Error responses:**\n- 401: authorization header required\n- 401: invalid authorization header format\n- 401: invalid token\n- 401: token is not active\n- 401: token has expired\n- 401: token has been revoked\n- 401: master is not active", "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Get current identity", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.WhoamiResponse" } }, "401": { "description": "Invalid or missing token", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/internal/alerts/report": { "post": { "description": "Internal endpoint for Data Plane to report alerts to Control Plane", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "internal" ], "summary": "Report alerts from DP", "parameters": [ { "description": "Alerts to report", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.reportAlertsRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.reportAlertsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/internal/apikey-stats/flush": { "post": { "description": "Internal endpoint for flushing accumulated APIKey stats from DP to CP database", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "internal" ], "summary": "Flush API key stats", "parameters": [ { "description": "Stats to flush", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.apiKeyStatsFlushRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/internal/stats/flush": { "post": { "description": "Internal endpoint for flushing accumulated key usage stats from DP to CP database", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "internal" ], "summary": "Flush key stats", "parameters": [ { "description": "Stats to flush", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.statsFlushRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "400": { "description": "Bad Request", "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" } } } } }, "/status": { "get": { "description": "Returns public runtime status information without sensitive data", "produces": [ "application/json" ], "tags": [ "Public" ], "summary": "Get system status", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.StatusResponse" } } } } }, "/v1/logs": { "get": { "security": [ { "MasterAuth": [] } ], "description": "List request logs for the authenticated master", "produces": [ "application/json" ], "tags": [ "master" ], "summary": "List logs (master)", "parameters": [ { "type": "integer", "description": "limit (default 50, max 200)", "name": "limit", "in": "query" }, { "type": "integer", "description": "offset", "name": "offset", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "since", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "until", "in": "query" }, { "type": "string", "description": "model", "name": "model", "in": "query" }, { "type": "integer", "description": "status code", "name": "status_code", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.ListMasterLogsResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/v1/logs/stats": { "get": { "security": [ { "MasterAuth": [] } ], "description": "Aggregate request log stats for the authenticated master", "produces": [ "application/json" ], "tags": [ "master" ], "summary": "Log stats (master)", "parameters": [ { "type": "integer", "description": "unix seconds", "name": "since", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "until", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.LogStatsResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/v1/realtime": { "get": { "security": [ { "MasterAuth": [] } ], "description": "Return realtime counters for the authenticated master", "produces": [ "application/json" ], "tags": [ "master" ], "summary": "Master realtime stats", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.MasterRealtimeView" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/v1/self": { "get": { "security": [ { "MasterAuth": [] } ], "description": "Returns master metadata for the authenticated master key", "produces": [ "application/json" ], "tags": [ "master" ], "summary": "Get current master info", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.MasterView" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/v1/stats": { "get": { "security": [ { "MasterAuth": [] } ], "description": "Aggregate request stats for the authenticated master", "produces": [ "application/json" ], "tags": [ "master" ], "summary": "Usage stats (master)", "parameters": [ { "type": "string", "description": "today|week|month|all", "name": "period", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "since", "in": "query" }, { "type": "integer", "description": "unix seconds", "name": "until", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.MasterUsageStatsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } } }, "/v1/tokens": { "get": { "security": [ { "MasterAuth": [] } ], "description": "List child keys issued under the authenticated master", "produces": [ "application/json" ], "tags": [ "master" ], "summary": "List child keys", "parameters": [ { "type": "integer", "description": "page (1-based)", "name": "page", "in": "query" }, { "type": "integer", "description": "limit (default 50, max 200)", "name": "limit", "in": "query" }, { "type": "string", "description": "search by group/scopes/namespaces/status", "name": "search", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/internal_api.TokenView" } } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "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" } } } } }, "/v1/tokens/{id}": { "get": { "security": [ { "MasterAuth": [] } ], "description": "Get a child key by id under the authenticated master", "produces": [ "application/json" ], "tags": [ "master" ], "summary": "Get child key", "parameters": [ { "type": "integer", "description": "Token ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.TokenView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gin.H" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "put": { "security": [ { "MasterAuth": [] } ], "description": "Update token scopes/status under the authenticated master", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "master" ], "summary": "Update child key", "parameters": [ { "type": "integer", "description": "Token ID", "name": "id", "in": "path", "required": true }, { "description": "Update payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_api.UpdateTokenRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_api.TokenView" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gin.H" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gin.H" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gin.H" } } } }, "delete": { "security": [ { "MasterAuth": [] } ], "description": "Suspends a child key under the authenticated master", "produces": [ "application/json" ], "tags": [ "master" ], "summary": "Delete (revoke) child key", "parameters": [ { "type": "integer", "description": "Token ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gin.H" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gin.H" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gin.H" } }, "404": { "description": "Not Found", "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.APIKeyDTO": { "type": "object", "properties": { "access_token": { "type": "string" }, "account_id": { "type": "string" }, "api_key": { "type": "string" }, "auto_ban": { "type": "boolean" }, "ban_reason": { "type": "string" }, "ban_until": { "type": "string" }, "expires_at": { "type": "string" }, "group_id": { "type": "integer" }, "project_id": { "type": "string" }, "refresh_token": { "type": "string" }, "status": { "type": "string" }, "weight": { "type": "integer" } } }, "github_com_ez-api_ez-api_internal_dto.BindingDTO": { "type": "object", "properties": { "group_id": { "type": "integer" }, "namespace": { "type": "string" }, "public_model": { "type": "string" }, "selector_type": { "type": "string" }, "selector_value": { "type": "string" }, "status": { "type": "string" }, "weight": { "type": "integer" } } }, "github_com_ez-api_ez-api_internal_dto.ModelDTO": { "type": "object", "properties": { "context_window": { "type": "integer" }, "cost_per_token": { "type": "number" }, "kind": { "type": "string" }, "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.ProviderGroupDTO": { "type": "object", "properties": { "base_url": { "type": "string" }, "google_location": { "type": "string" }, "google_project": { "type": "string" }, "headers_profile": { "type": "string" }, "models": { "type": "array", "items": { "type": "string" } }, "name": { "type": "string" }, "static_headers": { "type": "string" }, "status": { "type": "string" }, "type": { "type": "string" } } }, "github_com_ez-api_ez-api_internal_model.APIKey": { "type": "object", "properties": { "access_token": { "type": "string" }, "account_id": { "type": "string" }, "api_key": { "type": "string" }, "auto_ban": { "type": "boolean" }, "ban_reason": { "type": "string" }, "ban_until": { "type": "string" }, "createdAt": { "type": "string" }, "deletedAt": { "$ref": "#/definitions/gorm.DeletedAt" }, "expires_at": { "type": "string" }, "failure_rate": { "type": "number" }, "failure_requests": { "type": "integer" }, "group_id": { "type": "integer" }, "id": { "type": "integer" }, "project_id": { "type": "string" }, "status": { "type": "string" }, "success_rate": { "type": "number" }, "success_requests": { "type": "integer" }, "total_requests": { "type": "integer" }, "updatedAt": { "type": "string" }, "weight": { "type": "integer" } } }, "github_com_ez-api_ez-api_internal_model.Binding": { "type": "object", "properties": { "createdAt": { "type": "string" }, "deletedAt": { "$ref": "#/definitions/gorm.DeletedAt" }, "group_id": { "type": "integer" }, "id": { "type": "integer" }, "namespace": { "type": "string" }, "public_model": { "type": "string" }, "selector_type": { "type": "string" }, "selector_value": { "type": "string" }, "status": { "type": "string" }, "updatedAt": { "type": "string" }, "weight": { "type": "integer" } } }, "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" }, "master_id": { "type": "integer" }, "model": { "type": "string" }, "provider_id": { "type": "integer" }, "provider_name": { "type": "string" }, "provider_type": { "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" }, "kind": { "type": "string" }, "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.Namespace": { "type": "object", "properties": { "createdAt": { "type": "string" }, "deletedAt": { "$ref": "#/definitions/gorm.DeletedAt" }, "description": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "status": { "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_ez-api_ez-api_internal_model.ProviderGroup": { "type": "object", "properties": { "base_url": { "type": "string" }, "createdAt": { "type": "string" }, "deletedAt": { "$ref": "#/definitions/gorm.DeletedAt" }, "failure_rate": { "type": "number" }, "failure_requests": { "type": "integer" }, "google_location": { "type": "string" }, "google_project": { "type": "string" }, "headers_profile": { "type": "string" }, "id": { "type": "integer" }, "models": { "description": "comma-separated list of supported models", "type": "string" }, "name": { "type": "string" }, "static_headers": { "type": "string" }, "status": { "type": "string" }, "success_rate": { "type": "number" }, "success_requests": { "type": "integer" }, "total_requests": { "type": "integer" }, "type": { "description": "openai, anthropic, gemini", "type": "string" }, "updatedAt": { "type": "string" } } }, "github_com_ez-api_ez-api_internal_service.LogWebhookConfig": { "type": "object", "properties": { "cooldown_seconds": { "type": "integer" }, "enabled": { "type": "boolean" }, "secret": { "type": "string" }, "status_code_threshold": { "type": "integer" }, "threshold": { "type": "integer" }, "url": { "type": "string" }, "window_seconds": { "type": "integer" } } }, "github_com_ez-api_ez-api_internal_service.ModelRegistryCheckResult": { "type": "object", "properties": { "current_upstream_ref": { "type": "string" }, "current_version": { "type": "string" }, "enabled": { "type": "boolean" }, "latest_version": { "type": "string" }, "needs_refresh": { "type": "boolean" }, "upstream_ref": { "type": "string" } } }, "github_com_ez-api_ez-api_internal_service.ModelRegistryStatus": { "type": "object", "properties": { "cache_current": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_service.modelRegistryFile" }, "cache_prev": { "$ref": "#/definitions/github_com_ez-api_ez-api_internal_service.modelRegistryFile" }, "enabled": { "type": "boolean" }, "last_error": { "type": "string" }, "last_refresh_at": { "type": "integer" }, "models_dev_ref": { "type": "string" }, "models_dev_url": { "type": "string" }, "redis_meta": { "type": "object", "additionalProperties": { "type": "string" } } } }, "github_com_ez-api_ez-api_internal_service.modelRegistryFile": { "type": "object", "properties": { "meta": { "$ref": "#/definitions/modelcap.Meta" }, "models": { "type": "object", "additionalProperties": { "$ref": "#/definitions/modelcap.Model" } } } }, "gorm.DeletedAt": { "type": "object", "properties": { "time": { "type": "string" }, "valid": { "description": "Valid is true if Time is not NULL", "type": "boolean" } } }, "internal_api.APIKeyStatsSummaryResponse": { "type": "object", "properties": { "failure_rate": { "type": "number" }, "failure_requests": { "type": "integer" }, "success_rate": { "type": "number" }, "success_requests": { "type": "integer" }, "total_requests": { "type": "integer" } } }, "internal_api.AboutResponse": { "type": "object", "properties": { "description": { "type": "string", "example": "High-performance LLM API gateway" }, "name": { "type": "string", "example": "EZ-API Gateway" }, "repository": { "type": "string", "example": "https://github.com/ez-api/ez-api" }, "version": { "type": "string", "example": "0.1.0" } } }, "internal_api.AccessResponse": { "type": "object", "properties": { "default_namespace": { "type": "string" }, "namespaces": { "type": "array", "items": { "type": "string" } } } }, "internal_api.AckAlertRequest": { "type": "object", "properties": { "acked_by": { "type": "string" } } }, "internal_api.AdminUsageStatsResponse": { "type": "object", "properties": { "active_masters": { "type": "integer" }, "by_master": { "type": "array", "items": { "$ref": "#/definitions/internal_api.MasterUsageAgg" } }, "by_provider": { "type": "array", "items": { "$ref": "#/definitions/internal_api.ProviderUsageAgg" } }, "period": { "type": "string" }, "total_masters": { "type": "integer" }, "total_requests": { "type": "integer" }, "total_tokens": { "type": "integer" } } }, "internal_api.AlertStats": { "type": "object", "properties": { "acknowledged": { "type": "integer" }, "active": { "type": "integer" }, "critical": { "type": "integer" }, "info": { "type": "integer" }, "resolved": { "type": "integer" }, "total": { "type": "integer" }, "warning": { "type": "integer" } } }, "internal_api.AlertThresholdView": { "type": "object", "properties": { "global_qps": { "type": "integer" }, "master_rpd": { "type": "integer" }, "master_rpm": { "type": "integer" }, "master_tpd": { "type": "integer" }, "master_tpm": { "type": "integer" }, "min_rpm_requests_1m": { "type": "integer" }, "min_tpm_tokens_1m": { "type": "integer" }, "updated_at": { "type": "integer" } } }, "internal_api.AlertView": { "type": "object", "properties": { "acked_at": { "type": "integer" }, "acked_by": { "type": "string" }, "created_at": { "type": "integer" }, "expires_at": { "type": "integer" }, "id": { "type": "integer" }, "message": { "type": "string" }, "metadata": { "type": "string" }, "related_id": { "type": "integer" }, "related_name": { "type": "string" }, "related_type": { "type": "string" }, "resolved_at": { "type": "integer" }, "severity": { "type": "string" }, "status": { "type": "string" }, "title": { "type": "string" }, "type": { "type": "string" }, "updated_at": { "type": "integer" } } }, "internal_api.BatchActionRequest": { "type": "object", "properties": { "action": { "type": "string" }, "ids": { "type": "array", "items": { "type": "integer" } }, "status": { "type": "string" } } }, "internal_api.BatchResponse": { "type": "object", "properties": { "action": { "type": "string" }, "failed": { "type": "array", "items": { "$ref": "#/definitions/internal_api.BatchResult" } }, "success": { "type": "array", "items": { "type": "integer" } } } }, "internal_api.BatchResult": { "type": "object", "properties": { "error": { "type": "string" }, "id": { "type": "integer" } } }, "internal_api.CountStats": { "type": "object", "properties": { "active": { "type": "integer" }, "total": { "type": "integer" } } }, "internal_api.CreateAlertRequest": { "type": "object", "required": [ "severity", "title", "type" ], "properties": { "expires_at": { "type": "integer" }, "message": { "type": "string" }, "metadata": { "type": "string" }, "related_id": { "type": "integer" }, "related_name": { "type": "string" }, "related_type": { "type": "string" }, "severity": { "type": "string" }, "title": { "type": "string" }, "type": { "type": "string" } } }, "internal_api.CreateIPBanRequest": { "type": "object", "required": [ "cidr" ], "properties": { "cidr": { "type": "string" }, "expires_at": { "type": "integer" }, "reason": { "type": "string" } } }, "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.DashboardSummaryResponse": { "type": "object", "properties": { "keys": { "$ref": "#/definitions/internal_api.CountStats" }, "latency": { "$ref": "#/definitions/internal_api.LatencyStats" }, "masters": { "$ref": "#/definitions/internal_api.CountStats" }, "period": { "type": "string" }, "provider_keys": { "$ref": "#/definitions/internal_api.ProviderKeyStats" }, "requests": { "$ref": "#/definitions/internal_api.RequestStats" }, "tokens": { "$ref": "#/definitions/internal_api.TokenStats" }, "top_models": { "type": "array", "items": { "$ref": "#/definitions/internal_api.TopModelStat" } }, "trends": { "description": "Only present when include_trends=true", "allOf": [ { "$ref": "#/definitions/internal_api.DashboardTrends" } ] }, "updated_at": { "type": "integer" } } }, "internal_api.DashboardTrends": { "type": "object", "properties": { "error_rate": { "$ref": "#/definitions/internal_api.TrendInfo" }, "latency": { "$ref": "#/definitions/internal_api.TrendInfo" }, "requests": { "$ref": "#/definitions/internal_api.TrendInfo" }, "tokens": { "$ref": "#/definitions/internal_api.TrendInfo" } } }, "internal_api.DeleteLogsRequest": { "type": "object", "properties": { "before": { "type": "string" }, "key_id": { "type": "integer" }, "model": { "type": "string" } } }, "internal_api.DeleteLogsResponse": { "type": "object", "properties": { "deleted_count": { "type": "integer" } } }, "internal_api.GroupedStatsItem": { "type": "object", "properties": { "avg_latency_ms": { "type": "number" }, "count": { "type": "integer" }, "date": { "description": "For group_by=day", "type": "string" }, "hour": { "description": "For group_by=hour", "type": "string" }, "minute": { "description": "For group_by=minute", "type": "string" }, "model": { "description": "For group_by=model", "type": "string" }, "month": { "description": "For group_by=month", "type": "string" }, "tokens_in": { "type": "integer" }, "tokens_out": { "type": "integer" } } }, "internal_api.GroupedStatsResponse": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/internal_api.GroupedStatsItem" } } } }, "internal_api.IPBanView": { "type": "object", "properties": { "cidr": { "type": "string" }, "created_at": { "type": "integer" }, "created_by": { "type": "string" }, "expires_at": { "type": "integer" }, "hit_count": { "type": "integer" }, "id": { "type": "integer" }, "reason": { "type": "string" }, "status": { "type": "string" }, "updated_at": { "type": "integer" } } }, "internal_api.IssueChildKeyRequest": { "type": "object", "properties": { "allow_ips": { "type": "string" }, "deny_ips": { "type": "string" }, "expires_at": { "type": "string" }, "group": { "type": "string" }, "model_limits": { "type": "string" }, "model_limits_enabled": { "type": "boolean" }, "scopes": { "type": "string" } } }, "internal_api.KeyUsageStat": { "type": "object", "properties": { "key_id": { "type": "integer" }, "requests": { "type": "integer" }, "tokens": { "type": "integer" } } }, "internal_api.LatencyStats": { "type": "object", "properties": { "avg_ms": { "type": "number" } } }, "internal_api.ListAlertsResponse": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/internal_api.AlertView" } }, "limit": { "type": "integer" }, "offset": { "type": "integer" }, "total": { "type": "integer" } } }, "internal_api.ListLogsResponse": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/internal_api.LogView" } }, "limit": { "type": "integer" }, "offset": { "type": "integer" }, "total": { "type": "integer" } } }, "internal_api.ListMasterLogsResponse": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/internal_api.MasterLogView" } }, "limit": { "type": "integer" }, "offset": { "type": "integer" }, "total": { "type": "integer" } } }, "internal_api.LogStatsResponse": { "type": "object", "properties": { "avg_latency_ms": { "type": "number" }, "by_status": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } }, "tokens_in": { "type": "integer" }, "tokens_out": { "type": "integer" }, "total": { "type": "integer" } } }, "internal_api.LogView": { "type": "object", "properties": { "audit_reason": { "type": "string" }, "client_ip": { "type": "string" }, "created_at": { "type": "integer" }, "error_message": { "type": "string" }, "group": { "type": "string" }, "id": { "type": "integer" }, "key_id": { "type": "integer" }, "latency_ms": { "type": "integer" }, "model": { "type": "string" }, "provider_id": { "type": "integer" }, "provider_name": { "type": "string" }, "provider_type": { "type": "string" }, "request_body": { "type": "string" }, "request_size": { "type": "integer" }, "response_size": { "type": "integer" }, "status_code": { "type": "integer" }, "tokens_in": { "type": "integer" }, "tokens_out": { "type": "integer" } } }, "internal_api.ManageMasterRequest": { "type": "object", "required": [ "action" ], "properties": { "action": { "description": "freeze/unfreeze", "type": "string" } } }, "internal_api.MasterLogView": { "type": "object", "properties": { "created_at": { "type": "integer" }, "error_message": { "type": "string" }, "group": { "type": "string" }, "id": { "type": "integer" }, "key_id": { "type": "integer" }, "latency_ms": { "type": "integer" }, "model": { "type": "string" }, "request_size": { "type": "integer" }, "response_size": { "type": "integer" }, "status_code": { "type": "integer" }, "tokens_in": { "type": "integer" }, "tokens_out": { "type": "integer" } } }, "internal_api.MasterRealtimeSummaryView": { "type": "object", "properties": { "master_id": { "type": "integer" }, "qps": { "type": "integer" }, "rate_limited": { "type": "boolean" } } }, "internal_api.MasterRealtimeView": { "type": "object", "properties": { "qps": { "type": "integer" }, "qps_limit": { "type": "integer" }, "rate_limited": { "type": "boolean" }, "requests": { "type": "integer" }, "tokens": { "type": "integer" }, "updated_at": { "type": "integer" } } }, "internal_api.MasterUsageAgg": { "type": "object", "properties": { "master_id": { "type": "integer" }, "requests": { "type": "integer" }, "tokens": { "type": "integer" } } }, "internal_api.MasterUsageStatsResponse": { "type": "object", "properties": { "by_key": { "type": "array", "items": { "$ref": "#/definitions/internal_api.KeyUsageStat" } }, "by_model": { "type": "array", "items": { "$ref": "#/definitions/internal_api.ModelUsageStat" } }, "period": { "type": "string" }, "total_requests": { "type": "integer" }, "total_tokens": { "type": "integer" } } }, "internal_api.MasterView": { "type": "object", "properties": { "created_at": { "type": "integer" }, "default_namespace": { "type": "string" }, "epoch": { "type": "integer" }, "global_qps": { "type": "integer" }, "group": { "type": "string" }, "id": { "type": "integer" }, "max_child_keys": { "type": "integer" }, "name": { "type": "string" }, "namespaces": { "type": "string" }, "realtime": { "$ref": "#/definitions/internal_api.MasterRealtimeView" }, "status": { "type": "string" }, "updated_at": { "type": "integer" } } }, "internal_api.ModelUsageStat": { "type": "object", "properties": { "model": { "type": "string" }, "requests": { "type": "integer" }, "tokens": { "type": "integer" } } }, "internal_api.NamespaceRequest": { "type": "object", "properties": { "description": { "type": "string" }, "name": { "type": "string" }, "status": { "type": "string" } } }, "internal_api.OperationLogView": { "type": "object", "properties": { "actor": { "type": "string" }, "client_ip": { "type": "string" }, "created_at": { "type": "integer" }, "error_message": { "type": "string" }, "id": { "type": "integer" }, "latency_ms": { "type": "integer" }, "method": { "type": "string" }, "path": { "type": "string" }, "query": { "type": "string" }, "request_id": { "type": "string" }, "status_code": { "type": "integer" }, "user_agent": { "type": "string" } } }, "internal_api.ProviderKeyStats": { "type": "object", "properties": { "active": { "type": "integer" }, "auto_disabled": { "type": "integer" }, "suspended": { "type": "integer" }, "total": { "type": "integer" } } }, "internal_api.ProviderUsageAgg": { "type": "object", "properties": { "provider_id": { "type": "integer" }, "provider_name": { "type": "string" }, "provider_type": { "type": "string" }, "requests": { "type": "integer" }, "tokens": { "type": "integer" } } }, "internal_api.RequestStats": { "type": "object", "properties": { "error_rate": { "type": "number" }, "failed": { "type": "integer" }, "success": { "type": "integer" }, "total": { "type": "integer" } } }, "internal_api.StatusResponse": { "type": "object", "properties": { "status": { "type": "string", "example": "ok" }, "uptime": { "type": "string", "example": "72h30m15s" }, "version": { "type": "string", "example": "0.1.0" } } }, "internal_api.SystemRealtimeView": { "type": "object", "properties": { "by_master": { "type": "array", "items": { "$ref": "#/definitions/internal_api.MasterRealtimeSummaryView" } }, "qps": { "type": "integer" }, "rate_limited_count": { "type": "integer" }, "rpm": { "type": "integer" }, "updated_at": { "type": "integer" } } }, "internal_api.TokenStats": { "type": "object", "properties": { "input": { "type": "integer" }, "output": { "type": "integer" }, "total": { "type": "integer" } } }, "internal_api.TokenView": { "type": "object", "properties": { "allow_ips": { "type": "string" }, "created_at": { "type": "integer" }, "default_namespace": { "type": "string" }, "deny_ips": { "type": "string" }, "expires_at": { "type": "string" }, "group": { "type": "string" }, "id": { "type": "integer" }, "issued_at_epoch": { "type": "integer" }, "issued_by": { "type": "string" }, "last_accessed_at": { "type": "string" }, "model_limits": { "type": "string" }, "model_limits_enabled": { "type": "boolean" }, "namespaces": { "type": "string" }, "quota_limit": { "type": "integer" }, "quota_reset_at": { "type": "string" }, "quota_reset_type": { "type": "string" }, "quota_used": { "type": "integer" }, "request_count": { "type": "integer" }, "scopes": { "type": "string" }, "status": { "type": "string" }, "updated_at": { "type": "integer" }, "used_tokens": { "type": "integer" } } }, "internal_api.TopModelStat": { "type": "object", "properties": { "model": { "type": "string" }, "requests": { "type": "integer" }, "tokens": { "type": "integer" } } }, "internal_api.TrafficChartAxis": { "type": "object", "properties": { "labels": { "type": "array", "items": { "type": "string" } }, "timestamps": { "type": "array", "items": { "type": "integer" } }, "totals": { "$ref": "#/definitions/internal_api.TrafficTotals" } } }, "internal_api.TrafficChartResponse": { "type": "object", "properties": { "granularity": { "type": "string" }, "series": { "type": "array", "items": { "$ref": "#/definitions/internal_api.TrafficSeries" } }, "since": { "type": "integer" }, "until": { "type": "integer" }, "x": { "$ref": "#/definitions/internal_api.TrafficChartAxis" } } }, "internal_api.TrafficSeries": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "integer" } }, "name": { "type": "string" }, "tokens_in": { "type": "array", "items": { "type": "integer" } }, "tokens_out": { "type": "array", "items": { "type": "integer" } } } }, "internal_api.TrafficTotals": { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "integer" } }, "tokens_in": { "type": "array", "items": { "type": "integer" } }, "tokens_out": { "type": "array", "items": { "type": "integer" } } } }, "internal_api.TrendInfo": { "type": "object", "properties": { "delta": { "description": "Percentage change from previous period (nil if no baseline)", "type": "number" }, "direction": { "description": "\"up\", \"down\", \"stable\", or \"new\" (no baseline)", "type": "string" } } }, "internal_api.UpdateAccessRequest": { "type": "object", "properties": { "default_namespace": { "type": "string" }, "namespaces": { "type": "array", "items": { "type": "string" } }, "propagate_to_keys": { "type": "boolean" } } }, "internal_api.UpdateAlertThresholdsRequest": { "type": "object", "properties": { "global_qps": { "type": "integer" }, "master_rpd": { "type": "integer" }, "master_rpm": { "type": "integer" }, "master_tpd": { "type": "integer" }, "master_tpm": { "type": "integer" }, "min_rpm_requests_1m": { "type": "integer" }, "min_tpm_tokens_1m": { "type": "integer" } } }, "internal_api.UpdateIPBanRequest": { "type": "object", "properties": { "expires_at": { "$ref": "#/definitions/internal_api.optionalInt64" }, "reason": { "type": "string" }, "status": { "type": "string" } } }, "internal_api.UpdateMasterRequest": { "type": "object", "properties": { "global_qps": { "type": "integer" }, "group": { "type": "string" }, "max_child_keys": { "type": "integer" }, "name": { "type": "string" }, "propagate_to_keys": { "type": "boolean" } } }, "internal_api.UpdateNamespaceRequest": { "type": "object", "properties": { "description": { "type": "string" }, "name": { "type": "string" }, "status": { "type": "string" } } }, "internal_api.UpdateTokenRequest": { "type": "object", "properties": { "allow_ips": { "type": "string" }, "deny_ips": { "type": "string" }, "expires_at": { "type": "string" }, "model_limits": { "type": "string" }, "model_limits_enabled": { "type": "boolean" }, "scopes": { "type": "string" }, "status": { "description": "active/suspended", "type": "string" } } }, "internal_api.WhoamiRealtimeView": { "type": "object", "properties": { "qps": { "description": "Current QPS", "type": "integer", "example": 5 }, "qps_limit": { "description": "QPS limit", "type": "integer", "example": 100 }, "rate_limited": { "description": "Whether currently rate limited", "type": "boolean", "example": false }, "requests": { "description": "Total requests", "type": "integer", "example": 100 }, "tokens": { "description": "Total tokens used", "type": "integer", "example": 50000 }, "updated_at": { "description": "Last updated timestamp", "type": "integer", "example": 1703505600 } } }, "internal_api.WhoamiResponse": { "type": "object", "properties": { "allow_ips": { "description": "IP whitelist (for diagnostics)", "type": "string", "example": "" }, "created_at": { "type": "integer", "example": 1703505600 }, "default_namespace": { "type": "string", "example": "default" }, "deny_ips": { "description": "IP blacklist (for diagnostics)", "type": "string", "example": "" }, "epoch": { "type": "integer", "example": 1 }, "expires_at": { "description": "Expiration timestamp (0 = never)", "type": "integer", "example": 0 }, "global_qps": { "type": "integer", "example": 100 }, "group": { "type": "string", "example": "default" }, "id": { "description": "Master fields (only present when type is \"master\")", "type": "integer", "example": 1 }, "issued_at_epoch": { "type": "integer", "example": 1 }, "issued_by": { "type": "string", "example": "master" }, "last_accessed_at": { "description": "Last access timestamp", "type": "integer", "example": 0 }, "master_id": { "description": "Key fields (only present when type is \"key\")", "type": "integer", "example": 1 }, "master_name": { "description": "Parent master name (for display)", "type": "string", "example": "tenant-a" }, "max_child_keys": { "type": "integer", "example": 5 }, "model_limits": { "description": "Model restrictions", "type": "string", "example": "gpt-4,claude" }, "model_limits_enabled": { "description": "Whether model limits are active", "type": "boolean", "example": false }, "name": { "type": "string", "example": "tenant-a" }, "namespaces": { "type": "string", "example": "default,ns1" }, "permissions": { "description": "Admin permissions (always [\"*\"])", "type": "array", "items": { "type": "string" } }, "quota_limit": { "description": "Token quota limit (-1 = unlimited)", "type": "integer", "example": -1 }, "quota_reset_at": { "description": "Quota reset timestamp", "type": "integer", "example": 0 }, "quota_reset_type": { "description": "Quota reset type", "type": "string", "example": "monthly" }, "quota_used": { "description": "Token quota used", "type": "integer", "example": 0 }, "realtime": { "description": "Realtime stats (for master and key types)", "allOf": [ { "$ref": "#/definitions/internal_api.WhoamiRealtimeView" } ] }, "request_count": { "description": "Total request count (from DB)", "type": "integer", "example": 0 }, "role": { "description": "Admin fields (only present when type is \"admin\")", "type": "string", "example": "admin" }, "scopes": { "type": "string", "example": "chat:write" }, "status": { "type": "string", "example": "active" }, "type": { "description": "Type of the authenticated identity: \"admin\", \"master\", or \"key\"", "type": "string", "example": "master" }, "updated_at": { "type": "integer", "example": 1703505600 }, "used_tokens": { "description": "Total tokens used (from DB)", "type": "integer", "example": 0 } } }, "internal_api.apiKeyStatsFlushEntry": { "type": "object", "properties": { "api_key_id": { "type": "integer" }, "requests": { "type": "integer" }, "success_requests": { "type": "integer" } } }, "internal_api.apiKeyStatsFlushRequest": { "type": "object", "properties": { "keys": { "type": "array", "items": { "$ref": "#/definitions/internal_api.apiKeyStatsFlushEntry" } } } }, "internal_api.optionalInt64": { "type": "object", "properties": { "set": { "type": "boolean" }, "value": { "type": "integer", "format": "int64" } } }, "internal_api.refreshModelRegistryRequest": { "type": "object", "properties": { "ref": { "type": "string" } } }, "internal_api.reportAlertEntry": { "type": "object", "required": [ "severity", "title", "type" ], "properties": { "fingerprint": { "type": "string" }, "message": { "type": "string" }, "metadata": { "type": "string" }, "related_id": { "type": "integer" }, "related_name": { "type": "string" }, "related_type": { "type": "string" }, "severity": { "type": "string" }, "title": { "type": "string" }, "type": { "type": "string" } } }, "internal_api.reportAlertsRequest": { "type": "object", "required": [ "alerts" ], "properties": { "alerts": { "type": "array", "items": { "$ref": "#/definitions/internal_api.reportAlertEntry" } } } }, "internal_api.reportAlertsResponse": { "type": "object", "properties": { "accepted": { "type": "integer" }, "deduplicated": { "type": "integer" }, "errors": { "type": "array", "items": { "type": "string" } } } }, "internal_api.statsFlushEntry": { "type": "object", "properties": { "last_accessed_at": { "type": "integer" }, "requests": { "type": "integer" }, "token_hash": { "type": "string" }, "tokens": { "type": "integer" } } }, "internal_api.statsFlushRequest": { "type": "object", "properties": { "keys": { "type": "array", "items": { "$ref": "#/definitions/internal_api.statsFlushEntry" } } } }, "modelcap.Meta": { "type": "object", "properties": { "checksum": { "type": "string" }, "source": { "type": "string" }, "updated_at": { "type": "string" }, "upstream_ref": { "type": "string" }, "upstream_url": { "type": "string" }, "version": { "type": "string" } } }, "modelcap.Model": { "type": "object", "properties": { "context_window": { "type": "integer" }, "cost_per_token": { "type": "number" }, "kind": { "type": "string" }, "max_output_tokens": { "type": "integer" }, "name": { "type": "string" }, "supports_fim": { "type": "boolean" }, "supports_functions": { "type": "boolean" }, "supports_stream": { "type": "boolean" }, "supports_tool_choice": { "type": "boolean" }, "supports_vision": { "type": "boolean" } } } }, "securityDefinitions": { "AdminAuth": { "description": "Type \"Bearer\" followed by a space and the admin token. Example: Bearer admin123", "type": "apiKey", "name": "Authorization", "in": "header" }, "MasterAuth": { "description": "Type \"Bearer\" followed by a space and the master key. Example: Bearer sk-xxx", "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) }