Files
oci-portal/docs/swagger.yaml
T
wangdefa 23b2820101
CI / test (push) Successful in 22s
Release / release (push) Successful in 44s
发布 v0.8.3
2026-07-30 12:44:14 +08:00

8089 lines
197 KiB
YAML

basePath: /
definitions:
internal_api.aboutResources:
properties:
cpuAvgPercent:
type: number
dbBytes:
type: integer
dbEngine:
type: string
goroutines:
type: integer
memHeapBytes:
type: integer
memSysBytes:
type: integer
numCpu:
type: integer
type: object
internal_api.aboutResponse:
properties:
buildTime:
type: string
goVersion:
type: string
platform:
type: string
resources:
$ref: '#/definitions/internal_api.aboutResources'
startedAt:
type: string
uptimeSeconds:
type: integer
version:
type: string
type: object
internal_api.addressResponse:
properties:
address:
type: string
type: object
internal_api.aiKeyCreateResponse:
properties:
item:
$ref: '#/definitions/oci-portal_internal_model.AiKey'
key:
type: string
type: object
internal_api.aiSettingsResponse:
properties:
filterDeprecated:
description: FilterDeprecated 开启后已宣布弃用(即使未退役)的模型从列表与路由中排除
type: boolean
grokWebSearch:
description: |-
GrokWebSearch / GrokXSearch 是 xai. 模型服务端搜索工具默认注入开关;
请求 tools 已包含同名工具时不覆盖
type: boolean
grokXSearch:
type: boolean
streamGuardEnabled:
description: |-
StreamGuardEnabled / StreamGuardKB 是 Responses 流式保险丝:
instructions+tools 合计超阈值(KB)的流式请求改非流式上游并合成 SSE
type: boolean
streamGuardKB:
type: integer
upstreamWaitSeconds:
description: |-
UpstreamWaitSeconds 是 responses 直通的上游无响应预算(秒):非流式为单次
尝试总超时,流式为等待响应头预算;multi-agent/搜索类模型需远超 60s
type: integer
type: object
internal_api.attachBootVolumeRequest:
properties:
bootVolumeId:
type: string
region:
type: string
required:
- bootVolumeId
type: object
internal_api.attachVnicRequest:
properties:
assignIpv6:
description: AssignIpv6 为 true 时同时自动分配一个 IPv6(要求子网已启用 IPv6)。
type: boolean
assignPublicIp:
type: boolean
displayName:
type: string
privateIp:
type: string
region:
type: string
reservedPublicIpId:
description: ReservedPublicIPID 非空时不分配临时公网 IP,VNIC 就绪后由后台绑定该保留 IP。
type: string
subnetId:
type: string
required:
- subnetId
type: object
internal_api.attachVolumeRequest:
properties:
readOnly:
type: boolean
region:
type: string
volumeId:
type: string
required:
- volumeId
type: object
internal_api.configChangesResponse:
properties:
changes:
$ref: '#/definitions/oci-portal_internal_service.Changes'
config:
$ref: '#/definitions/oci-portal_internal_model.OciConfig'
type: object
internal_api.createBucketRequest:
properties:
compartmentId:
type: string
name:
type: string
publicRead:
type: boolean
region:
type: string
storageTier:
description: Standard / Archive
type: string
versioningOn:
type: boolean
required:
- name
type: object
internal_api.createConsoleConnectionRequest:
properties:
region:
type: string
sshPublicKey:
type: string
required:
- sshPublicKey
type: object
internal_api.createIdpRequest:
properties:
assertionAttribute:
type: string
description:
type: string
iconUrl:
type: string
jitAssignAdminGroup:
type: boolean
jitCreate:
type: boolean
jitEnabled:
type: boolean
jitMapEmail:
type: boolean
jitUpdate:
type: boolean
metadata:
type: string
name:
type: string
nameIdFormat:
type: string
userStoreAttribute:
type: string
required:
- metadata
- name
type: object
internal_api.createIdpResponse:
properties:
enabled:
type: boolean
id:
type: string
jitEnabled:
type: boolean
name:
type: string
partnerProviderId:
type: string
setupWarning:
$ref: '#/definitions/internal_api.idpSetupWarning'
timeCreated:
type: string
type:
type: string
type: object
internal_api.createInstanceRequest:
properties:
assignIpv6:
type: boolean
assignPublicIp:
type: boolean
availabilityDomain:
description: 为空时默认使用第一个可用域
type: string
bootVolumeId:
type: string
bootVolumeSizeGBs:
type: integer
bootVolumeVpusPerGB:
type: integer
compartmentId:
description: 为空时建在租户根
type: string
count:
description: 批量创建数量,缺省 1,上限 10
type: integer
displayName:
type: string
generateRootPassword:
description: 服务端生成随机 root 密码并写入 TAG RootPassword
type: boolean
imageId:
type: string
memoryInGBs:
type: number
ocpus:
type: number
region:
type: string
reservedPublicIpId:
description: 非空时不分配临时 IP,实例就绪后自动绑定该保留 IP
type: string
rootPassword:
type: string
shape:
type: string
sshPublicKey:
type: string
subnetId:
description: 为空时自动创建 VCN 与子网
type: string
userData:
type: string
required:
- displayName
- shape
type: object
internal_api.createInstancesResponse:
properties:
errors:
items:
type: string
type: array
instances:
items:
$ref: '#/definitions/oci-portal_internal_oci.Instance'
type: array
type: object
internal_api.createPARRequest:
properties:
accessType:
type: string
expiresHours:
type: integer
name:
type: string
objectName:
description: 空 = 桶级
type: string
region:
type: string
required:
- accessType
type: object
internal_api.createSecurityListRequest:
properties:
displayName:
type: string
egressRules:
items:
$ref: '#/definitions/oci-portal_internal_oci.SecurityRule'
type: array
ingressRules:
items:
$ref: '#/definitions/oci-portal_internal_oci.SecurityRule'
type: array
region:
type: string
vcnId:
type: string
required:
- displayName
- vcnId
type: object
internal_api.createSubnetRequest:
properties:
cidrBlock:
type: string
displayName:
type: string
dnsLabel:
type: string
ipv6CidrBlock:
type: string
prohibitPublicIp:
type: boolean
region:
type: string
vcnId:
type: string
required:
- cidrBlock
- displayName
- vcnId
type: object
internal_api.createTaskRequest:
properties:
cronExpr:
type: string
name:
type: string
payload:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
type:
type: string
required:
- cronExpr
- name
- type
type: object
internal_api.createTenantUserRequest:
properties:
addToAdminGroup:
type: boolean
description:
type: string
email:
type: string
familyName:
type: string
givenName:
type: string
grantDomainAdmin:
description: 同时勾选时先授身份域管理员,再加入管理员组
type: boolean
name:
type: string
required:
- familyName
- givenName
- name
type: object
internal_api.createVCNRequest:
properties:
cidrBlock:
type: string
compartmentId:
description: 为空时建在租户根
type: string
displayName:
type: string
dnsLabel:
type: string
enableIpv6:
description: 缺省默认启用
type: boolean
region:
type: string
required:
- cidrBlock
- displayName
type: object
internal_api.credentialsResponse:
properties:
passwordLoginDisabled:
type: boolean
username:
type: string
type: object
internal_api.deletedApiKeysResponse:
properties:
deletedApiKeys:
type: integer
type: object
internal_api.deletedTotpResponse:
properties:
deletedTotpDevices:
type: integer
type: object
internal_api.enableIPv6Request:
properties:
region:
type: string
type: object
internal_api.enabledResponse:
properties:
enabled:
type: boolean
type: object
internal_api.errorResponse:
properties:
code:
description: |-
Code 是机器可读错误码,多数错误不携带;当前仅全局 IP 限流的 429
返回 "RateLimited",前端据此与登录守卫的 429(无 code)区分
type: string
error:
type: string
type: object
internal_api.idpIconResponse:
properties:
fileName:
type: string
url:
type: string
type: object
internal_api.idpSetupWarning:
properties:
code:
type: string
message:
type: string
requestId:
type: string
resourceCreated:
type: boolean
type: object
internal_api.importRequest:
properties:
alias:
type: string
configIni:
type: string
fingerprint:
type: string
group:
description: 面板内自定义分组,可空
type: string
multiCompartment:
description: 开启后 compartment 入库缓存
type: boolean
multiRegion:
description: 开启后订阅区域入库缓存
type: boolean
passphrase:
type: string
privateKey:
type: string
proxyId:
description: 关联出站代理,null 直连
type: integer
region:
type: string
tenancyOcid:
type: string
userOcid:
type: string
required:
- alias
- privateKey
type: object
internal_api.instanceActionRequest:
properties:
action:
type: string
region:
type: string
required:
- action
type: object
internal_api.ipv6AddressResponse:
properties:
ipv6Address:
type: string
type: object
internal_api.ipv6StepsResponse:
properties:
steps:
items:
$ref: '#/definitions/oci-portal_internal_oci.IPv6Step'
type: array
type: object
internal_api.itemResponse-oci-portal_internal_model_AiModelBlacklist:
properties:
item:
$ref: '#/definitions/oci-portal_internal_model.AiModelBlacklist'
type: object
internal_api.itemsResponse-oci-portal_internal_aiwire_Model:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.Model'
type: array
type: object
internal_api.itemsResponse-oci-portal_internal_model_AiChannel:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_model.AiChannel'
type: array
type: object
internal_api.itemsResponse-oci-portal_internal_model_AiKey:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_model.AiKey'
type: array
type: object
internal_api.itemsResponse-oci-portal_internal_model_AiModelBlacklist:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_model.AiModelBlacklist'
type: array
type: object
internal_api.itemsResponse-oci-portal_internal_model_AiModelCache:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_model.AiModelCache'
type: array
type: object
internal_api.itemsResponse-oci-portal_internal_model_UserIdentity:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_model.UserIdentity'
type: array
type: object
internal_api.itemsResponse-oci-portal_internal_model_UserPasskey:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_model.UserPasskey'
type: array
type: object
internal_api.itemsResponse-oci-portal_internal_service_AggregatedModel:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_service.AggregatedModel'
type: array
type: object
internal_api.itemsResponse-oci-portal_internal_service_NotifyChannelView:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_service.NotifyChannelView'
type: array
type: object
internal_api.itemsResponse-oci-portal_internal_service_NotifyTemplateView:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_service.NotifyTemplateView'
type: array
type: object
internal_api.itemsResponse-oci-portal_internal_service_ProxyView:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_service.ProxyView'
type: array
type: object
internal_api.itemsResponse-oci-portal_internal_service_SessionInfo:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_service.SessionInfo'
type: array
type: object
internal_api.logWebhookStatusResponse:
properties:
exists:
type: boolean
webhook:
$ref: '#/definitions/oci-portal_internal_service.LogWebhookInfo'
type: object
internal_api.loginRequest:
properties:
password:
maxLength: 128
type: string
totpCode:
description: 两步验证码;账号已启用 TOTP 时必填,缺失返回 428
maxLength: 8
type: string
username:
description: 字段长度上限防超长输入撑爆登录守卫与 bcrypt(S-03)
maxLength: 64
type: string
required:
- password
- username
type: object
internal_api.oauthProvidersResponse:
properties:
passkeyLogin:
type: boolean
passwordLoginDisabled:
type: boolean
providers:
items:
$ref: '#/definitions/oci-portal_internal_service.ProviderInfo'
type: array
walletLogin:
type: boolean
type: object
internal_api.pagedResponse-oci-portal_internal_model_AiCallLog:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_model.AiCallLog'
type: array
total:
type: integer
type: object
internal_api.pagedResponse-oci-portal_internal_model_AiContentLog:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_model.AiContentLog'
type: array
total:
type: integer
type: object
internal_api.pagedResponse-oci-portal_internal_model_LogEvent:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_model.LogEvent'
type: array
total:
type: integer
type: object
internal_api.pagedResponse-oci-portal_internal_model_SystemLog:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_model.SystemLog'
type: array
total:
type: integer
type: object
internal_api.parPage:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_oci.PAR'
type: array
nextPage:
type: string
type: object
internal_api.passkeyFinishRequest:
properties:
credential:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
name:
maxLength: 64
type: string
sessionId:
maxLength: 64
type: string
required:
- credential
- sessionId
type: object
internal_api.passkeyOptionsResponse:
properties:
options:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
sessionId:
type: string
type: object
internal_api.passwordResponse:
properties:
password:
type: string
type: object
internal_api.payInvoiceRequest:
properties:
email:
type: string
required:
- email
type: object
internal_api.publicIpResponse:
properties:
publicIp:
type: string
type: object
internal_api.rawDetailResponse:
properties:
raw:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
type: object
internal_api.renameRequest:
properties:
displayName:
type: string
region:
type: string
required:
- displayName
type: object
internal_api.subscribeRegionRequest:
properties:
regionKey:
type: string
required:
- regionKey
type: object
internal_api.testChannelModelRequest:
properties:
model:
type: string
required:
- model
type: object
internal_api.tokenResponse:
properties:
expiresAt:
type: string
token:
type: string
type: object
internal_api.totpRequiredResponse:
properties:
error:
type: string
totpRequired:
type: boolean
type: object
internal_api.totpSetupResponse:
properties:
otpauthUri:
type: string
secret:
type: string
type: object
internal_api.triggerResponse:
properties:
triggered:
type: boolean
type: object
internal_api.updateBootVolumeRequest:
properties:
displayName:
type: string
region:
type: string
sizeInGBs:
type: integer
vpusPerGB:
type: integer
type: object
internal_api.updateBucketRequest:
properties:
publicRead:
type: boolean
region:
type: string
versioningOn:
type: boolean
type: object
internal_api.updateInstanceRequest:
properties:
displayName:
type: string
memoryInGBs:
type: number
ocpus:
type: number
region:
type: string
shape:
description: 更换 shape,运行中实例会自动重启
type: string
type: object
internal_api.updateNotifyChannelRequest:
properties:
bodyTemplate:
type: string
enabled:
type: boolean
from:
type: string
host:
type: string
port:
type: integer
secret:
type: string
server:
type: string
to:
type: string
topic:
type: string
url:
type: string
username:
type: string
type: object
internal_api.updateSecurityListRequest:
properties:
displayName:
type: string
egressRules:
items:
$ref: '#/definitions/oci-portal_internal_oci.SecurityRule'
type: array
ingressRules:
items:
$ref: '#/definitions/oci-portal_internal_oci.SecurityRule'
type: array
region:
type: string
type: object
internal_api.updateTaskRequest:
properties:
cronExpr:
type: string
name:
type: string
payload:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
status:
type: string
type: object
internal_api.updateTelegramRequest:
properties:
botToken:
type: string
chatId:
type: string
enabled:
type: boolean
type: object
internal_api.updateTenantUserRequest:
properties:
addToAdminGroup:
type: boolean
description:
type: string
email:
type: string
familyName:
type: string
givenName:
type: string
grantDomainAdmin:
type: boolean
type: object
internal_api.urlResponse:
properties:
url:
type: string
type: object
internal_api.usedByResponse:
properties:
usedBy:
type: integer
type: object
internal_api.userApiKeysResponse:
properties:
items:
items:
$ref: '#/definitions/oci-portal_internal_service.UserApiKeyInfo'
type: array
type: object
internal_api.walletChallengeRequest:
properties:
address:
maxLength: 64
type: string
mode:
enum:
- login
- bind
type: string
required:
- address
type: object
internal_api.walletChallengeResponse:
properties:
message:
type: string
nonce:
type: string
type: object
internal_api.walletVerifyRequest:
properties:
nonce:
maxLength: 64
type: string
signature:
maxLength: 200
type: string
required:
- nonce
- signature
type: object
internal_api.webConsoleSessionResponse:
properties:
sessionId:
type: string
type:
type: string
type: object
oci-portal_internal_aiwire.AnthBlock:
properties:
content:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
id:
description: tool_use
type: string
input:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
is_error:
type: boolean
name:
type: string
source:
allOf:
- $ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
description: image
text:
type: string
tool_use_id:
description: tool_result
type: string
type:
type: string
type: object
oci-portal_internal_aiwire.AnthContent:
properties:
blocks:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.AnthBlock'
type: array
text:
type: string
type: object
oci-portal_internal_aiwire.AnthMessage:
properties:
content:
$ref: '#/definitions/oci-portal_internal_aiwire.AnthContent'
role:
type: string
type: object
oci-portal_internal_aiwire.AnthOutputConfig:
properties:
effort:
type: string
type: object
oci-portal_internal_aiwire.AnthTool:
properties:
description:
type: string
input_schema:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
name:
type: string
type: object
oci-portal_internal_aiwire.AnthUsage:
properties:
cache_read_input_tokens:
description: CacheReadInputTokens 是缓存命中读取数;OCI 隐式缓存无「写入」计数,cache_creation
恒缺
type: integer
input_tokens:
type: integer
output_tokens:
type: integer
type: object
oci-portal_internal_aiwire.AnyJSON:
type: object
oci-portal_internal_aiwire.ChatMessage:
properties:
content:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
role:
type: string
tool_call_id:
type: string
tool_calls:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.ToolCall'
type: array
type: object
oci-portal_internal_aiwire.ChatRequest:
properties:
max_completion_tokens:
type: integer
max_tokens:
type: integer
messages:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.ChatMessage'
type: array
model:
type: string
parallel_tool_calls:
type: boolean
reasoning_effort:
type: string
response_format:
$ref: '#/definitions/oci-portal_internal_aiwire.ResponseFormat'
stream:
type: boolean
stream_options:
$ref: '#/definitions/oci-portal_internal_aiwire.StreamOptions'
temperature:
type: number
tool_choice:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
tools:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.Tool'
type: array
top_p:
type: number
type: object
oci-portal_internal_aiwire.ChatResponse:
properties:
choices:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.Choice'
type: array
created:
type: integer
id:
type: string
model:
type: string
object:
type: string
usage:
$ref: '#/definitions/oci-portal_internal_aiwire.Usage'
type: object
oci-portal_internal_aiwire.Choice:
properties:
finish_reason:
type: string
index:
type: integer
message:
$ref: '#/definitions/oci-portal_internal_aiwire.ChatMessage'
type: object
oci-portal_internal_aiwire.EmbedUsage:
properties:
prompt_tokens:
type: integer
total_tokens:
type: integer
type: object
oci-portal_internal_aiwire.Embedding:
properties:
embedding:
items:
type: number
type: array
index:
type: integer
object:
type: string
type: object
oci-portal_internal_aiwire.EmbeddingsRequest:
properties:
dimensions:
type: integer
encoding_format:
type: string
input:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
model:
type: string
user:
type: string
type: object
oci-portal_internal_aiwire.EmbeddingsResponse:
properties:
data:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.Embedding'
type: array
model:
type: string
object:
type: string
usage:
$ref: '#/definitions/oci-portal_internal_aiwire.EmbedUsage'
type: object
oci-portal_internal_aiwire.FunctionCall:
properties:
arguments:
type: string
name:
type: string
type: object
oci-portal_internal_aiwire.FunctionDef:
properties:
description:
type: string
name:
type: string
parameters:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
type: object
oci-portal_internal_aiwire.MessagesRequest:
properties:
max_tokens:
type: integer
messages:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.AnthMessage'
type: array
metadata:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
model:
type: string
output_config:
allOf:
- $ref: '#/definitions/oci-portal_internal_aiwire.AnthOutputConfig'
description: OutputConfig 是 Anthropic 官方输出控制(effort 等);网关映射 effort 到 OCI reasoningEffort。
stop_sequences:
items:
type: string
type: array
stream:
type: boolean
system:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
temperature:
type: number
thinking:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
tool_choice:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
tools:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.AnthTool'
type: array
top_k:
type: integer
top_p:
type: number
type: object
oci-portal_internal_aiwire.MessagesResponse:
properties:
content:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.AnthBlock'
type: array
id:
type: string
model:
type: string
role:
type: string
stop_reason:
type: string
stop_sequence:
type: string
type:
type: string
usage:
$ref: '#/definitions/oci-portal_internal_aiwire.AnthUsage'
type: object
oci-portal_internal_aiwire.Model:
properties:
created:
type: integer
id:
type: string
object:
type: string
owned_by:
type: string
type: object
oci-portal_internal_aiwire.ModelList:
properties:
data:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.Model'
type: array
object:
type: string
type: object
oci-portal_internal_aiwire.ModerationPii:
properties:
label:
type: string
length:
type: integer
offset:
type: integer
score:
type: number
text:
type: string
type: object
oci-portal_internal_aiwire.ModerationResult:
properties:
categories:
additionalProperties:
type: boolean
type: object
category_scores:
additionalProperties:
format: float64
type: number
type: object
flagged:
type: boolean
pii:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.ModerationPii'
type: array
type: object
oci-portal_internal_aiwire.ModerationsRequest:
properties:
input:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
model:
type: string
type: object
oci-portal_internal_aiwire.ModerationsResponse:
properties:
id:
type: string
model:
type: string
results:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.ModerationResult'
type: array
type: object
oci-portal_internal_aiwire.PromptTokensDetails:
properties:
cached_tokens:
type: integer
type: object
oci-portal_internal_aiwire.RerankDocument:
properties:
text:
type: string
type: object
oci-portal_internal_aiwire.RerankRequest:
properties:
documents:
items:
type: string
type: array
model:
type: string
query:
type: string
return_documents:
type: boolean
top_n:
type: integer
type: object
oci-portal_internal_aiwire.RerankResponse:
properties:
model:
type: string
results:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.RerankResult'
type: array
type: object
oci-portal_internal_aiwire.RerankResult:
properties:
document:
$ref: '#/definitions/oci-portal_internal_aiwire.RerankDocument'
index:
type: integer
relevance_score:
type: number
type: object
oci-portal_internal_aiwire.RespError:
properties:
code:
type: string
message:
type: string
type: object
oci-portal_internal_aiwire.RespInDetails:
properties:
cached_tokens:
type: integer
type: object
oci-portal_internal_aiwire.RespOutDetails:
properties:
reasoning_tokens:
type: integer
type: object
oci-portal_internal_aiwire.RespReasoning:
properties:
effort:
type: string
type: object
oci-portal_internal_aiwire.RespRequest:
properties:
background:
type: boolean
conversation:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
input:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
instructions:
type: string
max_output_tokens:
type: integer
model:
type: string
parallel_tool_calls:
type: boolean
previous_response_id:
type: string
reasoning:
$ref: '#/definitions/oci-portal_internal_aiwire.RespReasoning'
store:
type: boolean
stream:
type: boolean
temperature:
type: number
text:
$ref: '#/definitions/oci-portal_internal_aiwire.RespText'
tool_choice:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
tools:
items:
$ref: '#/definitions/oci-portal_internal_aiwire.RespTool'
type: array
top_p:
type: number
type: object
oci-portal_internal_aiwire.RespResponse:
properties:
created_at:
type: integer
error:
$ref: '#/definitions/oci-portal_internal_aiwire.RespError'
id:
type: string
model:
type: string
object:
type: string
output:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
status:
type: string
usage:
$ref: '#/definitions/oci-portal_internal_aiwire.RespUsage'
type: object
oci-portal_internal_aiwire.RespText:
properties:
format:
$ref: '#/definitions/oci-portal_internal_aiwire.RespTextFormat'
type: object
oci-portal_internal_aiwire.RespTextFormat:
properties:
name:
type: string
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
strict:
type: boolean
type:
type: string
type: object
oci-portal_internal_aiwire.RespTool:
properties:
description:
type: string
name:
type: string
parameters:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
strict:
type: boolean
type:
type: string
type: object
oci-portal_internal_aiwire.RespUsage:
properties:
input_tokens:
type: integer
input_tokens_details:
$ref: '#/definitions/oci-portal_internal_aiwire.RespInDetails'
output_tokens:
type: integer
output_tokens_details:
$ref: '#/definitions/oci-portal_internal_aiwire.RespOutDetails'
total_tokens:
type: integer
type: object
oci-portal_internal_aiwire.ResponseFormat:
properties:
json_schema:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
type:
type: string
type: object
oci-portal_internal_aiwire.SpeechRequest:
properties:
input:
type: string
language:
type: string
model:
type: string
response_format:
type: string
voice:
type: string
type: object
oci-portal_internal_aiwire.StreamOptions:
properties:
include_usage:
type: boolean
type: object
oci-portal_internal_aiwire.Tool:
properties:
function:
$ref: '#/definitions/oci-portal_internal_aiwire.FunctionDef'
type:
type: string
type: object
oci-portal_internal_aiwire.ToolCall:
properties:
function:
$ref: '#/definitions/oci-portal_internal_aiwire.FunctionCall'
id:
type: string
type:
type: string
type: object
oci-portal_internal_aiwire.TtsOutputFormat:
properties:
bit_rate:
type: integer
codec:
type: string
sample_rate:
type: integer
type: object
oci-portal_internal_aiwire.TtsRequest:
properties:
language:
type: string
model:
type: string
output_format:
$ref: '#/definitions/oci-portal_internal_aiwire.TtsOutputFormat'
speed:
type: number
text:
type: string
voice_id:
type: string
type: object
oci-portal_internal_aiwire.Usage:
properties:
completion_tokens:
type: integer
prompt_tokens:
type: integer
prompt_tokens_details:
allOf:
- $ref: '#/definitions/oci-portal_internal_aiwire.PromptTokensDetails'
description: PromptTokensDetails 携带缓存命中细分;OCI 为隐式 prompt 缓存,只有读取计数
total_tokens:
type: integer
type: object
oci-portal_internal_model.AiCallLog:
properties:
cachedTokens:
description: CachedTokens 是输入中缓存命中(读取)的部分;OCI 隐式缓存无写入计数
type: integer
channelId:
type: integer
channelName:
type: string
clientIp:
description: ClientIP 是网关调用方来源 IP(尊重「真实 IP 头」安全设置,与系统日志同源)
type: string
completionTokens:
type: integer
createdAt:
type: string
endpoint:
description: openai / anthropic
type: string
errMsg:
type: string
id:
type: integer
keyId:
type: integer
keyName:
type: string
latencyMs:
type: integer
model:
type: string
promptTokens:
type: integer
retries:
type: integer
status:
type: integer
stream:
type: boolean
totalTokens:
type: integer
type: object
oci-portal_internal_model.AiChannel:
properties:
createdAt:
type: string
disabledUntil:
type: string
enabled:
type: boolean
failCount:
description: FailCount 连续失败计数;达阈值后 DisabledUntil 指数退避熔断,成功/探测通过复位
type: integer
group:
type: string
id:
type: integer
lastProbeAt:
type: string
modelCount:
description: ModelCount 是渠道模型缓存计数,列表查询回填,不落库
type: integer
name:
type: string
ociConfigId:
type: integer
priority:
type: integer
probeError:
type: string
probeModel:
description: ProbeModel 是用户测试通过后固定的探测验证模型名;探测时置于候选首位
type: string
probeStatus:
description: ok / no_service / no_quota / error
type: string
region:
type: string
updatedAt:
type: string
weight:
type: integer
type: object
oci-portal_internal_model.AiContentLog:
properties:
callLogId:
description: CallLogID 关联同次调用的 AiCallLog,调用日志详情据此反查正文
type: integer
createdAt:
type: string
endpoint:
type: string
id:
type: integer
keyId:
type: integer
keyName:
type: string
model:
type: string
requestBody:
description: |-
RequestBody / ResponseBody 是截断后的正文 JSON;
64KB 截断恰在 MySQL TEXT 上限(65535B)边界,size 上探一档 → MEDIUMTEXT
type: string
responseBody:
type: string
stream:
type: boolean
type: object
oci-portal_internal_model.AiKey:
properties:
contentLogUntil:
description: |-
ContentLogUntil 是内容日志开启截止时间;nil = 永关(默认,红线),
开启必须限时,到期自动停写
type: string
createdAt:
type: string
enabled:
type: boolean
group:
type: string
id:
type: integer
lastUsedAt:
type: string
models:
description: Models 是模型白名单(精确匹配模型名);空 = 不限,非空时网关仅放行列表内模型
items:
type: string
type: array
name:
type: string
tail:
type: string
type: object
oci-portal_internal_model.AiModelBlacklist:
properties:
createdAt:
type: string
id:
type: integer
name:
type: string
type: object
oci-portal_internal_model.AiModelCache:
properties:
capability:
type: string
channelId:
type: integer
deprecatedAt:
description: |-
DeprecatedAt 是 OCI 宣布的模型弃用时间;nil 表示未宣布。
弃用后仍可调用,直到 RetiredAt(按需推理退役,同步层已剔除过期项)。
type: string
modelOcid:
type: string
name:
type: string
retiredAt:
type: string
syncedAt:
type: string
vendor:
type: string
type: object
oci-portal_internal_model.LogEvent:
properties:
eventTime:
type: string
eventType:
description: 异步解析回填,如 com.oraclecloud.ComputeApi.TerminateInstance
type: string
id:
type: integer
messageId:
description: 幂等键(X-OCI-NS-MessageId)
type: string
ociConfigId:
description: 经 secret 反查归属租户
type: integer
payload:
description: 防御上限 256KB 超 MySQL TEXT(64KB),size 上探一档 → MEDIUMTEXT;PG/SQLite
仍为 text
type: string
processed:
type: boolean
receivedAt:
type: string
source:
type: string
sourceIp:
description: 异步解析回填,Audit 事件的发起方 IP
type: string
truncated:
type: boolean
type: object
oci-portal_internal_model.OciConfig:
properties:
accountType:
type: string
alias:
type: string
aliveStatus:
type: string
createdAt:
type: string
fingerprint:
type: string
group:
description: |-
Group 是面板内的自定义分组标签,空串表示未分组;
列名避开 SQL 保留字 GROUP
type: string
homeRegionKey:
type: string
id:
type: integer
lastError:
type: string
lastVerifiedAt:
type: string
multiCompartment:
type: boolean
multiRegion:
description: |-
多区域 / 多区间支持:开启后订阅区域与 compartment 列表入库缓存,
供筛选器免实时调 OCI;未开启的租户筛选器锁定主区域 / 根区间。
type: boolean
paymentModel:
type: string
promotionAmount:
type: number
promotionExpires:
type: string
promotionStatus:
type: string
proxyId:
description: ProxyID 关联出站代理,nil 表示直连;该租户全部 SDK 调用经此代理
type: integer
region:
type: string
subscriptionId:
type: string
subscriptionTier:
type: string
tenancyName:
type: string
tenancyOcid:
type: string
updatedAt:
type: string
userOcid:
type: string
type: object
oci-portal_internal_model.SystemLog:
properties:
clientIp:
type: string
createdAt:
type: string
durationMs:
type: integer
errMsg:
description: ErrMsg 仅失败请求(>=400)存响应的 error 文案,便于免翻服务端日志定位原因
type: string
id:
type: integer
method:
type: string
path:
type: string
status:
type: integer
userAgent:
type: string
username:
type: string
type: object
oci-portal_internal_model.Task:
properties:
createdAt:
type: string
cronExpr:
type: string
id:
type: integer
lastError:
type: string
lastRunAt:
type: string
name:
type: string
payload:
type: string
runCount:
type: integer
status:
type: string
type:
type: string
updatedAt:
type: string
type: object
oci-portal_internal_model.TaskLog:
properties:
createdAt:
type: string
durationMs:
type: integer
id:
type: integer
message:
type: string
success:
type: boolean
taskId:
type: integer
type: object
oci-portal_internal_model.UserIdentity:
properties:
createdAt:
type: string
display:
description: 展示名:邮箱 / GitHub login
type: string
id:
type: integer
provider:
type: string
type: object
oci-portal_internal_model.UserPasskey:
properties:
createdAt:
type: string
id:
type: integer
lastUsedAt:
type: string
name:
type: string
type: object
oci-portal_internal_oci.AuditEvent:
properties:
compartmentName:
type: string
eventId:
type: string
eventName:
type: string
eventTime:
type: string
ipAddress:
type: string
principalName:
type: string
raw:
$ref: '#/definitions/oci-portal_internal_aiwire.AnyJSON'
requestAction:
type: string
requestPath:
type: string
resourceName:
type: string
source:
type: string
status:
type: string
type: object
oci-portal_internal_oci.BlockVolume:
properties:
availabilityDomain:
type: string
displayName:
type: string
id:
type: string
lifecycleState:
type: string
sizeInGBs:
type: integer
timeCreated:
type: string
vpusPerGB:
type: integer
type: object
oci-portal_internal_oci.BootVolume:
properties:
attachedInstanceId:
type: string
attachedInstanceName:
type: string
availabilityDomain:
type: string
compartmentId:
type: string
displayName:
type: string
id:
type: string
imageId:
type: string
imageName:
type: string
lifecycleState:
type: string
sizeInGBs:
type: integer
timeCreated:
type: string
vpusPerGB:
type: integer
type: object
oci-portal_internal_oci.BootVolumeAttachment:
properties:
availabilityDomain:
type: string
bootVolumeId:
type: string
displayName:
type: string
id:
type: string
instanceId:
type: string
lifecycleState:
type: string
type: object
oci-portal_internal_oci.Bucket:
properties:
approximateCount:
type: integer
approximateSize:
type: integer
name:
type: string
namespace:
type: string
storageTier:
type: string
timeCreated:
type: string
versioningOn:
type: boolean
visibility:
description: NoPublicAccess / ObjectRead
type: string
type: object
oci-portal_internal_oci.Compartment:
properties:
description:
type: string
id:
type: string
lifecycleState:
type: string
name:
type: string
parentId:
type: string
timeCreated:
type: string
type: object
oci-portal_internal_oci.ComputeShape:
properties:
billingType:
description: ALWAYS_FREE / LIMITED_FREE / PAID
type: string
gpus:
type: integer
isFlexible:
type: boolean
memoryInGBs:
type: number
memoryMaxGBs:
type: number
memoryMinGBs:
type: number
name:
type: string
ocpus:
type: number
ocpusMax:
type: number
ocpusMin:
type: number
processorDescription:
type: string
quotaNames:
description: |-
QuotaNames 是该 shape 对应的配额名(与 Limits 服务 compute limit name 同名),
前端据此结合 limits 行判定配额与 AD 可用性。
items:
type: string
type: array
type: object
oci-portal_internal_oci.ConsoleConnection:
properties:
connectionString:
description: 串口控制台 SSH 命令
type: string
id:
type: string
instanceId:
type: string
lifecycleState:
type: string
vncConnectionString:
description: VNC over SSH 隧道命令
type: string
type: object
oci-portal_internal_oci.CostItem:
properties:
computedAmount:
type: number
computedQuantity:
type: number
currency:
type: string
groupValue:
type: string
subValue:
description: 复合分组的第二维取值(如 service 下的 skuName)
type: string
timeStart:
type: string
unit:
type: string
type: object
oci-portal_internal_oci.IPv6Step:
properties:
detail:
type: string
status:
description: done / skipped / failed
type: string
step:
type: string
type: object
oci-portal_internal_oci.IdentityDomain:
properties:
displayName:
type: string
homeRegion:
type: string
id:
type: string
licenseType:
type: string
type:
type: string
type: object
oci-portal_internal_oci.IdentityProviderInfo:
properties:
enabled:
type: boolean
id:
type: string
jitEnabled:
type: boolean
name:
type: string
partnerProviderId:
type: string
timeCreated:
type: string
type:
type: string
type: object
oci-portal_internal_oci.IdentitySettingInfo:
properties:
id:
type: string
primaryEmailRequired:
description: 用户需要提供主电子邮件地址:开启后创建用户 / JIT 预配必须带邮箱
type: boolean
type: object
oci-portal_internal_oci.Image:
properties:
displayName:
type: string
id:
type: string
operatingSystem:
type: string
operatingSystemVersion:
type: string
sizeInMBs:
type: integer
timeCreated:
type: string
type: object
oci-portal_internal_oci.Instance:
properties:
availabilityDomain:
type: string
compartmentId:
type: string
definedTags:
additionalProperties:
additionalProperties: {}
type: object
type: object
displayName:
type: string
freeformTags:
additionalProperties:
type: string
type: object
id:
type: string
imageId:
type: string
ipv6Addresses:
items:
type: string
type: array
lifecycleState:
type: string
memoryInGBs:
type: number
ocpus:
type: number
privateIp:
type: string
publicIp:
type: string
region:
type: string
shape:
type: string
subnetId:
type: string
timeCreated:
type: string
type: object
oci-portal_internal_oci.InstanceTraffic:
properties:
inboundBytes:
type: number
instanceId:
type: string
outboundBytes:
type: number
vnics:
items:
$ref: '#/definitions/oci-portal_internal_oci.VnicTraffic'
type: array
type: object
oci-portal_internal_oci.Invoice:
properties:
amount:
type: number
amountDue:
type: number
currency:
type: string
id:
type: string
internalId:
type: string
isPaid:
type: boolean
isPayable:
type: boolean
isPaymentFailed:
type: boolean
number:
type: string
status:
type: string
timeDue:
type: string
timeInvoice:
type: string
type:
type: string
type: object
oci-portal_internal_oci.InvoiceLine:
properties:
currency:
type: string
orderNo:
type: string
product:
type: string
quantity:
type: number
timeEnd:
type: string
timeStart:
type: string
total:
type: number
unitPrice:
type: number
type: object
oci-portal_internal_oci.LimitService:
properties:
description:
type: string
name:
type: string
type: object
oci-portal_internal_oci.LimitValue:
properties:
availabilityDomain:
type: string
available:
type: integer
name:
type: string
scopeType:
type: string
used:
type: integer
value:
type: integer
type: object
oci-portal_internal_oci.ListObjectsResult:
properties:
nextStartWith:
type: string
objects:
items:
$ref: '#/definitions/oci-portal_internal_oci.ObjectSummary'
type: array
prefixes:
items:
type: string
type: array
type: object
oci-portal_internal_oci.NotificationRecipients:
properties:
recipients:
items:
type: string
type: array
testModeEnabled:
type: boolean
type: object
oci-portal_internal_oci.ObjectDetail:
properties:
archivalState:
type: string
contentMd5:
type: string
contentType:
type: string
etag:
type: string
metadata:
additionalProperties:
type: string
type: object
name:
type: string
size:
type: integer
storageTier:
type: string
timeModified:
type: string
type: object
oci-portal_internal_oci.ObjectSummary:
properties:
archivalState:
type: string
name:
type: string
size:
type: integer
storageTier:
type: string
timeModified:
type: string
type: object
oci-portal_internal_oci.PAR:
properties:
accessType:
type: string
fullUrl:
type: string
id:
type: string
name:
type: string
objectName:
type: string
timeCreated:
type: string
timeExpires:
type: string
type: object
oci-portal_internal_oci.PasswordPolicyInfo:
properties:
id:
type: string
minLength:
type: integer
name:
type: string
numPasswordsInHistory:
type: integer
passwordExpiresAfter:
type: integer
passwordStrength:
type: string
priority:
type: integer
type: object
oci-portal_internal_oci.PaymentMethod:
properties:
billingAgreement:
type: string
cardType:
type: string
email:
type: string
lastDigits:
type: string
method:
description: CREDIT_CARD / PAYPAL
type: string
nameOnCard:
type: string
payerName:
type: string
timeExpiration:
type: string
type: object
oci-portal_internal_oci.PromotionInfo:
properties:
amount:
type: number
currencyUnit:
type: string
duration:
type: integer
durationUnit:
type: string
isIntentToPay:
type: boolean
status:
type: string
timeExpired:
type: string
timeStarted:
type: string
type: object
oci-portal_internal_oci.RegionInfo:
properties:
alias:
type: string
key:
type: string
name:
type: string
type: object
oci-portal_internal_oci.RelayResource:
properties:
id:
type: string
state:
type: string
type: object
oci-portal_internal_oci.ReservedIP:
properties:
assignedInstanceId:
type: string
assignedInstanceName:
type: string
displayName:
type: string
id:
type: string
ipAddress:
type: string
lifecycleState:
type: string
timeCreated:
type: string
type: object
oci-portal_internal_oci.SecurityList:
properties:
displayName:
type: string
egressRules:
items:
$ref: '#/definitions/oci-portal_internal_oci.SecurityRule'
type: array
id:
type: string
ingressRules:
items:
$ref: '#/definitions/oci-portal_internal_oci.SecurityRule'
type: array
lifecycleState:
type: string
timeCreated:
type: string
vcnId:
type: string
type: object
oci-portal_internal_oci.SecurityRule:
properties:
description:
type: string
destination:
type: string
icmpCode:
type: integer
icmpType:
type: integer
isStateless:
type: boolean
portMax:
type: integer
portMin:
type: integer
protocol:
description: all、6(TCP)、17(UDP)、1(ICMP)、58(ICMPv6)
type: string
source:
type: string
type: object
oci-portal_internal_oci.SignOnRuleInfo:
properties:
authenticationFactor:
type: string
builtIn:
type: boolean
conditionAttribute:
type: string
conditionValue:
type: string
id:
type: string
name:
type: string
sequence:
type: integer
type: object
oci-portal_internal_oci.Subnet:
properties:
availabilityDomain:
type: string
cidrBlock:
type: string
displayName:
type: string
dnsLabel:
type: string
id:
type: string
ipv6CidrBlock:
type: string
lifecycleState:
type: string
prohibitPublicIp:
type: boolean
routeTableId:
type: string
timeCreated:
type: string
vcnId:
type: string
type: object
oci-portal_internal_oci.SubscriptionDetail:
properties:
classicSubscriptionId:
type: string
cloudAmountCurrency:
type: string
csiNumber:
type: string
customerCountryCode:
type: string
endDate:
type: string
id:
type: string
isGovernmentSubscription:
type: boolean
lifecycleState:
type: string
paymentModel:
type: string
programType:
type: string
promotions:
items:
$ref: '#/definitions/oci-portal_internal_oci.PromotionInfo'
type: array
regionAssignment:
type: string
serviceName:
type: string
startDate:
type: string
subscriptionTier:
type: string
timeCreated:
type: string
timeUpdated:
type: string
type: object
oci-portal_internal_oci.SubscriptionInfo:
properties:
id:
type: string
serviceName:
type: string
timeCreated:
type: string
timeUpdated:
type: string
type: object
oci-portal_internal_oci.TenantUser:
properties:
description:
type: string
email:
type: string
emailVerified:
type: boolean
id:
type: string
isCurrentUser:
type: boolean
lastLoginTime:
type: string
lifecycleState:
type: string
mfaActivated:
type: boolean
name:
type: string
timeCreated:
type: string
type: object
oci-portal_internal_oci.TenantUserDetail:
properties:
familyName:
type: string
givenName:
type: string
inAdminGroup:
type: boolean
inDomain:
type: boolean
isDomainAdmin:
type: boolean
type: object
oci-portal_internal_oci.TrafficPoint:
properties:
bytes:
type: number
timestamp:
type: string
type: object
oci-portal_internal_oci.VCN:
properties:
cidrBlocks:
items:
type: string
type: array
compartmentId:
type: string
defaultRouteTableId:
type: string
defaultSecurityListId:
type: string
displayName:
type: string
dnsLabel:
type: string
id:
type: string
ipv6CidrBlocks:
items:
type: string
type: array
lifecycleState:
type: string
timeCreated:
type: string
type: object
oci-portal_internal_oci.Vnic:
properties:
attachmentId:
type: string
displayName:
type: string
ipv6Addresses:
items:
type: string
type: array
isPrimary:
type: boolean
lifecycleState:
type: string
privateIp:
type: string
publicIp:
type: string
subnetId:
type: string
subnetName:
type: string
timeCreated:
type: string
vnicId:
type: string
type: object
oci-portal_internal_oci.VnicTraffic:
properties:
inbound:
items:
$ref: '#/definitions/oci-portal_internal_oci.TrafficPoint'
type: array
inboundBytes:
type: number
outbound:
items:
$ref: '#/definitions/oci-portal_internal_oci.TrafficPoint'
type: array
outboundBytes:
type: number
vnicId:
type: string
type: object
oci-portal_internal_oci.VolumeAttachment:
properties:
availabilityDomain:
type: string
device:
type: string
displayName:
type: string
id:
type: string
instanceId:
type: string
isReadOnly:
type: boolean
lifecycleState:
type: string
volumeId:
type: string
volumeName:
description: 卷本身的名称(attachment 名是自动生成的)
type: string
type: object
oci-portal_internal_service.AggregatedModel:
properties:
capability:
type: string
name:
type: string
type: object
oci-portal_internal_service.AuditEventsView:
properties:
cursor:
type: string
exhausted:
type: boolean
items:
items:
$ref: '#/definitions/oci-portal_internal_oci.AuditEvent'
type: array
scannedThrough:
type: string
type: object
oci-portal_internal_service.Changes:
additionalProperties:
items:
type: string
type: array
type: object
oci-portal_internal_service.ChannelInput:
properties:
enabled:
type: boolean
group:
type: string
name:
type: string
ociConfigId:
type: integer
priority:
type: integer
region:
type: string
weight:
type: integer
type: object
oci-portal_internal_service.ConfigSummary:
properties:
accountType:
type: string
alias:
type: string
aliveStatus:
type: string
createdAt:
type: string
group:
type: string
id:
type: integer
lastError:
type: string
lastVerifiedAt:
type: string
multiCompartment:
type: boolean
multiRegion:
type: boolean
proxyId:
type: integer
proxyName:
description: ProxyName 由 List 按关联填充,供表格代理列 hover 展示
type: string
region:
type: string
tenancyName:
type: string
tenancyOcid:
type: string
type: object
oci-portal_internal_service.CreatedApiKey:
properties:
configIni:
type: string
fingerprint:
type: string
privateKey:
type: string
type: object
oci-portal_internal_service.ImportFail:
properties:
line:
type: string
lineNo:
type: integer
reason:
type: string
type: object
oci-portal_internal_service.ImportResult:
properties:
created:
items:
$ref: '#/definitions/oci-portal_internal_service.ProxyView'
type: array
failed:
items:
$ref: '#/definitions/oci-portal_internal_service.ImportFail'
type: array
type: object
oci-portal_internal_service.LogWebhookInfo:
properties:
createdAt:
type: string
path:
type: string
secret:
type: string
type: object
oci-portal_internal_service.NotifyChannelView:
properties:
bodyTemplate:
type: string
enabled:
type: boolean
from:
type: string
host:
description: smtp
type: string
port:
type: integer
secretSet:
description: 密文字段状态(ntfy token / bark device key / smtp password)
type: boolean
secretTail:
type: string
server:
description: ntfy / bark 共用 Server
type: string
to:
type: string
topic:
type: string
type:
type: string
url:
description: webhook
type: string
username:
type: string
type: object
oci-portal_internal_service.NotifyEventsView:
properties:
logEventIdentity:
type: boolean
logEventInstance:
type: boolean
logEventLogin:
type: boolean
logEventPolicy:
type: boolean
logEventRegion:
type: boolean
loginLock:
type: boolean
modelDeprecated:
type: boolean
snatchSuccess:
type: boolean
taskFail:
type: boolean
taskRecover:
type: boolean
taskStop:
type: boolean
tenantDead:
type: boolean
type: object
oci-portal_internal_service.NotifyTemplateView:
properties:
defaultTemplate:
type: string
kind:
type: string
label:
type: string
template:
description: Template 是自定义模板;空串表示未自定义(按默认发送)
type: string
vars:
items:
type: string
type: array
type: object
oci-portal_internal_service.OAuthProvidersView:
properties:
githubClientId:
type: string
githubDisabled:
type: boolean
githubDisplayName:
type: string
githubSecretSet:
type: boolean
oidcClientId:
type: string
oidcDisabled:
type: boolean
oidcDisplayName:
type: string
oidcIssuer:
type: string
oidcSecretSet:
type: boolean
type: object
oci-portal_internal_service.Overview:
properties:
check:
$ref: '#/definitions/oci-portal_internal_service.OverviewCheck'
cost:
$ref: '#/definitions/oci-portal_internal_service.OverviewCost'
tasks:
$ref: '#/definitions/oci-portal_internal_service.OverviewTasks'
tenants:
$ref: '#/definitions/oci-portal_internal_service.OverviewTenants'
type: object
oci-portal_internal_service.OverviewCheck:
properties:
coveredConfigs:
type: integer
hasActiveTask:
type: boolean
instanceCount:
type: integer
lastCheckedAt:
type: string
totalConfigs:
type: integer
type: object
oci-portal_internal_service.OverviewCost:
properties:
coveredConfigs:
type: integer
currency:
type: string
days:
items:
$ref: '#/definitions/oci-portal_internal_service.OverviewCostDay'
type: array
hasActiveTask:
type: boolean
series:
description: |-
Series 按币种拆分的序列(合计降序);顶层 Currency/Total/Days 恒为首个
(主)币种,多币种租户的其余币种只出现在 Series,不与主币种相加。
items:
$ref: '#/definitions/oci-portal_internal_service.OverviewCostSeries'
type: array
total:
type: number
type: object
oci-portal_internal_service.OverviewCostDay:
properties:
amount:
type: number
day:
type: string
type: object
oci-portal_internal_service.OverviewCostSeries:
properties:
currency:
type: string
days:
items:
$ref: '#/definitions/oci-portal_internal_service.OverviewCostDay'
type: array
total:
type: number
type: object
oci-portal_internal_service.OverviewTasks:
properties:
active:
type: integer
cost:
type: integer
healthCheck:
type: integer
snatch:
type: integer
total:
type: integer
type: object
oci-portal_internal_service.OverviewTenants:
properties:
alive:
type: integer
byType:
additionalProperties:
type: integer
type: object
dead:
type: integer
total:
type: integer
type: object
oci-portal_internal_service.ProviderInfo:
properties:
displayName:
type: string
provider:
type: string
type: object
oci-portal_internal_service.ProxyInput:
properties:
host:
type: string
name:
type: string
password:
type: string
port:
type: integer
type:
type: string
username:
type: string
required:
- host
- port
- type
type: object
oci-portal_internal_service.ProxyView:
properties:
city:
type: string
country:
description: Country / City 为出口实测地区;GeoAt 空串表示尚未探测(前端显示「检测中」)
type: string
createdAt:
type: string
geoAt:
type: string
host:
type: string
id:
type: integer
name:
type: string
passwordSet:
type: boolean
port:
type: integer
type:
type: string
usedBy:
description: UsedBy 为关联此代理的租户数,前端据此提示删除约束
type: integer
username:
type: string
type: object
oci-portal_internal_service.RegionSubscriptionView:
properties:
alias:
type: string
isHomeRegion:
type: boolean
key:
type: string
name:
type: string
status:
type: string
type: object
oci-portal_internal_service.RelayView:
properties:
connector:
$ref: '#/definitions/oci-portal_internal_oci.RelayResource'
endpoint:
type: string
events:
items:
type: string
type: array
policy:
$ref: '#/definitions/oci-portal_internal_oci.RelayResource'
ready:
type: boolean
subscription:
$ref: '#/definitions/oci-portal_internal_oci.RelayResource'
topic:
$ref: '#/definitions/oci-portal_internal_oci.RelayResource'
webhook:
$ref: '#/definitions/oci-portal_internal_service.LogWebhookInfo'
type: object
oci-portal_internal_service.SecurityPatch:
properties:
appUrl:
type: string
ipRateBurst:
type: integer
ipRateRps:
type: integer
loginFailLimit:
type: integer
loginLockMinutes:
type: integer
realIpHeader:
type: string
type: object
oci-portal_internal_service.SecuritySettings:
properties:
appUrl:
description: 面板公网基址;优先于 PUBLIC_URL 环境变量,回传链路与 OAuth 回调用
type: string
ipRateBurst:
type: integer
ipRateRps:
description: 全局 IP 限速令牌桶
type: integer
loginFailLimit:
description: 登录守卫:LockMinutes 分钟窗口内失败 FailLimit 次锁 LockMinutes 分钟
type: integer
loginLockMinutes:
type: integer
realIpHeader:
description: 真实IP请求头:空 = 直连(RemoteAddr);反代后必须选择与反代匹配的头
type: string
type: object
oci-portal_internal_service.SessionInfo:
properties:
clientIp:
type: string
createdAt:
type: string
current:
type: boolean
expiresAt:
type: string
id:
type: integer
lastSeenAt:
type: string
method:
description: 登录方式:password / oidc / github / passkey / wallet;接续换发保留原值
type: string
userAgent:
type: string
type: object
oci-portal_internal_service.TaskSettingsView:
properties:
snatchAuthFailLimit:
type: integer
type: object
oci-portal_internal_service.TelegramView:
properties:
chatId:
type: string
enabled:
type: boolean
tokenSet:
type: boolean
tokenTail:
type: string
type: object
oci-portal_internal_service.UpdateCredentialsInput:
properties:
currentPassword:
type: string
newPassword:
type: string
newUsername:
type: string
required:
- currentPassword
type: object
oci-portal_internal_service.UpdateOAuthInput:
properties:
githubClientId:
type: string
githubClientSecret:
type: string
githubDisabled:
type: boolean
githubDisplayName:
type: string
oidcClientId:
type: string
oidcClientSecret:
type: string
oidcDisabled:
type: boolean
oidcDisplayName:
type: string
oidcIssuer:
type: string
type: object
oci-portal_internal_service.UserApiKeyInfo:
properties:
configIni:
type: string
fingerprint:
type: string
isCurrent:
description: IsCurrent 表示该 key 正被当前配置用于签名请求
type: boolean
timeCreated:
type: string
type: object
info:
contact: {}
description: '自托管 OCI 多租户管理面板 API。业务接口用 JWT(Bearer);AI 网关端点(/ai/v1/*)用独立网关密钥(Authorization:
Bearer 或 x-api-key)。'
title: OCI Portal API
version: 0.8.3
paths:
/ai/v1/audio/speech:
post:
parameters:
- description: OpenAI audio speech 请求体(model/input 必填,voice 见 xAI Grok Voice
列表,language 缺省 auto;未列字段原样透传)
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.SpeechRequest'
responses:
"200":
description: 音频字节(Content-Type 透传上游,默认 audio/mpeg)
schema:
type: file
summary: OpenAI Audio Speech 兼容端点(文本转语音)
tags:
- AI 网关
/ai/v1/chat/completions:
post:
parameters:
- description: OpenAI chat/completions 请求体(支持 stream;经 Responses 转换直通)
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.ChatRequest'
responses:
"200":
description: 'OpenAI 兼容响应(非流式;流式为 SSE,末尾 data: [DONE])'
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.ChatResponse'
summary: OpenAI Chat Completions 兼容端点
tags:
- AI 网关
/ai/v1/embeddings:
post:
parameters:
- description: OpenAI embeddings 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.EmbeddingsRequest'
responses:
"200":
description: OpenAI 兼容响应
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.EmbeddingsResponse'
summary: OpenAI 兼容向量嵌入
tags:
- AI 网关
/ai/v1/messages:
post:
parameters:
- description: Anthropic messages 请求体(支持 stream;经 OCI OpenAI 兼容面直通;max_tokens
可缺省,默认 8192)
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.MessagesRequest'
responses:
"200":
description: Anthropic 兼容响应(非流式;流式为 SSE 事件序列)
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.MessagesResponse'
summary: Anthropic Messages 兼容端点
tags:
- AI 网关
/ai/v1/models:
get:
responses:
"200":
description: OpenAI 兼容 models 列表
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.ModelList'
summary: 可用模型列表
tags:
- AI 网关
/ai/v1/moderations:
post:
parameters:
- description: 审核请求体(input 为字符串或字符串数组,单次至多 8 条;model 接受但忽略)
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.ModerationsRequest'
responses:
"200":
description: 审核结果(categories/category_scores 为 overall/blocklist/prompt_injection,pii
为扩展字段)
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.ModerationsResponse'
summary: 内容审核端点(OCI Guardrails)
tags:
- AI 网关
/ai/v1/rerank:
post:
parameters:
- description: 重排请求体(model/query/documents 必填,可选 top_n/return_documents)
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.RerankRequest'
responses:
"200":
description: 重排结果(results[].index 指向入参下标)
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.RerankResponse'
summary: 文档重排端点(Cohere Rerank)
tags:
- AI 网关
/ai/v1/responses:
post:
parameters:
- description: OpenAI responses 请求体(支持 stream;服务端工具 web_search/x_search/code_interpreter/mcp
含流式;codex 兼容:namespace 工具组拍平为限定名 function 并在响应还原,custom 工具转 function 包装并回转
custom_tool_call(apply_patch 丢弃),tool_search 剥离,web_search.external_web_access
上游不支持自动处理,超 76KB 流式请求自动改非流式合成 SSE;未列字段原样透传上游)
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.RespRequest'
responses:
"200":
description: OpenAI 兼容响应(非流式;流式为 SSE);直通仅建模常用字段,未列字段原样返回
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.RespResponse'
summary: OpenAI Responses 兼容端点
tags:
- AI 网关
/ai/v1/tts:
post:
parameters:
- description: xAI TTS 请求体(text/language 必填,voice_id 缺省 eve;model 为网关扩展,缺省 xai.grok-tts;未列字段原样透传)
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_aiwire.TtsRequest'
responses:
"200":
description: 音频字节(Content-Type 透传上游,默认 audio/mpeg)
schema:
type: file
summary: xAI 官方格式文本转语音端点
tags:
- AI 网关
/api/v1/about:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.aboutResponse'
security:
- BearerAuth: []
summary: 返回构建、运行时长与资源占用信息,「设置 · 关于」页展示
tags:
- 设置
/api/v1/ai-blacklist:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_model_AiModelBlacklist'
security:
- BearerAuth: []
summary: 模型黑名单列表
tags:
- AI 管理
post:
parameters:
- description: '请求体:{name: 模型名}'
in: body
name: body
required: true
schema:
type: object
responses:
"201":
description: Created
schema:
$ref: '#/definitions/internal_api.itemResponse-oci-portal_internal_model_AiModelBlacklist'
security:
- BearerAuth: []
summary: 添加模型黑名单
tags:
- AI 管理
/api/v1/ai-blacklist/{id}:
delete:
parameters:
- description: 黑名单条目 ID
in: path
name: id
required: true
type: integer
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 移除模型黑名单(重新同步后模型恢复入池)
tags:
- AI 管理
/api/v1/ai-channels:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_model_AiChannel'
security:
- BearerAuth: []
summary: '---- 渠道 ----'
tags:
- AI 管理
post:
parameters:
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_service.ChannelInput'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_model.AiChannel'
security:
- BearerAuth: []
summary: 创建 AI 渠道
tags:
- AI 管理
/api/v1/ai-channels/{id}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除 AI 渠道
tags:
- AI 管理
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_service.ChannelInput'
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 更新 AI 渠道
tags:
- AI 管理
/api/v1/ai-channels/{id}/models:
get:
parameters:
- description: 渠道 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_model_AiModelCache'
security:
- BearerAuth: []
summary: 渠道模型缓存列表
tags:
- AI 管理
/api/v1/ai-channels/{id}/probe:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_model.AiChannel'
security:
- BearerAuth: []
summary: 触发探测:服务可见性 + 模型同步 + 配额试调,返回更新后的渠道
tags:
- AI 管理
/api/v1/ai-channels/{id}/sync-models:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_model_AiModelCache'
security:
- BearerAuth: []
summary: 同步渠道模型缓存
tags:
- AI 管理
/api/v1/ai-channels/{id}/test-model:
post:
parameters:
- description: 渠道 ID
in: path
name: id
required: true
type: integer
- description: 模型名
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.testChannelModelRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_model.AiChannel'
"502":
description: 试调未通过
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 测试渠道模型(max_tokens=16 试调;通过即设为探测验证模型并按需置渠道可用)
tags:
- AI 管理
/api/v1/ai-content-logs:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.pagedResponse-oci-portal_internal_model_AiContentLog'
security:
- BearerAuth: []
summary: 分页查询内容日志
tags:
- AI 管理
/api/v1/ai-keys:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_model_AiKey'
security:
- BearerAuth: []
summary: '---- 密钥 ----'
tags:
- AI 管理
post:
parameters:
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"201":
description: key 为明文密钥,仅本次返回
schema:
$ref: '#/definitions/internal_api.aiKeyCreateResponse'
security:
- BearerAuth: []
summary: 生成密钥
tags:
- AI 管理
/api/v1/ai-keys/{id}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除 AI 网关密钥
tags:
- AI 管理
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 更新 AI 网关密钥
tags:
- AI 管理
/api/v1/ai-keys/{id}/content-log:
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_model.AiKey'
security:
- BearerAuth: []
summary: 设置密钥内容日志窗口
tags:
- AI 管理
/api/v1/ai-logs:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.pagedResponse-oci-portal_internal_model_AiCallLog'
security:
- BearerAuth: []
summary: AI 调用日志列表
tags:
- AI 管理
/api/v1/ai-model-catalog:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_service_AggregatedModel'
security:
- BearerAuth: []
summary: 聚合模型目录
tags:
- AI 管理
/api/v1/ai-models:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_aiwire_Model'
security:
- BearerAuth: []
summary: '---- 聚合模型与调用日志 ----'
tags:
- AI 管理
/api/v1/ai-settings:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.aiSettingsResponse'
security:
- BearerAuth: []
summary: AI 网关全局设置
tags:
- AI 管理
put:
parameters:
- description: 全量提交;保险丝阈值限 1..1024 KB,上游无响应预算限 30..900 秒
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.aiSettingsResponse'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.aiSettingsResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: 更新 AI 网关全局设置
tags:
- AI 管理
/api/v1/auth/credentials:
get:
responses:
"200":
description: username 与 passwordLoginDisabled
schema:
$ref: '#/definitions/internal_api.credentialsResponse'
security:
- BearerAuth: []
summary: 登录凭据摘要
tags:
- 认证
put:
parameters:
- description: 新凭据(当前密码必验)
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_service.UpdateCredentialsInput'
responses:
"200":
description: 已更新,返回换发的新 token
schema:
$ref: '#/definitions/internal_api.tokenResponse'
"204":
description: 已更新但新 token 签发失败,需重新登录
"401":
description: 当前密码错误
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 修改登录凭据
tags:
- 认证
/api/v1/auth/identities:
get:
responses:
"200":
description: items
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_model_UserIdentity'
security:
- BearerAuth: []
summary: 已绑定外部身份
tags:
- 认证
/api/v1/auth/identities/{id}:
delete:
parameters:
- description: 身份 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: 已解绑,返回换发的新 token
schema:
$ref: '#/definitions/internal_api.tokenResponse'
"204":
description: 已解绑但新 token 签发失败,需重新登录
"409":
description: 最后一个身份不可解绑
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 解绑外部身份
tags:
- 认证
/api/v1/auth/login:
post:
consumes:
- application/json
parameters:
- description: 登录凭据
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.loginRequest'
produces:
- application/json
responses:
"200":
description: token 与 expiresAt
schema:
$ref: '#/definitions/internal_api.tokenResponse'
"401":
description: 凭据错误
schema:
$ref: '#/definitions/internal_api.errorResponse'
"403":
description: 密码登录已禁用
schema:
$ref: '#/definitions/internal_api.errorResponse'
"428":
description: 需要两步验证码(totpRequired=true)
schema:
$ref: '#/definitions/internal_api.totpRequiredResponse'
"429":
description: 登录守卫锁定(无 code);全局 IP 限流时 code=RateLimited
schema:
$ref: '#/definitions/internal_api.errorResponse'
summary: 登录
tags:
- 认证
/api/v1/auth/logout:
post:
responses:
"204":
description: 令牌已吊销
security:
- BearerAuth: []
summary: 登出
tags:
- 认证
/api/v1/auth/oauth/{provider}/authorize:
get:
parameters:
- description: oidc / github
in: path
name: provider
required: true
type: string
- description: bind=绑定当前账号(需 Bearer),缺省登录
in: query
name: mode
type: string
responses:
"200":
description: url
schema:
$ref: '#/definitions/internal_api.urlResponse'
"401":
description: bind 模式未携带有效 Bearer
schema:
$ref: '#/definitions/internal_api.errorResponse'
"404":
description: 未知 provider
schema:
$ref: '#/definitions/internal_api.errorResponse'
"409":
description: provider 未配置 / 面板地址缺失 / 已禁用
schema:
$ref: '#/definitions/internal_api.errorResponse'
summary: 外部登录授权跳转
tags:
- 认证
/api/v1/auth/oauth/{provider}/callback:
get:
parameters:
- description: oidc / github
in: path
name: provider
required: true
type: string
- description: 授权流程 state
in: query
name: state
required: true
type: string
- description: 授权码
in: query
name: code
required: true
type: string
responses:
"302":
description: 登录 token 经 fragment 回前端,绑定回设置页
summary: 外部登录回调
tags:
- 认证
/api/v1/auth/oauth/providers:
get:
responses:
"200":
description: providers、passwordLoginDisabled 与 passkeyLogin
schema:
$ref: '#/definitions/internal_api.oauthProvidersResponse'
summary: 外部登录 provider 列表
tags:
- 认证
/api/v1/auth/passkey/login/begin:
post:
responses:
"200":
description: sessionId 与 WebAuthn options
schema:
$ref: '#/definitions/internal_api.passkeyOptionsResponse'
"409":
description: 面板地址未设置
schema:
$ref: '#/definitions/internal_api.errorResponse'
summary: 发起通行密钥登录
tags:
- 认证
/api/v1/auth/passkey/login/finish:
post:
parameters:
- description: sessionId 与断言响应(name 忽略)
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.passkeyFinishRequest'
responses:
"200":
description: token 与 expiresAt
schema:
$ref: '#/definitions/internal_api.tokenResponse'
"400":
description: 请求体非法
schema:
$ref: '#/definitions/internal_api.errorResponse'
"401":
description: 校验失败
schema:
$ref: '#/definitions/internal_api.errorResponse'
"429":
description: 连续失败已锁定
schema:
$ref: '#/definitions/internal_api.errorResponse'
summary: 完成通行密钥登录
tags:
- 认证
/api/v1/auth/passkey/register/begin:
post:
responses:
"200":
description: sessionId 与 WebAuthn options
schema:
$ref: '#/definitions/internal_api.passkeyOptionsResponse'
"409":
description: 面板地址未设置或数量达上限
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 发起通行密钥注册
tags:
- 认证
/api/v1/auth/passkey/register/finish:
post:
parameters:
- description: sessionId、名称与凭据响应
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.passkeyFinishRequest'
responses:
"200":
description: 已注册,返回换发的新 token
schema:
$ref: '#/definitions/internal_api.tokenResponse'
"204":
description: 已注册但新 token 签发失败,需重新登录
"400":
description: 请求体非法、会话过期或凭据校验失败
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 完成通行密钥注册
tags:
- 认证
/api/v1/auth/passkeys:
get:
responses:
"200":
description: items
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_model_UserPasskey'
security:
- BearerAuth: []
summary: 通行密钥列表
tags:
- 认证
/api/v1/auth/passkeys/{id}:
delete:
parameters:
- description: 凭据 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: 已删除,返回换发的新 token
schema:
$ref: '#/definitions/internal_api.tokenResponse'
"204":
description: 已删除但新 token 签发失败,需重新登录
"409":
description: 密码登录已禁用且这是最后一个免密登录方式
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 删除通行密钥
tags:
- 认证
/api/v1/auth/password-login:
put:
parameters:
- description: '{disabled: bool}'
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: 已保存,返回换发的新 token
schema:
$ref: '#/definitions/internal_api.tokenResponse'
"204":
description: 已保存但新 token 签发失败,需重新登录
"409":
description: 未绑定外部身份
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 密码登录开关
tags:
- 认证
/api/v1/auth/revoke-sessions:
post:
responses:
"200":
description: 新 token 与 expiresAt
schema:
$ref: '#/definitions/internal_api.tokenResponse'
security:
- BearerAuth: []
summary: 撤销全部会话
tags:
- 认证
/api/v1/auth/sessions:
get:
responses:
"200":
description: items
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_service_SessionInfo'
security:
- BearerAuth: []
summary: 活跃会话列表
tags:
- 认证
/api/v1/auth/sessions/{id}:
delete:
parameters:
- description: 会话 ID
in: path
name: id
required: true
type: integer
responses:
"204":
description: 已撤销
"400":
description: id 非法
schema:
$ref: '#/definitions/internal_api.errorResponse'
"404":
description: 会话不存在
schema:
$ref: '#/definitions/internal_api.errorResponse'
"409":
description: 不能撤销当前会话
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 撤销单个会话
tags:
- 认证
/api/v1/auth/totp:
get:
responses:
"200":
description: enabled
schema:
$ref: '#/definitions/internal_api.enabledResponse'
security:
- BearerAuth: []
summary: 两步验证状态
tags:
- 认证
/api/v1/auth/totp/activate:
post:
parameters:
- description: '{code: 6 位验证码}'
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: 已启用,返回换发的新 token
schema:
$ref: '#/definitions/internal_api.tokenResponse'
"401":
description: 请求处理期间会话已撤销
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 激活两步验证
tags:
- 认证
/api/v1/auth/totp/disable:
post:
parameters:
- description: '{password 或 code 任一确认}'
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: 已停用,返回换发的新 token
schema:
$ref: '#/definitions/internal_api.tokenResponse'
"401":
description: 请求处理期间会话已撤销
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 停用两步验证
tags:
- 认证
/api/v1/auth/totp/setup:
post:
responses:
"200":
description: secret 与 otpauthUri
schema:
$ref: '#/definitions/internal_api.totpSetupResponse'
"409":
description: 已启用
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 发起两步验证设置
tags:
- 认证
/api/v1/auth/wallet/challenge:
post:
parameters:
- description: 钱包地址与模式(bind 需 Bearer)
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.walletChallengeRequest'
responses:
"200":
description: nonce 与待签名消息
schema:
$ref: '#/definitions/internal_api.walletChallengeResponse'
"400":
description: 地址格式不正确
schema:
$ref: '#/definitions/internal_api.errorResponse'
"401":
description: bind 模式未登录
schema:
$ref: '#/definitions/internal_api.errorResponse'
"409":
description: 面板地址未设置
schema:
$ref: '#/definitions/internal_api.errorResponse'
summary: 发起钱包签名挑战
tags:
- 认证
/api/v1/auth/wallet/verify:
post:
parameters:
- description: nonce 与签名
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.walletVerifyRequest'
responses:
"200":
description: token 与 expiresAt(bind 模式为换发的新 token)
schema:
$ref: '#/definitions/internal_api.tokenResponse'
"400":
description: 挑战无效已过期,或 bind 模式签名校验失败
schema:
$ref: '#/definitions/internal_api.errorResponse'
"401":
description: 签名校验失败(login 模式)
schema:
$ref: '#/definitions/internal_api.errorResponse'
"403":
description: 地址未绑定账号
schema:
$ref: '#/definitions/internal_api.errorResponse'
"409":
description: 地址已绑定过
schema:
$ref: '#/definitions/internal_api.errorResponse'
"429":
description: 连续失败已锁定
schema:
$ref: '#/definitions/internal_api.errorResponse'
summary: 校验钱包签名
tags:
- 认证
/api/v1/console-sessions/{sessionId}:
delete:
parameters:
- description: 会话 ID
in: path
name: sessionId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 关闭网页控制台会话
tags:
- 网页控制台
/api/v1/console-sessions/{sessionId}/ws:
get:
parameters:
- description: 会话 ID
in: path
name: sessionId
required: true
type: string
- description: JWT(浏览器 WebSocket 无法带头,经 query 传递)
in: query
name: token
required: true
type: string
responses:
"101":
description: 升级为 WebSocket
summary: 控制台 WebSocket 数据面
tags:
- 网页控制台
/api/v1/log-events:
get:
parameters:
- description: 按配置过滤
in: query
name: configId
type: integer
- description: 关键字
in: query
name: q
type: string
responses:
"200":
description: items 与 total
schema:
$ref: '#/definitions/internal_api.pagedResponse-oci-portal_internal_model_LogEvent'
security:
- BearerAuth: []
summary: 回传日志事件列表
tags:
- 任务与日志回传
/api/v1/oci-configs:
get:
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_service.ConfigSummary'
type: array
security:
- BearerAuth: []
summary: 租户配置列表
tags:
- 租户配置
post:
parameters:
- description: API Key 配置(私钥密文落库)
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.importRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_model.OciConfig'
security:
- BearerAuth: []
summary: 导入租户配置
tags:
- 租户配置
/api/v1/oci-configs/{id}:
delete:
description: 删除租户配置及其本地关联任务、快照、回传、告警和 AI 渠道数据,并撤销 Webhook 密钥;不删除 OCI 云端资源。
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除租户配置
tags:
- 租户配置
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_model.OciConfig'
security:
- BearerAuth: []
summary: 租户配置详情
tags:
- 租户配置
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 可更新字段(别名/分组/代理/多区域开关等)
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: config 与 changes 字段变更对照
schema:
$ref: '#/definitions/internal_api.configChangesResponse'
security:
- BearerAuth: []
summary: 更新租户配置
tags:
- 租户配置
/api/v1/oci-configs/{id}/activate-api-key:
post:
description: 将刚创建的 key 设为本配置签名凭据:验证可用后落库,不删除旧 key;私钥为创建时下发的那份回传。userId 给定且异于当前签名用户时,一并把签名用户切换为该用户。
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 请求体:fingerprint 与 privateKey,可选 userId(切换签名用户)
in: body
name: body
required: true
schema:
type: object
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 启用 API Key 为面板签名凭据
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/audit-events:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 续查游标(上次响应原样带回)
in: query
name: cursor
type: string
- description: 单批目标条数,缺省 100,上限 200
in: query
name: limit
type: integer
- description: 检索关键字(服务端全文匹配,支持 * 通配;仅首查生效)
in: query
name: q
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.AuditEventsView'
security:
- BearerAuth: []
summary: 批式懒加载查询租户 OCI 审计事件
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/audit-events/detail:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: raw 为事件原文 JSON
schema:
$ref: '#/definitions/internal_api.rawDetailResponse'
security:
- BearerAuth: []
summary: 按 eventId 取回原始事件 JSON:缓存命中秒开,
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/availability-domains:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
type: string
type: array
security:
- BearerAuth: []
summary: 可用域列表
tags:
- 租户配置
/api/v1/oci-configs/{id}/boot-volume-attachments/{attachmentId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: attachmentId
in: path
name: attachmentId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 分离引导卷
tags:
- 存储
/api/v1/oci-configs/{id}/boot-volumes:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.BootVolume'
type: array
security:
- BearerAuth: []
summary: 引导卷列表
tags:
- 存储
/api/v1/oci-configs/{id}/boot-volumes/{bootVolumeId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: bootVolumeId
in: path
name: bootVolumeId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除引导卷
tags:
- 存储
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: bootVolumeId
in: path
name: bootVolumeId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.BootVolume'
security:
- BearerAuth: []
summary: 引导卷详情
tags:
- 存储
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: bootVolumeId
in: path
name: bootVolumeId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.updateBootVolumeRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.BootVolume'
security:
- BearerAuth: []
summary: 更新引导卷
tags:
- 存储
/api/v1/oci-configs/{id}/buckets:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 区域
in: query
name: region
type: string
- description: 区间 OCID,空为生效区间
in: query
name: compartmentId
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.Bucket'
type: array
security:
- BearerAuth: []
summary: 存储桶列表
tags:
- 对象存储
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.createBucketRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_oci.Bucket'
security:
- BearerAuth: []
summary: 创建存储桶
tags:
- 对象存储
/api/v1/oci-configs/{id}/buckets/{bucket}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: 区域
in: query
name: region
type: string
responses:
"200":
description: queued=true 表示已转后台清空删除
schema:
additionalProperties:
type: boolean
type: object
security:
- BearerAuth: []
summary: 删除存储桶(非空桶后台清空后删除)
tags:
- 对象存储
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.updateBucketRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.Bucket'
security:
- BearerAuth: []
summary: 更新存储桶(可见性/版本控制)
tags:
- 对象存储
/api/v1/oci-configs/{id}/buckets/{bucket}/objects:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: 区域
in: query
name: region
type: string
- description: 对象名(完整 key)
in: query
name: object
required: true
type: string
responses:
"204":
description: 删除成功
security:
- BearerAuth: []
summary: 删除对象
tags:
- 对象存储
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: 区域
in: query
name: region
type: string
- description: 前缀(虚拟目录)
in: query
name: prefix
type: string
- description: 上页 nextStartWith 游标
in: query
name: startWith
type: string
- description: 每页数量,默认 100
in: query
name: limit
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.ListObjectsResult'
security:
- BearerAuth: []
summary: 对象列表(前缀模式分页)
tags:
- 对象存储
/api/v1/oci-configs/{id}/buckets/{bucket}/objects/content:
get:
description: 预览/编辑用小文件直读(上限 20MB),不签发 PAR;响应体为原始字节,ETag 经响应头返回
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: 区域
in: query
name: region
type: string
- description: 对象名(完整 key)
in: query
name: object
required: true
type: string
responses:
"200":
description: 对象原始内容
schema:
type: string
"413":
description: 对象超出中转上限
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: 读取对象内容(面板中转)
tags:
- 对象存储
put:
description: 文本编辑保存(上限 5MB),请求体为原始字节;If-Match 请求头做并发保护,冲突返回 412
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: 区域
in: query
name: region
type: string
- description: 对象名(完整 key)
in: query
name: object
required: true
type: string
responses:
"200":
description: etag=新 ETag
schema:
additionalProperties:
type: string
type: object
"412":
description: If-Match 不匹配,对象已被并发修改
schema:
additionalProperties:
type: string
type: object
"413":
description: 请求体超出上限
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: 保存对象内容(面板中转)
tags:
- 对象存储
/api/v1/oci-configs/{id}/buckets/{bucket}/objects/detail:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: 区域
in: query
name: region
type: string
- description: 对象名(完整 key)
in: query
name: object
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.ObjectDetail'
security:
- BearerAuth: []
summary: 对象元数据
tags:
- 对象存储
/api/v1/oci-configs/{id}/buckets/{bucket}/objects/rename:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: 请求体:region、source、newName
in: body
name: body
required: true
schema:
type: object
responses:
"204":
description: 重命名成功
security:
- BearerAuth: []
summary: 重命名对象
tags:
- 对象存储
/api/v1/oci-configs/{id}/buckets/{bucket}/objects/restore:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: 请求体:region、object、hours(可下载时长,默认 24)
in: body
name: body
required: true
schema:
type: object
responses:
"202":
description: 取回已提交,约 1 小时后可下载
security:
- BearerAuth: []
summary: 取回 Archive 对象
tags:
- 对象存储
/api/v1/oci-configs/{id}/buckets/{bucket}/pars:
delete:
description: 'all=1 时删除桶内全部 PAR 并返回 {"deleted": n};否则按 parId 删单条'
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: PAR ID(可含 / 等字符,故经 query 传递)
in: query
name: parId
type: string
- description: 为 1 时删除全部
in: query
name: all
type: string
- description: 区域
in: query
name: region
type: string
responses:
"200":
description: 'all=1 时返回 {deleted: n}'
schema:
additionalProperties:
type: integer
type: object
"204":
description: 按 parId 删单条成功,链接立即失效
security:
- BearerAuth: []
summary: 删除临时链接
tags:
- 对象存储
get:
description: 游标分页:page 传上次响应的 nextPage,nextPage 为空表示已到末页
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: 区域
in: query
name: region
type: string
- description: 分页游标(上次响应的 nextPage,空取首页)
in: query
name: page
type: string
- description: 每页条数,默认 100,上限 1000
in: query
name: limit
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.parPage'
security:
- BearerAuth: []
summary: 临时链接列表
tags:
- 对象存储
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 桶名
in: path
name: bucket
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.createPARRequest'
responses:
"201":
description: fullUrl 仅创建响应返回,请立即保存
schema:
$ref: '#/definitions/oci-portal_internal_oci.PAR'
"400":
description: accessType 或 expiresHours 非法
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: 签发临时链接(PAR)
tags:
- 对象存储
/api/v1/oci-configs/{id}/cached-compartments:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.Compartment'
type: array
security:
- BearerAuth: []
summary: 返回筛选器用区间列表:未开多区间支持返回空数组
tags:
- 租户配置
/api/v1/oci-configs/{id}/cached-regions:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_service.RegionSubscriptionView'
type: array
security:
- BearerAuth: []
summary: 返回筛选器用区域列表:未开多区域支持只含默认区域
tags:
- 租户配置
/api/v1/oci-configs/{id}/compartments:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.Compartment'
type: array
security:
- BearerAuth: []
summary: 列出租户下全部 ACTIVE compartment
tags:
- 租户配置
/api/v1/oci-configs/{id}/console-connections/{connectionId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: connectionId
in: path
name: connectionId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除实例控制台连接
tags:
- 计算
/api/v1/oci-configs/{id}/costs:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 起始时间 RFC3339,缺省为 endTime-30 天;返回行严格限于 [startTime, endTime) 窗口(Usage
API HOURLY 粒度会把起点下扩到 UTC 日零点,越界行已在服务端过滤)
in: query
name: startTime
type: string
- description: 结束时间 RFC3339,缺省为当前时刻
in: query
name: endTime
type: string
- description: HOURLY / DAILY / MONTHLY,缺省 DAILY
in: query
name: granularity
type: string
- description: COST / USAGE,缺省 COST
in: query
name: queryType
type: string
- description: 分组维度,单维或复合(如 service,skuName),缺省 service
in: query
name: groupBy
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.CostItem'
type: array
security:
- BearerAuth: []
summary: 配置成本快照
tags:
- 成本
/api/v1/oci-configs/{id}/domains:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.IdentityDomain'
type: array
security:
- BearerAuth: []
summary: 租户身份域列表
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/identity-providers:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.IdentityProviderInfo'
type: array
security:
- BearerAuth: []
summary: 身份提供商列表
tags:
- 租户 IAM
post:
description: 创建禁用态 IdP;若 IdP 已创建但 JIT 后置配置失败且回滚无法确认,仍返回 201,并在 setupWarning
中标明部分成功
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.createIdpRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/internal_api.createIdpResponse'
security:
- BearerAuth: []
summary: 创建身份提供商(SAML)
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/identity-providers/{idpId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: idpId
in: path
name: idpId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除身份提供商
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/identity-providers/{idpId}/activate:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: idpId
in: path
name: idpId
required: true
type: string
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.IdentityProviderInfo'
security:
- BearerAuth: []
summary: 激活身份提供商
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/identity-settings:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.IdentitySettingInfo'
security:
- BearerAuth: []
summary: 身份域设置
tags:
- 租户 IAM
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.IdentitySettingInfo'
security:
- BearerAuth: []
summary: 更新身份域设置
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/idp-icons:
delete:
description: 使用上传响应中的 fileName 删除身份域公开图片;404 按已删除处理
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: 上传响应返回的 IdP 图标存储标识(images/idp-icon-<32hex>.<ext>)
in: query
name: fileName
required: true
type: string
responses:
"204":
description: 无内容
"400":
description: fileName 缺失或不是本服务生成的 IdP 图标标识
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: 删除身份提供商图标
tags:
- 租户 IAM
post:
consumes:
- multipart/form-data
description: 上传到身份域公共图片存储(/storage/v1/Images),返回可填入 iconUrl 的公网地址
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: 图标文件(png/jpg/jpeg/gif/svg/webp/ico,≤1MB)
in: formData
name: file
required: true
type: file
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.idpIconResponse'
"400":
description: 缺文件字段、文件为空或文件名非法
schema:
additionalProperties:
type: string
type: object
"413":
description: 文件超过 1MB
schema:
additionalProperties:
type: string
type: object
"415":
description: 扩展名不支持或与文件内容不符
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: 上传身份提供商图标
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/images:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.Image'
type: array
security:
- BearerAuth: []
summary: 镜像列表
tags:
- 租户配置
/api/v1/oci-configs/{id}/images/{imageId}:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: imageId
in: path
name: imageId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.Image'
security:
- BearerAuth: []
summary: 镜像详情
tags:
- 租户配置
/api/v1/oci-configs/{id}/instances:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.Instance'
type: array
security:
- BearerAuth: []
summary: 实例列表
tags:
- 计算
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.createInstanceRequest'
responses:
"201":
description: 部分成功仍 201,errors 为逐台失败信息
schema:
$ref: '#/definitions/internal_api.createInstancesResponse'
security:
- BearerAuth: []
summary: 创建实例
tags:
- 计算
/api/v1/oci-configs/{id}/instances/{instanceId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
responses:
"204":
description: 无内容
"409":
description: 该实例的生命周期操作正在处理中
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 终止实例
tags:
- 计算
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.Instance'
security:
- BearerAuth: []
summary: 实例详情
tags:
- 计算
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.updateInstanceRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.Instance'
security:
- BearerAuth: []
summary: 更新实例
tags:
- 计算
/api/v1/oci-configs/{id}/instances/{instanceId}/action:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.instanceActionRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.Instance'
"409":
description: 该实例的生命周期操作正在处理中
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 实例电源操作(启停/重启)
tags:
- 计算
/api/v1/oci-configs/{id}/instances/{instanceId}/boot-volume-attachments:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.BootVolumeAttachment'
type: array
security:
- BearerAuth: []
summary: 引导卷附件列表
tags:
- 存储
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.attachBootVolumeRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_oci.BootVolumeAttachment'
security:
- BearerAuth: []
summary: 附加引导卷
tags:
- 存储
/api/v1/oci-configs/{id}/instances/{instanceId}/change-public-ip:
post:
description: 旧临时 IP 删除、旧保留 IP 自动解绑(资源保留在账户),随后分配新临时 IP
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.publicIpResponse'
security:
- BearerAuth: []
summary: 更换实例主网卡临时公网 IP
tags:
- 计算
/api/v1/oci-configs/{id}/instances/{instanceId}/console-connections:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.ConsoleConnection'
type: array
security:
- BearerAuth: []
summary: 实例控制台连接列表
tags:
- 计算
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.createConsoleConnectionRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_oci.ConsoleConnection'
security:
- BearerAuth: []
summary: 创建实例控制台连接
tags:
- 计算
/api/v1/oci-configs/{id}/instances/{instanceId}/console-sessions:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 实例 OCID
in: path
name: instanceId
required: true
type: string
- description: '{type: serial|vnc}'
in: body
name: body
required: true
schema:
type: object
responses:
"201":
description: sessionId 与 type
schema:
$ref: '#/definitions/internal_api.webConsoleSessionResponse'
security:
- BearerAuth: []
summary: 创建网页控制台会话
tags:
- 网页控制台
/api/v1/oci-configs/{id}/instances/{instanceId}/ipv6-addresses:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 移除实例 IPv6 地址
tags:
- 计算
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"201":
description: Created
schema:
$ref: '#/definitions/internal_api.ipv6AddressResponse'
security:
- BearerAuth: []
summary: 实例添加 IPv6 地址
tags:
- 计算
/api/v1/oci-configs/{id}/instances/{instanceId}/replace-boot-volume:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.attachBootVolumeRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.BootVolumeAttachment'
security:
- BearerAuth: []
summary: 更换实例引导卷
tags:
- 存储
/api/v1/oci-configs/{id}/instances/{instanceId}/traffic:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.InstanceTraffic'
security:
- BearerAuth: []
summary: '---- 流量与成本 ----'
tags:
- 计算
/api/v1/oci-configs/{id}/instances/{instanceId}/vnics:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.Vnic'
type: array
security:
- BearerAuth: []
summary: 实例 VNIC 列表
tags:
- 计算
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.attachVnicRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_oci.Vnic'
security:
- BearerAuth: []
summary: 附加 VNIC
tags:
- 计算
/api/v1/oci-configs/{id}/instances/{instanceId}/volume-attachments:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.VolumeAttachment'
type: array
security:
- BearerAuth: []
summary: 卷附件列表
tags:
- 存储
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: instanceId
in: path
name: instanceId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.attachVolumeRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_oci.VolumeAttachment'
security:
- BearerAuth: []
summary: 附加块存储卷
tags:
- 存储
/api/v1/oci-configs/{id}/invoices:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 自然年过滤(按开票时间);缺省全量
in: query
name: year
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.Invoice'
type: array
security:
- BearerAuth: []
summary: 发票列表
tags:
- 账单
/api/v1/oci-configs/{id}/invoices/{internalId}/lines:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 发票内部 ID
in: path
name: internalId
required: true
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.InvoiceLine'
type: array
security:
- BearerAuth: []
summary: 发票费用明细
tags:
- 账单
/api/v1/oci-configs/{id}/invoices/{internalId}/pay:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 发票内部 ID
in: path
name: internalId
required: true
type: string
- description: 回执邮箱
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.payInvoiceRequest'
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: 支付发票
tags:
- 账单
/api/v1/oci-configs/{id}/invoices/{internalId}/pdf:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 发票内部 ID
in: path
name: internalId
required: true
type: string
- description: 发票号(用作下载文件名)
in: query
name: number
type: string
responses:
"200":
description: PDF 原文
schema:
type: file
security:
- BearerAuth: []
summary: 发票 PDF 下载
tags:
- 账单
/api/v1/oci-configs/{id}/limits:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.LimitValue'
type: array
security:
- BearerAuth: []
summary: 服务限额查询
tags:
- 租户配置
/api/v1/oci-configs/{id}/limits/services:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.LimitService'
type: array
security:
- BearerAuth: []
summary: 限额服务列表
tags:
- 租户配置
/api/v1/oci-configs/{id}/log-relay:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 逆序销毁链路并撤销 secret
tags:
- 任务与日志回传
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.RelayView'
security:
- BearerAuth: []
summary: 查询 OCI 侧链路状态与关键事件清单
tags:
- 任务与日志回传
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.RelayView'
security:
- BearerAuth: []
summary: 一键建立回传链路
tags:
- 任务与日志回传
/api/v1/oci-configs/{id}/log-webhook:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 撤销配置的回传 secret,旧回调地址随即失效
tags:
- 任务与日志回传
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.logWebhookStatusResponse'
security:
- BearerAuth: []
summary: 查询配置的回调地址
tags:
- 任务与日志回传
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.LogWebhookInfo'
security:
- BearerAuth: []
summary: 生成
tags:
- 任务与日志回传
/api/v1/oci-configs/{id}/notification-recipients:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.NotificationRecipients'
security:
- BearerAuth: []
summary: '---- 域通知收件人与密码策略 ----'
tags:
- 租户 IAM
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.NotificationRecipients'
security:
- BearerAuth: []
summary: 更新通知收件人
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/object-storage/namespace:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 区域
in: query
name: region
type: string
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: 对象存储 namespace
tags:
- 对象存储
/api/v1/oci-configs/{id}/password-policies:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.PasswordPolicyInfo'
type: array
security:
- BearerAuth: []
summary: 密码策略列表
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/password-policies/{policyId}:
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: policyId
in: path
name: policyId
required: true
type: string
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.PasswordPolicyInfo'
security:
- BearerAuth: []
summary: 更新密码策略
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/payment-methods:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.PaymentMethod'
type: array
security:
- BearerAuth: []
summary: 付款方式列表
tags:
- 账单
/api/v1/oci-configs/{id}/region-subscriptions:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_service.RegionSubscriptionView'
type: array
security:
- BearerAuth: []
summary: 区域订阅列表
tags:
- 租户配置
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.subscribeRegionRequest'
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_service.RegionSubscriptionView'
type: array
security:
- BearerAuth: []
summary: 订阅新区域
tags:
- 租户配置
/api/v1/oci-configs/{id}/reserved-ips:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 区域,空为主区域
in: query
name: region
type: string
- description: 区间 OCID,空为生效区间
in: query
name: compartmentId
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.ReservedIP'
type: array
security:
- BearerAuth: []
summary: 保留 IP 列表
tags:
- 网络
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 请求体:region、compartmentId、displayName
in: body
name: body
required: true
schema:
type: object
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_oci.ReservedIP'
security:
- BearerAuth: []
summary: 创建保留 IP
tags:
- 网络
/api/v1/oci-configs/{id}/reserved-ips/{publicIpId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 保留 IP OCID
in: path
name: publicIpId
required: true
type: string
- description: 区域
in: query
name: region
type: string
responses:
"204":
description: 删除成功
security:
- BearerAuth: []
summary: 删除保留 IP
tags:
- 网络
put:
description: vnicId 非空时绑到该网卡,否则绑 instanceId 主网卡(两者都空为解绑);目标已有公网 IP 时自动释放/解绑
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 保留 IP OCID
in: path
name: publicIpId
required: true
type: string
- description: 请求体:region、instanceId、vnicId
in: body
name: body
required: true
schema:
type: object
responses:
"204":
description: 绑定成功
security:
- BearerAuth: []
summary: 绑定/解绑保留 IP
tags:
- 网络
/api/v1/oci-configs/{id}/saml-metadata:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
responses:
"200":
description: SAML 元数据 XML(附件下载)
schema:
type: file
security:
- BearerAuth: []
summary: 下载 SAML 元数据
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/security-lists:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.SecurityList'
type: array
security:
- BearerAuth: []
summary: 安全列表清单
tags:
- 网络
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.createSecurityListRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_oci.SecurityList'
security:
- BearerAuth: []
summary: 创建安全列表
tags:
- 网络
/api/v1/oci-configs/{id}/security-lists/{securityListId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: securityListId
in: path
name: securityListId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除安全列表
tags:
- 网络
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: securityListId
in: path
name: securityListId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.SecurityList'
security:
- BearerAuth: []
summary: 安全列表详情
tags:
- 网络
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: securityListId
in: path
name: securityListId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.updateSecurityListRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.SecurityList'
security:
- BearerAuth: []
summary: 更新安全列表
tags:
- 网络
/api/v1/oci-configs/{id}/shapes:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.ComputeShape'
type: array
security:
- BearerAuth: []
summary: 实例形状列表
tags:
- 租户配置
/api/v1/oci-configs/{id}/sign-on-exemptions:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_oci.SignOnRuleInfo'
security:
- BearerAuth: []
summary: 创建 MFA 豁免规则
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/sign-on-exemptions/{ruleId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: ruleId
in: path
name: ruleId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除 MFA 豁免规则
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/sign-on-rules:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.SignOnRuleInfo'
type: array
security:
- BearerAuth: []
summary: 单点登录规则列表
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/subnets:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.Subnet'
type: array
security:
- BearerAuth: []
summary: 子网列表
tags:
- 网络
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.createSubnetRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_oci.Subnet'
security:
- BearerAuth: []
summary: 创建子网
tags:
- 网络
/api/v1/oci-configs/{id}/subnets/{subnetId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: subnetId
in: path
name: subnetId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除子网
tags:
- 网络
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: subnetId
in: path
name: subnetId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.Subnet'
security:
- BearerAuth: []
summary: 子网详情
tags:
- 网络
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: subnetId
in: path
name: subnetId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.renameRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.Subnet'
security:
- BearerAuth: []
summary: 更新子网
tags:
- 网络
/api/v1/oci-configs/{id}/subscriptions:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.SubscriptionInfo'
type: array
security:
- BearerAuth: []
summary: 订阅列表
tags:
- 租户配置
/api/v1/oci-configs/{id}/subscriptions/{subscriptionId}:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: subscriptionId
in: path
name: subscriptionId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.SubscriptionDetail'
security:
- BearerAuth: []
summary: 订阅详情
tags:
- 租户配置
/api/v1/oci-configs/{id}/users:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.TenantUser'
type: array
security:
- BearerAuth: []
summary: 租户 IAM 用户列表
tags:
- 租户 IAM
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.createTenantUserRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_oci.TenantUser'
security:
- BearerAuth: []
summary: 创建租户 IAM 用户
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/users/{userId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: userId
in: path
name: userId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除租户 IAM 用户
tags:
- 租户 IAM
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: userId
in: path
name: userId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.TenantUserDetail'
security:
- BearerAuth: []
summary: 租户用户详情
tags:
- 租户 IAM
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: userId
in: path
name: userId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.updateTenantUserRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.TenantUser'
security:
- BearerAuth: []
summary: 更新租户 IAM 用户
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/users/{userId}/api-keys:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: userId
in: path
name: userId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.deletedApiKeysResponse'
security:
- BearerAuth: []
summary: 清除用户全部 API Key
tags:
- 租户 IAM
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: userId
in: path
name: userId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.userApiKeysResponse'
security:
- BearerAuth: []
summary: 列出用户 API Key
tags:
- 租户 IAM
post:
description: 后端生成 RSA-2048 密钥对并上传公钥;私钥仅本次响应返回,不落库。
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: userId
in: path
name: userId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.CreatedApiKey'
security:
- BearerAuth: []
summary: 为用户新增 API Key
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/users/{userId}/api-keys/{fingerprint}:
delete:
description: 当前配置正在使用的 key 拒删(409),避免面板失联。
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: userId
in: path
name: userId
required: true
type: string
- description: key 指纹
in: path
name: fingerprint
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除用户单把 API Key
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/users/{userId}/mfa-devices:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: userId
in: path
name: userId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.deletedTotpResponse'
security:
- BearerAuth: []
summary: 清除用户 MFA 设备
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/users/{userId}/reset-password:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 身份域 OCID(缺省 Default 域)
in: query
name: domainId
type: string
- description: userId
in: path
name: userId
required: true
type: string
responses:
"200":
description: 一次性明文密码
schema:
$ref: '#/definitions/internal_api.passwordResponse'
security:
- BearerAuth: []
summary: 重置租户用户密码
tags:
- 租户 IAM
/api/v1/oci-configs/{id}/vcns:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.VCN'
type: array
security:
- BearerAuth: []
summary: VCN 列表
tags:
- 网络
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.createVCNRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_oci.VCN'
security:
- BearerAuth: []
summary: 创建 VCN
tags:
- 网络
/api/v1/oci-configs/{id}/vcns/{vcnId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: vcnId
in: path
name: vcnId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除 VCN
tags:
- 网络
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: vcnId
in: path
name: vcnId
required: true
type: string
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.VCN'
security:
- BearerAuth: []
summary: VCN 详情
tags:
- 网络
put:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: vcnId
in: path
name: vcnId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.renameRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_oci.VCN'
security:
- BearerAuth: []
summary: 更新 VCN
tags:
- 网络
/api/v1/oci-configs/{id}/vcns/{vcnId}/enable-ipv6:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: vcnId
in: path
name: vcnId
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.enableIPv6Request'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.ipv6StepsResponse'
security:
- BearerAuth: []
summary: VCN 启用 IPv6
tags:
- 网络
/api/v1/oci-configs/{id}/verify:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: config 与 changes 字段变更对照
schema:
$ref: '#/definitions/internal_api.configChangesResponse'
security:
- BearerAuth: []
summary: 验证配置连通性并刷新画像
tags:
- 租户配置
/api/v1/oci-configs/{id}/vnic-attachments/{attachmentId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: attachmentId
in: path
name: attachmentId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 分离 VNIC
tags:
- 计算
/api/v1/oci-configs/{id}/vnics/{vnicId}/change-public-ip:
post:
description: 旧临时 IP 删除、旧保留 IP 自动解绑(资源保留在账户),随后分配新临时 IP
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: VNIC OCID
in: path
name: vnicId
required: true
type: string
- description: 请求体:region
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.publicIpResponse'
security:
- BearerAuth: []
summary: 更换 VNIC 临时公网 IP
tags:
- 计算
/api/v1/oci-configs/{id}/vnics/{vnicId}/ipv6-addresses:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: vnicId
in: path
name: vnicId
required: true
type: string
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"201":
description: Created
schema:
$ref: '#/definitions/internal_api.addressResponse'
security:
- BearerAuth: []
summary: 为指定 VNIC 添加 IPv6
tags:
- 计算
/api/v1/oci-configs/{id}/volume-attachments/{attachmentId}:
delete:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
- description: attachmentId
in: path
name: attachmentId
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 分离块存储卷
tags:
- 存储
/api/v1/oci-configs/{id}/volumes:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.BlockVolume'
type: array
security:
- BearerAuth: []
summary: 块存储卷列表
tags:
- 存储
/api/v1/overview:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.Overview'
security:
- BearerAuth: []
summary: 返回总览页聚合数据
tags:
- 租户配置
/api/v1/proxies:
get:
responses:
"200":
description: items
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_service_ProxyView'
security:
- BearerAuth: []
summary: 代理列表
tags:
- 设置
post:
parameters:
- description: 代理配置(密码只写不回)
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_service.ProxyInput'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_service.ProxyView'
security:
- BearerAuth: []
summary: 创建代理
tags:
- 设置
/api/v1/proxies/{id}:
delete:
parameters:
- description: 代理 ID
in: path
name: id
required: true
type: integer
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除代理
tags:
- 设置
put:
parameters:
- description: 代理 ID
in: path
name: id
required: true
type: integer
- description: 代理配置(密码缺省沿用)
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_service.ProxyInput'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.ProxyView'
security:
- BearerAuth: []
summary: 更新代理
tags:
- 设置
/api/v1/proxies/{id}/probe:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.ProxyView'
security:
- BearerAuth: []
summary: 手动重测代理出口地区,同步返回最新视图
tags:
- 设置
/api/v1/proxies/{id}/tenants:
put:
parameters:
- description: 代理 ID
in: path
name: id
required: true
type: integer
- description: 请求体 {\
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: usedBy
schema:
$ref: '#/definitions/internal_api.usedByResponse'
security:
- BearerAuth: []
summary: 设置代理关联的租户全集
tags:
- 设置
/api/v1/proxies/import:
post:
parameters:
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.ImportResult'
security:
- BearerAuth: []
summary: 批量导入代理
tags:
- 设置
/api/v1/regions:
get:
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_oci.RegionInfo'
type: array
security:
- BearerAuth: []
summary: 返回本地维护的完整区域表
tags:
- 租户配置
/api/v1/settings/notify-channels:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_service_NotifyChannelView'
security:
- BearerAuth: []
summary: 返回全部通知渠道的脱敏视图
tags:
- 设置
/api/v1/settings/notify-channels/{type}:
put:
parameters:
- description: 渠道类型(webhook/ntfy/bark/smtp)
in: path
name: type
required: true
type: string
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.updateNotifyChannelRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_service_NotifyChannelView'
security:
- BearerAuth: []
summary: 保存单渠道配置并返回全渠道最新视图
tags:
- 设置
/api/v1/settings/notify-channels/{type}/test:
post:
parameters:
- description: 渠道类型(webhook/ntfy/bark/smtp)
in: path
name: type
required: true
type: string
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 向指定渠道发送测试消息
tags:
- 设置
/api/v1/settings/notify-events:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.NotifyEventsView'
security:
- BearerAuth: []
summary: 返回全部通知事件开关
tags:
- 设置
put:
parameters:
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_service.NotifyEventsView'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.NotifyEventsView'
security:
- BearerAuth: []
summary: 全量保存五个事件开关并返回最新值
tags:
- 设置
/api/v1/settings/notify-templates:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/internal_api.itemsResponse-oci-portal_internal_service_NotifyTemplateView'
security:
- BearerAuth: []
summary: 返回全部通知模板
tags:
- 设置
/api/v1/settings/notify-templates/{kind}:
put:
parameters:
- description: kind
in: path
name: kind
required: true
type: string
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 保存单个通知模板
tags:
- 设置
/api/v1/settings/notify-templates/{kind}/test:
post:
parameters:
- description: kind
in: path
name: kind
required: true
type: string
- description: 请求体(见接口说明)
in: body
name: body
required: true
schema:
type: object
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 用示例变量渲染模板并同步发送测试消息
tags:
- 设置
/api/v1/settings/oauth:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.OAuthProvidersView'
security:
- BearerAuth: []
summary: OAuth provider 配置
tags:
- 设置
patch:
parameters:
- description: 出现的字段才会被更新
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_service.UpdateOAuthInput'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.OAuthProvidersView'
"400":
description: 请求体非法
schema:
$ref: '#/definitions/internal_api.errorResponse'
"401":
description: 请求处理期间会话已撤销
schema:
$ref: '#/definitions/internal_api.errorResponse'
"409":
description: 密码登录禁用期间,该变更将移除最后可用登录方式
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 部分更新 OAuth provider 配置
tags:
- 设置
/api/v1/settings/security:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.SecuritySettings'
security:
- BearerAuth: []
summary: 返回安全设置
tags:
- 设置
patch:
parameters:
- description: 出现的字段才会被更新
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_service.SecurityPatch'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.SecuritySettings'
"400":
description: 字段越界或非法
schema:
$ref: '#/definitions/internal_api.errorResponse'
"401":
description: 请求处理期间会话已撤销
schema:
$ref: '#/definitions/internal_api.errorResponse'
"409":
description: 密码登录禁用期间,面板地址变更将移除最后可用登录方式
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 部分更新安全设置并返回最新值
tags:
- 设置
/api/v1/settings/task:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.TaskSettingsView'
security:
- BearerAuth: []
summary: 返回任务行为设置
tags:
- 设置
put:
parameters:
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/oci-portal_internal_service.TaskSettingsView'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.TaskSettingsView'
security:
- BearerAuth: []
summary: 保存任务行为设置并返回最新值
tags:
- 设置
/api/v1/settings/telegram:
get:
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.TelegramView'
security:
- BearerAuth: []
summary: 返回脱敏后的 Telegram 配置,绝不回 token 明文
tags:
- 设置
put:
parameters:
- description: 请求体
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.updateTelegramRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_service.TelegramView'
security:
- BearerAuth: []
summary: 保存配置并返回最新脱敏视图
tags:
- 设置
/api/v1/settings/telegram/test:
post:
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 用当前已保存配置同步发送一条测试消息
tags:
- 设置
/api/v1/system-logs:
get:
responses:
"200":
description: items 与 total
schema:
$ref: '#/definitions/internal_api.pagedResponse-oci-portal_internal_model_SystemLog'
security:
- BearerAuth: []
summary: 系统操作日志列表
tags:
- 设置
/api/v1/tasks:
get:
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_model.Task'
type: array
security:
- BearerAuth: []
summary: 任务列表
tags:
- 任务与日志回传
post:
parameters:
- description: 任务定义(类型/cron/payload)
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.createTaskRequest'
responses:
"201":
description: Created
schema:
$ref: '#/definitions/oci-portal_internal_model.Task'
security:
- BearerAuth: []
summary: 创建任务
tags:
- 任务与日志回传
/api/v1/tasks/{id}:
delete:
parameters:
- description: 任务 ID
in: path
name: id
required: true
type: integer
responses:
"204":
description: 无内容
security:
- BearerAuth: []
summary: 删除任务
tags:
- 任务与日志回传
get:
parameters:
- description: 任务 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_model.Task'
security:
- BearerAuth: []
summary: 任务详情
tags:
- 任务与日志回传
put:
parameters:
- description: 任务 ID
in: path
name: id
required: true
type: integer
- description: 可更新字段;抢机 payload 的 count 语义为目标台数
in: body
name: body
required: true
schema:
$ref: '#/definitions/internal_api.updateTaskRequest'
responses:
"200":
description: OK
schema:
$ref: '#/definitions/oci-portal_internal_model.Task'
"400":
description: 参数非法或抢机目标不大于已完成数量
schema:
$ref: '#/definitions/internal_api.errorResponse'
"409":
description: 任务被并发修改,须刷新重试
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 更新任务
tags:
- 任务与日志回传
/api/v1/tasks/{id}/logs:
get:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/oci-portal_internal_model.TaskLog'
type: array
security:
- BearerAuth: []
summary: 任务执行日志
tags:
- 任务与日志回传
/api/v1/tasks/{id}/run:
post:
parameters:
- description: 配置 ID
in: path
name: id
required: true
type: integer
responses:
"202":
description: Accepted
schema:
$ref: '#/definitions/internal_api.triggerResponse'
"409":
description: 任务正在执行中
schema:
$ref: '#/definitions/internal_api.errorResponse'
security:
- BearerAuth: []
summary: 立即执行任务(异步触发,结果经任务日志轮询获取)
tags:
- 任务与日志回传
/api/v1/webhooks/oci-logs/{secret}:
post:
parameters:
- description: 面板生成的回传密钥(鉴权凭据)
in: path
name: secret
required: true
type: string
- description: ONS 消息原文(SubscriptionConfirmation / Notification)
in: body
name: body
required: true
schema:
type: object
responses:
"200":
description: 已受理
"403":
description: 时间戳超窗或证书源非 Oracle 域
schema:
$ref: '#/definitions/internal_api.errorResponse'
"404":
description: secret 无效(不暴露端点存在性)
summary: OCI 日志回传入口(ONS HTTPS 订阅投递)
tags:
- 任务与日志回传
securityDefinitions:
BearerAuth:
description: '登录接口返回的 JWT,格式: Bearer <token>'
in: header
name: Authorization
type: apiKey
swagger: "2.0"