Update cluster API Reference
const url = 'https://api.kupe.cloud/api/v1/tenants/acme/clusters/production';const options = { method: 'PATCH', headers: { 'If-Match': '294810', Authorization: '<Authorization>', 'Content-Type': 'application/json' }, body: '{"alerts":{},"highAvailability":true,"resources":{"cpu":"4","memory":"16Gi","storage":"100Gi"},"version":"1.33"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.kupe.cloud/api/v1/tenants/acme/clusters/production \ --header 'Authorization: <Authorization>' \ --header 'Content-Type: application/json' \ --header 'If-Match: 294810' \ --data '{ "alerts": {}, "highAvailability": true, "resources": { "cpu": "4", "memory": "16Gi", "storage": "100Gi" }, "version": "1.33" }'Update mutable fields on a managed cluster. At least one field must be provided.
Authorizations
Section titled “ Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ”Tenant name
Cluster name
Header Parameters
Section titled “ Header Parameters ”ETag for optimistic locking
Request Body
Section titled “ Request Body ”Fields to update (at least one required)
object
Updated alert configuration
object
HighAvailability is a create-time-only setting in v1. Both directions of the toggle are rejected on PATCH: false -> true is rejected with HA_ENABLE_ON_EXISTING_UNSUPPORTED; true -> false is rejected with HA_DISABLE_UNSUPPORTED. Tenants who want HA on an existing cluster recreate it as HA (blue-green swap).
Example
trueUpdated resource allocations
object
Example
4Example
16GiExample
100GiTarget Kubernetes version for upgrade
Example
1.33Responses
Section titled “ Responses ”Updated cluster
object
object
Deprecated: always equal to name (the CRD has no display name; the cluster name is the identifier).
object
object
object
HAPhase is the consumer-friendly HA rollup. One of pending, ha-healthy, ha-degraded, ha-unavailable. Empty for non-HA clusters.
object
Warnings is an array of structured advisory messages. Always present (empty array when none). Populated today only by CREATE when a non-blocking advisory applies (e.g. HA_K8S_VERSION_RETIRING when HA is enabled on the oldest supported k8s minor). Each entry shares the same shape as a structured error envelope.
object
Example
{ "createdAt": "2026-02-01T14:00:00Z", "displayName": "production", "highAvailability": true, "name": "production", "resourceVersion": "294810", "resources": { "cpu": "4", "memory": "16Gi", "storage": "100Gi" }, "status": { "endpoint": "https://production.acme.clusters.kupe.cloud", "haConfigured": true, "haPhase": "ha-healthy", "kubernetesVersion": "v1.32.3", "phase": "Running" }, "version": "1.32", "warnings": [ { "code": "HA_K8S_VERSION_RETIRING", "field": "spec.highAvailability", "message": "Cluster's Kubernetes version (1.33) is approaching end-of-life on this platform. Plan an upgrade before enabling high availability.", "severity": "warning" } ]}Headers
Section titled “ Headers ”New resource version
Validation error
object
Example generated
{ "code": "example", "error": "example", "field": "example", "message": "example", "severity": "example"}Missing or invalid authentication
object
Example generated
{ "code": "example", "error": "example", "field": "example", "message": "example", "severity": "example"}Admin access required
object
Example generated
{ "code": "example", "error": "example", "field": "example", "message": "example", "severity": "example"}Cluster not found
object
Example generated
{ "code": "example", "error": "example", "field": "example", "message": "example", "severity": "example"}The cluster is being deleted (code terminating); a change that grows it while the tenant is suspended, awaiting a payment method or being deleted (codes tenant_suspended, payment_setup_required, tenant_terminating); or the cluster kept changing while it was being updated
object
Example generated
{ "code": "example", "error": "example", "field": "example", "message": "example", "severity": "example"}ETag mismatch
object
Example generated
{ "code": "example", "error": "example", "field": "example", "message": "example", "severity": "example"}Rate limit exceeded
object
Example generated
{ "code": "example", "error": "example", "field": "example", "message": "example", "severity": "example"}