MethodPathSummaryAuth
GET/v1/admin/site-publicationsList publications for one tenant scopeSession
POST/v1/admin/site-publicationsPublish the current Site/L4 revision to an immutable target snapshotSession
GET/v1/admin/site-publications/{publication_id}Get one publication in an explicit tenant scopeSession
POST/v1/admin/site-publications/{publication_id}/rollbackRoll selected nodes back to their direct previous published configurationSession

Contract file:api/control-site-publications.openapi.yaml

Operation details

GET /v1/admin/site-publications

List publications for one tenant scope

operationId
listAdminSitePublications
Auth
  • 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_publications.read

Description (from the contract)

Requires a platform-scoped principal with edge_publications.read. The opaque keyset cursor is bound to the tenant scope and stable ordering.

Parameters

listAdminSitePublications Parameters
NameInTypeRequiredDescription
scope_idquerystring(uuid)YesPlatform route target tenant access-scope UUID.
limitqueryintegerNo—
cursorquerystringNoVersioned base64url HMAC-SHA256 envelope returned by the immediately preceding page. It is bound to audience, resolved tenant scope, resource kind, and the rollout ID for deployment pages. It cannot be reused across those boundaries or modified.

Responses

listAdminSitePublications Responses
StatusDescription
200Stable publication page. Response body is limited to 1 MiB.

Fields:items: array<AdminPublication> current_source_revision: integer(int64) next_cursor?: string pending_modules?: array<PendingModule> automatic_failure?: AutomaticPublicationFailure

400Invalid UUID, RFC3339 value, enum, cursor, header, query, or JSON body.
401Authentication is missing or invalid.
403Wrong audience, missing permission, or tenant scope override.
503Storage, signing, cancellation, response validation, or another internal 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/admin/site-publications

Publish the current Site/L4 revision to an immutable target snapshot

operationId
publishSiteConfiguration
Auth
  • 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_publications.manage

Description (from the contract)

Requires a platform-scoped principal with edge_publications.manage. Exactly one nodes or line_group_snapshot target is accepted. The domain service performs source revision CAS, target eligibility checks, local non-grace entitlement verification, canonical compilation, signing, config/rollout/deployment/outbox persistence, idempotency, and success audit in one transaction. An unknown write result may be retried only with the same Idempotency-Key and original business payload.

Parameters

publishSiteConfiguration Parameters
NameInTypeRequiredDescription
Idempotency-KeyheaderstringYesStable for the frozen business payload. Request, correlation, trace, and task identifiers may change on an identical retry.
X-Request-IDheaderstring(uuid)Yes—
TraceparentheaderstringYes—
X-Correlation-IDheaderstring(uuid)NoDefaults to X-Request-ID when omitted.
X-Task-IDheaderstringNo—

Request body

application/json · Required:Yes

publishSiteConfiguration Request body
NameTypeRequiredDescription
configuration_scope_idstring(uuid)Yes—
expected_source_revisioninteger(int64)Yes—
targetExplicitNodeTarget | LineGroupSnapshotTargetYes—
health_checkHealthCheckYes—
rolloutRolloutPolicyInputNoProgressive policy for a target frozen at publication time. Nodes are ordered by UUID bytes, then assigned to the canary and fixed-size cohorts. Commands outside the released cohort remain held. The failure threshold is an absolute failed-node count within the current cohort; reaching it pauses the rollout.
max_attemptsintegerYes—
deadlinestring(date-time)YesFuture RFC3339 deployment deadline.

Responses

publishSiteConfiguration Responses
StatusDescription
201Created publication, or the stored result of an identical retry.

Fields:id: string(uuid) configuration_scope_id: string(uuid) source_revision: integer(int64) config_version_id: string(uuid) rollout_id: string(uuid) canonical_source_sha256: string artifact_sha256: string target: object | object node_count: integer created_at: string(date-time) replayed?: boolean

400Invalid UUID, RFC3339 value, enum, cursor, header, query, or JSON body.
401Authentication is missing or invalid.
403Wrong audience, missing permission, or tenant scope override.
409Idempotency, target snapshot, rollout state, active deployment, or retry conflict.
412The source or rollout expected revision is stale.
422Entitlement or target/resource readiness prevents publication.
503Storage, signing, cancellation, response validation, or another internal 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.
  • 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/admin/site-publications/{publication_id}

Get one publication in an explicit tenant scope

operationId
getAdminSitePublication
Auth
  • 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_publications.read

Parameters

getAdminSitePublication Parameters
NameInTypeRequiredDescription
publication_idpathstring(uuid)Yes—
scope_idquerystring(uuid)YesPlatform route target tenant access-scope UUID.

Responses

getAdminSitePublication Responses
StatusDescription
200Platform publication detail.

Fields:id: string(uuid) configuration_scope_id: string(uuid) source_revision: integer(int64) config_version_id: string(uuid) rollout_id: string(uuid) canonical_source_sha256: string artifact_sha256: string target: object | object node_count: integer created_at: string(date-time) replayed?: boolean

400Invalid UUID, RFC3339 value, enum, cursor, header, query, or JSON body.
401Authentication is missing or invalid.
403Wrong audience, missing permission, or tenant scope override.
404Resource is absent in the authorized tenant scope. Cross-tenant IDs use the same response.
503Storage, signing, cancellation, response validation, or another internal 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

POST /v1/admin/site-publications/{publication_id}/rollback

Roll selected nodes back to their direct previous published configuration

operationId
rollbackSitePublication
Auth
  • 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_publications.manage

Description (from the contract)

Creates a rollback rollout for the immutable configuration referenced by the selected publication. Every selected node must currently name that configuration as its direct previous version. No new configuration or artifact bytes are created, and rollback remains available when an entitlement no longer permits expansion.

Parameters

rollbackSitePublication Parameters
NameInTypeRequiredDescription
publication_idpathstring(uuid)Yes—
Idempotency-KeyheaderstringYesStable for the frozen business payload. Request, correlation, trace, and task identifiers may change on an identical retry.
X-Request-IDheaderstring(uuid)Yes—
TraceparentheaderstringYes—
X-Correlation-IDheaderstring(uuid)NoDefaults to X-Request-ID when omitted.
X-Task-IDheaderstringNo—

Request body

application/json · Required:Yes

rollbackSitePublication Request body
NameTypeRequiredDescription
configuration_scope_idstring(uuid)Yes—
targetExplicitNodeTarget | LineGroupSnapshotTargetYes—
health_checkHealthCheckYes—
rolloutRolloutPolicyInputNoProgressive policy for a target frozen at publication time. Nodes are ordered by UUID bytes, then assigned to the canary and fixed-size cohorts. Commands outside the released cohort remain held. The failure threshold is an absolute failed-node count within the current cohort; reaching it pauses the rollout.
max_attemptsintegerYes—
deadlinestring(date-time)YesFuture RFC3339 rollback deadline.

Responses

rollbackSitePublication Responses
StatusDescription
201Created rollback rollout, or the stored result of an identical retry.

Fields:publication_id: string(uuid) configuration_scope_id: string(uuid) config_version_id: string(uuid) rollout_id: string(uuid) action: string target: object | object node_count: integer created_at: string(date-time) replayed?: boolean

400Invalid UUID, RFC3339 value, enum, cursor, header, query, or JSON body.
401Authentication is missing or invalid.
403Wrong audience, missing permission, or tenant scope override.
404Resource is absent in the authorized tenant scope. Cross-tenant IDs use the same response.
409Idempotency, target snapshot, rollout state, active deployment, or retry conflict.
422Entitlement or target/resource readiness prevents publication.
503Storage, signing, cancellation, response validation, or another internal 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