Get cluster connection API Reference
const url = 'https://api.kupe.cloud/api/v1/tenants/acme/registries/registry/bindings/prod';const options = {method: 'GET', headers: {Authorization: '<Authorization>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.kupe.cloud/api/v1/tenants/acme/registries/registry/bindings/prod \ --header 'Authorization: <Authorization>'Retrieve a cluster connection: its push namespaces and push Secret name, the usernames of its pull and push credentials, what was delivered into each push namespace, and its rotation state. Credentials are never returned.
Authorizations
Section titled “ Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ”Tenant name
Registry name: always registry
Cluster connection name: the cluster’s name
Responses
Section titled “ Responses ”Cluster connection details
object
Name is the cluster’s name.
PushNamespaces are the namespaces that hold a push credential (empty: pull only).
SecretName is the push credential Secret’s name in each push namespace.
object
object
Message gives detail; once Ready it says that pods running before the connection need a restart to pull.
Namespaces reports what was delivered into each push namespace. A namespace removed from pushNamespaces stays here until its Secret is withdrawn and the push credential is replaced; while the platform has the registry switched off or the tenant is suspended, the replacement, and with it the entry’s removal, waits until the registry is on and the tenant active again.
object
Message gives detail while the namespace is not Ready.
Phase is Ready only when pull works and every push namespace is Ready.
PullUsername is the registry username of the cluster’s pull credential.
PushUsername is the registry username of the push credential; empty without push namespaces.
object
Pending is true while RequestedAt differs from AppliedAt.
RequestedAt is the token of the last rotation requested; empty if none ever was.
Example
{ "cluster": "prod", "createdAt": "2026-10-21T10:05:00Z", "name": "prod", "pushNamespaces": [ "ci" ], "registry": "registry", "resourceVersion": "582020", "secretName": "kupe-registry-push", "status": { "message": "", "namespaces": [ { "message": "", "name": "ci", "phase": "Pending" } ], "phase": "Pending", "pullUsername": "kupe+acme+pull-prod", "pushUsername": "kupe+acme+push-prod", "rotation": { "appliedAt": "2026-10-21T12:00:00.123456789Z", "pending": false, "requestedAt": "2026-10-21T12:00:00.123456789Z" } }}Headers
Section titled “ Headers ”Resource version
Invalid name
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"}Not a member of this tenant
object
Example generated
{ "code": "example", "error": "example", "field": "example", "message": "example", "severity": "example"}Cluster connection not found for this registry
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"}