Operation details
GET /v1/aggregated-edge/accounts
The tenant's own vendor accounts (no credentials) and the package account limit
- operationId
listTenantCDNAccounts- 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
All of:edge.tenant.read
Responses
listTenantCDNAccounts Responses| Status | Description |
|---|
200 | Accounts Fields:items: array<Account> account_limit: integer |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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/aggregated-edge/accounts/{id}
One own vendor account (no credentials)
- operationId
getTenantCDNAccount- 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
All of:edge.tenant.read
Parameters
getTenantCDNAccount Parameters| Name | In | Type | Required | Description |
|---|
id | path | string(uuid) | Yes | — |
|---|
Responses
getTenantCDNAccount Responses| Status | Description |
|---|
200 | Account Fields:id?: string(uuid) provider?: string name?: string access?: string settings?: object secret_fingerprints?: object status?: string credential_version?: integer credential_revoked?: boolean account_ref?: string plan?: string capabilities?: array<string> missing_permissions?: array<string> verified_at?: string(date-time) hostname_limit?: integer write_paused_until?: string(date-time) last_error_code?: string revision?: integer created_at?: string(date-time) updated_at?: string(date-time) fallback_origin?: string fallback_origin_status?: string fallback_origin_checked_at?: string(date-time) waf_rule_limit?: integer usage_pulled_through?: string(date-time) usage_error_code?: string |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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
GET /v1/aggregated-edge/providers
Vendor adapters a tenant can use, their capabilities and token permission templates
- operationId
listTenantCDNProviders- 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
All of:edge.tenant.read
Responses
listTenantCDNProviders Responses| Status | Description |
|---|
200 | Adapters Fields:items: array<ProviderDescriptor> |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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/aggregated-edge/sites/{site_id}/availability
Last 24 hours of probe results per supply and line of an own website (half-hour buckets)
- operationId
getTenantCDNSiteAvailability- 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
All of:edge.tenant.read
Parameters
getTenantCDNSiteAvailability Parameters| Name | In | Type | Required | Description |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
Responses
getTenantCDNSiteAvailability Responses| Status | Description |
|---|
200 | Availability Fields:site_id?: string(uuid) from?: string(date-time) to?: string(date-time) sources?: array<object> |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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
GET /v1/aggregated-edge/sites/{site_id}/bindings
Every access an own website is bound to
- operationId
listTenantCDNSiteBindings- 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
All of:edge.tenant.read
Parameters
listTenantCDNSiteBindings Parameters| Name | In | Type | Required | Description |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
Responses
listTenantCDNSiteBindings Responses| Status | Description |
|---|
200 | Bindings Fields:items: array<SiteBinding> |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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
GET /v1/aggregated-edge/sites/{site_id}/fallback-chain
Whole-site fallback chain (auto switch) of an own website and where its default line points now
- operationId
getTenantFallbackChain- 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
All of:edge.tenant.read
Description (from the contract)
enabled true means the controller switches the site's default line by itself; current is where the default line points now (kind local / backup_group / market_subscription / third_party_cdn). The controller's supplies show only kind, owner platform, an opaque supply_id and health. A per-line DNS plugin should treat an enabled chain as the owner of the default line. PUT, switch and failback are session-only.
Parameters
getTenantFallbackChain Parameters| Name | In | Type | Required | Description |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
Responses
getTenantFallbackChain Responses| Status | Description |
|---|
200 | Chain Fields:site_id?: string(uuid) revision?: integer auto_switch?: boolean failback?: string use_own_cdn?: boolean admin_mode?: string managed_by_admin?: boolean enabled?: boolean package_allowed?: boolean unavailable?: string notice?: string levels?: array<object> current?: ChainPosition frozen_at?: string(date-time) frozen_reason?: string events?: array<FallbackChainEvent> |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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
GET /v1/aggregated-edge/sites/{site_id}/fallback-chain/availability
Last 24 hours of probe results of the chain's sources (controller targets and names hidden)
- operationId
getTenantFallbackChainAvailability- 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
All of:edge.tenant.read
Parameters
getTenantFallbackChainAvailability Parameters| Name | In | Type | Required | Description |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
Responses
getTenantFallbackChainAvailability Responses| Status | Description |
|---|
200 | Availability Fields:site_id?: string(uuid) from?: string(date-time) to?: string(date-time) sources?: array<object> |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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
GET /v1/aggregated-edge/sites/{site_id}/fallback-chain/events
Default-line switching records of an own website, newest first (controller targets hidden)
- operationId
listTenantFallbackChainEvents- 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
All of:edge.tenant.read
Parameters
listTenantFallbackChainEvents Parameters| Name | In | Type | Required | Description |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
limit | query | integer | No | 1-200, default 50 |
|---|
Responses
listTenantFallbackChainEvents Responses| Status | Description |
|---|
200 | Events Fields:items: array<FallbackChainEvent> |
|---|
400 | Error envelope |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
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
GET /v1/aggregated-edge/sites/{site_id}/schedule
Per-line switching state of an own website (current target, candidates, strategy)
- operationId
getTenantCDNSiteSchedule- 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
All of:edge.tenant.read
Description (from the contract)
Read only with an API key (PUT schedule, unfreeze, switch and keep stay session-only). The candidates of the controller's own supplies carry owner platform; local, backup_group and follow_default are the controller's node groups.
Parameters
getTenantCDNSiteSchedule Parameters| Name | In | Type | Required | Description |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
Responses
getTenantCDNSiteSchedule Responses| Status | Description |
|---|
200 | Schedule Fields:site_id?: string(uuid) domain?: string cname?: string managed?: boolean failback?: string: auto / manual min_stay_seconds?: integer flap_limit?: integer strategy?: string: failover / quality / fixed quality_min_interval_seconds?: integer quality_margin?: number frozen_at?: string(date-time) freeze_kept?: boolean origin?: object revision?: integer dns?: BindingResult lines?: array<object> auto_switch_allowed?: boolean notice?: string |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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
GET /v1/aggregated-edge/supplies
The tenant's own third-party CDN accesses
- operationId
listTenantCDNSupplies- 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
All of:edge.tenant.read
Responses
listTenantCDNSupplies Responses| Status | Description |
|---|
200 | Accesses Fields:items: array<Supply> |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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/aggregated-edge/supplies
Create an access on an own account (Cloudflare config_sync) or a schedule_only access
- operationId
createTenantCDNSupply- 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
All of:edge.tenant.manage
Description (from the contract)
Audited as aggregated_edge.supply.create. A tenant's config_sync access is Cloudflare on one of its own accounts; other vendors are schedule_only without an account.
Request body
application/json · Required:Yes
createTenantCDNSupply Request body| Name | Type | Required | Description |
|---|
name | string | Yes | — |
|---|
provider | string | Yes | — |
|---|
mode | string: config_sync / schedule_only | Yes | — |
|---|
account_id | string(uuid) | No | own account; required for config_sync |
|---|
endpoint | string | No | schedule_only: the vendor access CNAME |
|---|
origin_server | string | No | — |
|---|
drift_policy | string | No | enforce (default) or report |
|---|
health_path | string | No | — |
|---|
health_status | integer | No | — |
|---|
expected_revision | integer | No | update only |
|---|
health_method | string: GET / HEAD | No | — |
|---|
health_headers | array<ProbeHeader> | No | — |
|---|
failure_threshold | integer | No | — |
|---|
recovery_threshold | integer | No | — |
|---|
Responses
createTenantCDNSupply Responses| Status | Description |
|---|
201 | Created Fields:id?: string(uuid) name?: string provider?: string mode?: string: config_sync / schedule_only account_id?: string(uuid) endpoint?: string origin_server?: string drift_policy?: string health_path?: string health_status?: integer health_method?: string health_headers?: array<ProbeHeader> failure_threshold?: integer recovery_threshold?: integer status?: string sites?: integer revision?: integer created_at?: string(date-time) updated_at?: string(date-time) |
|---|
400 | Error envelope |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
409 | Error envelope |
|---|
415 | Error envelope |
|---|
503 | Error envelope |
|---|
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/aggregated-edge/supplies/{id}
One own access
- operationId
getTenantCDNSupply- 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
All of:edge.tenant.read
Parameters
getTenantCDNSupply Parameters| Name | In | Type | Required | Description |
|---|
id | path | string(uuid) | Yes | — |
|---|
Responses
getTenantCDNSupply Responses| Status | Description |
|---|
200 | Access Fields:id?: string(uuid) name?: string provider?: string mode?: string: config_sync / schedule_only account_id?: string(uuid) endpoint?: string origin_server?: string drift_policy?: string health_path?: string health_status?: integer health_method?: string health_headers?: array<ProbeHeader> failure_threshold?: integer recovery_threshold?: integer status?: string sites?: integer revision?: integer created_at?: string(date-time) updated_at?: string(date-time) |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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
PUT /v1/aggregated-edge/supplies/{id}
Replace an own access (expected_revision guards concurrent edits)
- operationId
updateTenantCDNSupply- 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
All of:edge.tenant.manage
Description (from the contract)
Audited as aggregated_edge.supply.update.
Parameters
updateTenantCDNSupply Parameters| Name | In | Type | Required | Description |
|---|
id | path | string(uuid) | Yes | — |
|---|
Request body
application/json · Required:Yes
updateTenantCDNSupply Request body| Name | Type | Required | Description |
|---|
name | string | Yes | — |
|---|
provider | string | Yes | — |
|---|
mode | string: config_sync / schedule_only | Yes | — |
|---|
account_id | string(uuid) | No | own account; required for config_sync |
|---|
endpoint | string | No | schedule_only: the vendor access CNAME |
|---|
origin_server | string | No | — |
|---|
drift_policy | string | No | enforce (default) or report |
|---|
health_path | string | No | — |
|---|
health_status | integer | No | — |
|---|
expected_revision | integer | No | update only |
|---|
health_method | string: GET / HEAD | No | — |
|---|
health_headers | array<ProbeHeader> | No | — |
|---|
failure_threshold | integer | No | — |
|---|
recovery_threshold | integer | No | — |
|---|
Responses
updateTenantCDNSupply Responses| Status | Description |
|---|
200 | Updated Fields:id?: string(uuid) name?: string provider?: string mode?: string: config_sync / schedule_only account_id?: string(uuid) endpoint?: string origin_server?: string drift_policy?: string health_path?: string health_status?: integer health_method?: string health_headers?: array<ProbeHeader> failure_threshold?: integer recovery_threshold?: integer status?: string sites?: integer revision?: integer created_at?: string(date-time) updated_at?: string(date-time) |
|---|
400 | Error envelope |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
409 | Error envelope |
|---|
415 | Error envelope |
|---|
503 | Error envelope |
|---|
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/aggregated-edge/supplies/{id}/sites
Websites bound to an own access and their sync state
- operationId
listTenantCDNSupplySites- 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
All of:edge.tenant.read
Parameters
listTenantCDNSupplySites Parameters| Name | In | Type | Required | Description |
|---|
id | path | string(uuid) | Yes | — |
|---|
Responses
listTenantCDNSupplySites Responses| Status | Description |
|---|
200 | Sites Fields:items: array<SiteSyncSummary> |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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
POST /v1/aggregated-edge/supplies/{id}/sites
Bind one of the tenant's websites to an own access (primary or backup, optional DNS line)
- operationId
bindTenantCDNSupplySite- 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
All of:edge.tenant.manage
Description (from the contract)
Audited as aggregated_edge.binding.create. The site must belong to the caller's tenant scope (404 otherwise).
Parameters
bindTenantCDNSupplySite Parameters| Name | In | Type | Required | Description |
|---|
id | path | string(uuid) | Yes | — |
|---|
Request body
application/json · Required:Yes
bindTenantCDNSupplySite Request body| Name | Type | Required | Description |
|---|
site_id | string(uuid) | Yes | — |
|---|
role | string: primary / backup | No | default primary |
|---|
priority | integer | No | — |
|---|
line_scope | string | No | DNS line ("" = default line) |
|---|
ignored_settings | array<string> | No | — |
|---|
Responses
bindTenantCDNSupplySite Responses| Status | Description |
|---|
200 | What the site's DNS can carry Fields:dns_provider?: string lines_supported?: boolean line_scopes?: array<string> notice?: string |
|---|
400 | Error envelope |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
409 | Error envelope |
|---|
415 | Error envelope |
|---|
503 | Error envelope |
|---|
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/aggregated-edge/supplies/{id}/sites/{site_id}
Configuration-sync state of a site on an own access (custom hostname, validation, drift)
- operationId
getTenantCDNSiteSync- 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
All of:edge.tenant.read
Parameters
getTenantCDNSiteSync Parameters| Name | In | Type | Required | Description |
|---|
id | path | string(uuid) | Yes | — |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
Responses
getTenantCDNSiteSync Responses| Status | Description |
|---|
200 | Sync state Fields:site_id?: string(uuid) supply_id?: string(uuid) state?: string site_revision?: integer projection_sha256?: string ignored_settings?: array<string> refusal?: array<object> drift_state?: string drift?: array<object> validation?: array<object> last_error_code?: string applied_at?: string(date-time) observed_at?: string(date-time) resources?: array<object> writes?: integer |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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/aggregated-edge/supplies/{id}/sites/{site_id}
Unbind a site from an own access (keep_remote=true leaves the vendor hostname in place)
- operationId
unbindTenantCDNSupplySite- 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
All of:edge.tenant.manage
Description (from the contract)
Audited as aggregated_edge.binding.delete.
Parameters
unbindTenantCDNSupplySite Parameters| Name | In | Type | Required | Description |
|---|
id | path | string(uuid) | Yes | — |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
line_scope | query | string | No | — |
|---|
keep_remote | query | string: true / false | No | — |
|---|
Responses
unbindTenantCDNSupplySite Responses| Status | Description |
|---|
204 | Unbound |
|---|
400 | Error envelope |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
409 | Error envelope |
|---|
503 | Error envelope |
|---|
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/aggregated-edge/supplies/{id}/sites/{site_id}/observe
Read the site's custom hostname back from the vendor and report drift (no vendor write)
- operationId
observeTenantCDNSite- 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
All of:edge.tenant.manage
Parameters
observeTenantCDNSite Parameters| Name | In | Type | Required | Description |
|---|
id | path | string(uuid) | Yes | — |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
Responses
observeTenantCDNSite Responses| Status | Description |
|---|
200 | Observed state Fields:site_id?: string(uuid) supply_id?: string(uuid) state?: string site_revision?: integer projection_sha256?: string ignored_settings?: array<string> refusal?: array<object> drift_state?: string drift?: array<object> validation?: array<object> last_error_code?: string applied_at?: string(date-time) observed_at?: string(date-time) resources?: array<object> writes?: integer |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
409 | Error envelope |
|---|
429 | Error envelope |
|---|
502 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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.429 Rate limited: wait, then retry with lower concurrency.503 A dependency is unavailable: retry later with the original Idempotency-Key.
↑ Back to list
POST /v1/aggregated-edge/supplies/{id}/sites/{site_id}/sync
Create or update the site's custom hostname and settings on the vendor now
- operationId
syncTenantCDNSite- 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
All of:edge.tenant.manage
Description (from the contract)
writes is how many vendor writes the call made; vendor writes are recorded in the site's sync state.
Parameters
syncTenantCDNSite Parameters| Name | In | Type | Required | Description |
|---|
id | path | string(uuid) | Yes | — |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
Responses
syncTenantCDNSite Responses| Status | Description |
|---|
200 | Sync state after the call Fields:site_id?: string(uuid) supply_id?: string(uuid) state?: string site_revision?: integer projection_sha256?: string ignored_settings?: array<string> refusal?: array<object> drift_state?: string drift?: array<object> validation?: array<object> last_error_code?: string applied_at?: string(date-time) observed_at?: string(date-time) resources?: array<object> writes?: integer |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
409 | Error envelope |
|---|
429 | Error envelope |
|---|
502 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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.429 Rate limited: wait, then retry with lower concurrency.503 A dependency is unavailable: retry later with the original Idempotency-Key.
↑ Back to list
GET /v1/aggregated-edge/supplies/{id}/sites/{site_id}/usage
Stored hourly usage of the site's hostname on an own access
- operationId
getTenantCDNSiteUsage- 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
All of:edge.tenant.read
Parameters
getTenantCDNSiteUsage Parameters| Name | In | Type | Required | Description |
|---|
id | path | string(uuid) | Yes | — |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
hours | query | integer | No | 1..retention; default 24 |
|---|
Responses
getTenantCDNSiteUsage Responses| Status | Description |
|---|
200 | Usage Fields:site_id?: string(uuid) supply_id?: string(uuid) hostname?: string from?: string(date-time) to?: string(date-time) requests?: integer bytes?: integer points?: array<object> pulled_through?: string(date-time) error_code?: string |
|---|
400 | Error envelope |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
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
POST /v1/aggregated-edge/supplies/{id}/sites/{site_id}/validation/retry
Publish the vendor's hostname/certificate validation TXT records again
- operationId
retryTenantCDNSiteValidation- 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
All of:edge.tenant.manage
Parameters
retryTenantCDNSiteValidation Parameters| Name | In | Type | Required | Description |
|---|
id | path | string(uuid) | Yes | — |
|---|
site_id | path | string(uuid) | Yes | — |
|---|
Responses
retryTenantCDNSiteValidation Responses| Status | Description |
|---|
200 | Sync state after the retry Fields:site_id?: string(uuid) supply_id?: string(uuid) state?: string site_revision?: integer projection_sha256?: string ignored_settings?: array<string> refusal?: array<object> drift_state?: string drift?: array<object> validation?: array<object> last_error_code?: string applied_at?: string(date-time) observed_at?: string(date-time) resources?: array<object> writes?: integer |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
409 | Error envelope |
|---|
429 | Error envelope |
|---|
502 | Error envelope |
|---|
503 | Error envelope |
|---|
What to do on failure
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.429 Rate limited: wait, then retry with lower concurrency.503 A dependency is unavailable: retry later with the original Idempotency-Key.
↑ Back to list
GET /v1/aggregated-edge/switch-events
Switching records of the tenant's own websites, newest first (every line)
- operationId
listTenantCDNSwitchEvents- 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
All of:edge.tenant.read
Parameters
listTenantCDNSwitchEvents Parameters| Name | In | Type | Required | Description |
|---|
site_id | query | string(uuid) | No | one own website; another tenant's reads as 404 |
|---|
limit | query | integer | No | 1-200, default 50 |
|---|
Responses
listTenantCDNSwitchEvents Responses| Status | Description |
|---|
200 | Events Fields:items: array<SwitchEvent> |
|---|
400 | Error envelope |
|---|
401 | Error envelope |
|---|
403 | Error envelope |
|---|
404 | Error envelope |
|---|
503 | Error envelope |
|---|
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