Files
ez-api/docs/swagger/swagger.yaml
zenfun f400ffde95 refactor(api): update traffic chart response structure
Change the traffic chart API response from bucket-based to series-based
to better support frontend visualization libraries. The new format
provides a shared X-axis and aligned data arrays for each model series.

- Replace `buckets` with `x` and `series` in response
- Implement data alignment and zero-filling for time slots
- Update Swagger documentation including pending definitions

BREAKING CHANGE: The `GET /admin/logs/stats/traffic-chart` response
schema has changed. `buckets` and `models` fields are removed.
2026-01-08 18:40:44 +08:00

4501 lines
109 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
basePath: /
definitions:
gin.H:
additionalProperties: {}
type: object
github_com_ez-api_ez-api_internal_dto.APIKeyDTO:
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
type: object
github_com_ez-api_ez-api_internal_dto.BindingDTO:
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
type: object
github_com_ez-api_ez-api_internal_dto.ModelDTO:
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
type: object
github_com_ez-api_ez-api_internal_dto.ProviderGroupDTO:
properties:
base_url:
type: string
google_location:
type: string
google_project:
type: string
headers_profile:
type: string
models:
items:
type: string
type: array
name:
type: string
static_headers:
type: string
status:
type: string
type:
type: string
type: object
github_com_ez-api_ez-api_internal_model.APIKey:
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
type: object
github_com_ez-api_ez-api_internal_model.Binding:
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
type: object
github_com_ez-api_ez-api_internal_model.LogRecord:
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
type: object
github_com_ez-api_ez-api_internal_model.Model:
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
type: object
github_com_ez-api_ez-api_internal_model.Namespace:
properties:
createdAt:
type: string
deletedAt:
$ref: '#/definitions/gorm.DeletedAt'
description:
type: string
id:
type: integer
name:
type: string
status:
type: string
updatedAt:
type: string
type: object
github_com_ez-api_ez-api_internal_model.ProviderGroup:
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
type: object
github_com_ez-api_ez-api_internal_service.LogWebhookConfig:
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
type: object
github_com_ez-api_ez-api_internal_service.ModelRegistryCheckResult:
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
type: object
github_com_ez-api_ez-api_internal_service.ModelRegistryStatus:
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:
additionalProperties:
type: string
type: object
type: object
github_com_ez-api_ez-api_internal_service.modelRegistryFile:
properties:
meta:
$ref: '#/definitions/modelcap.Meta'
models:
additionalProperties:
$ref: '#/definitions/modelcap.Model'
type: object
type: object
gorm.DeletedAt:
properties:
time:
type: string
valid:
description: Valid is true if Time is not NULL
type: boolean
type: object
internal_api.APIKeyStatsSummaryResponse:
properties:
failure_rate:
type: number
failure_requests:
type: integer
success_rate:
type: number
success_requests:
type: integer
total_requests:
type: integer
type: object
internal_api.AboutResponse:
properties:
description:
example: High-performance LLM API gateway
type: string
name:
example: EZ-API Gateway
type: string
repository:
example: https://github.com/ez-api/ez-api
type: string
version:
example: 0.1.0
type: string
type: object
internal_api.AccessResponse:
properties:
default_namespace:
type: string
namespaces:
items:
type: string
type: array
type: object
internal_api.AckAlertRequest:
properties:
acked_by:
type: string
type: object
internal_api.AdminUsageStatsResponse:
properties:
active_masters:
type: integer
by_master:
items:
$ref: '#/definitions/internal_api.MasterUsageAgg'
type: array
by_provider:
items:
$ref: '#/definitions/internal_api.ProviderUsageAgg'
type: array
period:
type: string
total_masters:
type: integer
total_requests:
type: integer
total_tokens:
type: integer
type: object
internal_api.AlertStats:
properties:
acknowledged:
type: integer
active:
type: integer
critical:
type: integer
info:
type: integer
resolved:
type: integer
total:
type: integer
warning:
type: integer
type: object
internal_api.AlertThresholdView:
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
type: object
internal_api.AlertView:
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
type: object
internal_api.BatchActionRequest:
properties:
action:
type: string
ids:
items:
type: integer
type: array
status:
type: string
type: object
internal_api.BatchResponse:
properties:
action:
type: string
failed:
items:
$ref: '#/definitions/internal_api.BatchResult'
type: array
success:
items:
type: integer
type: array
type: object
internal_api.BatchResult:
properties:
error:
type: string
id:
type: integer
type: object
internal_api.CountStats:
properties:
active:
type: integer
total:
type: integer
type: object
internal_api.CreateAlertRequest:
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
required:
- severity
- title
- type
type: object
internal_api.CreateIPBanRequest:
properties:
cidr:
type: string
expires_at:
type: integer
reason:
type: string
required:
- cidr
type: object
internal_api.CreateMasterRequest:
properties:
global_qps:
type: integer
group:
type: string
max_child_keys:
type: integer
name:
type: string
required:
- group
- name
type: object
internal_api.DashboardSummaryResponse:
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:
items:
$ref: '#/definitions/internal_api.TopModelStat'
type: array
trends:
allOf:
- $ref: '#/definitions/internal_api.DashboardTrends'
description: Only present when include_trends=true
updated_at:
type: integer
type: object
internal_api.DashboardTrends:
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'
type: object
internal_api.DeleteLogsRequest:
properties:
before:
type: string
key_id:
type: integer
model:
type: string
type: object
internal_api.DeleteLogsResponse:
properties:
deleted_count:
type: integer
type: object
internal_api.GroupedStatsItem:
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
type: object
internal_api.GroupedStatsResponse:
properties:
items:
items:
$ref: '#/definitions/internal_api.GroupedStatsItem'
type: array
type: object
internal_api.IPBanView:
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
type: object
internal_api.IssueChildKeyRequest:
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
type: object
internal_api.KeyUsageStat:
properties:
key_id:
type: integer
requests:
type: integer
tokens:
type: integer
type: object
internal_api.LatencyStats:
properties:
avg_ms:
type: number
type: object
internal_api.ListAlertsResponse:
properties:
items:
items:
$ref: '#/definitions/internal_api.AlertView'
type: array
limit:
type: integer
offset:
type: integer
total:
type: integer
type: object
internal_api.ListLogsResponse:
properties:
items:
items:
$ref: '#/definitions/internal_api.LogView'
type: array
limit:
type: integer
offset:
type: integer
total:
type: integer
type: object
internal_api.ListMasterLogsResponse:
properties:
items:
items:
$ref: '#/definitions/internal_api.MasterLogView'
type: array
limit:
type: integer
offset:
type: integer
total:
type: integer
type: object
internal_api.LogStatsResponse:
properties:
avg_latency_ms:
type: number
by_status:
additionalProperties:
format: int64
type: integer
type: object
tokens_in:
type: integer
tokens_out:
type: integer
total:
type: integer
type: object
internal_api.LogView:
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
type: object
internal_api.ManageMasterRequest:
properties:
action:
description: freeze/unfreeze
type: string
required:
- action
type: object
internal_api.MasterLogView:
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
type: object
internal_api.MasterRealtimeSummaryView:
properties:
master_id:
type: integer
qps:
type: integer
rate_limited:
type: boolean
type: object
internal_api.MasterRealtimeView:
properties:
qps:
type: integer
qps_limit:
type: integer
rate_limited:
type: boolean
requests:
type: integer
tokens:
type: integer
updated_at:
type: integer
type: object
internal_api.MasterUsageAgg:
properties:
master_id:
type: integer
requests:
type: integer
tokens:
type: integer
type: object
internal_api.MasterUsageStatsResponse:
properties:
by_key:
items:
$ref: '#/definitions/internal_api.KeyUsageStat'
type: array
by_model:
items:
$ref: '#/definitions/internal_api.ModelUsageStat'
type: array
period:
type: string
total_requests:
type: integer
total_tokens:
type: integer
type: object
internal_api.MasterView:
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
type: object
internal_api.ModelUsageStat:
properties:
model:
type: string
requests:
type: integer
tokens:
type: integer
type: object
internal_api.NamespaceRequest:
properties:
description:
type: string
name:
type: string
status:
type: string
type: object
internal_api.OperationLogView:
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
type: object
internal_api.ProviderKeyStats:
properties:
active:
type: integer
auto_disabled:
type: integer
suspended:
type: integer
total:
type: integer
type: object
internal_api.ProviderUsageAgg:
properties:
provider_id:
type: integer
provider_name:
type: string
provider_type:
type: string
requests:
type: integer
tokens:
type: integer
type: object
internal_api.RequestStats:
properties:
error_rate:
type: number
failed:
type: integer
success:
type: integer
total:
type: integer
type: object
internal_api.StatusResponse:
properties:
status:
example: ok
type: string
uptime:
example: 72h30m15s
type: string
version:
example: 0.1.0
type: string
type: object
internal_api.SystemRealtimeView:
properties:
by_master:
items:
$ref: '#/definitions/internal_api.MasterRealtimeSummaryView'
type: array
qps:
type: integer
rate_limited_count:
type: integer
rpm:
type: integer
updated_at:
type: integer
type: object
internal_api.TokenStats:
properties:
input:
type: integer
output:
type: integer
total:
type: integer
type: object
internal_api.TokenView:
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
type: object
internal_api.TopModelStat:
properties:
model:
type: string
requests:
type: integer
tokens:
type: integer
type: object
internal_api.TrafficChartAxis:
properties:
labels:
items:
type: string
type: array
timestamps:
items:
type: integer
type: array
totals:
$ref: '#/definitions/internal_api.TrafficTotals'
type: object
internal_api.TrafficChartResponse:
properties:
granularity:
type: string
series:
items:
$ref: '#/definitions/internal_api.TrafficSeries'
type: array
since:
type: integer
until:
type: integer
x:
$ref: '#/definitions/internal_api.TrafficChartAxis'
type: object
internal_api.TrafficSeries:
properties:
data:
items:
type: integer
type: array
name:
type: string
tokens_in:
items:
type: integer
type: array
tokens_out:
items:
type: integer
type: array
type: object
internal_api.TrafficTotals:
properties:
data:
items:
type: integer
type: array
tokens_in:
items:
type: integer
type: array
tokens_out:
items:
type: integer
type: array
type: object
internal_api.TrendInfo:
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
type: object
internal_api.UpdateAccessRequest:
properties:
default_namespace:
type: string
namespaces:
items:
type: string
type: array
propagate_to_keys:
type: boolean
type: object
internal_api.UpdateAlertThresholdsRequest:
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
type: object
internal_api.UpdateIPBanRequest:
properties:
expires_at:
$ref: '#/definitions/internal_api.optionalInt64'
reason:
type: string
status:
type: string
type: object
internal_api.UpdateMasterRequest:
properties:
global_qps:
type: integer
group:
type: string
max_child_keys:
type: integer
name:
type: string
propagate_to_keys:
type: boolean
type: object
internal_api.UpdateNamespaceRequest:
properties:
description:
type: string
name:
type: string
status:
type: string
type: object
internal_api.UpdateTokenRequest:
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
type: object
internal_api.WhoamiRealtimeView:
properties:
qps:
description: Current QPS
example: 5
type: integer
qps_limit:
description: QPS limit
example: 100
type: integer
rate_limited:
description: Whether currently rate limited
example: false
type: boolean
requests:
description: Total requests
example: 100
type: integer
tokens:
description: Total tokens used
example: 50000
type: integer
updated_at:
description: Last updated timestamp
example: 1703505600
type: integer
type: object
internal_api.WhoamiResponse:
properties:
allow_ips:
description: IP whitelist (for diagnostics)
example: ""
type: string
created_at:
example: 1703505600
type: integer
default_namespace:
example: default
type: string
deny_ips:
description: IP blacklist (for diagnostics)
example: ""
type: string
epoch:
example: 1
type: integer
expires_at:
description: Expiration timestamp (0 = never)
example: 0
type: integer
global_qps:
example: 100
type: integer
group:
example: default
type: string
id:
description: Master fields (only present when type is "master")
example: 1
type: integer
issued_at_epoch:
example: 1
type: integer
issued_by:
example: master
type: string
last_accessed_at:
description: Last access timestamp
example: 0
type: integer
master_id:
description: Key fields (only present when type is "key")
example: 1
type: integer
master_name:
description: Parent master name (for display)
example: tenant-a
type: string
max_child_keys:
example: 5
type: integer
model_limits:
description: Model restrictions
example: gpt-4,claude
type: string
model_limits_enabled:
description: Whether model limits are active
example: false
type: boolean
name:
example: tenant-a
type: string
namespaces:
example: default,ns1
type: string
permissions:
description: Admin permissions (always ["*"])
items:
type: string
type: array
quota_limit:
description: Token quota limit (-1 = unlimited)
example: -1
type: integer
quota_reset_at:
description: Quota reset timestamp
example: 0
type: integer
quota_reset_type:
description: Quota reset type
example: monthly
type: string
quota_used:
description: Token quota used
example: 0
type: integer
realtime:
allOf:
- $ref: '#/definitions/internal_api.WhoamiRealtimeView'
description: Realtime stats (for master and key types)
request_count:
description: Total request count (from DB)
example: 0
type: integer
role:
description: Admin fields (only present when type is "admin")
example: admin
type: string
scopes:
example: chat:write
type: string
status:
example: active
type: string
type:
description: 'Type of the authenticated identity: "admin", "master", or "key"'
example: master
type: string
updated_at:
example: 1703505600
type: integer
used_tokens:
description: Total tokens used (from DB)
example: 0
type: integer
type: object
internal_api.apiKeyStatsFlushEntry:
properties:
api_key_id:
type: integer
requests:
type: integer
success_requests:
type: integer
type: object
internal_api.apiKeyStatsFlushRequest:
properties:
keys:
items:
$ref: '#/definitions/internal_api.apiKeyStatsFlushEntry'
type: array
type: object
internal_api.optionalInt64:
properties:
set:
type: boolean
value:
format: int64
type: integer
type: object
internal_api.refreshModelRegistryRequest:
properties:
ref:
type: string
type: object
internal_api.reportAlertEntry:
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
required:
- severity
- title
- type
type: object
internal_api.reportAlertsRequest:
properties:
alerts:
items:
$ref: '#/definitions/internal_api.reportAlertEntry'
type: array
required:
- alerts
type: object
internal_api.reportAlertsResponse:
properties:
accepted:
type: integer
deduplicated:
type: integer
errors:
items:
type: string
type: array
type: object
internal_api.statsFlushEntry:
properties:
last_accessed_at:
type: integer
requests:
type: integer
token_hash:
type: string
tokens:
type: integer
type: object
internal_api.statsFlushRequest:
properties:
keys:
items:
$ref: '#/definitions/internal_api.statsFlushEntry'
type: array
type: object
modelcap.Meta:
properties:
checksum:
type: string
source:
type: string
updated_at:
type: string
upstream_ref:
type: string
upstream_url:
type: string
version:
type: string
type: object
modelcap.Model:
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
type: object
host: localhost:8080
info:
contact:
email: support@swagger.io
name: API Support
url: http://www.swagger.io/support
description: Management API for EZ-API Gateway system.
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
termsOfService: http://swagger.io/terms/
title: EZ-API Control Plane
version: 0.0.1
paths:
/about:
get:
description: Returns system metadata for display on an about page
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.AboutResponse'
summary: Get system information
tags:
- Public
/admin/alerts:
get:
description: List system alerts with optional filters
parameters:
- description: limit (default 50, max 200)
in: query
name: limit
type: integer
- description: offset
in: query
name: offset
type: integer
- description: filter by status (active, acknowledged, resolved, dismissed)
in: query
name: status
type: string
- description: filter by severity (info, warning, critical)
in: query
name: severity
type: string
- description: filter by type (rate_limit, error_spike, quota_exceeded, key_disabled,
key_expired, provider_down, traffic_spike)
in: query
name: type
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.ListAlertsResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: List alerts
tags:
- admin
post:
consumes:
- application/json
description: Create a new system alert
parameters:
- description: Alert data
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.CreateAlertRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Create alert
tags:
- admin
/admin/alerts/{id}:
delete:
description: Dismiss an alert (soft delete)
parameters:
- description: Alert ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Dismiss alert
tags:
- admin
get:
description: Get a single alert by ID
parameters:
- description: Alert ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Get alert
tags:
- admin
/admin/alerts/{id}/ack:
post:
consumes:
- application/json
description: Mark an alert as acknowledged
parameters:
- description: Alert ID
in: path
name: id
required: true
type: integer
- description: Ack data
in: body
name: request
schema:
$ref: '#/definitions/internal_api.AckAlertRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Acknowledge alert
tags:
- admin
/admin/alerts/{id}/resolve:
post:
description: Mark an alert as resolved
parameters:
- description: Alert ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Resolve alert
tags:
- admin
/admin/alerts/stats:
get:
description: Get alert count statistics by status and severity
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.AlertStats'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: Alert statistics
tags:
- admin
/admin/alerts/thresholds:
get:
description: Get current alert threshold configuration for traffic spike detection
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.AlertThresholdView'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: Get alert thresholds
tags:
- admin
put:
consumes:
- application/json
description: Update alert threshold configuration for traffic spike detection
parameters:
- description: Threshold configuration
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.UpdateAlertThresholdsRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update alert thresholds
tags:
- admin
/admin/api-keys:
get:
description: List API keys with optional filters
parameters:
- description: page (1-based)
in: query
name: page
type: integer
- description: limit (default 50, max 200)
in: query
name: limit
type: integer
- description: filter by group_id
in: query
name: group_id
type: integer
- description: filter by status (active, suspended, auto_disabled, manual_disabled)
in: query
name: status
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_model.APIKey'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: List API keys
tags:
- admin
post:
consumes:
- application/json
description: Create an API key for a provider group
parameters:
- description: API key payload
in: body
name: key
required: true
schema:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_dto.APIKeyDTO'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Create an API key
tags:
- admin
/admin/api-keys/{id}:
delete:
description: Delete an API key
parameters:
- description: APIKey ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Delete API key
tags:
- admin
get:
description: Get an API key by id
parameters:
- description: APIKey ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Get API key
tags:
- admin
put:
consumes:
- application/json
description: Update an API key
parameters:
- description: APIKey ID
in: path
name: id
required: true
type: integer
- description: API key payload
in: body
name: key
required: true
schema:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_dto.APIKeyDTO'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update API key
tags:
- admin
/admin/api-keys/batch:
post:
consumes:
- application/json
description: Batch delete or status update for api keys
parameters:
- description: Batch payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.BatchActionRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Batch api keys
tags:
- admin
/admin/apikey-stats/summary:
get:
description: Aggregate APIKey success/failure stats across all provider groups
parameters:
- description: Start time (unix seconds)
in: query
name: since
type: integer
- description: End time (unix seconds)
in: query
name: until
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.APIKeyStatsSummaryResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: APIKey stats summary (admin)
tags:
- admin
/admin/bindings:
get:
description: List all configured bindings
parameters:
- description: page (1-based)
in: query
name: page
type: integer
- description: limit (default 50, max 200)
in: query
name: limit
type: integer
- description: search by namespace/public_model
in: query
name: search
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_model.Binding'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: List bindings
tags:
- admin
post:
consumes:
- application/json
description: Create a new (namespace, public_model) binding to a provider group
and selector
parameters:
- description: Binding Info
in: body
name: binding
required: true
schema:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_dto.BindingDTO'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Create a new binding
tags:
- admin
/admin/bindings/{id}:
delete:
description: Delete a binding by id and rebuild bindings snapshot
parameters:
- description: Binding ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Delete a binding
tags:
- admin
get:
description: Get a binding by id
parameters:
- description: Binding ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Get a binding
tags:
- admin
put:
consumes:
- application/json
description: Update an existing binding
parameters:
- description: Binding ID
in: path
name: id
required: true
type: integer
- description: Binding Info
in: body
name: binding
required: true
schema:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_dto.BindingDTO'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update a binding
tags:
- admin
/admin/bindings/batch:
post:
consumes:
- application/json
description: Batch delete or status update for bindings
parameters:
- description: Batch payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.BatchActionRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Batch bindings
tags:
- admin
/admin/dashboard/summary:
get:
description: Returns aggregated metrics for dashboard display including requests,
tokens, latency, masters, keys, and provider keys statistics
parameters:
- description: 'time period: today, week, month, last7d, last30d, all'
in: query
name: period
type: string
- description: unix seconds
in: query
name: since
type: integer
- description: unix seconds
in: query
name: until
type: integer
- description: include trend data comparing to previous period
in: query
name: include_trends
type: boolean
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Dashboard summary
tags:
- admin
/admin/features:
get:
description: Returns all feature flags stored in Redis (meta:features)
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/gin.H'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: List feature flags
tags:
- admin
put:
consumes:
- application/json
description: Updates selected feature flags (meta:features). Values are stored
as strings.
parameters:
- description: Feature map
in: body
name: request
required: true
schema:
type: object
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update feature flags
tags:
- admin
/admin/ip-bans:
get:
consumes:
- application/json
description: List all global IP/CIDR ban rules
parameters:
- description: Filter by status (active, expired)
in: query
name: status
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/internal_api.IPBanView'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: List IP bans
tags:
- admin
- ip-bans
post:
consumes:
- application/json
description: Create a new global IP/CIDR ban rule
parameters:
- description: IP Ban Info
in: body
name: ban
required: true
schema:
$ref: '#/definitions/internal_api.CreateIPBanRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Create an IP ban
tags:
- admin
- ip-bans
/admin/ip-bans/{id}:
delete:
consumes:
- application/json
description: Delete a global IP/CIDR ban rule
parameters:
- description: IP Ban ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"204":
description: No Content
"404":
description: Not Found
schema:
$ref: '#/definitions/gin.H'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: Delete an IP ban
tags:
- admin
- ip-bans
get:
consumes:
- application/json
description: Get a single global IP/CIDR ban rule by ID
parameters:
- description: IP Ban ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Get an IP ban
tags:
- admin
- ip-bans
put:
consumes:
- application/json
description: Update a global IP/CIDR ban rule
parameters:
- description: IP Ban ID
in: path
name: id
required: true
type: integer
- description: IP Ban Update
in: body
name: ban
required: true
schema:
$ref: '#/definitions/internal_api.UpdateIPBanRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update an IP ban
tags:
- admin
- ip-bans
/admin/keys/{id}/access:
get:
description: Returns key default_namespace and namespaces
parameters:
- description: Key ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Get key access settings
tags:
- admin
put:
consumes:
- application/json
description: Updates key default_namespace and namespaces and syncs to Redis
parameters:
- description: Key ID
in: path
name: id
required: true
type: integer
- description: Access settings
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.UpdateAccessRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update key access settings
tags:
- admin
/admin/logs:
delete:
consumes:
- application/json
description: Delete logs before a given timestamp with optional filters
parameters:
- description: Delete filters
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.DeleteLogsRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Delete logs (admin)
tags:
- admin
get:
description: List request logs with basic filtering/pagination. Returns full
log records including request_body.
parameters:
- description: limit (default 50, max 200)
in: query
name: limit
type: integer
- description: offset
in: query
name: offset
type: integer
- description: unix seconds
in: query
name: since
type: integer
- description: unix seconds
in: query
name: until
type: integer
- description: key id
in: query
name: key_id
type: integer
- description: route group
in: query
name: group
type: string
- description: model
in: query
name: model
type: string
- description: status code
in: query
name: status_code
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.ListLogsResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: List logs (admin)
tags:
- admin
/admin/logs/stats:
get:
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.'
parameters:
- description: unix seconds
in: query
name: since
type: integer
- description: unix seconds
in: query
name: until
type: integer
- description: 'group by dimension: model, day, month, hour, minute. Returns
GroupedStatsResponse when specified.'
enum:
- model
- day
- month
- hour
- minute
in: query
name: group_by
type: string
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Log stats (admin)
tags:
- admin
/admin/logs/stats/traffic-chart:
get:
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".
parameters:
- description: 'Time granularity: hour (default) or minute'
enum:
- hour
- minute
in: query
name: granularity
type: string
- description: Start time (unix seconds), defaults to 24h ago
in: query
name: since
type: integer
- description: End time (unix seconds), defaults to now
in: query
name: until
type: integer
- description: Number of top models to return (1-20), defaults to 5
in: query
name: top_n
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Traffic chart data (admin)
tags:
- admin
/admin/logs/webhook:
get:
description: Returns current webhook notification config
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Get log webhook config
tags:
- admin
put:
consumes:
- application/json
description: Updates webhook notification config
parameters:
- description: Webhook config
in: body
name: request
required: true
schema:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_service.LogWebhookConfig'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update log webhook config
tags:
- admin
/admin/masters:
get:
description: List all master tenants
parameters:
- description: page (1-based)
in: query
name: page
type: integer
- description: limit (default 50, max 200)
in: query
name: limit
type: integer
- description: search by name/group
in: query
name: search
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/internal_api.MasterView'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: List masters
tags:
- admin
post:
consumes:
- application/json
description: Create a new master account (tenant)
parameters:
- description: Master Info
in: body
name: master
required: true
schema:
$ref: '#/definitions/internal_api.CreateMasterRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Create a new master tenant
tags:
- admin
/admin/masters/{id}:
delete:
description: Suspends a master and revokes all existing keys by bumping epoch
and syncing to Redis
parameters:
- description: Master ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Delete (revoke) master
tags:
- admin
get:
description: Get a master tenant by id
parameters:
- description: Master ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Get master
tags:
- admin
put:
consumes:
- application/json
description: Update master fields; optionally propagate group to existing keys
parameters:
- description: Master ID
in: path
name: id
required: true
type: integer
- description: Update payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.UpdateMasterRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update master
tags:
- admin
/admin/masters/{id}/access:
get:
description: Returns master default_namespace and namespaces
parameters:
- description: Master ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Get master access settings
tags:
- admin
put:
consumes:
- application/json
description: Updates master default_namespace and namespaces; optionally propagate
to existing keys
parameters:
- description: Master ID
in: path
name: id
required: true
type: integer
- description: Access settings
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.UpdateAccessRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update master access settings
tags:
- admin
/admin/masters/{id}/keys:
post:
consumes:
- application/json
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.
parameters:
- description: Master ID
in: path
name: id
required: true
type: integer
- description: Key Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.IssueChildKeyRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Issue a child key on behalf of a master
tags:
- admin
/admin/masters/{id}/manage:
post:
consumes:
- application/json
description: Freeze or unfreeze a master tenant
parameters:
- description: Master ID
in: path
name: id
required: true
type: integer
- description: Action
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.ManageMasterRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Manage master status
tags:
- admin
/admin/masters/{id}/realtime:
get:
description: Return realtime counters for the specified master
parameters:
- description: Master ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Master realtime stats (admin)
tags:
- admin
/admin/masters/batch:
post:
consumes:
- application/json
description: Batch delete or status update for masters
parameters:
- description: Batch payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.BatchActionRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Batch masters
tags:
- admin
/admin/model-registry/check:
post:
consumes:
- application/json
description: Checks models.dev commit SHA for a ref and indicates whether refresh
is needed (does not apply changes)
parameters:
- description: optional override ref
in: body
name: body
schema:
$ref: '#/definitions/internal_api.refreshModelRegistryRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Check model registry upstream version
tags:
- admin
/admin/model-registry/refresh:
post:
consumes:
- application/json
description: Fetches models.dev, computes per-binding capabilities, and updates
Redis meta:models
parameters:
- description: optional override ref
in: body
name: body
schema:
$ref: '#/definitions/internal_api.refreshModelRegistryRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Refresh model registry from models.dev
tags:
- admin
/admin/model-registry/rollback:
post:
description: Rollback meta:models to previous cached last-good version
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/gin.H'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: Rollback model registry
tags:
- admin
/admin/model-registry/status:
get:
description: Returns Redis meta and local last-good cache info for model capability
registry
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Get model registry status
tags:
- admin
/admin/models:
get:
description: Get a list of all registered models
parameters:
- description: page (1-based)
in: query
name: page
type: integer
- description: limit (default 50, max 200)
in: query
name: limit
type: integer
- description: search by name/kind
in: query
name: search
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_model.Model'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: List all models
tags:
- admin
post:
consumes:
- application/json
description: Register a supported model with its capabilities
parameters:
- description: Model Info
in: body
name: model
required: true
schema:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_dto.ModelDTO'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Register a new model
tags:
- admin
/admin/models/{id}:
delete:
description: Delete a model by id
parameters:
- description: Model ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Delete a model
tags:
- admin
put:
consumes:
- application/json
description: Update an existing model's configuration
parameters:
- description: Model ID
in: path
name: id
required: true
type: integer
- description: Model Info
in: body
name: model
required: true
schema:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_dto.ModelDTO'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update a model
tags:
- admin
/admin/models/batch:
post:
consumes:
- application/json
description: Batch delete for models
parameters:
- description: Batch payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.BatchActionRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Batch models
tags:
- admin
/admin/namespaces:
get:
description: List all namespaces
parameters:
- description: page (1-based)
in: query
name: page
type: integer
- description: limit (default 50, max 200)
in: query
name: limit
type: integer
- description: search by name/description
in: query
name: search
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_model.Namespace'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: List namespaces
tags:
- admin
post:
consumes:
- application/json
description: Create a namespace for bindings
parameters:
- description: Namespace payload
in: body
name: namespace
required: true
schema:
$ref: '#/definitions/internal_api.NamespaceRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Create namespace
tags:
- admin
/admin/namespaces/{id}:
delete:
description: Delete a namespace and its bindings
parameters:
- description: Namespace ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Delete namespace
tags:
- admin
get:
description: Get a namespace by id
parameters:
- description: Namespace ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Get namespace
tags:
- admin
put:
consumes:
- application/json
description: Update a namespace
parameters:
- description: Namespace ID
in: path
name: id
required: true
type: integer
- description: Update payload
in: body
name: namespace
required: true
schema:
$ref: '#/definitions/internal_api.UpdateNamespaceRequest'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update namespace
tags:
- admin
/admin/operation-logs:
get:
description: List admin operation logs
parameters:
- description: page (1-based)
in: query
name: page
type: integer
- description: limit (default 50, max 200)
in: query
name: limit
type: integer
- description: search by actor/method/path
in: query
name: search
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/internal_api.OperationLogView'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: List operation logs
tags:
- admin
/admin/provider-groups:
get:
description: List all provider groups
parameters:
- description: page (1-based)
in: query
name: page
type: integer
- description: limit (default 50, max 200)
in: query
name: limit
type: integer
- description: search by name/type
in: query
name: search
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_model.ProviderGroup'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: List provider groups
tags:
- admin
post:
consumes:
- application/json
description: Create a provider group definition
parameters:
- description: Provider group payload
in: body
name: group
required: true
schema:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_dto.ProviderGroupDTO'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Create a provider group
tags:
- admin
/admin/provider-groups/{id}:
delete:
description: Delete a provider group and its api keys/bindings
parameters:
- description: ProviderGroup ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Delete provider group
tags:
- admin
get:
description: Get a provider group by id
parameters:
- description: ProviderGroup ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Get provider group
tags:
- admin
put:
consumes:
- application/json
description: Update a provider group
parameters:
- description: ProviderGroup ID
in: path
name: id
required: true
type: integer
- description: Provider group payload
in: body
name: group
required: true
schema:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_dto.ProviderGroupDTO'
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Update provider group
tags:
- admin
/admin/realtime:
get:
description: Return aggregated realtime counters across all masters
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.SystemRealtimeView'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: System-level realtime stats (admin)
tags:
- admin
/admin/stats:
get:
description: Aggregate request stats across all masters
parameters:
- description: today|week|month|all
in: query
name: period
type: string
- description: unix seconds
in: query
name: since
type: integer
- description: unix seconds
in: query
name: until
type: integer
produces:
- application/json
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'
security:
- AdminAuth: []
summary: Usage stats (admin)
tags:
- admin
/admin/sync/snapshot:
post:
description: Force full synchronization of DB state to Redis
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/gin.H'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
summary: Force sync snapshot
tags:
- admin
/auth/whoami:
get:
description: |-
Returns complete identity and realtime statistics of the authenticated user.
Supports Admin Token, Master Key, and Child Key (API Key) authentication.
This endpoint is designed for frontend initialization - call once after login
and store the response for subsequent use.
**Response varies by token type:**
**Admin Token:**
- type: "admin"
- role: "admin"
- permissions: ["*"] (full access)
**Master Key:**
- type: "master"
- Basic info: id, name, group, namespaces, status, epoch, max_child_keys, global_qps
- Timestamps: created_at, updated_at
- Realtime stats: requests, tokens, qps, qps_limit, rate_limited
**Child Key (API Key):**
- type: "key"
- Basic info: id, master_id, master_name, group, scopes, namespaces, status
- Security: issued_at_epoch, issued_by, allow_ips, deny_ips, expires_at
- Model limits: model_limits, model_limits_enabled
- Quota: quota_limit, quota_used, quota_reset_at, quota_reset_type
- Usage stats: request_count, used_tokens, last_accessed_at
- Realtime stats: requests, tokens, qps, qps_limit, rate_limited
**Error responses:**
- 401: authorization header required
- 401: invalid authorization header format
- 401: invalid token
- 401: token is not active
- 401: token has expired
- 401: token has been revoked
- 401: master is not active
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.WhoamiResponse'
"401":
description: Invalid or missing token
schema:
$ref: '#/definitions/gin.H'
security:
- AdminAuth: []
- MasterAuth: []
summary: Get current identity
tags:
- auth
/internal/alerts/report:
post:
consumes:
- application/json
description: Internal endpoint for Data Plane to report alerts to Control Plane
parameters:
- description: Alerts to report
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.reportAlertsRequest'
produces:
- application/json
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'
summary: Report alerts from DP
tags:
- internal
/internal/apikey-stats/flush:
post:
consumes:
- application/json
description: Internal endpoint for flushing accumulated APIKey stats from DP
to CP database
parameters:
- description: Stats to flush
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.apiKeyStatsFlushRequest'
produces:
- application/json
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'
summary: Flush API key stats
tags:
- internal
/internal/stats/flush:
post:
consumes:
- application/json
description: Internal endpoint for flushing accumulated key usage stats from
DP to CP database
parameters:
- description: Stats to flush
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.statsFlushRequest'
produces:
- application/json
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'
summary: Flush key stats
tags:
- internal
/logs:
post:
consumes:
- application/json
description: Internal endpoint for ingesting logs from Balancer
parameters:
- description: Log Record
in: body
name: log
required: true
schema:
$ref: '#/definitions/github_com_ez-api_ez-api_internal_model.LogRecord'
produces:
- application/json
responses:
"202":
description: Accepted
schema:
$ref: '#/definitions/gin.H'
"400":
description: Bad Request
schema:
$ref: '#/definitions/gin.H'
summary: Ingest logs
tags:
- system
/status:
get:
description: Returns public runtime status information without sensitive data
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.StatusResponse'
summary: Get system status
tags:
- Public
/v1/logs:
get:
description: List request logs for the authenticated master
parameters:
- description: limit (default 50, max 200)
in: query
name: limit
type: integer
- description: offset
in: query
name: offset
type: integer
- description: unix seconds
in: query
name: since
type: integer
- description: unix seconds
in: query
name: until
type: integer
- description: model
in: query
name: model
type: string
- description: status code
in: query
name: status_code
type: integer
produces:
- application/json
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'
security:
- MasterAuth: []
summary: List logs (master)
tags:
- master
/v1/logs/stats:
get:
description: Aggregate request log stats for the authenticated master
parameters:
- description: unix seconds
in: query
name: since
type: integer
- description: unix seconds
in: query
name: until
type: integer
produces:
- application/json
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'
security:
- MasterAuth: []
summary: Log stats (master)
tags:
- master
/v1/realtime:
get:
description: Return realtime counters for the authenticated master
produces:
- application/json
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'
security:
- MasterAuth: []
summary: Master realtime stats
tags:
- master
/v1/self:
get:
description: Returns master metadata for the authenticated master key
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.MasterView'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/gin.H'
security:
- MasterAuth: []
summary: Get current master info
tags:
- master
/v1/stats:
get:
description: Aggregate request stats for the authenticated master
parameters:
- description: today|week|month|all
in: query
name: period
type: string
- description: unix seconds
in: query
name: since
type: integer
- description: unix seconds
in: query
name: until
type: integer
produces:
- application/json
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'
security:
- MasterAuth: []
summary: Usage stats (master)
tags:
- master
/v1/tokens:
get:
description: List child keys issued under the authenticated master
parameters:
- description: page (1-based)
in: query
name: page
type: integer
- description: limit (default 50, max 200)
in: query
name: limit
type: integer
- description: search by group/scopes/namespaces/status
in: query
name: search
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/internal_api.TokenView'
type: array
"401":
description: Unauthorized
schema:
$ref: '#/definitions/gin.H'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/gin.H'
security:
- MasterAuth: []
summary: List child keys
tags:
- master
post:
consumes:
- application/json
description: Issue a new access token (child key) for the authenticated master
parameters:
- description: Key Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.IssueChildKeyRequest'
produces:
- application/json
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'
security:
- MasterAuth: []
summary: Issue a child key
tags:
- master
/v1/tokens/{id}:
delete:
description: Suspends a child key under the authenticated master
parameters:
- description: Token ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- MasterAuth: []
summary: Delete (revoke) child key
tags:
- master
get:
description: Get a child key by id under the authenticated master
parameters:
- description: Token ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
security:
- MasterAuth: []
summary: Get child key
tags:
- master
put:
consumes:
- application/json
description: Update token scopes/status under the authenticated master
parameters:
- description: Token ID
in: path
name: id
required: true
type: integer
- description: Update payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/internal_api.UpdateTokenRequest'
produces:
- application/json
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'
security:
- MasterAuth: []
summary: Update child key
tags:
- master
securityDefinitions:
AdminAuth:
description: 'Type "Bearer" followed by a space and the admin token. Example:
Bearer admin123'
in: header
name: Authorization
type: apiKey
MasterAuth:
description: 'Type "Bearer" followed by a space and the master key. Example: Bearer
sk-xxx'
in: header
name: Authorization
type: apiKey
swagger: "2.0"