List cluster connections API Reference
const url = 'https://api.kupe.cloud/api/v1/tenants/acme/registries/registry/bindings';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 \ --header 'Authorization: <Authorization>'List the clusters connected to the registry: each one’s pods can pull from it, and its push namespaces hold a push credential. Credentials are never returned. Served even while the platform has the registry switched off.
Authorizations
Section titled “ Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ”Tenant name
Registry name: always registry
Responses
Section titled “ Responses ”List of cluster connections
object
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
{ "items": [ { "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" } } } ]}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"}Registry not found
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"}