mirror of
https://github.com/EZ-Api/ez-api.git
synced 2026-01-13 17:47:51 +00:00
Add new endpoint GET /admin/logs/stats/traffic-chart to provide aggregated traffic metrics grouped by time and model. Features include: - Time granularity selection (hour/minute) - Top-N model breakdown with "other" aggregation - Metrics for request counts and token usage Includes generated Swagger documentation.
4115 lines
99 KiB
YAML
4115 lines
99 KiB
YAML
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.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
|
||
updated_at:
|
||
type: integer
|
||
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.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.TrafficBucket:
|
||
properties:
|
||
breakdown:
|
||
additionalProperties:
|
||
$ref: '#/definitions/internal_api.TrafficMetrics'
|
||
type: object
|
||
time:
|
||
type: string
|
||
timestamp:
|
||
type: integer
|
||
total:
|
||
$ref: '#/definitions/internal_api.TrafficMetrics'
|
||
type: object
|
||
internal_api.TrafficChartResponse:
|
||
properties:
|
||
buckets:
|
||
items:
|
||
$ref: '#/definitions/internal_api.TrafficBucket'
|
||
type: array
|
||
granularity:
|
||
type: string
|
||
models:
|
||
items:
|
||
type: string
|
||
type: array
|
||
since:
|
||
type: integer
|
||
until:
|
||
type: integer
|
||
type: object
|
||
internal_api.TrafficMetrics:
|
||
properties:
|
||
count:
|
||
type: integer
|
||
tokens_in:
|
||
type: integer
|
||
tokens_out:
|
||
type: integer
|
||
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.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.WhoamiResponse:
|
||
properties:
|
||
created_at:
|
||
example: 1703505600
|
||
type: integer
|
||
default_namespace:
|
||
example: default
|
||
type: string
|
||
epoch:
|
||
example: 1
|
||
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
|
||
master_id:
|
||
description: Key fields (only present when type is "key")
|
||
example: 1
|
||
type: integer
|
||
max_child_keys:
|
||
example: 5
|
||
type: integer
|
||
name:
|
||
example: tenant-a
|
||
type: string
|
||
namespaces:
|
||
example: default,ns1
|
||
type: string
|
||
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
|
||
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.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, 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.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/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
|
||
time buckets with per-model breakdown.
|
||
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 the identity of the authenticated user based on the Authorization header.
|
||
Supports Admin Token, Master Key, and Child Key (API Key) authentication.
|
||
|
||
Response varies by token type:
|
||
- Admin Token: {"type": "admin", "role": "admin"}
|
||
- Master Key: {"type": "master", "id": 1, "name": "...", ...}
|
||
- Child Key: {"type": "key", "id": 5, "master_id": 1, "issued_by": "master", ...}
|
||
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"
|