Xeonr Developer Docs
API SpecificationNamespaces

Revoke API Key

POST
/containers.api.v1.NamespaceService/RevokeApiKey

Revokes an API key; it is refused within 30 seconds. The key stays in Xeonr Auth's audit trail. Authorisation is checked against the key's own namespace, not anything in the request. key_id is the URN ListApiKeys returns; a key id from before keys moved to Xeonr Auth is NotFound.

Access: admin role in the key's namespace, or a platform admin. Other callers get NotFound.

Authorization

BearerAuth
AuthorizationBearer <token>

A namespace-scoped API key (cpk_…) for machines, or a Xeonr Auth OIDC token for humans. The key's namespace and role are pinned server-side.

In: header

Header Parameters

Connect-Protocol-Version?number

Define the version of the Connect protocol

Connect-Timeout-Ms?number

Define the timeout, in ms

Request Body

application/json

keyId?string
Length1 <= length <= 64
[key: string]?never

Response Body

application/json

application/json

curl -X POST "https://containers.xeonr.io/containers.api.v1.NamespaceService/RevokeApiKey" \  -H "Connect-Protocol-Version: 1" \  -H "Connect-Timeout-Ms: 1000" \  -H "Content-Type: application/json" \  -d '{}'
{}
{
  "code": "not_found",
  "message": "string",
  "details": [
    {
      "type": "string",
      "value": "string",
      "debug": {}
    }
  ]
}

Move Namespace POST

Moves a namespace and its persistent volumes to `target_cluster_id`. The controller drains it (refuses new workloads, suspends sandboxes, scales apps to zero, waits up to 15 minutes for running jobs and then cancels them), archives each persistent volume, places the namespace on the target and provisions its runner namespace there, re-seeds each persistent volume from its archive (populated on its first mount on the target; cache and scratch volumes are dropped and rebuilt on use), deletes the source's runner namespace and volumes, and brings apps back to their desired replicas; sandboxes stay suspended until resumed. Progress is `Namespace.move`. A failure before the volumes are re-seeded rolls back to the source, which still has everything. While a move runs, workload operations in the namespace and UpdateNamespace/DeleteNamespace are refused with FailedPrecondition. With `dry_run` nothing starts and the response carries the downtime estimate. The target must be a cluster the namespace's owner team may place on (PermissionDenied otherwise, NotFound if not visible) and CONNECTED (FailedPrecondition). **Access:** a platform admin, or an admin of the namespace's owner team.

Update Namespace POST

Updates a namespace's display name and default limits. Platform admins additionally set quotas, internal targets and image pull secrets (full replace — quotas are written as sent, 0 meaning unlimited) and may adopt or transfer ownership via `owner_team`. For everyone else those fields must be empty/zero or equal to the stored values, otherwise PermissionDenied. Re-reconciles the runner namespace afterwards. **Access:** admin role in the namespace (the owning team's admins, or an ADMIN-role namespace API key), or a platform admin. Other callers get NotFound.