Xeonr Developer Docs
API SpecificationNamespaces

List Namespaces

POST
/containers.api.v1.NamespaceService/ListNamespaces

Lists the namespaces visible to the caller, ordered by name. page_size 0 means 100 and is clamped to 1000; page_token is the opaque offset from next_page_token.

Access: any authenticated caller; results are filtered to namespaces the caller can read (all of them for a platform admin).

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

pageSize?integer

validate:skip 0 means 100; larger values are clamped to 1000, not rejected

pageToken?string
[key: string]?never

Response Body

application/json

application/json

curl -X POST "https://containers.xeonr.io/containers.api.v1.NamespaceService/ListNamespaces" \  -H "Connect-Protocol-Version: 1" \  -H "Connect-Timeout-Ms: 1000" \  -H "Content-Type: application/json" \  -d '{}'
{
  "namespaces": [
    {
      "namespace": "string",
      "displayName": "string",
      "k8sRunnerNamespace": "string",
      "groups": [
        {
          "oidcGroup": "string",
          "role": "ROLE_UNSPECIFIED"
        }
      ],
      "defaultLimits": {
        "cpuMillis": 0,
        "memoryMb": 0,
        "ephemeralMb": 0,
        "pids": 0
      },
      "quotaCpuMillis": 0,
      "quotaMemoryMb": 0,
      "quotaMaxPods": 0,
      "quotaStorageMb": 0,
      "quotaMaxVolumes": 0,
      "internalTargets": [
        {
          "host": "string",
          "port": 1
        }
      ],
      "imagePullSecrets": [
        "string"
      ],
      "ownerTeam": "string",
      "clusterId": "string",
      "move": {
        "state": "STATE_UNSPECIFIED",
        "sourceClusterId": "string",
        "targetClusterId": "string",
        "startedAt": "2023-01-15T01:30:15.01Z",
        "updatedAt": "2023-01-15T01:30:15.01Z",
        "finishedAt": "2023-01-15T01:30:15.01Z",
        "message": "string",
        "rolledBack": true,
        "estimatedDowntimeSec": 0,
        "volumes": [
          {
            "volumeId": "string",
            "archiveSnapshotId": "string",
            "sourceNode": "string",
            "sourceState": "VOLUME_STATE_UNSPECIFIED",
            "reseeded": true
          }
        ],
        "startedBy": "string"
      }
    }
  ],
  "nextPageToken": "string"
}
{
  "code": "not_found",
  "message": "string",
  "details": [
    {
      "type": "string",
      "value": "string",
      "debug": {}
    }
  ]
}

List API Keys POST

Lists a namespace's live API keys (and its revoked ones with `include_revoked`), including its workloads' agent keys (metadata only; plaintext is never returned). `key_id` is the key's Xeonr Auth URN. **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.

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.