Create or update a cluster (declarative PUT)
const url = 'https://example.com/api/v1/teams/example/clusters/example/';const options = { method: 'PUT', headers: {cookie: 'sessionid=<sessionid>', 'Content-Type': 'application/json'}, body: '{"spec":{"connectionRef":"example","region":"example","kubernetesVersion":"example","hibernated":false,"controlPlaneHA":false,"plan":"monthly","network":{"nodeCIDR":"10.250.0.0/16","podCIDR":"example","serviceCIDR":"example","existingNetwork":"example"},"nodePools":[{"name":"example","source":"managed","machineType":"example","image":{"additionalProperty":"example"},"minimum":0,"maximum":3,"publicIP":true}]}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url https://example.com/api/v1/teams/example/clusters/example/ \ --header 'Content-Type: application/json' \ --cookie sessionid=<sessionid> \ --data '{ "spec": { "connectionRef": "example", "region": "example", "kubernetesVersion": "example", "hibernated": false, "controlPlaneHA": false, "plan": "monthly", "network": { "nodeCIDR": "10.250.0.0/16", "podCIDR": "example", "serviceCIDR": "example", "existingNetwork": "example" }, "nodePools": [ { "name": "example", "source": "managed", "machineType": "example", "image": { "additionalProperty": "example" }, "minimum": 0, "maximum": 3, "publicIP": true } ] } }'Writes desired intent. A changed spec returns 202 + an Operation to poll; an unchanged spec is a 200 no-op (docs/58 §5.5).
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Request Body required
Section titled “Request Body required ”Request body for PUT …/clusters/{name} — the spec is nested under spec (docs/58 §5).
object
Validates a Cluster spec on PUT (docs/58 §3.4). Names/region/connection immutability and
pooled-pool invariants are enforced in the viewset against the existing row.
object
object
10.250.0.0/16- 10.250.0.0/16172.18.0.0/16- 172.18.0.0/16192.168.128.0/17- 192.168.128.0/17
object
object
Request body for PUT …/clusters/{name} — the spec is nested under spec (docs/58 §5).
object
Validates a Cluster spec on PUT (docs/58 §3.4). Names/region/connection immutability and
pooled-pool invariants are enforced in the viewset against the existing row.
object
object
10.250.0.0/16- 10.250.0.0/16172.18.0.0/16- 172.18.0.0/16192.168.128.0/17- 192.168.128.0/17
object
object
Request body for PUT …/clusters/{name} — the spec is nested under spec (docs/58 §5).
object
Validates a Cluster spec on PUT (docs/58 §3.4). Names/region/connection immutability and
pooled-pool invariants are enforced in the viewset against the existing row.
object
object
10.250.0.0/16- 10.250.0.0/16172.18.0.0/16- 172.18.0.0/16192.168.128.0/17- 192.168.128.0/17
object
object
Responses
Section titled “ Responses ”A Cluster resource (docs/58 §3.2): {apiVersion, kind, metadata, spec, status}.
object
object
object
object
object
object
Example generated
{ "apiVersion": "example", "kind": "example", "metadata": { "name": "example", "id": "example", "team": "example", "generation": 1, "observedGeneration": 1, "etag": "example", "createdAt": "2026-04-15T12:00:00Z", "updatedAt": "2026-04-15T12:00:00Z" }, "spec": { "additionalProperty": "example" }, "status": { "phase": "example", "seedName": "example", "conditions": [ { "additionalProperty": "example" } ], "migrationPhase": "example", "cost": { "additionalProperty": "example" } }}202 Accepted body for a mutating call (docs/58 §5.3): the queued Operation + the
resource as last observed.
object
An async Operation resource (docs/58 §3.11, §5.3) — poll to convergence.
object
object
object
A Cluster resource (docs/58 §3.2): {apiVersion, kind, metadata, spec, status}.
object
object
object
object
object
object
Example generated
{ "operation": { "id": "example", "kind": "example", "target": { "additionalProperty": "example" }, "state": "example", "progress": 1, "error": { "additionalProperty": "example" }, "desiredHash": "example", "createdAt": "2026-04-15T12:00:00Z", "updatedAt": "2026-04-15T12:00:00Z", "self": "example" }, "resource": { "apiVersion": "example", "kind": "example", "metadata": { "name": "example", "id": "example", "team": "example", "generation": 1, "observedGeneration": 1, "etag": "example", "createdAt": "2026-04-15T12:00:00Z", "updatedAt": "2026-04-15T12:00:00Z" }, "spec": { "additionalProperty": "example" }, "status": { "phase": "example", "seedName": "example", "conditions": [ { "additionalProperty": "example" } ], "migrationPhase": "example", "cost": { "additionalProperty": "example" } } }}RFC 7807 problem document
RFC 7807 application/problem+json — every non-2xx response (docs/58 §5.10).
object
Stable machine code clients switch on
Example generated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "instance": "example", "operationId": "example"}RFC 7807 problem document
RFC 7807 application/problem+json — every non-2xx response (docs/58 §5.10).
object
Stable machine code clients switch on
Example generated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "instance": "example", "operationId": "example"}RFC 7807 problem document
RFC 7807 application/problem+json — every non-2xx response (docs/58 §5.10).
object
Stable machine code clients switch on
Example generated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "instance": "example", "operationId": "example"}