MethodPathSummaryAuth
GET/v1/error-pages/assetsList error page assetsAPI keySession
POST/v1/error-pages/assets/initiateInitiate a content-addressed assetAPI keySession
GET/v1/error-pages/assets/{asset_id}Get an error page assetAPI keySession
DELETE/v1/error-pages/assets/{asset_id}Mark an unreferenced asset for reconciled deletionAPI keySession
GET/v1/error-pages/assets/{asset_id}/contentRead a ready asset's contentAPI keySession
PUT/v1/error-pages/assets/{asset_id}/contentUpload bounded asset content to stagingAPI keySession
POST/v1/error-pages/assets/{asset_id}/finalizeScan and finalize staged asset contentAPI keySession
GET/v1/error-pages/publication-snapshotRead the latest deterministic publication source snapshotAPI keySession
GET/v1/error-pages/rulesList current error page rule revisionsAPI keySession
POST/v1/error-pages/rulesCreate an append-only error page ruleAPI keySession
GET/v1/error-pages/rules/{rule_id}Get the current rule revisionAPI keySession
PATCH/v1/error-pages/rules/{rule_id}Append an updated rule revisionAPI keySession
DELETE/v1/error-pages/rules/{rule_id}Append a soft-delete rule revisionAPI keySession
POST/v1/error-pages/rules/{rule_id}/disableAppend a disabled rule revisionAPI keySession
POST/v1/error-pages/rules/{rule_id}/enableAppend an enabled rule revisionAPI keySession
GET/v1/error-pages/scope-overridesList current node and region error-page overridesAPI keySession
POST/v1/error-pages/scope-overridesCreate or restore a node or region overrideAPI keySession
GET/v1/error-pages/scope-overrides/{override_display_id}Read an override with verified immutable editor contentAPI keySession
PATCH/v1/error-pages/scope-overrides/{override_display_id}Replace an override item set using compare-and-swapAPI keySession
DELETE/v1/error-pages/scope-overrides/{override_display_id}Append a soft-delete override revisionAPI keySession
GET/v1/error-pages/slotsList the twelve canonical error-page slots in display orderAPI keySession
GET/v1/error-pages/slots/{slot_key}Read a slot binding and its verified immutable contentAPI keySession
PUT/v1/error-pages/slots/{slot_key}Append a slot revision that binds a ready immutable assetAPI keySession
DELETE/v1/error-pages/slots/{slot_key}Append an unbound revision and restore the built-in defaultAPI keySession

Contract file:api/control-error-pages.openapi.yaml

Operation details

GET /v1/error-pages/assets

List error page assets

operationId
listErrorPageAssets
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

listErrorPageAssets Parameters
NameInTypeRequiredDescription
X-Request-IDheaderstringNo—
X-Trace-IDheaderstringNo—
scope_idquerystring(uuid)No—
limitqueryintegerNo—
cursorquerystringNo—
statusquerystring: initiated / staged / scan_failed / finalizing / ready / rejected / delete_pending / deleted / orphanedNo—

Responses

listErrorPageAssets Responses
StatusDescription
200Stable cursor page

Fields:items: array<Asset> next_cursor?: string

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

POST /v1/error-pages/assets/initiate

Initiate a content-addressed asset

operationId
initiateErrorPageAsset
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

initiateErrorPageAsset Parameters
NameInTypeRequiredDescription
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Request body

application/json · Required:Yes

initiateErrorPageAsset Request body
NameTypeRequiredDescription
scope_idstring(uuid)NoOptional for tenant sessions and defaults to their own scope; required for platform sessions.
namestringNoDisplay name (the uploaded file name, or the page category and status); empty for an asset uploaded before names existed. No control characters, no surrounding blanks.
mime_typestring: text/html / text/plain / application/jsonYes—
size_bytesinteger(int64)Yes—
sha256stringYes—

Responses

initiateErrorPageAsset Responses
StatusDescription
201Asset identity created in initiated state

Fields:value: Asset replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
409Idempotency, lifecycle, reference, or rule precedence conflict
422Quota, static-content, or malware-scan rejection
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/error-pages/assets/{asset_id}

Get an error page asset

operationId
getErrorPageAsset
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

getErrorPageAsset Parameters
NameInTypeRequiredDescription
asset_idpathstring(uuid)Yes—
X-Request-IDheaderstringNo—
X-Trace-IDheaderstringNo—

Responses

getErrorPageAsset Responses
StatusDescription
200Asset metadata without storage locators or credentials

Fields:id: string(uuid) scope_id: string(uuid) tenant_id?: string(uuid) name: string mime_type: string: text/html / text/plain / application/json size_bytes: integer(int64) sha256: string status: string: initiated / staged / scan_failed / finalizing / ready / rejected / delete_pending / deleted / orphaned scan_status: string: pending / passed / rejected / error revision: integer(int64) created_by: string(uuid) created_at: string(date-time) updated_at: string(date-time) deleted_at?: string(date-time)

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

DELETE /v1/error-pages/assets/{asset_id}

Mark an unreferenced asset for reconciled deletion

operationId
deleteErrorPageAsset
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

deleteErrorPageAsset Parameters
NameInTypeRequiredDescription
asset_idpathstring(uuid)Yes—
If-MatchheaderstringYesQuoted positive decimal rule or asset revision, for example `"3"`.
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Responses

deleteErrorPageAsset Responses
StatusDescription
202Database transition committed; object cleanup is pending

Fields:value: Asset replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
409Idempotency, lifecycle, reference, or rule precedence conflict
412Revision compare-and-swap failed
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 412 The revision changed: read the latest ETag, decide again, then send the new If-Match.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/error-pages/assets/{asset_id}/content

Read a ready asset's content

operationId
getErrorPageAssetContent
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Description (from the contract)

The stored body of a ready asset (error_pages.read), integrity checked against its sha256, so a site's error page can be edited as text (网站编辑 → 错误页面). A staged, scanning, rejected or deleted asset answers 409.

Parameters

getErrorPageAssetContent Parameters
NameInTypeRequiredDescription
asset_idpathstring(uuid)Yes—
X-Request-IDheaderstringNo—
X-Trace-IDheaderstringNo—

Responses

getErrorPageAssetContent Responses
StatusDescription
200Asset metadata and its UTF-8 body

Fields:asset: Asset content: string

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
409Idempotency, lifecycle, reference, or rule precedence conflict
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

PUT /v1/error-pages/assets/{asset_id}/content

Upload bounded asset content to staging

operationId
uploadErrorPageAssetContent
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

uploadErrorPageAssetContent Parameters
NameInTypeRequiredDescription
asset_idpathstring(uuid)Yes—
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—
Content-LengthheaderintegerYes—

Request body

text/html, text/plain, application/json · Required:Yes

Responses

uploadErrorPageAssetContent Responses
StatusDescription
200Content validated and staged

Fields:value: Asset replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
409Idempotency, lifecycle, reference, or rule precedence conflict
422Quota, static-content, or malware-scan rejection
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

POST /v1/error-pages/assets/{asset_id}/finalize

Scan and finalize staged asset content

operationId
finalizeErrorPageAsset
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

finalizeErrorPageAsset Parameters
NameInTypeRequiredDescription
asset_idpathstring(uuid)Yes—
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Responses

finalizeErrorPageAsset Responses
StatusDescription
200Scanner passed and final object is ready

Fields:value: Asset replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
409Idempotency, lifecycle, reference, or rule precedence conflict
422Quota, static-content, or malware-scan rejection
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/error-pages/publication-snapshot

Read the latest deterministic publication source snapshot

operationId
getErrorPagePublicationSnapshot
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

getErrorPagePublicationSnapshot Parameters
NameInTypeRequiredDescription
X-Request-IDheaderstringNo—
X-Trace-IDheaderstringNo—

Responses

getErrorPagePublicationSnapshot Responses
StatusDescription
200Snapshot plus its control-plane digest and creation time

Fields:policy: EdgePolicy snapshot_sha256: string created_at: string(date-time)

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
409Idempotency, lifecycle, reference, or rule precedence conflict
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/error-pages/rules

List current error page rule revisions

operationId
listErrorPageRules
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

listErrorPageRules Parameters
NameInTypeRequiredDescription
X-Request-IDheaderstringNo—
X-Trace-IDheaderstringNo—
scope_idquerystring(uuid)No—
site_idquerystring(uuid)No—
enabledquerybooleanNo—
limitqueryintegerNo—
cursorquerystringNo—

Responses

listErrorPageRules Responses
StatusDescription
200Stable cursor page

Fields:items: array<Rule> next_cursor?: string

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

POST /v1/error-pages/rules

Create an append-only error page rule

operationId
createErrorPageRule
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

createErrorPageRule Parameters
NameInTypeRequiredDescription
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Request body

application/json · Required:Yes

createErrorPageRule Request body
NameTypeRequiredDescription
targetRuleTargetYes—
fieldsRuleFieldsYes—

Responses

createErrorPageRule Responses
StatusDescription
201Rule revision one and a publication fact were committed

Fields:value: Rule replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
409Idempotency, lifecycle, reference, or rule precedence conflict
422Quota, static-content, or malware-scan rejection
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/error-pages/rules/{rule_id}

Get the current rule revision

operationId
getErrorPageRule
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

getErrorPageRule Parameters
NameInTypeRequiredDescription
rule_idpathstring(uuid)Yes—
X-Request-IDheaderstringNo—
X-Trace-IDheaderstringNo—

Responses

getErrorPageRule Responses
StatusDescription
200Current append-only rule projection

Fields:id: string(uuid) target: RuleTarget tenant_id?: string(uuid) fields: RuleFields priority: integer revision: integer(int64) deleted: boolean created_by: string(uuid) created_at: string(date-time) updated_at: string(date-time)

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

PATCH /v1/error-pages/rules/{rule_id}

Append an updated rule revision

operationId
updateErrorPageRule
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

updateErrorPageRule Parameters
NameInTypeRequiredDescription
rule_idpathstring(uuid)Yes—
If-MatchheaderstringYesQuoted positive decimal rule or asset revision, for example `"3"`.
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Request body

application/json · Required:Yes

updateErrorPageRule Request body
NameTypeRequiredDescription
categorystring: origin_response / edge_route / edge_connect / no_host / unknown_siteYesunknown_site (global only) is the domain mismatch page: a request for a host no site serves gets it with its one status, 403, 404, 410 or 421 (without a rule the node answers a bare 421). no_host is 400; edge_connect 502-504.
matchStatusSelectorYes—
asset_idstring(uuid)Yes—
enabledbooleanYes—

Responses

updateErrorPageRule Responses
StatusDescription
200New rule and publication revisions

Fields:value: Rule replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
409Idempotency, lifecycle, reference, or rule precedence conflict
412Revision compare-and-swap failed
422Quota, static-content, or malware-scan rejection
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 412 The revision changed: read the latest ETag, decide again, then send the new If-Match.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

DELETE /v1/error-pages/rules/{rule_id}

Append a soft-delete rule revision

operationId
deleteErrorPageRule
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

deleteErrorPageRule Parameters
NameInTypeRequiredDescription
rule_idpathstring(uuid)Yes—
If-MatchheaderstringYesQuoted positive decimal rule or asset revision, for example `"3"`.
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Responses

deleteErrorPageRule Responses
StatusDescription
202Soft-delete revision and publication fact committed

Fields:value: Rule replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
409Idempotency, lifecycle, reference, or rule precedence conflict
412Revision compare-and-swap failed
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 412 The revision changed: read the latest ETag, decide again, then send the new If-Match.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

POST /v1/error-pages/rules/{rule_id}/disable

Append a disabled rule revision

operationId
disableErrorPageRule
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

disableErrorPageRule Parameters
NameInTypeRequiredDescription
rule_idpathstring(uuid)Yes—
If-MatchheaderstringYesQuoted positive decimal rule or asset revision, for example `"3"`.
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Responses

disableErrorPageRule Responses
StatusDescription
200New rule and publication revisions

Fields:value: Rule replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
409Idempotency, lifecycle, reference, or rule precedence conflict
412Revision compare-and-swap failed
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 412 The revision changed: read the latest ETag, decide again, then send the new If-Match.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

POST /v1/error-pages/rules/{rule_id}/enable

Append an enabled rule revision

operationId
enableErrorPageRule
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

enableErrorPageRule Parameters
NameInTypeRequiredDescription
rule_idpathstring(uuid)Yes—
If-MatchheaderstringYesQuoted positive decimal rule or asset revision, for example `"3"`.
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Responses

enableErrorPageRule Responses
StatusDescription
200New rule and publication revisions

Fields:value: Rule replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
404Resource is absent or hidden by tenant isolation
409Idempotency, lifecycle, reference, or rule precedence conflict
412Revision compare-and-swap failed
422Quota, static-content, or malware-scan rejection
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 412 The revision changed: read the latest ETag, decide again, then send the new If-Match.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/error-pages/scope-overrides

List current node and region error-page overrides

operationId
listErrorPageScopeOverrides
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

listErrorPageScopeOverrides Parameters
NameInTypeRequiredDescription
X-Request-IDheaderstringNo—
X-Trace-IDheaderstringNo—

Responses

listErrorPageScopeOverrides Responses
StatusDescription
200Active overrides with short display identifiers and no asset UUIDs

Fields:items: array<ScopeOverride> total: integer

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

POST /v1/error-pages/scope-overrides

Create or restore a node or region override

operationId
createErrorPageScopeOverride
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

createErrorPageScopeOverride Parameters
NameInTypeRequiredDescription
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Request body

application/json · Required:Yes

createErrorPageScopeOverride Request body
NameTypeRequiredDescription
targetobject | objectYes—
itemsarray<ScopeOverrideBindingInput>Yes—

Responses

createErrorPageScopeOverride Responses
StatusDescription
201Append-only override revision committed

Fields:value: ScopeOverride replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
404Resource is absent or hidden by tenant isolation
405The authenticated path exists but does not support the request method.
409Idempotency, lifecycle, reference, or rule precedence conflict
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/error-pages/scope-overrides/{override_display_id}

Read an override with verified immutable editor content

operationId
getErrorPageScopeOverride
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

getErrorPageScopeOverride Parameters
NameInTypeRequiredDescription
override_display_idpathstringYes—
X-Request-IDheaderstringNo—
X-Trace-IDheaderstringNo—

Responses

getErrorPageScopeOverride Responses
StatusDescription
200Override document without asset UUIDs, hashes, receipts, or storage locations

Fields:display_id: string target: object | object items: array<ScopeOverrideItem> revision: integer(int64) updated_at: string(date-time) deleted?: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
404Resource is absent or hidden by tenant isolation
405The authenticated path exists but does not support the request method.
409Idempotency, lifecycle, reference, or rule precedence conflict
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

PATCH /v1/error-pages/scope-overrides/{override_display_id}

Replace an override item set using compare-and-swap

operationId
updateErrorPageScopeOverride
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

updateErrorPageScopeOverride Parameters
NameInTypeRequiredDescription
override_display_idpathstringYes—
If-MatchheaderstringYesQuoted positive decimal rule or asset revision, for example `"3"`.
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Request body

application/json · Required:Yes

updateErrorPageScopeOverride Request body
NameTypeRequiredDescription
itemsarray<ScopeOverrideBindingInput>Yes—

Responses

updateErrorPageScopeOverride Responses
StatusDescription
200New current override revision

Fields:value: ScopeOverride replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
404Resource is absent or hidden by tenant isolation
405The authenticated path exists but does not support the request method.
409Idempotency, lifecycle, reference, or rule precedence conflict
412Revision compare-and-swap failed
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 412 The revision changed: read the latest ETag, decide again, then send the new If-Match.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

DELETE /v1/error-pages/scope-overrides/{override_display_id}

Append a soft-delete override revision

operationId
deleteErrorPageScopeOverride
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

deleteErrorPageScopeOverride Parameters
NameInTypeRequiredDescription
override_display_idpathstringYes—
If-MatchheaderstringYesQuoted positive decimal rule or asset revision, for example `"3"`.
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Responses

deleteErrorPageScopeOverride Responses
StatusDescription
202Soft-delete revision committed; the target inherits its next available source

Fields:value: ScopeOverride replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
404Resource is absent or hidden by tenant isolation
405The authenticated path exists but does not support the request method.
409Idempotency, lifecycle, reference, or rule precedence conflict
412Revision compare-and-swap failed
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 412 The revision changed: read the latest ETag, decide again, then send the new If-Match.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/error-pages/slots

List the twelve canonical error-page slots in display order

operationId
listErrorPageSlots
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

listErrorPageSlots Parameters
NameInTypeRequiredDescription
X-Request-IDheaderstringNo—
X-Trace-IDheaderstringNo—

Responses

listErrorPageSlots Responses
StatusDescription
200All canonical slots, including slots that have never been bound

Fields:items: array<SlotBinding>

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
405The authenticated path exists but does not support the request method.
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

GET /v1/error-pages/slots/{slot_key}

Read a slot binding and its verified immutable content

operationId
getErrorPageSlot
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

getErrorPageSlot Parameters
NameInTypeRequiredDescription
slot_keypathstring: blacklist / http_400 / http_403 / waf_block / http_502 / http_504 / traffic_exceeded / package_expired / site_locked / domain_unconfigured / node_ip_access / connection_limitYes—
X-Request-IDheaderstringNo—
X-Trace-IDheaderstringNo—

Responses

getErrorPageSlot Responses
StatusDescription
200Current binding and UTF-8 content; an unbound slot carries the built-in page in effect

Fields:binding: SlotBinding content: string source: string: override / builtin delivery: string: theme / fallback / none

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
404Resource is absent or hidden by tenant isolation
405The authenticated path exists but does not support the request method.
409Idempotency, lifecycle, reference, or rule precedence conflict
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

PUT /v1/error-pages/slots/{slot_key}

Append a slot revision that binds a ready immutable asset

operationId
bindErrorPageSlot
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

bindErrorPageSlot Parameters
NameInTypeRequiredDescription
slot_keypathstring: blacklist / http_400 / http_403 / waf_block / http_502 / http_504 / traffic_exceeded / package_expired / site_locked / domain_unconfigured / node_ip_access / connection_limitYes—
If-MatchheaderstringYesQuoted non-negative slot revision; use `"0"` for a slot that has never been bound.
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Request body

application/json · Required:Yes

bindErrorPageSlot Request body
NameTypeRequiredDescription
asset_idstring(uuid)Yes—

Responses

bindErrorPageSlot Responses
StatusDescription
200Current binding after compare-and-swap

Fields:value: SlotBinding replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
404Resource is absent or hidden by tenant isolation
405The authenticated path exists but does not support the request method.
409Idempotency, lifecycle, reference, or rule precedence conflict
412Revision compare-and-swap failed
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 412 The revision changed: read the latest ETag, decide again, then send the new If-Match.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list

DELETE /v1/error-pages/slots/{slot_key}

Append an unbound revision and restore the built-in default

operationId
unbindErrorPageSlot
Auth
  • API key: header Authorization: CdncaKey <key_id>.<secret>. Effective permissions are the key scopes intersected with the owner’s current permissions.
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

unbindErrorPageSlot Parameters
NameInTypeRequiredDescription
slot_keypathstring: blacklist / http_400 / http_403 / waf_block / http_502 / http_504 / traffic_exceeded / package_expired / site_locked / domain_unconfigured / node_ip_access / connection_limitYes—
If-MatchheaderstringYesQuoted non-negative slot revision; use `"0"` for a slot that has never been bound.
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringYes—
X-Trace-IDheaderstringYes—

Responses

unbindErrorPageSlot Responses
StatusDescription
200Current unbound slot revision

Fields:value: SlotBinding replayed: boolean

400Malformed or unknown input
401Authentication is absent or invalid
403Stable permission denial
404Resource is absent or hidden by tenant isolation
405The authenticated path exists but does not support the request method.
409Idempotency, lifecycle, reference, or rule precedence conflict
412Revision compare-and-swap failed
503Database, scanner, or content-store dependency is unavailable

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 412 The revision changed: read the latest ETag, decide again, then send the new If-Match.
  • 503 A dependency is unavailable: retry later with the original Idempotency-Key.

↑ Back to list