Xeonr Developer Docs
API SpecificationNamespaces

Update Namespace

POST
/containers.api.v1.NamespaceService/UpdateNamespace

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.

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

namespace?string
Length1 <= length <= 64
displayName?string
Lengthlength <= 4096
groups?Deprecated

validate:skip deprecated and ignored by the server

defaultLimits?
quotaCpuMillis?integer

Platform admins: written as sent (0 = unlimited). Team admins: 0 or the stored value, which preserves it. validate:skip 0 is meaningful (unlimited / preserve); no ceiling

quotaMemoryMb?integer

validate:skip as quota_cpu_millis

quotaMaxPods?integer

validate:skip as quota_cpu_millis

internalTargets?

full replace; platform-admin-only to change

Itemsitems <= 1000
imagePullSecrets?image_pull_secrets

full replace; platform-admin-only to change

Itemsitems <= 1000
ownerTeam?string

Adopt/transfer: platform admins only. Empty preserves the stored owner; non-admin callers must leave this empty (a differing value is rejected).

Lengthlength <= 255
quotaStorageMb?integer

validate:skip as quota_cpu_millis

quotaMaxVolumes?integer

validate:skip as quota_cpu_millis

[key: string]?never

Response Body

application/json

application/json

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