MethodPathSummaryAuth
GET/v1/site-groupsList site groupsSession
POST/v1/site-groupsCreate a site groupSession
GET/v1/site-groups/{id}Read one exact active site group in an authorized tenant scopeSession
PATCH/v1/site-groups/{id}Rename a site groupSession
DELETE/v1/site-groups/{id}Delete an unused site groupSession

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

Operation details

GET /v1/site-groups

List site groups

operationId
listSiteGroups
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:sites.read

Parameters

listSiteGroups Parameters
NameInTypeRequiredDescription
scope_idquerystring(uuid)Yes—
pagequeryintegerNo—
limitqueryintegerNo—

Responses

listSiteGroups Responses
StatusDescription
200Active groups ordered by creation time and ID.

Fields:items: array<SiteGroup> total: integer page: integer limit: integer

400Invalid request or precondition. A refused name or remark is validation_error with error.details {field: name|remark, reason}.
401Authentication required.
403Permission denied.
503Site group service 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/site-groups

Create a site group

operationId
createSiteGroup
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:sites.manage

Parameters

createSiteGroup Parameters
NameInTypeRequiredDescription
Idempotency-KeyheaderstringYes—

Request body

application/json · Required:Yes

createSiteGroup Request body
NameTypeRequiredDescription
target_scope_idstring(uuid)Yes—
namestringYes—
remarkstringNoOptional; omission creates an empty remark and preserves the legacy request digest. Null is invalid.

Responses

createSiteGroup Responses
StatusDescription
201Created group or an exact completed request replay.

Fields:id: string(uuid) scope_id: string(uuid) name: string remark?: string display_id?: string revision: integer created_at: string(date-time) updated_at: string(date-time) deleted_at?: string(date-time) | null(date-time)

400Invalid request or precondition. A refused name or remark is validation_error with error.details {field: name|remark, reason}.
401Authentication required.
403Permission denied.
409Revision, idempotency, name, or in-use conflict.
503Site group service 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/site-groups/{id}

Read one exact active site group in an authorized tenant scope

operationId
getSiteGroup
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:sites.read

Parameters

getSiteGroup Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
scope_idquerystring(uuid)Yes—

Responses

getSiteGroup Responses
StatusDescription
200Current group including its real display ID and remark. A newer revision must not be mistaken for exact write readback.

Fields:id: string(uuid) scope_id: string(uuid) name: string remark?: string display_id?: string revision: integer created_at: string(date-time) updated_at: string(date-time) deleted_at?: string(date-time) | null(date-time)

400Invalid request or precondition. A refused name or remark is validation_error with error.details {field: name|remark, reason}.
401Authentication required.
403Permission denied.
404Site group not found.
503Site group service 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/site-groups/{id}

Rename a site group

operationId
renameSiteGroup
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:sites.manage

Parameters

renameSiteGroup Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
scope_idquerystring(uuid)Yes—
If-MatchheaderstringYes—
Idempotency-KeyheaderstringYes—

Request body

application/json · Required:Yes

renameSiteGroup Request body
NameTypeRequiredDescription
expected_revisionintegerYes—
namestringYes—
remarkstringNoOmission preserves the current remark and legacy digest. An explicit empty string clears it. Null is invalid.

Responses

renameSiteGroup Responses
StatusDescription
200Renamed group or an exact completed request replay.

Fields:id: string(uuid) scope_id: string(uuid) name: string remark?: string display_id?: string revision: integer created_at: string(date-time) updated_at: string(date-time) deleted_at?: string(date-time) | null(date-time)

400Invalid request or precondition. A refused name or remark is validation_error with error.details {field: name|remark, reason}.
401Authentication required.
403Permission denied.
404Site group not found.
409Revision, idempotency, name, or in-use conflict.
503Site group service 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

DELETE /v1/site-groups/{id}

Delete an unused site group

operationId
deleteSiteGroup
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:sites.manage

Parameters

deleteSiteGroup Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
scope_idquerystring(uuid)Yes—
If-MatchheaderstringYes—
Idempotency-KeyheaderstringYes—

Responses

deleteSiteGroup Responses
StatusDescription
204Group deleted or an exact completed request replay.
400Invalid request or precondition. A refused name or remark is validation_error with error.details {field: name|remark, reason}.
401Authentication required.
403Permission denied.
404Site group not found.
409Revision, idempotency, name, or in-use conflict.
503Site group service 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