Skip to content
NebulaCtrldocs
HTTP APIEndpoints

Clusters

Clusters, their nodes and agents, and the commands that install, join and upgrade them. Each operation lists its method and path, parameters, request body, responses and an example call.

GET/api/v1/cluster-events

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Query Parameters

cursor?string

Opaque cursor from a previous response's nextCursor. Omit for the first page.

limit?integer

How many items to return.

Formatint64
Range1 <= value <= 200
Default50

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/cluster-events"
{  "$schema": "https://example.com/PageOrganizationEventBody.json",  "items": [    {      "at": "2019-08-24T14:15:22Z",      "clusterId": "string",      "environmentId": "string",      "id": "string",      "kind": "string",      "payload": null,      "releaseId": "string",      "serviceId": "string"    }  ],  "nextCursor": "string"}
GET/api/v1/clusters

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Query Parameters

cursor?string

Opaque cursor from a previous response's nextCursor. Omit for the first page.

limit?integer

How many items to return.

Formatint64
Range1 <= value <= 200
Default50
include?"summary"

Set to "summary" to include per-cluster fleet summary fields.

Value in

  • "summary"

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/clusters"
{  "$schema": "https://example.com/PageClusterBody.json",  "items": [    {      "$schema": "https://example.com/ClusterBody.json",      "agentVersion": "string",      "apiServerUrl": "string",      "appliedRevision": 0,      "capabilities": {        "buildOptions": true,        "buildRegistry": true,        "builderAuto": true,        "certificateSecrets": true,        "cloudNativePG": true,        "cloudNativePGBackupPlugin": true,        "databaseRestore": true,        "defaultStorageClass": "string",        "edgeFronting": true,        "edgeIngressIPs": [          "string"        ],        "expandableStorageClasses": [          "string"        ],        "fileMounts": true,        "heldSpecs": true,        "heldSuspend": true,        "ingressIPs": [          "string"        ],        "kindMetrics": true,        "metricsServer": true,        "nodeTailscale": true,        "processArgs": true,        "railpackBuilds": true,        "releaseCommand": true,        "storageClasses": [          "string"        ],        "tailscale": true,        "tailscaleEgressProxyGroup": "string",        "traefik": true,        "traefikCertResolvers": [          "string"        ],        "trafficMetrics": true      },      "compileError": "string",      "createdAt": "2019-08-24T14:15:22Z",      "desiredRevision": 0,      "haState": "single",      "highlyAvailable": true,      "id": "string",      "k3sUpdate": {        "current": "string",        "minor": {          "version": "string"        },        "patch": {          "version": "string"        }      },      "k3sVersion": "string",      "lastHeartbeatAt": "2019-08-24T14:15:22Z",      "meshIndex": 0,      "name": "string",      "nodeCount": 0,      "podCidr": "string",      "reconcileError": "string",      "region": "string",      "schedulable": true,      "serverCount": 0,      "serviceCidr": "string",      "slug": "string",      "status": "awaiting-agent",      "summary": {        "agentUpdateAvailable": true,        "nodesReady": 0,        "nodesTotal": 0,        "workloads": 0      }    }  ],  "nextCursor": "string"}
POST/api/v1/clusters

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "$schema": "https://example.com/CreateClusterBody.json",  "cluster": {    "$schema": "https://example.com/ClusterBody.json",    "agentVersion": "string",    "apiServerUrl": "string",    "appliedRevision": 0,    "capabilities": {      "buildOptions": true,      "buildRegistry": true,      "builderAuto": true,      "certificateSecrets": true,      "cloudNativePG": true,      "cloudNativePGBackupPlugin": true,      "databaseRestore": true,      "defaultStorageClass": "string",      "edgeFronting": true,      "edgeIngressIPs": [        "string"      ],      "expandableStorageClasses": [        "string"      ],      "fileMounts": true,      "heldSpecs": true,      "heldSuspend": true,      "ingressIPs": [        "string"      ],      "kindMetrics": true,      "metricsServer": true,      "nodeTailscale": true,      "processArgs": true,      "railpackBuilds": true,      "releaseCommand": true,      "storageClasses": [        "string"      ],      "tailscale": true,      "tailscaleEgressProxyGroup": "string",      "traefik": true,      "traefikCertResolvers": [        "string"      ],      "trafficMetrics": true    },    "compileError": "string",    "createdAt": "2019-08-24T14:15:22Z",    "desiredRevision": 0,    "haState": "single",    "highlyAvailable": true,    "id": "string",    "k3sUpdate": {      "current": "string",      "minor": {        "version": "string"      },      "patch": {        "version": "string"      }    },    "k3sVersion": "string",    "lastHeartbeatAt": "2019-08-24T14:15:22Z",    "meshIndex": 0,    "name": "string",    "nodeCount": 0,    "podCidr": "string",    "reconcileError": "string",    "region": "string",    "schedulable": true,    "serverCount": 0,    "serviceCidr": "string",    "slug": "string",    "status": "awaiting-agent",    "summary": {      "agentUpdateAvailable": true,      "nodesReady": 0,      "nodesTotal": 0,      "workloads": 0    }  },  "expiresAt": "2019-08-24T14:15:22Z",  "installCommand": "string",  "token": "string"}
GET/api/v1/clusters/ssh-key

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/clusters/ssh-key"
{  "$schema": "https://example.com/SshKeyBody.json",  "publicKey": "string"}

Get one cluster.

GET/api/v1/clusters/{id}

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/clusters/string"
{  "$schema": "https://example.com/ClusterBody.json",  "agentVersion": "string",  "apiServerUrl": "string",  "appliedRevision": 0,  "capabilities": {    "buildOptions": true,    "buildRegistry": true,    "builderAuto": true,    "certificateSecrets": true,    "cloudNativePG": true,    "cloudNativePGBackupPlugin": true,    "databaseRestore": true,    "defaultStorageClass": "string",    "edgeFronting": true,    "edgeIngressIPs": [      "string"    ],    "expandableStorageClasses": [      "string"    ],    "fileMounts": true,    "heldSpecs": true,    "heldSuspend": true,    "ingressIPs": [      "string"    ],    "kindMetrics": true,    "metricsServer": true,    "nodeTailscale": true,    "processArgs": true,    "railpackBuilds": true,    "releaseCommand": true,    "storageClasses": [      "string"    ],    "tailscale": true,    "tailscaleEgressProxyGroup": "string",    "traefik": true,    "traefikCertResolvers": [      "string"    ],    "trafficMetrics": true  },  "compileError": "string",  "createdAt": "2019-08-24T14:15:22Z",  "desiredRevision": 0,  "haState": "single",  "highlyAvailable": true,  "id": "string",  "k3sUpdate": {    "current": "string",    "minor": {      "version": "string"    },    "patch": {      "version": "string"    }  },  "k3sVersion": "string",  "lastHeartbeatAt": "2019-08-24T14:15:22Z",  "meshIndex": 0,  "name": "string",  "nodeCount": 0,  "podCidr": "string",  "reconcileError": "string",  "region": "string",  "schedulable": true,  "serverCount": 0,  "serviceCidr": "string",  "slug": "string",  "status": "awaiting-agent",  "summary": {    "agentUpdateAvailable": true,    "nodesReady": 0,    "nodesTotal": 0,    "workloads": 0  }}
PATCH/api/v1/clusters/{id}

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

curl -X PATCH "https://example.com/api/v1/clusters/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "$schema": "https://example.com/ClusterBody.json",  "agentVersion": "string",  "apiServerUrl": "string",  "appliedRevision": 0,  "capabilities": {    "buildOptions": true,    "buildRegistry": true,    "builderAuto": true,    "certificateSecrets": true,    "cloudNativePG": true,    "cloudNativePGBackupPlugin": true,    "databaseRestore": true,    "defaultStorageClass": "string",    "edgeFronting": true,    "edgeIngressIPs": [      "string"    ],    "expandableStorageClasses": [      "string"    ],    "fileMounts": true,    "heldSpecs": true,    "heldSuspend": true,    "ingressIPs": [      "string"    ],    "kindMetrics": true,    "metricsServer": true,    "nodeTailscale": true,    "processArgs": true,    "railpackBuilds": true,    "releaseCommand": true,    "storageClasses": [      "string"    ],    "tailscale": true,    "tailscaleEgressProxyGroup": "string",    "traefik": true,    "traefikCertResolvers": [      "string"    ],    "trafficMetrics": true  },  "compileError": "string",  "createdAt": "2019-08-24T14:15:22Z",  "desiredRevision": 0,  "haState": "single",  "highlyAvailable": true,  "id": "string",  "k3sUpdate": {    "current": "string",    "minor": {      "version": "string"    },    "patch": {      "version": "string"    }  },  "k3sVersion": "string",  "lastHeartbeatAt": "2019-08-24T14:15:22Z",  "meshIndex": 0,  "name": "string",  "nodeCount": 0,  "podCidr": "string",  "reconcileError": "string",  "region": "string",  "schedulable": true,  "serverCount": 0,  "serviceCidr": "string",  "slug": "string",  "status": "awaiting-agent",  "summary": {    "agentUpdateAvailable": true,    "nodesReady": 0,    "nodesTotal": 0,    "workloads": 0  }}
DELETE/api/v1/clusters/{id}

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/problem+json

curl -X DELETE "https://example.com/api/v1/clusters/string"
Empty
GET/api/v1/clusters/{id}/agent

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/clusters/string/agent"
{  "$schema": "https://example.com/AgentStatusBody.json",  "availableImage": "string",  "currentImage": "string",  "currentVersion": "string",  "history": [    {      "$schema": "https://example.com/AgentUpdateAttemptBody.json",      "finishedAt": "2019-08-24T14:15:22Z",      "fromImage": "string",      "id": "string",      "kind": "string",      "message": "string",      "startedAt": "2019-08-24T14:15:22Z",      "status": "string",      "toImage": "string"    }  ],  "inProgress": {    "id": "string",    "startedAt": "2019-08-24T14:15:22Z",    "toImage": "string"  },  "updateAvailable": true}
POST/api/v1/clusters/{id}/agent/rollback

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters/string/agent/rollback" \  -H "Content-Type: application/json" \  -d '{    "image": "string"  }'
{  "$schema": "https://example.com/AgentUpdateAttemptBody.json",  "finishedAt": "2019-08-24T14:15:22Z",  "fromImage": "string",  "id": "string",  "kind": "string",  "message": "string",  "startedAt": "2019-08-24T14:15:22Z",  "status": "string",  "toImage": "string"}
POST/api/v1/clusters/{id}/agent/update

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters/string/agent/update" \  -H "Content-Type: application/json" \  -d '{}'
{  "$schema": "https://example.com/AgentUpdateAttemptBody.json",  "finishedAt": "2019-08-24T14:15:22Z",  "fromImage": "string",  "id": "string",  "kind": "string",  "message": "string",  "startedAt": "2019-08-24T14:15:22Z",  "status": "string",  "toImage": "string"}
POST/api/v1/clusters/{id}/cnpg

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters/string/cnpg"
{  "$schema": "https://example.com/HostScriptCommandBody.json",  "command": "string",  "expiresAt": "2019-08-24T14:15:22Z",  "token": "string"}
POST/api/v1/clusters/{id}/enrollment-token

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters/string/enrollment-token"
{  "$schema": "https://example.com/EnrollmentTokenBody.json",  "expiresAt": "2019-08-24T14:15:22Z",  "installCommand": "string",  "token": "string"}
GET/api/v1/clusters/{id}/events

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Query Parameters

cursor?string

Opaque cursor from a previous response's nextCursor. Omit for the first page.

limit?integer

How many items to return.

Formatint64
Range1 <= value <= 200
Default50

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/clusters/string/events"
{  "$schema": "https://example.com/PageEventBody.json",  "items": [    {      "at": "2019-08-24T14:15:22Z",      "environmentId": "string",      "id": "string",      "kind": "string",      "payload": null,      "releaseId": "string",      "serviceId": "string"    }  ],  "nextCursor": "string"}
POST/api/v1/clusters/{id}/high-availability

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters/string/high-availability"
{  "$schema": "https://example.com/HighAvailabilityBody.json",  "retrofit": {    "$schema": "https://example.com/HostScriptCommandBody.json",    "command": "string",    "expiresAt": "2019-08-24T14:15:22Z",    "token": "string"  },  "serverJoins": [    {      "expiresAt": "2019-08-24T14:15:22Z",      "installCommand": "string",      "token": "string"    },    {      "expiresAt": "2019-08-24T14:15:22Z",      "installCommand": "string",      "token": "string"    }  ]}
GET/api/v1/clusters/{id}/install

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/clusters/string/install"
{  "$schema": "https://example.com/InstallStepsBody.json",  "steps": [    {      "logTail": "string",      "message": "string",      "nodeName": "string",      "status": "string",      "step": "string",      "updatedAt": "2019-08-24T14:15:22Z"    }  ]}
POST/api/v1/clusters/{id}/join-command

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters/string/join-command" \  -H "Content-Type: application/json" \  -d '{}'
{  "$schema": "https://example.com/JoinCommandBody.json",  "expiresAt": "2019-08-24T14:15:22Z",  "installCommand": "string",  "joinTokenId": "string",  "token": "string"}
GET/api/v1/clusters/{id}/k3s-upgrade

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/clusters/string/k3s-upgrade"
{  "$schema": "https://example.com/K3sUpgradeBody.json",  "checkError": "string",  "checkedAt": "2019-08-24T14:15:22Z",  "checks": [    {      "detail": "string",      "name": "string",      "state": "ok"    }  ],  "current": "string",  "minor": {    "version": "string"  },  "minorSteps": [    {      "command": "string",      "detail": "string",      "title": "string"    }  ],  "minorsBehindStable": 0,  "nodes": [    {      "name": "string",      "ready": true,      "role": "server",      "version": "string"    }  ],  "patch": {    "version": "string"  },  "patchSteps": [    {      "command": "string",      "detail": "string",      "title": "string"    }  ]}
GET/api/v1/clusters/{id}/metrics

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Query Parameters

window?string

Trailing window to report.

Value in

  • "1h"
  • "6h"
  • "24h"

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/clusters/string/metrics"
{  "$schema": "https://example.com/ClusterMetricsBody.json",  "samples": [    {      "allocatableCpuMilli": 0,      "allocatableMemoryBytes": 0,      "allocatedCpuMilli": 0,      "allocatedMemoryBytes": 0,      "at": "2019-08-24T14:15:22Z"    }  ]}

List a cluster's nodes.

GET/api/v1/clusters/{id}/nodes

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Query Parameters

cursor?string

Opaque cursor from a previous response's nextCursor. Omit for the first page.

limit?integer

How many items to return.

Formatint64
Range1 <= value <= 200
Default50

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/clusters/string/nodes"
{  "$schema": "https://example.com/PageNodeBody.json",  "items": [    {      "address": "string",      "allocatable": {        "cpuMilli": 0,        "ephemeralBytes": 0,        "memoryBytes": 0,        "pods": 0      },      "allocated": {        "cpuMilli": 0,        "ephemeralBytes": 0,        "memoryBytes": 0,        "pods": 0      },      "conditions": [        {          "lastTransition": "2019-08-24T14:15:22Z",          "message": "string",          "reason": "string",          "status": "string",          "type": "string"        }      ],      "containerRuntime": "string",      "createdAt": "2019-08-24T14:15:22Z",      "labels": {        "property1": "string",        "property2": "string"      },      "name": "string",      "ready": true,      "region": "string",      "roles": [        "string"      ],      "taints": [        {          "effect": "string",          "key": "string",          "value": "string"        }      ],      "unschedulable": true,      "updatedAt": "2019-08-24T14:15:22Z"    }  ],  "nextCursor": "string"}
POST/api/v1/clusters/{id}/nodes/{name}/cordon

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string
name*string

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters/string/nodes/string/cordon"
{  "$schema": "https://example.com/Command.json",  "buildId": "string",  "database": {    "maxRows": 0,    "query": "string",    "target": {      "database": "string",      "engine": "string",      "image": "string",      "namespace": "string",      "password": "string",      "port": 0,      "runAsUser": 0,      "serviceSlug": "string",      "username": "string"    },    "timeoutMillis": 0  },  "environmentId": "string",  "id": "string",  "image": "string",  "kind": "string",  "node": "string",  "pod": "string",  "process": "string",  "releaseId": "string",  "role": "string",  "serviceId": "string",  "volume": {    "database": {      "database": "string",      "engine": "string",      "image": "string",      "namespace": "string",      "password": "string",      "port": 0,      "runAsUser": 0,      "serviceSlug": "string",      "username": "string"    },    "environmentId": "string",    "expectedSha256": "string",    "jobId": "string",    "method": "string",    "namespace": "string",    "objectKey": "string",    "quiesce": true,    "serviceId": "string",    "serviceSlug": "string",    "store": {      "accessKeyId": "string",      "bucket": "string",      "endpoint": "string",      "forcePathStyle": true,      "region": "string",      "secretAccessKey": "string"    },    "volume": {      "mountPath": "string",      "name": "string",      "sizeBytes": 0,      "storageClass": "string"    }  }}
POST/api/v1/clusters/{id}/nodes/{name}/drain

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string
name*string

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters/string/nodes/string/drain"
{  "$schema": "https://example.com/Command.json",  "buildId": "string",  "database": {    "maxRows": 0,    "query": "string",    "target": {      "database": "string",      "engine": "string",      "image": "string",      "namespace": "string",      "password": "string",      "port": 0,      "runAsUser": 0,      "serviceSlug": "string",      "username": "string"    },    "timeoutMillis": 0  },  "environmentId": "string",  "id": "string",  "image": "string",  "kind": "string",  "node": "string",  "pod": "string",  "process": "string",  "releaseId": "string",  "role": "string",  "serviceId": "string",  "volume": {    "database": {      "database": "string",      "engine": "string",      "image": "string",      "namespace": "string",      "password": "string",      "port": 0,      "runAsUser": 0,      "serviceSlug": "string",      "username": "string"    },    "environmentId": "string",    "expectedSha256": "string",    "jobId": "string",    "method": "string",    "namespace": "string",    "objectKey": "string",    "quiesce": true,    "serviceId": "string",    "serviceSlug": "string",    "store": {      "accessKeyId": "string",      "bucket": "string",      "endpoint": "string",      "forcePathStyle": true,      "region": "string",      "secretAccessKey": "string"    },    "volume": {      "mountPath": "string",      "name": "string",      "sizeBytes": 0,      "storageClass": "string"    }  }}
POST/api/v1/clusters/{id}/nodes/{name}/uncordon

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string
name*string

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters/string/nodes/string/uncordon"
{  "$schema": "https://example.com/Command.json",  "buildId": "string",  "database": {    "maxRows": 0,    "query": "string",    "target": {      "database": "string",      "engine": "string",      "image": "string",      "namespace": "string",      "password": "string",      "port": 0,      "runAsUser": 0,      "serviceSlug": "string",      "username": "string"    },    "timeoutMillis": 0  },  "environmentId": "string",  "id": "string",  "image": "string",  "kind": "string",  "node": "string",  "pod": "string",  "process": "string",  "releaseId": "string",  "role": "string",  "serviceId": "string",  "volume": {    "database": {      "database": "string",      "engine": "string",      "image": "string",      "namespace": "string",      "password": "string",      "port": 0,      "runAsUser": 0,      "serviceSlug": "string",      "username": "string"    },    "environmentId": "string",    "expectedSha256": "string",    "jobId": "string",    "method": "string",    "namespace": "string",    "objectKey": "string",    "quiesce": true,    "serviceId": "string",    "serviceSlug": "string",    "store": {      "accessKeyId": "string",      "bucket": "string",      "endpoint": "string",      "forcePathStyle": true,      "region": "string",      "secretAccessKey": "string"    },    "volume": {      "mountPath": "string",      "name": "string",      "sizeBytes": 0,      "storageClass": "string"    }  }}
POST/api/v1/clusters/{id}/ssh-installs

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters/string/ssh-installs" \  -H "Content-Type: application/json" \  -d '{    "host": "string",    "username": "string"  }'
{  "$schema": "https://example.com/SshInstallBody.json",  "clusterId": "string",  "createdAt": "2019-08-24T14:15:22Z",  "fingerprint": "string",  "host": "string",  "hostKeyType": "string",  "id": "string",  "joinTokenId": "string",  "labels": {    "property1": "string",    "property2": "string"  },  "message": "string",  "port": 0,  "status": "fingerprint",  "updatedAt": "2019-08-24T14:15:22Z",  "username": "string"}
POST/api/v1/clusters/{id}/tailscale

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/clusters/string/tailscale" \  -H "Content-Type: application/json" \  -d '{    "clientId": "string",    "clientSecret": "string"  }'
{  "$schema": "https://example.com/TailscaleConnectBody.json",  "command": "string",  "expiresAt": "2019-08-24T14:15:22Z",  "token": "string"}
GET/api/v1/clusters/{id}/workloads

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Query Parameters

cursor?string

Opaque cursor from a previous response's nextCursor. Omit for the first page.

limit?integer

How many items to return.

Formatint64
Range1 <= value <= 200
Default50

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/clusters/string/workloads"
{  "$schema": "https://example.com/PageWorkloadBody.json",  "items": [    {      "environmentId": "string",      "environmentSlug": "string",      "namespace": "string",      "production": true,      "serviceId": "string",      "serviceName": "string",      "serviceSlug": "string"    }  ],  "nextCursor": "string"}
GET/api/v1/join-tokens

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Query Parameters

cursor?string

Opaque cursor from a previous response's nextCursor. Omit for the first page.

limit?integer

How many items to return.

Formatint64
Range1 <= value <= 200
Default50

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/join-tokens"
{  "$schema": "https://example.com/PageJoinTokenBody.json",  "items": [    {      "$schema": "https://example.com/JoinTokenBody.json",      "clusterId": "string",      "createdAt": "2019-08-24T14:15:22Z",      "createdBy": "string",      "expiresAt": "2019-08-24T14:15:22Z",      "gateway": true,      "id": "string",      "labels": {        "property1": "string",        "property2": "string"      },      "prefix": "string",      "purpose": "join",      "revokedAt": "2019-08-24T14:15:22Z",      "role": "worker",      "status": "active",      "usedAt": "2019-08-24T14:15:22Z",      "usedByNode": "string"    }  ],  "nextCursor": "string"}
DELETE/api/v1/join-tokens/{id}

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X DELETE "https://example.com/api/v1/join-tokens/string"
{  "$schema": "https://example.com/JoinTokenBody.json",  "clusterId": "string",  "createdAt": "2019-08-24T14:15:22Z",  "createdBy": "string",  "expiresAt": "2019-08-24T14:15:22Z",  "gateway": true,  "id": "string",  "labels": {    "property1": "string",    "property2": "string"  },  "prefix": "string",  "purpose": "join",  "revokedAt": "2019-08-24T14:15:22Z",  "role": "worker",  "status": "active",  "usedAt": "2019-08-24T14:15:22Z",  "usedByNode": "string"}
GET/api/v1/ssh-installs/{id}

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/ssh-installs/string"
{  "$schema": "https://example.com/SshInstallBody.json",  "clusterId": "string",  "createdAt": "2019-08-24T14:15:22Z",  "fingerprint": "string",  "host": "string",  "hostKeyType": "string",  "id": "string",  "joinTokenId": "string",  "labels": {    "property1": "string",    "property2": "string"  },  "message": "string",  "port": 0,  "status": "fingerprint",  "updatedAt": "2019-08-24T14:15:22Z",  "username": "string"}
POST/api/v1/ssh-installs/{id}/confirm

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/ssh-installs/string/confirm"
{  "$schema": "https://example.com/SshInstallBody.json",  "clusterId": "string",  "createdAt": "2019-08-24T14:15:22Z",  "fingerprint": "string",  "host": "string",  "hostKeyType": "string",  "id": "string",  "joinTokenId": "string",  "labels": {    "property1": "string",    "property2": "string"  },  "message": "string",  "port": 0,  "status": "fingerprint",  "updatedAt": "2019-08-24T14:15:22Z",  "username": "string"}