- 新端点 /ai/v1/audio/speech(xai.grok-tts)、/rerank(cohere.rerank-v4)、/moderations(OCI Guardrails) - Responses 放行 code_interpreter 与远程 mcp 工具,web_search/x_search 解除仅非流式限制 - 模型能力映射扩展:TEXT_RERANK→RERANK、TEXT_TO_AUDIO→TTS - AI 网关文档独立 docs/ai-gateway.md,字段兼容矩阵只列支持项;README 精简引用 - swagger 修缺:135 处响应注解具体化,RawMessage/联合类型统一渲染 AnyJSON,overrides 迁至 docs/.swaggo - CHANGELOG 0.4.0,版本段不再记日期;DASH_VERSION v0.4.0
177 lines
5.0 KiB
Go
177 lines
5.0 KiB
Go
package api
|
|
|
|
import (
|
|
"encoding/json"
|
|
"time"
|
|
|
|
"oci-portal/internal/model"
|
|
"oci-portal/internal/oci"
|
|
"oci-portal/internal/service"
|
|
)
|
|
|
|
// 本文件的类型仅供 swagger 文档渲染(@Success/@Failure 注解引用),
|
|
// 运行时代码不使用;字段与各 handler 返回的 gin.H 外壳保持一致。
|
|
|
|
// errorResponse 是统一错误响应外壳。
|
|
type errorResponse struct {
|
|
Error string `json:"error"`
|
|
}
|
|
|
|
// itemsResponse 是 {"items": [...]} 列表外壳。
|
|
type itemsResponse[T any] struct {
|
|
Items []T `json:"items"`
|
|
}
|
|
|
|
// pagedResponse 是 {"items": [...], "total": n} 分页外壳。
|
|
type pagedResponse[T any] struct {
|
|
Items []T `json:"items"`
|
|
Total int64 `json:"total"`
|
|
}
|
|
|
|
// itemResponse 是 {"item": {...}} 单项外壳。
|
|
type itemResponse[T any] struct {
|
|
Item T `json:"item"`
|
|
}
|
|
|
|
// triggerResponse 是任务触发受理响应。
|
|
type triggerResponse struct {
|
|
Triggered bool `json:"triggered"`
|
|
}
|
|
|
|
// tokenResponse 是登录 / 换发令牌响应。
|
|
type tokenResponse struct {
|
|
Token string `json:"token"`
|
|
ExpiresAt time.Time `json:"expiresAt"`
|
|
}
|
|
|
|
// totpRequiredResponse 是密码通过但需两步验证码的 428 响应。
|
|
type totpRequiredResponse struct {
|
|
Error string `json:"error"`
|
|
TotpRequired bool `json:"totpRequired"`
|
|
}
|
|
|
|
// enabledResponse 是布尔开关查询响应。
|
|
type enabledResponse struct {
|
|
Enabled bool `json:"enabled"`
|
|
}
|
|
|
|
// totpSetupResponse 是 TOTP 初始化响应。
|
|
type totpSetupResponse struct {
|
|
Secret string `json:"secret"`
|
|
OtpauthUri string `json:"otpauthUri"`
|
|
}
|
|
|
|
// credentialsResponse 是当前登录账号信息。
|
|
type credentialsResponse struct {
|
|
Username string `json:"username"`
|
|
PasswordLoginDisabled bool `json:"passwordLoginDisabled"`
|
|
}
|
|
|
|
// oauthProvidersResponse 是外部登录 provider 列表。
|
|
type oauthProvidersResponse struct {
|
|
Providers []service.ProviderInfo `json:"providers"`
|
|
PasswordLoginDisabled bool `json:"passwordLoginDisabled"`
|
|
}
|
|
|
|
// urlResponse 是跳转地址响应。
|
|
type urlResponse struct {
|
|
URL string `json:"url"`
|
|
}
|
|
|
|
// aboutResponse 是「设置 · 关于」页构建与运行信息。
|
|
type aboutResponse struct {
|
|
Version string `json:"version"`
|
|
BuildTime string `json:"buildTime"`
|
|
GoVersion string `json:"goVersion"`
|
|
Platform string `json:"platform"`
|
|
StartedAt string `json:"startedAt"`
|
|
UptimeSeconds int64 `json:"uptimeSeconds"`
|
|
Resources aboutResources `json:"resources"`
|
|
}
|
|
|
|
// aboutResources 是进程资源占用快照。
|
|
type aboutResources struct {
|
|
CpuAvgPercent float64 `json:"cpuAvgPercent"`
|
|
NumCpu int `json:"numCpu"`
|
|
Goroutines int `json:"goroutines"`
|
|
MemHeapBytes uint64 `json:"memHeapBytes"`
|
|
MemSysBytes uint64 `json:"memSysBytes"`
|
|
DbEngine string `json:"dbEngine"`
|
|
DbBytes int64 `json:"dbBytes"`
|
|
}
|
|
|
|
// publicIpResponse 是换绑公网 IP 结果。
|
|
type publicIpResponse struct {
|
|
PublicIp string `json:"publicIp"`
|
|
}
|
|
|
|
// ipv6AddressResponse 是实例新增 IPv6 结果。
|
|
type ipv6AddressResponse struct {
|
|
Ipv6Address string `json:"ipv6Address"`
|
|
}
|
|
|
|
// addressResponse 是 VNIC 新增 IPv6 结果。
|
|
type addressResponse struct {
|
|
Address string `json:"address"`
|
|
}
|
|
|
|
// ipv6StepsResponse 是 VCN 开启 IPv6 的分步结果。
|
|
type ipv6StepsResponse struct {
|
|
Steps []oci.IPv6Step `json:"steps"`
|
|
}
|
|
|
|
// configChangesResponse 是租户配置校验 / 更新结果(config 与字段变更对照)。
|
|
type configChangesResponse struct {
|
|
Config *model.OciConfig `json:"config"`
|
|
Changes service.Changes `json:"changes"`
|
|
}
|
|
|
|
// aiKeyCreateResponse 是 AI 密钥创建结果;key 为明文,仅本次返回。
|
|
type aiKeyCreateResponse struct {
|
|
Key string `json:"key"`
|
|
Item model.AiKey `json:"item"`
|
|
}
|
|
|
|
// usedByResponse 是代理关联租户结果(关联数)。
|
|
type usedByResponse struct {
|
|
UsedBy int64 `json:"usedBy"`
|
|
}
|
|
|
|
// rawDetailResponse 是审计事件原文响应。
|
|
type rawDetailResponse struct {
|
|
Raw json.RawMessage `json:"raw"`
|
|
}
|
|
|
|
// passwordResponse 是租户用户重置密码结果(一次性明文)。
|
|
type passwordResponse struct {
|
|
Password string `json:"password"`
|
|
}
|
|
|
|
// deletedTotpResponse 是清除 MFA 设备结果。
|
|
type deletedTotpResponse struct {
|
|
DeletedTotpDevices int `json:"deletedTotpDevices"`
|
|
}
|
|
|
|
// deletedApiKeysResponse 是清理用户 API Key 结果。
|
|
type deletedApiKeysResponse struct {
|
|
DeletedApiKeys int `json:"deletedApiKeys"`
|
|
}
|
|
|
|
// createInstancesResponse 是批量创建实例结果;部分成功仍 201,errors 为逐台失败信息。
|
|
type createInstancesResponse struct {
|
|
Instances []oci.Instance `json:"instances"`
|
|
Errors []string `json:"errors"`
|
|
}
|
|
|
|
// logWebhookStatusResponse 是日志回传 webhook 状态。
|
|
type logWebhookStatusResponse struct {
|
|
Exists bool `json:"exists"`
|
|
Webhook *service.LogWebhookInfo `json:"webhook,omitempty"`
|
|
}
|
|
|
|
// webConsoleSessionResponse 是网页控制台会话创建结果。
|
|
type webConsoleSessionResponse struct {
|
|
SessionId string `json:"sessionId"`
|
|
Type string `json:"type"`
|
|
}
|