接口详情
POST /v1/tenant-scopes/{scope_id}/l4-line-switches
Create an idempotent line-group switch
- operationId
createL4LineSwitch- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
参数
createL4LineSwitch 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
scope_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string(uuid) | 是 | — |
|---|
X-Correlation-ID | header | string(uuid) | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
Traceparent | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
createL4LineSwitch 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
expected_source_revision | integer(int64) | 是 | — |
|---|
from | Snapshot | 是 | — |
|---|
to | Snapshot | 是 | — |
|---|
health | HealthPolicy | 是 | — |
|---|
drain | DrainPolicy | 是 | — |
|---|
max_attempts | integer | 是 | — |
|---|
deadline | string(date-time) | 是 | — |
|---|
响应
createL4LineSwitch 响应| 状态码 | 说明 |
|---|
201 | Switch created or replayed 字段:id: string(uuid) configuration_scope_id: string(uuid) expected_source_revision: integer(int64) from: Snapshot to: Snapshot prepare_node_count: integer retiring_node_count: integer state: string: preparing / health_gate / draining_old / compensating_old / completed / rolled_back / needs_attention state_revision: integer(int64) prepare_publication: Publication compensation_publication: Publication drain_command_count: integer error_code?: string dns_gate?: DNSGate deadline: string(date-time) created_at: string(date-time) updated_at: string(date-time) replayed?: boolean |
|---|
400 | Stable error code; clients map it through locale resources. |
|---|
401 | Stable error code; clients map it through locale resources. |
|---|
403 | Stable error code; clients map it through locale resources. |
|---|
409 | Stable error code; clients map it through locale resources. |
|---|
503 | Stable error code; clients map it through locale resources. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{scope_id}/l4-line-switches/current
Read the latest durable switch for operator recovery
- operationId
getCurrentL4LineSwitch- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
参数
getCurrentL4LineSwitch 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
scope_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string(uuid) | 是 | — |
|---|
响应
getCurrentL4LineSwitch 响应| 状态码 | 说明 |
|---|
200 | Latest durable switch state 字段:id: string(uuid) configuration_scope_id: string(uuid) expected_source_revision: integer(int64) from: Snapshot to: Snapshot prepare_node_count: integer retiring_node_count: integer state: string: preparing / health_gate / draining_old / compensating_old / completed / rolled_back / needs_attention state_revision: integer(int64) prepare_publication: Publication compensation_publication: Publication drain_command_count: integer error_code?: string dns_gate?: DNSGate deadline: string(date-time) created_at: string(date-time) updated_at: string(date-time) replayed?: boolean |
|---|
401 | Stable error code; clients map it through locale resources. |
|---|
403 | Stable error code; clients map it through locale resources. |
|---|
404 | Stable error code; clients map it through locale resources. |
|---|
503 | Stable error code; clients map it through locale resources. |
|---|
失败时怎么办
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{scope_id}/l4-line-switches/{switch_id}
Read durable switch state
- operationId
getL4LineSwitch- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
参数
getL4LineSwitch 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
scope_id | path | string(uuid) | 是 | — |
|---|
switch_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string(uuid) | 是 | — |
|---|
响应
getL4LineSwitch 响应| 状态码 | 说明 |
|---|
200 | Current state 字段:id: string(uuid) configuration_scope_id: string(uuid) expected_source_revision: integer(int64) from: Snapshot to: Snapshot prepare_node_count: integer retiring_node_count: integer state: string: preparing / health_gate / draining_old / compensating_old / completed / rolled_back / needs_attention state_revision: integer(int64) prepare_publication: Publication compensation_publication: Publication drain_command_count: integer error_code?: string dns_gate?: DNSGate deadline: string(date-time) created_at: string(date-time) updated_at: string(date-time) replayed?: boolean |
|---|
401 | Stable error code; clients map it through locale resources. |
|---|
403 | Stable error code; clients map it through locale resources. |
|---|
404 | Stable error code; clients map it through locale resources. |
|---|
503 | Stable error code; clients map it through locale resources. |
|---|
失败时怎么办
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{scope_id}/l4-line-switches/{switch_id}/reconcile
Advance one idempotent state-machine step from durable facts
- operationId
reconcileL4LineSwitch- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
说明(契约原文)
The request has no body and cannot nominate a desired state. Production workers call the same service method.
参数
reconcileL4LineSwitch 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
scope_id | path | string(uuid) | 是 | — |
|---|
switch_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string(uuid) | 是 | — |
|---|
响应
reconcileL4LineSwitch 响应| 状态码 | 说明 |
|---|
200 | Current state after reconciliation 字段:id: string(uuid) configuration_scope_id: string(uuid) expected_source_revision: integer(int64) from: Snapshot to: Snapshot prepare_node_count: integer retiring_node_count: integer state: string: preparing / health_gate / draining_old / compensating_old / completed / rolled_back / needs_attention state_revision: integer(int64) prepare_publication: Publication compensation_publication: Publication drain_command_count: integer error_code?: string dns_gate?: DNSGate deadline: string(date-time) created_at: string(date-time) updated_at: string(date-time) replayed?: boolean |
|---|
400 | Stable error code; clients map it through locale resources. |
|---|
401 | Stable error code; clients map it through locale resources. |
|---|
403 | Stable error code; clients map it through locale resources. |
|---|
404 | Stable error code; clients map it through locale resources. |
|---|
409 | Stable error code; clients map it through locale resources. |
|---|
503 | Stable error code; clients map it through locale resources. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{scope_id}/sites/{site_id}/telemetry-capture-policy
- operationId
getSiteCapturePolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:site_capture.read
说明(契约原文)
A readable site that never saved a policy answers 200 with state=unconfigured, revision 0 and the default (capture off) document; create it with expected_revision 0. 404 means the site is missing, deleted or not visible to the caller.
参数
getSiteCapturePolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
scope_id | path | string(uuid) | 是 | — |
|---|
site_id | path | string(uuid) | 是 | — |
|---|
响应
getSiteCapturePolicy 响应| 状态码 | 说明 |
|---|
200 | Current authoritative policy, or the explicit unconfigured default. |
|---|
401 | Stable localized-by-client error response. |
|---|
403 | Stable localized-by-client error response. |
|---|
404 | Stable localized-by-client error response. |
|---|
503 | Stable localized-by-client error response. |
|---|
失败时怎么办
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
PUT /v1/tenant-scopes/{scope_id}/sites/{site_id}/telemetry-capture-policy
- operationId
updateSiteCapturePolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:site_capture.manage
参数
updateSiteCapturePolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
scope_id | path | string(uuid) | 是 | — |
|---|
site_id | path | string(uuid) | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
X-Trace-ID | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
updateSiteCapturePolicy 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
expected_revision | integer | 是 | — |
|---|
document | PolicyDocument | 是 | — |
|---|
响应
updateSiteCapturePolicy 响应| 状态码 | 说明 |
|---|
200 | Policy CAS committed or idempotently replayed. 字段:policy: Policy replayed: boolean |
|---|
400 | Stable localized-by-client error response. |
|---|
401 | Stable localized-by-client error response. |
|---|
403 | Stable localized-by-client error response. |
|---|
404 | Stable localized-by-client error response. |
|---|
409 | Stable localized-by-client error response. |
|---|
412 | Stable localized-by-client error response. |
|---|
503 | Stable localized-by-client error response. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/challenge-policies
List active challenge policies in one tenant scope
- operationId
listChallengePolicies- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:challenge_policies.read
说明(契约原文)
Requires challenge_policies.read. Results use stable keyset ordering; the versioned HMAC-SHA256 cursor is opaque and must be replayed unchanged with the same authenticated actor, target scope, filters, limit, and sort. Invalid cursors return 400 before storage is read. Pages may contain fewer than the requested limit to stay within the default 256 KiB response byte budget; next_cursor resumes after the last emitted item. Soft-deleted policies are excluded. A tenant principal targeting another tenant receives the same 404 shape as an unknown scope.
参数
listChallengePolicies 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID; 1 to 128 safe ASCII characters. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID; 1 to 128 safe ASCII characters. |
|---|
limit | query | integer | 否 | — |
|---|
cursor | query | string | 否 | Opaque URL-safe versioned HMAC-SHA256 envelope returned by the preceding page. It binds key ID, API audience, authenticated actor user/scope/kind, target scope, site/host/enabled filters, limit, fixed sort, and keyset position. Replay it byte-for-byte; wrong key, audience, version, key ID, scope, filter, limit, sort, semantic re-encoding, or an overlong value returns 400 before storage is read. |
|---|
site_id | query | string(uuid) | 否 | — |
|---|
host | query | string | 否 | — |
|---|
enabled | query | boolean | 否 | — |
|---|
响应
listChallengePolicies 响应| 状态码 | 说明 |
|---|
200 | Stable byte-budgeted page of non-deleted challenge policies. A non-empty next_cursor resumes after the final item emitted in this response. 字段:items: array<ChallengePolicy> next_cursor?: string |
|---|
400 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
401 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
403 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
404 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
405 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
422 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
503 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/challenge-policies
Create a challenge policy for a tenant-owned site and host
- operationId
createChallengePolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:challenge_policies.manage
说明(契约原文)
Requires challenge_policies.manage and a currently valid, non-grace sites.manage entitlement. The site must belong to the target tenant and the host must equal the site domain or be covered by its wildcard. The request creates immutable revision 1 and a transactional audit event. A completed same-actor, same-scope, same-operation, same-key/same-payload retry returns the frozen stored result before mutable site or entitlement state is rechecked; a new request still performs all current checks. A key reused with another payload returns 409.
参数
createChallengePolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID; 1 to 128 safe ASCII characters. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID; 1 to 128 safe ASCII characters. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result only with the same key and unchanged business payload. |
|---|
请求体
application/json · 必填:是
createChallengePolicy 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
site_id | string(uuid) | 是 | — |
|---|
host | string | 是 | Lowercase ASCII hostname without scheme, port, path, wildcard, or trailing dot. |
|---|
enabled | boolean | 是 | — |
|---|
config | ChallengeConfig | 是 | challenge_ttl_seconds must be greater than min_delay_seconds plus clock_skew_seconds. external is a fail-closed reference-only mode; provider connectivity is outside this contract. |
|---|
响应
createChallengePolicy 响应| 状态码 | 说明 |
|---|
201 | Created policy or the stored result of an identical retry. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) host: string priority: integer mode: string: delay / click / slider / captcha / external min_delay_seconds: integer challenge_ttl_seconds: integer pass_ttl_seconds: integer clock_skew_seconds: integer attempts_per_nonce: integer failure_window_seconds: integer max_failures_per_window: integer ip_binding: string: none / exact bind_user_agent: boolean bypass_routes: array<BypassRoute> key_reference_configured: boolean external_provider_configured: boolean enabled: boolean deleted: boolean revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
401 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
403 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
404 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
405 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
409 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
422 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
503 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/challenge-policies/{policy_id}
Read one challenge policy
- operationId
getChallengePolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:challenge_policies.read
说明(契约原文)
Requires challenge_policies.read. Soft-deleted, unknown, and out-of-tenant policy IDs all return the same 404 response.
参数
getChallengePolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID; 1 to 128 safe ASCII characters. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID; 1 to 128 safe ASCII characters. |
|---|
响应
getChallengePolicy 响应| 状态码 | 说明 |
|---|
200 | Challenge policy. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) host: string priority: integer mode: string: delay / click / slider / captcha / external min_delay_seconds: integer challenge_ttl_seconds: integer pass_ttl_seconds: integer clock_skew_seconds: integer attempts_per_nonce: integer failure_window_seconds: integer max_failures_per_window: integer ip_binding: string: none / exact bind_user_agent: boolean bypass_routes: array<BypassRoute> key_reference_configured: boolean external_provider_configured: boolean enabled: boolean deleted: boolean revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
401 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
403 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
404 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
405 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
503 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
PATCH /v1/tenant-scopes/{tenant_scope_id}/challenge-policies/{policy_id}
Append a new challenge policy configuration revision
- operationId
updateChallengePolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:challenge_policies.manage
说明(契约原文)
Requires challenge_policies.manage and a currently valid, non-grace sites.manage entitlement. If-Match is compared with the current revision under a row lock. Site and host identity cannot be changed.
参数
updateChallengePolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID; 1 to 128 safe ASCII characters. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID; 1 to 128 safe ASCII characters. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result only with the same key and unchanged business payload. |
|---|
If-Match | header | string | 是 | Current positive revision encoded as a quoted decimal ETag, for example "3". |
|---|
请求体
application/json · 必填:是
updateChallengePolicy 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
config | ChallengeConfig | 是 | challenge_ttl_seconds must be greater than min_delay_seconds plus clock_skew_seconds. external is a fail-closed reference-only mode; provider connectivity is outside this contract. |
|---|
响应
updateChallengePolicy 响应| 状态码 | 说明 |
|---|
200 | Updated policy or the stored result of an identical retry. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) host: string priority: integer mode: string: delay / click / slider / captcha / external min_delay_seconds: integer challenge_ttl_seconds: integer pass_ttl_seconds: integer clock_skew_seconds: integer attempts_per_nonce: integer failure_window_seconds: integer max_failures_per_window: integer ip_binding: string: none / exact bind_user_agent: boolean bypass_routes: array<BypassRoute> key_reference_configured: boolean external_provider_configured: boolean enabled: boolean deleted: boolean revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
401 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
403 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
404 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
405 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
409 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
412 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
422 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
503 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
DELETE /v1/tenant-scopes/{tenant_scope_id}/challenge-policies/{policy_id}
Soft-delete a challenge policy by appending a tombstone revision
- operationId
deleteChallengePolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:challenge_policies.manage
说明(契约原文)
Requires challenge_policies.manage. The request body must be empty. Historical revisions remain immutable so future publication references cannot be destroyed. Delete is intentionally allowed during entitlement grace because it reduces active configuration.
参数
deleteChallengePolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID; 1 to 128 safe ASCII characters. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID; 1 to 128 safe ASCII characters. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result only with the same key and unchanged business payload. |
|---|
If-Match | header | string | 是 | Current positive revision encoded as a quoted decimal ETag, for example "3". |
|---|
响应
deleteChallengePolicy 响应| 状态码 | 说明 |
|---|
200 | Updated policy or the stored result of an identical retry. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) host: string priority: integer mode: string: delay / click / slider / captcha / external min_delay_seconds: integer challenge_ttl_seconds: integer pass_ttl_seconds: integer clock_skew_seconds: integer attempts_per_nonce: integer failure_window_seconds: integer max_failures_per_window: integer ip_binding: string: none / exact bind_user_agent: boolean bypass_routes: array<BypassRoute> key_reference_configured: boolean external_provider_configured: boolean enabled: boolean deleted: boolean revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
401 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
403 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
404 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
405 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
409 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
412 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
503 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/challenge-policies/{policy_id}/disable
Disable a challenge policy with revision CAS
- operationId
disableChallengePolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:challenge_policies.manage
说明(契约原文)
Requires challenge_policies.manage. The body must be absent or exactly an empty JSON object. Disabling is allowed during entitlement grace because it reduces active configuration. Disabling an already disabled policy returns 409.
参数
disableChallengePolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID; 1 to 128 safe ASCII characters. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID; 1 to 128 safe ASCII characters. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result only with the same key and unchanged business payload. |
|---|
If-Match | header | string | 是 | Current positive revision encoded as a quoted decimal ETag, for example "3". |
|---|
请求体
application/json · 必填:否
响应
disableChallengePolicy 响应| 状态码 | 说明 |
|---|
200 | Updated policy or the stored result of an identical retry. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) host: string priority: integer mode: string: delay / click / slider / captcha / external min_delay_seconds: integer challenge_ttl_seconds: integer pass_ttl_seconds: integer clock_skew_seconds: integer attempts_per_nonce: integer failure_window_seconds: integer max_failures_per_window: integer ip_binding: string: none / exact bind_user_agent: boolean bypass_routes: array<BypassRoute> key_reference_configured: boolean external_provider_configured: boolean enabled: boolean deleted: boolean revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
401 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
403 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
404 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
405 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
409 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
412 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
503 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/challenge-policies/{policy_id}/enable
Enable a challenge policy with revision CAS
- operationId
enableChallengePolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:challenge_policies.manage
说明(契约原文)
Requires challenge_policies.manage and a currently valid, non-grace sites.manage entitlement. The body must be absent or exactly an empty JSON object. Enabling an already enabled policy returns 409.
参数
enableChallengePolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID; 1 to 128 safe ASCII characters. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID; 1 to 128 safe ASCII characters. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result only with the same key and unchanged business payload. |
|---|
If-Match | header | string | 是 | Current positive revision encoded as a quoted decimal ETag, for example "3". |
|---|
请求体
application/json · 必填:否
响应
enableChallengePolicy 响应| 状态码 | 说明 |
|---|
200 | Updated policy or the stored result of an identical retry. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) host: string priority: integer mode: string: delay / click / slider / captcha / external min_delay_seconds: integer challenge_ttl_seconds: integer pass_ttl_seconds: integer clock_skew_seconds: integer attempts_per_nonce: integer failure_window_seconds: integer max_failures_per_window: integer ip_binding: string: none / exact bind_user_agent: boolean bypass_routes: array<BypassRoute> key_reference_configured: boolean external_provider_configured: boolean enabled: boolean deleted: boolean revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
401 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
403 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
404 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
405 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
409 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
412 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
503 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/challenge-policies/{policy_id}/publications
Publish one exact enabled challenge policy revision to Edge nodes
- operationId
publishChallengePolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:challenge_policies.manage
说明(契约原文)
Requires challenge_policies.manage. The current policy revision is re-authorized and locked before resolving its opaque key reference. The immutable artifact is signed and HPKE-encrypted separately for each eligible node. Missing key material or an unconfigured external adapter fails closed and does not change the active Edge configuration.
参数
publishChallengePolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID; 1 to 128 safe ASCII characters. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID; 1 to 128 safe ASCII characters. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result only with the same key and unchanged business payload. |
|---|
If-Match | header | string | 是 | Current positive revision encoded as a quoted decimal ETag, for example "3". |
|---|
请求体
application/json · 必填:否
响应
publishChallengePolicy 响应| 状态码 | 说明 |
|---|
202 | Signed per-node challenge artifact rollout was durably accepted. 字段:policy_id: string(uuid) policy_revision: integer(int64) rollout_id: string(uuid) config_version_id: string(uuid) state: string: queued / running / healthy / failed / active reason: string: - / waiting_for_nodes / node_apply_failed / external_adapter_missing / configuration_publish_failed total: integer pending: integer running: integer healthy: integer failed: integer cancelled: integer superseded: integer config_publication?: object |
|---|
400 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
401 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
403 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
404 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
405 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
409 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
412 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
422 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
503 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/challenge-policies/{policy_id}/publications/{rollout_id}
Read the bounded rollout state for an exact policy artifact
- operationId
getChallengePolicyPublication- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:challenge_policies.read
说明(契约原文)
Requires challenge_policies.read. The rollout must belong to the target tenant, policy, and revision; another same-tenant rollout is not relabeled through this path. This read has no publication or promotion side effects.
参数
getChallengePolicyPublication 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
rollout_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID; 1 to 128 safe ASCII characters. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID; 1 to 128 safe ASCII characters. |
|---|
响应
getChallengePolicyPublication 响应| 状态码 | 说明 |
|---|
200 | Exact challenge rollout state, optionally including its promoted Edge publication. 字段:policy_id: string(uuid) policy_revision: integer(int64) rollout_id: string(uuid) config_version_id: string(uuid) state: string: queued / running / healthy / failed / active reason: string: - / waiting_for_nodes / node_apply_failed / external_adapter_missing / configuration_publish_failed total: integer pending: integer running: integer healthy: integer failed: integer cancelled: integer superseded: integer config_publication?: object |
|---|
400 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
401 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
403 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
404 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
405 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
503 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
Promote an exact healthy challenge rollout into Edge configuration
- operationId
promoteChallengePolicyPublication- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:challenge_policies.manage
说明(契约原文)
Requires challenge_policies.manage. Promotion is revision-CAS and idempotent. Only a fully healthy rollout whose immutable artifact binds the same tenant, policy, and revision can advance the signed Edge configuration. Partial, failed, stale, forged, or cross-policy rollouts preserve the current configuration and LKG.
参数
promoteChallengePolicyPublication 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
rollout_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID; 1 to 128 safe ASCII characters. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID; 1 to 128 safe ASCII characters. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result only with the same key and unchanged business payload. |
|---|
If-Match | header | string | 是 | Current positive revision encoded as a quoted decimal ETag, for example "3". |
|---|
请求体
application/json · 必填:否
响应
promoteChallengePolicyPublication 响应| 状态码 | 说明 |
|---|
200 | Exact challenge rollout state, optionally including its promoted Edge publication. 字段:policy_id: string(uuid) policy_revision: integer(int64) rollout_id: string(uuid) config_version_id: string(uuid) state: string: queued / running / healthy / failed / active reason: string: - / waiting_for_nodes / node_apply_failed / external_adapter_missing / configuration_publish_failed total: integer pending: integer running: integer healthy: integer failed: integer cancelled: integer superseded: integer config_publication?: object |
|---|
400 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
401 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
403 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
404 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
405 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
409 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
412 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
503 | Stable error envelope without SQL, internal errors, key references, or provider details. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/error-page-publications
发布租户作用域的错误页配置
- operationId
publishErrorPageConfiguration- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:edge_publications.manage
说明(契约原文)
Requires a platform session with edge_publications.manage. If-Match is the exact current source revision. Target nodes or an immutable line-group snapshot, health policy, deadline, actor, and idempotency metadata are committed through the existing production publisher. An outcome_unknown response may be retried only with the unchanged body, If-Match, path, and Idempotency-Key.
参数
publishErrorPageConfiguration 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
If-Match | header | string | 是 | 当前源配置 revision 的强 ETag,例如 "7"。 |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string(uuid) | 是 | — |
|---|
X-Correlation-ID | header | string(uuid) | 否 | — |
|---|
Traceparent | header | string | 是 | — |
|---|
X-Task-ID | header | string | 否 | — |
|---|
请求体
application/json · 必填:是
publishErrorPageConfiguration 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
target | NodeTarget | SnapshotTarget | 是 | — |
|---|
health_check | HealthCheck | 是 | — |
|---|
max_attempts | integer(int32) | 是 | — |
|---|
deadline | string(date-time) | 是 | — |
|---|
响应
publishErrorPageConfiguration 响应| 状态码 | 说明 |
|---|
201 | 创建成功,或返回完全相同请求的持久化结果 字段:tenant_id: string(uuid) tenant_scope_id: string(uuid) publication_id: string(uuid) source_revision: integer(int64) error_page_publication_revision: integer(int64) config_version_id: string(uuid) rollout_id: string(uuid) artifact_sha256: string target: PublicationTarget node_count: integer created_at: string(date-time) replayed?: boolean |
|---|
400 | 请求或强前置条件格式无效 |
|---|
401 | 会话无效或已撤销 |
|---|
403 | 当前实时 RBAC 或作用域绑定拒绝访问 |
|---|
405 | 方法不受支持 |
|---|
409 | 幂等或目标快照冲突 |
|---|
412 | If-Match 与当前源 revision 不一致 |
|---|
422 | 节点状态或 entitlement 不允许发布 |
|---|
502 | 生产发布器或持久化 readback 身份不一致 |
|---|
503 | 写入结果未知。客户端只可使用响应 retry 中的 method、path、 if_match、idempotency_key 和 body_sha256 原样重试。 |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/error-page-publications/{publication_id}
读取一个不可变错误页发布结果
- operationId
getErrorPagePublication- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:edge_publications.read
说明(契约原文)
Requires edge_publications.read. The session and RBAC grant are checked again in the read transaction. The selected publication must belong to tenant_scope_id and its ordinal-one configuration artifact must use the signed error-page snapshot media type. Cross-scope resources are never returned.
参数
getErrorPagePublication 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
publication_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string(uuid) | 否 | — |
|---|
响应
getErrorPagePublication 响应| 状态码 | 说明 |
|---|
200 | 不可变发布结果 字段:tenant_id: string(uuid) tenant_scope_id: string(uuid) publication_id: string(uuid) source_revision: integer(int64) error_page_publication_revision: integer(int64) config_version_id: string(uuid) rollout_id: string(uuid) artifact_sha256: string target: PublicationTarget node_count: integer created_at: string(date-time) replayed?: boolean |
|---|
400 | 请求或强前置条件格式无效 |
|---|
401 | 会话无效或已撤销 |
|---|
403 | 当前实时 RBAC 或作用域绑定拒绝访问 |
|---|
404 | 该作用域中不存在指定的错误页发布 |
|---|
405 | 方法不受支持 |
|---|
502 | 生产发布器或持久化 readback 身份不一致 |
|---|
503 | 依赖暂不可用;GET 可安全重试 |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/http-policies
List non-deleted HTTP policies in one tenant scope
- operationId
listHTTPPolicies- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:http_policies.read
说明(契约原文)
Requires http_policies.read. Results use stable keyset ordering. The server may emit fewer items than limit so the complete ListResult JSON envelope, including next_cursor and the trailing response newline, stays within the 2 MiB byte budget. A single maximum schema-legal policy is always returned. When more rows remain, the opaque next_cursor is anchored to the last item emitted. Pagination resumes strictly after it without gaps or duplicates. Tenant principals see only sites they own. Platform principals must provide this explicit tenant scope and pass the live database permission check.
参数
listHTTPPolicies 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID. |
|---|
limit | query | integer | 否 | — |
|---|
cursor | query | string | 否 | Opaque URL-safe keyset cursor returned by the preceding page. |
|---|
site_id | query | string(uuid) | 否 | — |
|---|
enabled | query | boolean | 否 | — |
|---|
响应
listHTTPPolicies 响应| 状态码 | 说明 |
|---|
200 | Stable page of non-deleted policies. 字段:items: array<HTTPPolicy> next_cursor?: string |
|---|
400 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
401 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
403 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
404 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
405 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
503 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/http-policies
Create revision one for a tenant-owned site
- operationId
createHTTPPolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:http_policies.manage
说明(契约原文)
Requires http_policies.manage and a currently valid, non-grace sites.manage entitlement. Same-key same-payload retries return the stored result; a key reused with another payload returns 409. JSON is limited to 1 MiB and duplicate keys, unknown fields, and trailing values are rejected. A platform principal whose role holds http_policies.manage (or platform.admin) writes any site of this tenant scope, as do the update, enable, disable, and delete operations; the revision records the platform actor and the audit event's scope is this tenant scope.
参数
createHTTPPolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result with this key and the unchanged business payload. |
|---|
请求体
application/json · 必填:是
createHTTPPolicy 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
site_id | string(uuid) | 是 | — |
|---|
enabled | boolean | 是 | — |
|---|
config | HTTPPolicyConfig | 是 | — |
|---|
响应
createHTTPPolicy 响应| 状态码 | 说明 |
|---|
201 | Created policy or stored identical retry result. 字段:max_upload_bytes: integer(int64) request_headers: array<HeaderAction> response_headers: array<HeaderAction> rewrites: array<RewriteRule> redirect_allowed_hosts: array<string> redirects: array<RedirectRule> cors: CORSPolicy | null referer_check: RefererCheckPolicy | null id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) site_owner_user_id: string(uuid) enabled: boolean deleted: boolean revision: integer(int64) publication_revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
401 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
403 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
404 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
405 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
409 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
422 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
503 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/http-policies/publication-preview
Read a deterministic unsigned Edge v1 source snapshot
- operationId
previewHTTPPolicyPublication- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:http_policies.read
说明(契约原文)
Requires http_policies.read. The result contains only enabled, non-deleted policies visible in the target tenant and is sorted by site_id. state is always preview. The SHA-256 covers canonical snapshot JSON with a trailing newline. It is not a signature or delivery receipt.
参数
previewHTTPPolicyPublication 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID. |
|---|
响应
previewHTTPPolicyPublication 响应| 状态码 | 说明 |
|---|
200 | Deterministic unsigned Edge v1 source preview. 字段:state: string sha256: string snapshot: EdgeSnapshot |
|---|
400 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
401 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
403 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
404 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
405 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
409 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
503 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/http-policies/{policy_id}
Read one HTTP policy
- operationId
getHTTPPolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:http_policies.read
说明(契约原文)
Requires http_policies.read. Unknown, deleted, out-of-tenant, and tenant actor non-owned policy IDs share the same 404 response.
参数
getHTTPPolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID. |
|---|
响应
getHTTPPolicy 响应| 状态码 | 说明 |
|---|
200 | HTTP policy. 字段:max_upload_bytes: integer(int64) request_headers: array<HeaderAction> response_headers: array<HeaderAction> rewrites: array<RewriteRule> redirect_allowed_hosts: array<string> redirects: array<RedirectRule> cors: CORSPolicy | null referer_check: RefererCheckPolicy | null id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) site_owner_user_id: string(uuid) enabled: boolean deleted: boolean revision: integer(int64) publication_revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
401 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
403 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
404 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
405 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
503 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
PATCH /v1/tenant-scopes/{tenant_scope_id}/http-policies/{policy_id}
Append a configuration revision
- operationId
updateHTTPPolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:http_policies.manage
说明(契约原文)
Requires http_policies.manage and a currently valid, non-grace sites.manage entitlement. If-Match is compared under a row lock. Site identity and enabled state cannot be changed by this operation.
参数
updateHTTPPolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result with this key and the unchanged business payload. |
|---|
If-Match | header | string | 是 | Current positive revision as a quoted decimal ETag, for example "3". |
|---|
请求体
application/json · 必填:是
updateHTTPPolicy 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
config | HTTPPolicyConfig | 是 | — |
|---|
响应
updateHTTPPolicy 响应| 状态码 | 说明 |
|---|
200 | Updated policy or stored identical retry result. 字段:max_upload_bytes: integer(int64) request_headers: array<HeaderAction> response_headers: array<HeaderAction> rewrites: array<RewriteRule> redirect_allowed_hosts: array<string> redirects: array<RedirectRule> cors: CORSPolicy | null referer_check: RefererCheckPolicy | null id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) site_owner_user_id: string(uuid) enabled: boolean deleted: boolean revision: integer(int64) publication_revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
401 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
403 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
404 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
405 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
409 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
412 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
422 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
503 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
DELETE /v1/tenant-scopes/{tenant_scope_id}/http-policies/{policy_id}
Soft-delete a policy by appending a tombstone revision
- operationId
deleteHTTPPolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:http_policies.manage
说明(契约原文)
Requires http_policies.manage, Idempotency-Key, and revision CAS. The body must be empty. Delete remains available during entitlement grace and preserves all historical revisions.
参数
deleteHTTPPolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result with this key and the unchanged business payload. |
|---|
If-Match | header | string | 是 | Current positive revision as a quoted decimal ETag, for example "3". |
|---|
响应
deleteHTTPPolicy 响应| 状态码 | 说明 |
|---|
200 | Updated policy or stored identical retry result. 字段:max_upload_bytes: integer(int64) request_headers: array<HeaderAction> response_headers: array<HeaderAction> rewrites: array<RewriteRule> redirect_allowed_hosts: array<string> redirects: array<RedirectRule> cors: CORSPolicy | null referer_check: RefererCheckPolicy | null id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) site_owner_user_id: string(uuid) enabled: boolean deleted: boolean revision: integer(int64) publication_revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
401 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
403 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
404 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
405 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
409 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
412 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
503 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/http-policies/{policy_id}/disable
Disable a policy with revision CAS
- operationId
disableHTTPPolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:http_policies.manage
说明(契约原文)
Requires http_policies.manage. The body must be exactly an empty JSON object. Disable remains available during entitlement grace.
参数
disableHTTPPolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result with this key and the unchanged business payload. |
|---|
If-Match | header | string | 是 | Current positive revision as a quoted decimal ETag, for example "3". |
|---|
请求体
application/json · 必填:是
响应
disableHTTPPolicy 响应| 状态码 | 说明 |
|---|
200 | Updated policy or stored identical retry result. 字段:max_upload_bytes: integer(int64) request_headers: array<HeaderAction> response_headers: array<HeaderAction> rewrites: array<RewriteRule> redirect_allowed_hosts: array<string> redirects: array<RedirectRule> cors: CORSPolicy | null referer_check: RefererCheckPolicy | null id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) site_owner_user_id: string(uuid) enabled: boolean deleted: boolean revision: integer(int64) publication_revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
401 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
403 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
404 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
405 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
409 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
412 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
503 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/http-policies/{policy_id}/enable
Enable a policy with revision CAS
- operationId
enableHTTPPolicy- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:http_policies.manage
说明(契约原文)
Requires http_policies.manage and a currently valid, non-grace sites.manage entitlement. The body must be exactly an empty JSON object.
参数
enableHTTPPolicy 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | Explicit target tenant access-scope UUID. |
|---|
policy_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | Stable request correlation ID. |
|---|
X-Trace-ID | header | string | 是 | Stable trace correlation ID. |
|---|
Idempotency-Key | header | string | 是 | Operation-scoped durable key. Retry an unknown result with this key and the unchanged business payload. |
|---|
If-Match | header | string | 是 | Current positive revision as a quoted decimal ETag, for example "3". |
|---|
请求体
application/json · 必填:是
响应
enableHTTPPolicy 响应| 状态码 | 说明 |
|---|
200 | Updated policy or stored identical retry result. 字段:max_upload_bytes: integer(int64) request_headers: array<HeaderAction> response_headers: array<HeaderAction> rewrites: array<RewriteRule> redirect_allowed_hosts: array<string> redirects: array<RedirectRule> cors: CORSPolicy | null referer_check: RefererCheckPolicy | null id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) site_owner_user_id: string(uuid) enabled: boolean deleted: boolean revision: integer(int64) publication_revision: integer(int64) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
401 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
403 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
404 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
405 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
409 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
412 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
503 | Stable error envelope. Dependency failures, including PostgreSQL serialization, deadlock, lock-not-available, and unknown failures, use HTTP 503 with service_unavailable and never expose SQLSTATE, SQL, internal errors, hidden policy facts, entitlement payloads, or signing and delivery state. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/origin-auth/credentials
List redacted credential heads in one tenant
- operationId
listOriginAuthCredentials- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.read
参数
listOriginAuthCredentials 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
provider | query | string: s3 / oss / cos | 否 | — |
|---|
status | query | string: pending / verified / disabled / deleted | 否 | — |
|---|
limit | query | integer | 否 | — |
|---|
cursor | query | string | 否 | Opaque stable keyset cursor, at most 512 bytes. |
|---|
响应
listOriginAuthCredentials 响应| 状态码 | 说明 |
|---|
200 | Stable credential page. 字段:items: array<Credential> next_cursor?: string |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/origin-auth/credentials
Encrypt and append credential revision 1
- operationId
createOriginAuthCredential- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
说明(契约原文)
Requires origin_auth.manage and a valid sites.manage entitlement. The credential remains pending until an injected real verifier accepts it. Same-key same-payload retries replay the stored redacted response.
参数
createOriginAuthCredential 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
createOriginAuthCredential 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
provider | string: s3 / oss / cos | 是 | — |
|---|
name | string | 是 | — |
|---|
secret | CredentialSecret | 是 | — |
|---|
响应
createOriginAuthCredential 响应| 状态码 | 说明 |
|---|
201 | Pending credential created. 字段:id: string(uuid) tenant_scope_id: string(uuid) provider: string: s3 / oss / cos name: string status: string: pending / verified / disabled / deleted revision: integer revision_ref: string(uuid) not_before: string(date-time) expires_at: string(date-time) verified_at?: string(date-time) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
422 | Provider binding, endpoint, path, credential state, or verification rejected. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/origin-auth/credentials/{credential_id}
Read one redacted credential head
- operationId
getOriginAuthCredential- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.read
参数
getOriginAuthCredential 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
credential_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
响应
getOriginAuthCredential 响应| 状态码 | 说明 |
|---|
200 | Redacted credential head. 字段:id: string(uuid) tenant_scope_id: string(uuid) provider: string: s3 / oss / cos name: string status: string: pending / verified / disabled / deleted revision: integer revision_ref: string(uuid) not_before: string(date-time) expires_at: string(date-time) verified_at?: string(date-time) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
DELETE /v1/tenant-scopes/{tenant_scope_id}/origin-auth/credentials/{credential_id}
Append a credential tombstone revision
- operationId
deleteOriginAuthCredential- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
说明(契约原文)
The body must be exactly an empty JSON object. A credential referenced by a currently enabled rule cannot be deleted. Historical publication rows and prior encrypted revisions are not mutated.
参数
deleteOriginAuthCredential 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
credential_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | Quoted positive decimal current resource revision. |
|---|
请求体
application/json · 必填:是
响应
deleteOriginAuthCredential 响应| 状态码 | 说明 |
|---|
200 | Credential revision appended. 字段:id: string(uuid) tenant_scope_id: string(uuid) provider: string: s3 / oss / cos name: string status: string: pending / verified / disabled / deleted revision: integer revision_ref: string(uuid) not_before: string(date-time) expires_at: string(date-time) verified_at?: string(date-time) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
412 | If-Match does not equal the current revision. |
|---|
422 | Provider binding, endpoint, path, credential state, or verification rejected. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/origin-auth/credentials/{credential_id}/disable
Append a disabled credential revision
- operationId
disableOriginAuthCredential- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
说明(契约原文)
The body must be exactly an empty JSON object. A credential referenced by an enabled rule must first be removed from or disabled in that rule.
参数
disableOriginAuthCredential 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
credential_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | Quoted positive decimal current resource revision. |
|---|
请求体
application/json · 必填:是
响应
disableOriginAuthCredential 响应| 状态码 | 说明 |
|---|
200 | Credential revision appended. 字段:id: string(uuid) tenant_scope_id: string(uuid) provider: string: s3 / oss / cos name: string status: string: pending / verified / disabled / deleted revision: integer revision_ref: string(uuid) not_before: string(date-time) expires_at: string(date-time) verified_at?: string(date-time) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
412 | If-Match does not equal the current revision. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/origin-auth/credentials/{credential_id}/replace
Encrypt replacement material with the active envelope key
- operationId
replaceOriginAuthCredential- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
参数
replaceOriginAuthCredential 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
credential_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | Quoted positive decimal current resource revision. |
|---|
请求体
application/json · 必填:是
replaceOriginAuthCredential 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
secret | CredentialSecret | 是 | — |
|---|
响应
replaceOriginAuthCredential 响应| 状态码 | 说明 |
|---|
200 | Credential revision appended. 字段:id: string(uuid) tenant_scope_id: string(uuid) provider: string: s3 / oss / cos name: string status: string: pending / verified / disabled / deleted revision: integer revision_ref: string(uuid) not_before: string(date-time) expires_at: string(date-time) verified_at?: string(date-time) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
412 | If-Match does not equal the current revision. |
|---|
422 | Provider binding, endpoint, path, credential state, or verification rejected. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/origin-auth/credentials/{credential_id}/verify
Invoke the injected verifier and append a verified revision
- operationId
verifyOriginAuthCredential- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
说明(契约原文)
The body must be exactly an empty JSON object. If no real verifier is configured, the response is 503 and the credential remains pending. This endpoint never treats schema validation or a synthetic network probe as successful provider verification.
参数
verifyOriginAuthCredential 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
credential_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | Quoted positive decimal current resource revision. |
|---|
请求体
application/json · 必填:是
响应
verifyOriginAuthCredential 响应| 状态码 | 说明 |
|---|
200 | Credential revision appended. 字段:id: string(uuid) tenant_scope_id: string(uuid) provider: string: s3 / oss / cos name: string status: string: pending / verified / disabled / deleted revision: integer revision_ref: string(uuid) not_before: string(date-time) expires_at: string(date-time) verified_at?: string(date-time) created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
412 | If-Match does not equal the current revision. |
|---|
422 | Provider binding, endpoint, path, credential state, or verification rejected. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/origin-auth/edge-publications
发布租户作用域的源站鉴权配置
- operationId
publishOriginAuthEdgeConfiguration- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:edge_publications.manage origin_auth.manage
说明(契约原文)
Requires a platform session with edge_publications.manage and origin_auth.manage. If-Match is the exact latest source revision. The server locks each target node and its active recipient key, produces one signed HPKE artifact per node, and commits the immutable config, rollout, deployment commands, and outbox records in one transaction. An outcome_unknown response may be retried only with the unchanged body, path, If-Match, Idempotency-Key, X-Request-ID, X-Correlation-ID, Traceparent, and X-Task-ID.
参数
publishOriginAuthEdgeConfiguration 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
If-Match | header | string | 是 | 当前源配置 revision 的强 ETag,例如 "7"。 |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string(uuid) | 是 | — |
|---|
X-Correlation-ID | header | string(uuid) | 否 | — |
|---|
Traceparent | header | string | 是 | — |
|---|
X-Task-ID | header | string | 否 | — |
|---|
请求体
application/json · 必填:是
publishOriginAuthEdgeConfiguration 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
node_ids | array<string(uuid)> | 是 | — |
|---|
health_check | HealthCheck | 是 | — |
|---|
deadline | string(date-time) | 是 | — |
|---|
响应
publishOriginAuthEdgeConfiguration 响应| 状态码 | 说明 |
|---|
201 | 创建成功,或返回完全相同请求的持久化结果 字段:tenant_id: string(uuid) tenant_scope_id: string(uuid) publication_id: string(uuid) source_publication_id: string(uuid) source_revision: integer(int64) config_version_id: string(uuid) rollout_id: string(uuid) config_snapshot_sha256: string artifact_manifest_sha256: string recipient_binding_sha256: string node_count: integer created_at: string(date-time) replayed?: boolean |
|---|
400 | 请求格式或参数无效 |
|---|
401 | 会话无效或已撤销 |
|---|
403 | 作用域或权限拒绝 |
|---|
404 | 源配置或发布记录不存在 |
|---|
405 | 方法不受支持 |
|---|
409 | 幂等键已绑定不同请求 |
|---|
412 | If-Match 不等于最新源配置 revision |
|---|
422 | 目标节点、接收密钥或源配置当前不可发布 |
|---|
502 | 持久化事实未通过严格身份校验 |
|---|
503 | origin_auth_edge_publication_outcome_unknown; only the exact request described by retry may be repeated. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/origin-auth/edge-publications/{publication_id}
读取一个不可变源站鉴权发布结果
- operationId
getOriginAuthEdgePublication- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:edge_publications.read origin_auth.read
说明(契约原文)
Requires edge_publications.read and origin_auth.read. The session and both grants are checked again in the read transaction. The result is reconstructed only from the immutable rollout, config, source snapshot, per-node artifact, recipient-key, and deployment-command facts. Cross-scope or other secret-rollout subtypes are rejected.
参数
getOriginAuthEdgePublication 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
publication_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string(uuid) | 否 | — |
|---|
响应
getOriginAuthEdgePublication 响应| 状态码 | 说明 |
|---|
200 | 不可变发布结果 字段:tenant_id: string(uuid) tenant_scope_id: string(uuid) publication_id: string(uuid) source_publication_id: string(uuid) source_revision: integer(int64) config_version_id: string(uuid) rollout_id: string(uuid) config_snapshot_sha256: string artifact_manifest_sha256: string recipient_binding_sha256: string node_count: integer created_at: string(date-time) replayed?: boolean |
|---|
400 | 请求格式或参数无效 |
|---|
401 | 会话无效或已撤销 |
|---|
403 | 作用域或权限拒绝 |
|---|
404 | 源配置或发布记录不存在 |
|---|
405 | 方法不受支持 |
|---|
502 | 持久化事实未通过严格身份校验 |
|---|
503 | 服务暂不可用 |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/origin-auth/publications
Read the latest deterministic secret-free snapshot
- operationId
getLatestOriginAuthPublication- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.read
参数
getLatestOriginAuthPublication 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
响应
getLatestOriginAuthPublication 响应| 状态码 | 说明 |
|---|
200 | Latest publication. 字段:id: string(uuid) tenant_scope_id: string(uuid) revision: integer snapshot_hash: string previous_hash?: string snapshot: PublicationSnapshot created_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/origin-auth/publications
Append the next tenant publication snapshot
- operationId
createOriginAuthPublication- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
说明(契约原文)
If-Match is the current publication revision and may be "0" for the first snapshot. The body must be exactly an empty JSON object. The snapshot contains Edge-aligned public rule fields and opaque credential revision references only. It is not an Edge secret file or deployment.
参数
createOriginAuthPublication 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | Quoted decimal current publication revision; first write uses "0". |
|---|
请求体
application/json · 必填:是
响应
createOriginAuthPublication 响应| 状态码 | 说明 |
|---|
201 | Publication appended. 字段:id: string(uuid) tenant_scope_id: string(uuid) revision: integer snapshot_hash: string previous_hash?: string snapshot: PublicationSnapshot created_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
412 | If-Match does not equal the current revision. |
|---|
422 | Provider binding, endpoint, path, credential state, or verification rejected. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/origin-auth/rules
List current rule revisions
- operationId
listOriginAuthRules- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.read
参数
listOriginAuthRules 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
site_id | query | string(uuid) | 否 | — |
|---|
enabled | query | boolean | 否 | — |
|---|
limit | query | integer | 否 | — |
|---|
cursor | query | string | 否 | Opaque stable keyset cursor, at most 512 bytes. |
|---|
响应
listOriginAuthRules 响应| 状态码 | 说明 |
|---|
200 | Stable rule page. 字段:items: array<Rule> next_cursor?: string |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/origin-auth/rules
Create a tenant, site, and source-bound rule
- operationId
createOriginAuthRule- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
说明(契约原文)
The source must be an HTTPS port 443 source in the same tenant and its host must exactly equal the normalized endpoint host. An enabled rule can reference only a verified credential revision with matching provider and sufficient validity.
参数
createOriginAuthRule 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
createOriginAuthRule 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
site_id | string(uuid) | 是 | — |
|---|
source_position | integer | 是 | — |
|---|
config | RuleConfig | 是 | — |
|---|
enabled | boolean | 是 | — |
|---|
响应
createOriginAuthRule 响应| 状态码 | 说明 |
|---|
201 | Rule created. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) source_position: integer provider: string: s3 / oss / cos algorithm: string: aws4-hmac-sha256 / oss4-hmac-sha256 / cos-hmac-sha1 endpoint: string(uri) bucket: string path_prefix: string region: string service: string signature_ttl_seconds: integer egress_policy_reference?: string current_credential: CredentialReference previous_credential?: CredentialReference activate_current_at?: string(date-time) enabled: boolean deleted: boolean revision: integer created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
422 | Provider binding, endpoint, path, credential state, or verification rejected. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/origin-auth/rules/{rule_id}
Read one current rule revision
- operationId
getOriginAuthRule- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.read
参数
getOriginAuthRule 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
rule_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
响应
getOriginAuthRule 响应| 状态码 | 说明 |
|---|
200 | Current rule revision. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) source_position: integer provider: string: s3 / oss / cos algorithm: string: aws4-hmac-sha256 / oss4-hmac-sha256 / cos-hmac-sha1 endpoint: string(uri) bucket: string path_prefix: string region: string service: string signature_ttl_seconds: integer egress_policy_reference?: string current_credential: CredentialReference previous_credential?: CredentialReference activate_current_at?: string(date-time) enabled: boolean deleted: boolean revision: integer created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
PATCH /v1/tenant-scopes/{tenant_scope_id}/origin-auth/rules/{rule_id}
Append a rule configuration revision
- operationId
updateOriginAuthRule- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
参数
updateOriginAuthRule 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
rule_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | Quoted positive decimal current resource revision. |
|---|
请求体
application/json · 必填:是
updateOriginAuthRule 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
config | RuleConfig | 是 | — |
|---|
响应
updateOriginAuthRule 响应| 状态码 | 说明 |
|---|
200 | Rule revision appended. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) source_position: integer provider: string: s3 / oss / cos algorithm: string: aws4-hmac-sha256 / oss4-hmac-sha256 / cos-hmac-sha1 endpoint: string(uri) bucket: string path_prefix: string region: string service: string signature_ttl_seconds: integer egress_policy_reference?: string current_credential: CredentialReference previous_credential?: CredentialReference activate_current_at?: string(date-time) enabled: boolean deleted: boolean revision: integer created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
412 | If-Match does not equal the current revision. |
|---|
422 | Provider binding, endpoint, path, credential state, or verification rejected. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
DELETE /v1/tenant-scopes/{tenant_scope_id}/origin-auth/rules/{rule_id}
Append a rule tombstone revision
- operationId
deleteOriginAuthRule- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
参数
deleteOriginAuthRule 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
rule_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | Quoted positive decimal current resource revision. |
|---|
请求体
application/json · 必填:是
响应
deleteOriginAuthRule 响应| 状态码 | 说明 |
|---|
200 | Rule revision appended. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) source_position: integer provider: string: s3 / oss / cos algorithm: string: aws4-hmac-sha256 / oss4-hmac-sha256 / cos-hmac-sha1 endpoint: string(uri) bucket: string path_prefix: string region: string service: string signature_ttl_seconds: integer egress_policy_reference?: string current_credential: CredentialReference previous_credential?: CredentialReference activate_current_at?: string(date-time) enabled: boolean deleted: boolean revision: integer created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
412 | If-Match does not equal the current revision. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/origin-auth/rules/{rule_id}/disable
Disable a rule by revision CAS
- operationId
disableOriginAuthRule- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
参数
disableOriginAuthRule 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
rule_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | Quoted positive decimal current resource revision. |
|---|
请求体
application/json · 必填:是
响应
disableOriginAuthRule 响应| 状态码 | 说明 |
|---|
200 | Rule revision appended. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) source_position: integer provider: string: s3 / oss / cos algorithm: string: aws4-hmac-sha256 / oss4-hmac-sha256 / cos-hmac-sha1 endpoint: string(uri) bucket: string path_prefix: string region: string service: string signature_ttl_seconds: integer egress_policy_reference?: string current_credential: CredentialReference previous_credential?: CredentialReference activate_current_at?: string(date-time) enabled: boolean deleted: boolean revision: integer created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
412 | If-Match does not equal the current revision. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/origin-auth/rules/{rule_id}/enable
Enable a rule after verified credential gates pass
- operationId
enableOriginAuthRule- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
参数
enableOriginAuthRule 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
rule_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | Quoted positive decimal current resource revision. |
|---|
请求体
application/json · 必填:是
响应
enableOriginAuthRule 响应| 状态码 | 说明 |
|---|
200 | Rule revision appended. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) source_position: integer provider: string: s3 / oss / cos algorithm: string: aws4-hmac-sha256 / oss4-hmac-sha256 / cos-hmac-sha1 endpoint: string(uri) bucket: string path_prefix: string region: string service: string signature_ttl_seconds: integer egress_policy_reference?: string current_credential: CredentialReference previous_credential?: CredentialReference activate_current_at?: string(date-time) enabled: boolean deleted: boolean revision: integer created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
412 | If-Match does not equal the current revision. |
|---|
422 | Provider binding, endpoint, path, credential state, or verification rejected. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/origin-auth/rules/{rule_id}/rotate
Schedule current and previous credential cutover
- operationId
rotateOriginAuthRuleCredential- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:origin_auth.manage
说明(契约原文)
The new current and prior current revisions must be distinct, verified, provider-matched, and valid through activation plus signature TTL. Activation must be in the future and no more than 30 days away.
参数
rotateOriginAuthRuleCredential 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
rule_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 否 | — |
|---|
X-Trace-ID | header | string | 否 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | Quoted positive decimal current resource revision. |
|---|
请求体
application/json · 必填:是
rotateOriginAuthRuleCredential 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
current_credential | CredentialReference | 是 | — |
|---|
activate_current_at | string(date-time) | 是 | — |
|---|
响应
rotateOriginAuthRuleCredential 响应| 状态码 | 说明 |
|---|
200 | Rule revision appended. 字段:id: string(uuid) tenant_scope_id: string(uuid) site_id: string(uuid) source_position: integer provider: string: s3 / oss / cos algorithm: string: aws4-hmac-sha256 / oss4-hmac-sha256 / cos-hmac-sha1 endpoint: string(uri) bucket: string path_prefix: string region: string service: string signature_ttl_seconds: integer egress_policy_reference?: string current_credential: CredentialReference previous_credential?: CredentialReference activate_current_at?: string(date-time) enabled: boolean deleted: boolean revision: integer created_at: string(date-time) updated_at: string(date-time) |
|---|
400 | Unknown field, malformed UUID/body/header/query, invalid cursor, or exceeded bound. |
|---|
401 | Authentication is missing or invalid. |
|---|
403 | Permission or entitlement denied. |
|---|
404 | Unknown or out-of-tenant resource; both use the same response shape. |
|---|
405 | Request method is not allowed for this route. |
|---|
409 | State, uniqueness, active-reference, or idempotency conflict. |
|---|
412 | If-Match does not equal the current revision. |
|---|
422 | Provider binding, endpoint, path, credential state, or verification rejected. |
|---|
503 | Storage, encryption key, entitlement, verifier, timeout, or cancellation unavailable. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/plugin-installations
List tenant plugin installation authorization state
- operationId
listPluginInstallations- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
参数
listPluginInstallations 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
limit | query | integer | 否 | — |
|---|
cursor | query | string | 否 | — |
|---|
status | query | string: pending_confirmation / authorized / installing / enabled / disabled / upgrade_failed_lkg_preserved / uninstalled | 否 | — |
|---|
plugin_id | query | string | 否 | — |
|---|
响应
listPluginInstallations 响应| 状态码 | 说明 |
|---|
200 | Stable keyset page 字段:items: array<PluginInstallation> next_cursor?: string |
|---|
400 | Stable localized-client error envelope |
|---|
401 | Stable localized-client error envelope |
|---|
403 | Stable localized-client error envelope |
|---|
502 | Stable localized-client error envelope |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/plugin-installations/{authorization_id}
Read one tenant plugin installation authorization
- operationId
getPluginInstallation- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
参数
getPluginInstallation 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
authorization_id | path | string(uuid) | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
响应
getPluginInstallation 响应| 状态码 | 说明 |
|---|
200 | Plugin installation authorization state 字段:schema: const cdnca.control.plugin-installation/v1 tenant_scope_id: string(uuid) authorization_id: string(uuid) installation_id: string(uuid) verification_id: string(uuid) plugin_id: string resource_scope: string: platform / tenant entrypoint_type: string: theme / rule_pack / external_https / ui_page version: string manifest_sha256: string configuration_schema_sha256: string manifest_scopes: array<string> approved_scopes: array<string> sensitive_scopes: array<string> new_scopes: array<string> status: string: pending_confirmation / authorized / installing / enabled / disabled / upgrade_failed_lkg_preserved / uninstalled revision: integer identity_generation: integer lkg_verification_id: string(uuid) | null lkg_version: string | null stable_reason_code: string | null updated_at: string(date-time) authorization_status?: string: pending_confirmation / authorized / enabled / disabled paused_by?: string: installation / operator / service paused_reason?: string available_upgrade?: PluginInstallationAvailableUpgrade |
|---|
401 | Stable localized-client error envelope |
|---|
403 | Stable localized-client error envelope |
|---|
404 | Stable localized-client error envelope |
|---|
502 | Stable localized-client error envelope |
|---|
失败时怎么办
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/plugin-installations/{authorization_id}/confirm
Confirm declared and sensitive plugin scopes before installation
- operationId
confirmPluginInstallation- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
参数
confirmPluginInstallation 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
authorization_id | path | string(uuid) | 是 | — |
|---|
If-Match | header | string | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
confirmPluginInstallation 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
verification_id | string(uuid) | 是 | — |
|---|
approved_scopes | array<string> | 是 | — |
|---|
sensitive_permissions_confirmed | boolean | 是 | — |
|---|
new_permissions_confirmed | boolean | 是 | — |
|---|
响应
confirmPluginInstallation 响应| 状态码 | 说明 |
|---|
200 | Durable mutation snapshot; replay returns the original snapshot 字段:installation: PluginInstallation |
|---|
400 | Stable localized-client error envelope |
|---|
401 | Stable localized-client error envelope |
|---|
403 | Stable localized-client error envelope |
|---|
404 | Stable localized-client error envelope |
|---|
409 | Stable localized-client error envelope |
|---|
422 | Stable localized-client error envelope |
|---|
502 | Stable localized-client error envelope |
|---|
503 | Stable localized-client error envelope |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/plugin-installations/{authorization_id}/disable
Protectively disable an installed plugin without consulting License
- operationId
disablePluginInstallation- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
参数
disablePluginInstallation 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
authorization_id | path | string(uuid) | 是 | — |
|---|
If-Match | header | string | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
disablePluginInstallation 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
reason | string | 是 | — |
|---|
响应
disablePluginInstallation 响应| 状态码 | 说明 |
|---|
200 | Durable mutation snapshot; replay returns the original snapshot 字段:installation: PluginInstallation |
|---|
400 | Stable localized-client error envelope |
|---|
401 | Stable localized-client error envelope |
|---|
403 | Stable localized-client error envelope |
|---|
404 | Stable localized-client error envelope |
|---|
409 | Stable localized-client error envelope |
|---|
502 | Stable localized-client error envelope |
|---|
503 | Stable localized-client error envelope |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/plugin-installations/{authorization_id}/uninstall
Revoke local plugin identity and record protective uninstall
- operationId
uninstallPluginInstallation- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
参数
uninstallPluginInstallation 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
authorization_id | path | string(uuid) | 是 | — |
|---|
If-Match | header | string | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
uninstallPluginInstallation 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
reason | string | 是 | — |
|---|
响应
uninstallPluginInstallation 响应| 状态码 | 说明 |
|---|
200 | Durable mutation snapshot; replay returns the original snapshot 字段:installation: PluginInstallation |
|---|
400 | Stable localized-client error envelope |
|---|
401 | Stable localized-client error envelope |
|---|
403 | Stable localized-client error envelope |
|---|
404 | Stable localized-client error envelope |
|---|
409 | Stable localized-client error envelope |
|---|
502 | Stable localized-client error envelope |
|---|
503 | Stable localized-client error envelope |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/plugin-installations/{authorization_id}/upgrade
Approve a compatible plugin upgrade and any newly declared scopes
- operationId
upgradePluginInstallation- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
参数
upgradePluginInstallation 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
authorization_id | path | string(uuid) | 是 | — |
|---|
If-Match | header | string | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
upgradePluginInstallation 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
verification_id | string(uuid) | 是 | — |
|---|
approved_scopes | array<string> | 是 | — |
|---|
sensitive_permissions_confirmed | boolean | 是 | — |
|---|
new_permissions_confirmed | boolean | 是 | — |
|---|
响应
upgradePluginInstallation 响应| 状态码 | 说明 |
|---|
200 | Durable mutation snapshot; replay returns the original snapshot 字段:installation: PluginInstallation |
|---|
400 | Stable localized-client error envelope |
|---|
401 | Stable localized-client error envelope |
|---|
403 | Stable localized-client error envelope |
|---|
404 | Stable localized-client error envelope |
|---|
409 | Stable localized-client error envelope |
|---|
422 | Stable localized-client error envelope |
|---|
502 | Stable localized-client error envelope |
|---|
503 | Stable localized-client error envelope |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/plugin-webhook-subscriptions
List webhook subscriptions
- operationId
listPluginWebhookSubscriptions- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:plugin_webhooks.read
参数
listPluginWebhookSubscriptions 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
cursor | query | string | 否 | — |
|---|
limit | query | integer | 否 | — |
|---|
响应
listPluginWebhookSubscriptions 响应| 状态码 | 说明 |
|---|
200 | Subscription page 字段:items: array<Subscription> next_cursor?: string |
|---|
400 | Validation failed |
|---|
401 | Authentication required |
|---|
403 | Permission or tenant scope denied |
|---|
404 | Resource not found |
|---|
503 | Store, secret, or write result unavailable |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/plugin-webhook-subscriptions
Create a webhook subscription and one-time secret
- operationId
createPluginWebhookSubscription- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:plugin_webhooks.manage
说明(契约原文)
The secret is returned only through the encrypted receipt window and must never be persisted by the browser. Reusing the same idempotency key replays the same receipt until it expires.
参数
createPluginWebhookSubscription 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
createPluginWebhookSubscription 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
name | string | 是 | — |
|---|
target_url | string(uri) | 是 | HTTPS target using an ASCII DNS hostname and either no explicit port or port 443. IP literals, IDNA xn-- labels, userinfo, query strings, fragments and other ports are forbidden. This pattern constrains request syntax only; server/runtime validation remains authoritative for public DNS resolution, address ranges, certificates, redirects and canonical paths. |
|---|
event_types | array<string: io.cdnca.certificate.v1.expiry_reached / io.cdnca.certificate.v1.status_changed / io.cdnca.deployment.v1.status_changed / io.cdnca.node.v1.status_changed / io.cdnca.security.v1.incident_detected / io.cdnca.site.v1.updated / io.cdnca.usage.v1.threshold_reached / io.cdnca.webhook.v1.test> | 是 | — |
|---|
installation_authorization_id | object | 否 | Optional enabled tenant installation authorization. Required when subscribing to non-test domain events; test-only subscriptions must omit it. |
|---|
site_ids | array<string(uuid)> | 否 | Optional site filter. When present the subscription receives only site-bound events (site.updated, security.incident_detected) of these tenant sites and no tenant-level events; at least one site-bound event type is required. Omit for all events. Immutable. |
|---|
响应
createPluginWebhookSubscription 响应| 状态码 | 说明 |
|---|
201 | Created subscription with one-time secret 字段:subscription: Subscription secret: string |
|---|
400 | Validation failed |
|---|
401 | Authentication required |
|---|
403 | Permission or tenant scope denied |
|---|
409 | State or idempotency conflict |
|---|
422 | Target or entitlement rejected |
|---|
429 | Rate limited |
|---|
503 | Store, secret, or write result unavailable |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。429 被限速:等待后再试,降低并发。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/plugin-webhook-subscriptions/{subscription_id}
Get a webhook subscription
- operationId
getPluginWebhookSubscription- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:plugin_webhooks.read
参数
getPluginWebhookSubscription 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
subscription_id | path | string(uuid) | 是 | — |
|---|
响应
getPluginWebhookSubscription 响应| 状态码 | 说明 |
|---|
200 | Subscription 字段:id: string(uuid) tenant_scope_id: string(uuid) name: string target_url: string(uri) event_types: array<string: io.cdnca.certificate.v1.expiry_reached / io.cdnca.certificate.v1.status_changed / io.cdnca.deployment.v1.status_changed / io.cdnca.node.v1.status_changed / io.cdnca.security.v1.incident_detected / io.cdnca.site.v1.updated / io.cdnca.usage.v1.threshold_reached / io.cdnca.webhook.v1.test> status: string: active / revoked revision: integer active_secret_version_id: string(uuid) installation_authorization_id?: object installation_id?: object plugin_id?: string site_ids?: array<string(uuid)> created_at: string(date-time) updated_at: string(date-time) |
|---|
401 | Authentication required |
|---|
403 | Permission or tenant scope denied |
|---|
404 | Resource not found |
|---|
503 | Store, secret, or write result unavailable |
|---|
失败时怎么办
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/plugin-webhook-subscriptions/{subscription_id}/deliveries
List subscription deliveries
- operationId
listPluginWebhookDeliveries- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:plugin_webhooks.read
参数
listPluginWebhookDeliveries 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
subscription_id | path | string(uuid) | 是 | — |
|---|
cursor | query | string | 否 | — |
|---|
limit | query | integer | 否 | — |
|---|
响应
listPluginWebhookDeliveries 响应| 状态码 | 说明 |
|---|
200 | Delivery page 字段:items: array<Delivery> next_cursor?: string |
|---|
400 | Validation failed |
|---|
401 | Authentication required |
|---|
403 | Permission or tenant scope denied |
|---|
404 | Resource not found |
|---|
503 | Store, secret, or write result unavailable |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/plugin-webhook-subscriptions/{subscription_id}/deliveries/{delivery_id}
Get a delivery status
- operationId
getPluginWebhookDelivery- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:plugin_webhooks.read
参数
getPluginWebhookDelivery 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
subscription_id | path | string(uuid) | 是 | — |
|---|
delivery_id | path | string(uuid) | 是 | — |
|---|
响应
getPluginWebhookDelivery 响应| 状态码 | 说明 |
|---|
200 | Delivery 字段:id: string(uuid) subscription_id: string(uuid) event_id: string(uuid) replay_of?: string(uuid) status: string: pending / queued / claimed / retry_scheduled / delivered / dead_letter_pending / dead_lettered / revoked attempt_count: integer next_attempt_at?: string(date-time) created_at: string(date-time) completed_at?: string(date-time) |
|---|
401 | Authentication required |
|---|
403 | Permission or tenant scope denied |
|---|
404 | Resource not found |
|---|
503 | Store, secret, or write result unavailable |
|---|
失败时怎么办
401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/plugin-webhook-subscriptions/{subscription_id}/deliveries/{delivery_id}/replays
Replay a delivered or dead-lettered delivery
- operationId
replayPluginWebhookDelivery- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:plugin_webhooks.manage
参数
replayPluginWebhookDelivery 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
subscription_id | path | string(uuid) | 是 | — |
|---|
delivery_id | path | string(uuid) | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
响应
replayPluginWebhookDelivery 响应| 状态码 | 说明 |
|---|
202 | Accepted delivery 字段:delivery: Delivery |
|---|
400 | Validation failed |
|---|
401 | Authentication required |
|---|
403 | Permission or tenant scope denied |
|---|
404 | Resource not found |
|---|
409 | State or idempotency conflict |
|---|
422 | Target or entitlement rejected |
|---|
429 | Rate limited |
|---|
503 | Store, secret, or write result unavailable |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。429 被限速:等待后再试,降低并发。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/plugin-webhook-subscriptions/{subscription_id}/delivery-replays
Replay the terminal deliveries of a time range
- operationId
replayPluginWebhookDeliveryRange- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:plugin_webhooks.manage
说明(契约原文)
Re-sends every original (non-replay) delivery of this subscription created in [from, to) with a matching status and event type, up to limit. Each replay has the single-delivery guarantees: same event ID, new delivery ID, audit, rate limit, and the database re-checks that the bound installation still holds the event permission and the site filter still selects the event. A per-delivery idempotency key is derived from Idempotency-Key, so retrying the call never replays a delivery twice. Events from before the subscription existed are never sent.
参数
replayPluginWebhookDeliveryRange 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
subscription_id | path | string(uuid) | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
replayPluginWebhookDeliveryRange 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
from | string(date-time) | 是 | Original delivery created at or after this time. |
|---|
to | string(date-time) | 是 | Original delivery created before this time; at most 31 days after from. |
|---|
statuses | array<string: delivered / dead_lettered> | 否 | Defaults to both terminal states; [dead_lettered] re-sends only failed deliveries. |
|---|
event_types | array<string: io.cdnca.certificate.v1.expiry_reached / io.cdnca.certificate.v1.status_changed / io.cdnca.deployment.v1.status_changed / io.cdnca.node.v1.status_changed / io.cdnca.security.v1.incident_detected / io.cdnca.site.v1.updated / io.cdnca.usage.v1.threshold_reached / io.cdnca.webhook.v1.test> | 否 | — |
|---|
limit | integer | 是 | — |
|---|
响应
replayPluginWebhookDeliveryRange 响应| 状态码 | 说明 |
|---|
202 | Replay batch outcome. 字段:items: array<object> remaining: boolean |
|---|
400 | Validation failed |
|---|
401 | Authentication required |
|---|
403 | Permission or tenant scope denied |
|---|
404 | Resource not found |
|---|
409 | State or idempotency conflict |
|---|
503 | Store, secret, or write result unavailable |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/plugin-webhook-subscriptions/{subscription_id}/revoke
Revoke a webhook subscription and fence new deliveries
- operationId
revokePluginWebhookSubscription- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:plugin_webhooks.manage
参数
revokePluginWebhookSubscription 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
subscription_id | path | string(uuid) | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
响应
revokePluginWebhookSubscription 响应| 状态码 | 说明 |
|---|
200 | Updated subscription 字段:subscription: Subscription |
|---|
400 | Validation failed |
|---|
401 | Authentication required |
|---|
403 | Permission or tenant scope denied |
|---|
404 | Resource not found |
|---|
409 | State or idempotency conflict |
|---|
412 | Revision mismatch |
|---|
428 | If-Match is required |
|---|
503 | Store, secret, or write result unavailable |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。428 缺少前置条件:回读资源,带 If-Match(或页面要求的验证)再提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/plugin-webhook-subscriptions/{subscription_id}/secret-rotations
Generate a pending secret rotation
- operationId
rotatePluginWebhookSecret- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:plugin_webhooks.manage
参数
rotatePluginWebhookSecret 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
subscription_id | path | string(uuid) | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
响应
rotatePluginWebhookSecret 响应| 状态码 | 说明 |
|---|
201 | Pending secret rotation and one-time secret 字段:rotation_id: string(uuid) key_id: string(uuid) status: string expires_at: string(date-time) secret: string subscription_revision: integer |
|---|
400 | Validation failed |
|---|
401 | Authentication required |
|---|
403 | Permission or tenant scope denied |
|---|
404 | Resource not found |
|---|
409 | State or idempotency conflict |
|---|
412 | Revision mismatch |
|---|
422 | Target or entitlement rejected |
|---|
428 | If-Match is required |
|---|
429 | Rate limited |
|---|
503 | Store, secret, or write result unavailable |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。428 缺少前置条件:回读资源,带 If-Match(或页面要求的验证)再提交。429 被限速:等待后再试,降低并发。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/plugin-webhook-subscriptions/{subscription_id}/secret-rotations/{rotation_id}/activate
Activate a pending secret rotation
- operationId
activatePluginWebhookSecret- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:plugin_webhooks.manage
参数
activatePluginWebhookSecret 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
subscription_id | path | string(uuid) | 是 | — |
|---|
rotation_id | path | string(uuid) | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
If-Match | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
响应
activatePluginWebhookSecret 响应| 状态码 | 说明 |
|---|
200 | Updated subscription 字段:subscription: Subscription |
|---|
400 | Validation failed |
|---|
401 | Authentication required |
|---|
403 | Permission or tenant scope denied |
|---|
404 | Resource not found |
|---|
409 | State or idempotency conflict |
|---|
412 | Revision mismatch |
|---|
428 | If-Match is required |
|---|
503 | Store, secret, or write result unavailable |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。428 缺少前置条件:回读资源,带 If-Match(或页面要求的验证)再提交。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/tenant-scopes/{tenant_scope_id}/plugin-webhook-subscriptions/{subscription_id}/test-deliveries
Queue a signed CloudEvents test delivery
- operationId
createPluginWebhookTestDelivery- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:plugin_webhooks.manage
参数
createPluginWebhookTestDelivery 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
subscription_id | path | string(uuid) | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
响应
createPluginWebhookTestDelivery 响应| 状态码 | 说明 |
|---|
202 | Accepted delivery 字段:delivery: Delivery |
|---|
400 | Validation failed |
|---|
401 | Authentication required |
|---|
403 | Permission or tenant scope denied |
|---|
404 | Resource not found |
|---|
409 | State or idempotency conflict |
|---|
422 | Target or entitlement rejected |
|---|
429 | Rate limited |
|---|
503 | Store, secret, or write result unavailable |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。429 被限速:等待后再试,降低并发。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/tenant-scopes/{tenant_scope_id}/theme
- operationId
getTenantTheme- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
说明(契约原文)
The caller's own tenant theme state (any tenant member) and the downloaded themes it may choose.
参数
getTenantTheme 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
响应
getTenantTheme 响应| 状态码 | 说明 |
|---|
200 | Tenant theme 字段:schema: const cdnca.theme.tenant/v1 tenant_scope_id: string(uuid) selection_mode: any platform_allows: boolean selection_allowed: boolean selected_package_sha256?: string assigned_by?: any effective_package_sha256: string effective_theme_id: string follows_platform: boolean revision: integer domains: array<string> choices: array<object> |
|---|
403 | Not a member of this tenant scope |
|---|
失败时怎么办
403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
↑ 回到列表
PUT /v1/tenant-scopes/{tenant_scope_id}/theme
- operationId
selectTenantTheme- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
说明(契约原文)
Choose the tenant theme (tenant_theme.manage). package_sha256 "" follows the platform theme. Allowed only while the tenant may choose (its selection_mode allow, or inherit while the platform allows) and the platform has not assigned the tenant a theme. Audited as theme.tenant.activate.
参数
selectTenantTheme 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
tenant_scope_id | path | string(uuid) | 是 | — |
|---|
If-Match | header | string | 是 | "<revision>" from ETag |
|---|
请求体
application/json · 必填:是
selectTenantTheme 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
package_sha256 | string | 是 | — |
|---|
响应
selectTenantTheme 响应| 状态码 | 说明 |
|---|
200 | New tenant theme 字段:schema: const cdnca.theme.tenant/v1 tenant_scope_id: string(uuid) selection_mode: any platform_allows: boolean selection_allowed: boolean selected_package_sha256?: string assigned_by?: any effective_package_sha256: string effective_theme_id: string follows_platform: boolean revision: integer domains: array<string> choices: array<object> |
|---|
403 | theme_permission_denied, theme_tenant_selection_denied or entitlement_feature_denied |
|---|
404 | Package not downloaded |
|---|
412 | theme_revision_conflict |
|---|
失败时怎么办
403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。412 版本已变:回读最新 ETag 后重新判断,再带新的 If-Match 提交。
↑ 回到列表