GET /v1/sdk-shield/apps
SDK 应用列表(含今日握手、租户名;租户另带套餐配额)
响应
| 状态码 | 说明 |
|---|---|
200 | Apps 字段: |
401 | Error |
403 | Error |
422 | Error |
503 | Error |
失败时怎么办
401检查凭据格式、是否过期或被轮换。403检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。503依赖暂不可用:稍后用原 Idempotency-Key 重试。
| 方法 | 路径 | 摘要 | 认证 |
|---|---|---|---|
| GET | /v1/sdk-shield/apps | SDK 应用列表(含今日握手、租户名;租户另带套餐配额) | 登录会话 |
| POST | /v1/sdk-shield/apps | 新建 SDK 应用,返回应用与第一把 AppSecret(只这一次) | 登录会话 |
| GET | /v1/sdk-shield/apps/{id} | SDK 应用详情(含今日握手) | 登录会话 |
| PATCH | /v1/sdk-shield/apps/{id} | 修改 SDK 应用:名称、状态(停用即拒绝该应用全部新连接)、防护参数 | 登录会话 |
| DELETE | /v1/sdk-shield/apps/{id} | 删除 SDK 应用(须先解绑全部转发),吊销全部密钥 | 登录会话 |
| GET | /v1/sdk-shield/apps/{id}/blocks | 拦截日志:按分钟×节点的失败原因与来源抽样(至多 1 天) | 登录会话 |
| GET | /v1/sdk-shield/apps/{id}/delete-preview | 删除前确认:应用与绑定的转发数 | 登录会话 |
| GET | /v1/sdk-shield/apps/{id}/forwards | 可绑定的四层转发:作用域内全部转发,带不兼容原因与已绑定应用 | 登录会话 |
| PUT | /v1/sdk-shield/apps/{id}/forwards | 整体替换应用绑定的四层转发(至多 16 条) | 登录会话 |
| GET | /v1/sdk-shield/apps/{id}/keys | 密钥列表,每把带近 24 小时通过的握手数(旧密钥归零后再吊销) | 登录会话 |
| POST | /v1/sdk-shield/apps/{id}/keys | 轮换:新增一把密钥(至多 2 把有效),返回 AppSecret(只这一次) | 登录会话 |
| POST | /v1/sdk-shield/apps/{id}/keys/{key_id}/revoke | 吊销一把密钥;最后一把有效密钥不能吊销(停用应用请改状态) | 登录会话 |
| GET | /v1/sdk-shield/apps/{id}/node-list/preview | 预览会签发的节点列表(不签名),带节点名、签名密钥与公开地址 | 登录会话 |
| GET | /v1/sdk-shield/apps/{id}/stats | 统计:总数、按原因分布、趋势、来源 Top(带地区/ASN) | 登录会话 |
| GET | /v1/sdk-shield/module | 读取 SDK 游戏盾模块状态:授权、本机停用、新应用默认值、列表签名公钥、租户配额 | 登录会话 |
| GET | /v1/sdk-shield/sdk | SDK 下载清单(各语言包、版本、最低版本、大小、SHA-256)与内置公钥;各包下载地址为本主控的鉴权下载路径;开发构建未随包带归档时 packages 为空 | 登录会话 |
| GET | /v1/sdk-shield/sdk/files/{name} | 下载本主控发布版本随包的 SDK 归档(登录并有 module.sdkshield;租户另需套餐含 sdk_shield);名称取清单中下载地址的最后一段 | 登录会话 |
契约文件:api/control-sdk-shield.openapi.yaml
/v1/sdk-shield/appsSDK 应用列表(含今日握手、租户名;租户另带套餐配额)
| 状态码 | 说明 |
|---|---|
200 | Apps 字段: |
401 | Error |
403 | Error |
422 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps新建 SDK 应用,返回应用与第一把 AppSecret(只这一次)
A tenant is bounded by limits.sdk_shield_apps (409 sdk_shield_app_limit); an administrator must name tenant_scope_id. Audited sdkshield.app.create.
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
Idempotency-Key | header | string | 是 | One key per write; resend it to retry a write whose result was not seen. The same key and request (24 hours, per user and operation) answers the resource it created and creates nothing: a Secret then has replayed true and no app_secret (the secret was only in the first answer). The same key with another request: 409 idempotency_conflict. Missing, malformed or repeated: 422 validation_failed (field Idempotency-Key). |
application/json · 必填:是
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | — |
| 状态码 | 说明 |
|---|---|
201 | Created 字段: |
401 | Error |
403 | Error |
409 | Error |
422 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}SDK 应用详情(含今日握手)
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | path | string(uuid) | 是 | The app's row id (App.id). |
| 状态码 | 说明 |
|---|---|
200 | App 字段: |
401 | Error |
403 | Error |
404 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}修改 SDK 应用:名称、状态(停用即拒绝该应用全部新连接)、防护参数
status disabled makes every bound forward refuse new connections (app_disabled) after the next publication. expected_revision refuses a stale edit (409 revision_conflict). Audited sdkshield.app.update / disable / enable.
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | path | string(uuid) | 是 | The app's row id (App.id). |
application/json · 必填:是
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
expected_revision | integer | 否 | — |
name | string | 否 | — |
status | string: active / disabled | 否 | — |
skew_seconds | integer | 否 | — |
fail_threshold | integer | 否 | — |
fail_window_seconds | integer | 否 | — |
ban_seconds | integer | 否 | 0 = disconnect only |
handshake_rate_per_second | integer | 否 | 0 = no cap |
| 状态码 | 说明 |
|---|---|
200 | Updated 字段: |
401 | Error |
403 | Error |
404 | Error |
409 | Error |
422 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}删除 SDK 应用(须先解绑全部转发),吊销全部密钥
Audited sdkshield.app.delete.
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | path | string(uuid) | 是 | The app's row id (App.id). |
| 状态码 | 说明 |
|---|---|
204 | Deleted |
401 | Error |
403 | Error |
404 | Error |
409 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}/blocks拦截日志:按分钟×节点的失败原因与来源抽样(至多 1 天)
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | path | string(uuid) | 是 | The app's row id (App.id). |
from | query | string(date-time) | 否 | RFC 3339; default 24 hours before to |
to | query | string(date-time) | 否 | RFC 3339; default now |
node_id | query | string(uuid) | 否 | Only this node |
| 状态码 | 说明 |
|---|---|
200 | Blocks, newest first 字段: |
401 | Error |
403 | Error |
404 | Error |
422 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}/delete-preview删除前确认:应用与绑定的转发数
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | path | string(uuid) | 是 | The app's row id (App.id). |
| 状态码 | 说明 |
|---|---|
200 | Preview 字段: |
401 | Error |
403 | Error |
404 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}/forwards可绑定的四层转发:作用域内全部转发,带不兼容原因与已绑定应用
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | path | string(uuid) | 是 | The app's row id (App.id). |
| 状态码 | 说明 |
|---|---|
200 | Forwards 字段: |
401 | Error |
403 | Error |
404 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}/forwards整体替换应用绑定的四层转发(至多 16 条)
Any incompatible forward refuses the whole change with 422 sdk_shield_forward_incompatible; error.details.forwards lists every one with its reasons (the codes of Forward.incompatible). Binding republishes the scope. Audited sdkshield.forwards.update.
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | path | string(uuid) | 是 | The app's row id (App.id). |
application/json · 必填:是
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
forward_ids | array<string(uuid)> | 是 | — |
| 状态码 | 说明 |
|---|---|
200 | Bound forwards 字段: |
401 | Error |
403 | Error |
404 | Error |
422 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}/keys密钥列表,每把带近 24 小时通过的握手数(旧密钥归零后再吊销)
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | path | string(uuid) | 是 | The app's row id (App.id). |
| 状态码 | 说明 |
|---|---|
200 | Keys 字段: |
401 | Error |
403 | Error |
404 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}/keys轮换:新增一把密钥(至多 2 把有效),返回 AppSecret(只这一次)
Audited sdkshield.key.create (key_id only).
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
Idempotency-Key | header | string | 是 | One key per write; resend it to retry a write whose result was not seen. The same key and request (24 hours, per user and operation) answers the resource it created and creates nothing: a Secret then has replayed true and no app_secret (the secret was only in the first answer). The same key with another request: 409 idempotency_conflict. Missing, malformed or repeated: 422 validation_failed (field Idempotency-Key). |
id | path | string(uuid) | 是 | The app's row id (App.id). |
| 状态码 | 说明 |
|---|---|
201 | New key 字段: |
401 | Error |
403 | Error |
404 | Error |
409 | Error |
422 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}/keys/{key_id}/revoke吊销一把密钥;最后一把有效密钥不能吊销(停用应用请改状态)
Nodes refuse it as unknown_key after the next publication; open connections stay. Audited sdkshield.key.revoke.
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | path | string(uuid) | 是 | The app's row id (App.id). |
key_id | path | integer | 是 | — |
| 状态码 | 说明 |
|---|---|
204 | Revoked |
401 | Error |
403 | Error |
404 | Error |
409 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}/node-list/preview预览会签发的节点列表(不签名),带节点名、签名密钥与公开地址
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | path | string(uuid) | 是 | The app's row id (App.id). |
| 状态码 | 说明 |
|---|---|
200 | Preview 字段: |
401 | Error |
403 | Error |
404 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/apps/{id}/stats统计:总数、按原因分布、趋势、来源 Top(带地区/ASN)
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
id | path | string(uuid) | 是 | The app's row id (App.id). |
from | query | string(date-time) | 否 | RFC 3339; default 24 hours before to |
to | query | string(date-time) | 否 | RFC 3339; default now |
node_id | query | string(uuid) | 否 | Only this node |
bucket | query | string: minute / hour | 否 | Trend bucket; default minute up to 6 hours, else hour |
| 状态码 | 说明 |
|---|---|
200 | Statistics 字段: |
401 | Error |
403 | Error |
404 | Error |
422 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/module读取 SDK 游戏盾模块状态:授权、本机停用、新应用默认值、列表签名公钥、租户配额
| 状态码 | 说明 |
|---|---|
200 | Module state 字段: |
401 | Error |
403 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/sdkSDK 下载清单(各语言包、版本、最低版本、大小、SHA-256)与内置公钥;各包下载地址为本主控的鉴权下载路径;开发构建未随包带归档时 packages 为空
| 状态码 | 说明 |
|---|---|
200 | SDK manifest 字段: |
401 | Error |
403 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。/v1/sdk-shield/sdk/files/{name}下载本主控发布版本随包的 SDK 归档(登录并有 module.sdkshield;租户另需套餐含 sdk_shield);名称取清单中下载地址的最后一段
| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
name | path | string | 是 | Archive file name, the last segment of SDKPackage.url |
| 状态码 | 说明 |
|---|---|
200 | The archive (Content-Disposition attachment; X-Content-SHA256 is its digest, as in the manifest) |
401 | Error |
403 | Error |
404 | Error |
503 | Error |
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。