Instance settings

The instance: version and updates, the console domain, Traefik, cleanup, GPUs, branding and health.

Applies to: Mostly self-hosted

Settings of the Cloudgate instance itself and the machine it runs on (the platform host). Most writes here are for an owner or admin of the instance organization, the first Organization made on the instance.

Every request goes to https://cloudgate.octabyte.app/backend on the Hosted instance, or to your console address followed by /backend when you self-host. Send a Personal key in x-api-key and the Organization in x-organization-id; Authentication shows how to make the key, and Errors explains every refusal. The examples setCLOUDGATE_KEY and CLOUDGATE_ORG_ID in the shell first. To do the same in the console, read Instance settings in the user guide.

About

Identify the instance

GET/settings/about

Who can call it: Public: no key needed.

Responses

200 OK
Public. Names this as a Cloudgate, its server version, the API's own origin for WebSockets (null when CLOUDGATE_API_URL is unset), and whether this is the Hosted instance or a Self-hosted one.
Fields of the 200 answer
FieldTypeNotes
productalwaysstringOne of cloudgate.
versionalwaysstring
apiUrlalwaysstring or null
modestringOne of hosted, self-hosted.
curl https://cloudgate.octabyte.app/backend/settings/about

Settings

Get web server settings

GET/settings/web-server

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/web-server \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Get white-labeling config

GET/settings/whitelabeling

The instance's branding.

Who can call it: Public: no key needed.

Responses

200 OK
The result, as JSON.
curl https://cloudgate.octabyte.app/backend/settings/whitelabeling

Update white-labeling config

PATCH/settings/whitelabeling

Rebrand the instance: enterprise-gated in the service, like the other enterprise surfaces. A merge, not a replace — an omitted key keeps its stored value and an explicit null clears it.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
appNamestring or nullUp to 120 characters.
logoUrlstring or nullUp to 2048 characters.
faviconUrlstring or nullUp to 2048 characters.
primaryColorstring or nullMatches ^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$.
accentColorstring or nullMatches ^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$.
customCssstring or nullUp to 50000 characters.
errorPagesobject
errorPages.notFoundMessagestring or nullUp to 500 characters.
errorPages.serverErrorMessagestring or nullUp to 500 characters.
errorPages.supportUrlstring or nullUp to 2048 characters.

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/settings/whitelabeling \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appName": "storefront",
    "logoUrl": "https://northwind.dev",
    "faviconUrl": "https://northwind.dev"
  }'

Get the server IP

GET/settings/ip

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/ip \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Update server IP

POST/settings/ip

Sets the platform host's IP on the settings singleton; owners and admins of the instance organization only.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIprequiredstring

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/ip \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverIp": "example"
  }'

Update builds concurrency

POST/settings/builds-concurrency

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
buildsConcurrencyrequiredinteger1 to 100.

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/builds-concurrency \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "buildsConcurrency": 1
  }'

Update cloud runs concurrency

POST/settings/cloud-runs-concurrency

The Cloud run pool limit, gated like Concurrent builds.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
cloudRunsConcurrencyrequiredinteger1 to 20.

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cloud-runs-concurrency \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "cloudRunsConcurrency": 1
  }'

Update cloud run time limit

POST/settings/cloud-run-time-limit

The Cloud run time limit, gated like Concurrent builds.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
cloudRunTimeLimitMinutesrequiredinteger5 to 1440.

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cloud-run-time-limit \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "cloudRunTimeLimitMinutes": 5
  }'

Update requested preview max TTL

POST/settings/requested-preview-max-ttl

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
requestedPreviewMaxTtlMinutesrequiredinteger1 to 10080.

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/requested-preview-max-ttl \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "requestedPreviewMaxTtlMinutes": 1
  }'

Read Traefik config

GET/settings/traefik/config

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/config \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Update Traefik config

POST/settings/traefik/config

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
traefikConfigrequiredstringNot empty.

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/config \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "traefikConfig": "example"
  }'

Read web server Traefik config

GET/settings/traefik/web-server-config

Reads the console's dynamic/cloudgate.yml; owners and admins of the instance organization only.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/web-server-config \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Update web server Traefik config

POST/settings/traefik/web-server-config

Overwrites dynamic/cloudgate.yml with raw YAML; owners and admins of the instance organization only.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
traefikConfigrequiredstringNot empty.

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/web-server-config \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "traefikConfig": "example"
  }'

Read middleware Traefik config

GET/settings/traefik/middlewares-config

Reads dynamic/middlewares.yml; owners and admins of the instance organization only.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/middlewares-config \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Update middleware Traefik config

POST/settings/traefik/middlewares-config

Overwrites dynamic/middlewares.yml with raw YAML; owners and admins of the instance organization only.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
traefikConfigrequiredstringNot empty.

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/middlewares-config \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "traefikConfig": "example"
  }'

Read directories

GET/settings/traefik/directories

Lists the Traefik directory tree of the platform host or of the Server serverId names (traefikFiles:read; the host takes the instance organization’s owners and admins).

Who can call it: Owner or Admin. Needs traefikFiles: read, which a custom role can also grant.

Parameters

NameInTypeNotes
serverIdquerystring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 Your role does not allow it, or you were not granted what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/directories \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Read Traefik file

GET/settings/traefik/file

Reads one file under the Traefik directory by path (traefikFiles:read; serverId org-scoped, the host takes the instance organization’s owners and admins). A file holding private-key material is refused, and htpasswd entries come back redacted.

Who can call it: Owner or Admin. Needs traefikFiles: read, which a custom role can also grant.

Parameters

NameInTypeNotes
pathrequiredquerystringNot empty.
serverIdquerystring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 Your role does not allow it, or you were not granted what it touches. The error body.
curl "https://cloudgate.octabyte.app/backend/settings/traefik/file?path=example" \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Update Traefik file

POST/settings/traefik/file

Writes one file under the Traefik directory by path (traefikFiles:write; serverId org-scoped, the host takes the instance organization’s owners and admins). A key file is refused, YAML is parsed before it is written, and a redacted htpasswd entry keeps its stored secret.

Who can call it: Owner or Admin. Needs traefikFiles: write, which a custom role can also grant.

Request body

FieldTypeNotes
pathrequiredstringNot empty.
traefikConfigrequiredstringNot empty.
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 Your role does not allow it, or you were not granted what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/file \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "path": "/",
    "traefikConfig": "example"
  }'

Get version

GET/settings/version

The running Cloudgate version (any authenticated user).

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/version \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Get release tag

GET/settings/release-tag

The image tag this instance runs (any authenticated user).

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/release-tag \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Check for a newer version

POST/settings/update-data

Compares the running version with the newest cloudgate/cloudgate tag on Docker Hub (any authenticated user). A POST, though it writes nothing.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/update-data \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Update Cloudgate

POST/settings/update-server

Pulls the newest cloudgate image and force-updates the service running this console.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/update-server \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Check GPU status

GET/settings/gpu

NVIDIA driver, runtime, CUDA and swarm GPU status of the platform host or the named Server.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Parameters

NameInTypeNotes
serverIdquerystring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/gpu \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Count GPUs

GET/settings/gpu/counts

The counts-only GPU read: cards advertised by ID and cards no running task holds, on the platform host or the named Server, read live.

Who can call it: Owner or Admin. Needs service: create, which a custom role can also grant.

Parameters

NameInTypeNotes
serverIdquerystring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 Your role does not allow it, or you were not granted what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/gpu/counts \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Set up GPU support

POST/settings/gpu-setup

Sets up swarm GPU support on the platform host or the named Server; a failure answers 400 with its message.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/gpu-setup \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverId": "Ni7mAbWKjbWy4KErPjtrY"
  }'

Check infrastructure health

GET/settings/infrastructure-health

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/infrastructure-health \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Get runtime info

GET/settings/runtime-info

What this install is actually running, declared beside observed.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Parameters

NameInTypeNotes
serverIdquerystring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/runtime-info \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Check liveness

GET/settings/health

Liveness: { status: 'ok' } once the database answers (public).

Who can call it: Public: no key needed.

Responses

200 OK
The result, as JSON.
curl https://cloudgate.octabyte.app/backend/settings/health

Check whether the Organization has Servers or Projects

GET/settings/is-user-subscribed

Whether the active org has servers or projects (any signed-in user).

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/is-user-subscribed \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Check whether the access log is on

GET/settings/traefik/requests

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Parameters

NameInTypeNotes
serverIdquerystring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/requests \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Turn the access log on or off

POST/settings/traefik/requests

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
enablerequiredboolean
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/requests \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "enable": true
  }'

Set the console's domain

POST/settings/assign-domain

Assigns the console's domain, certificate type and ACME email and rewrites dynamic/cloudgate.yml; owners and admins of the instance organization only. Answers with the sanitized row: the metrics agent token is projected out, and consoleOrigin says whether sign-in on the new domain will work.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
hostrequiredstring
certificateTyperequiredstringOne of letsencrypt, none, custom.
letsEncryptEmailstring (email) or string
httpsboolean

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/assign-domain \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "host": "shop.northwind.dev",
    "certificateType": "letsencrypt"
  }'

Get log cleanup status

GET/settings/log-cleanup

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/log-cleanup \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Update log cleanup

POST/settings/log-cleanup

Starts or stops the access-log rotation cron; owners and admins of the instance organization only.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
cronExpressionrequiredstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/log-cleanup \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "cronExpression": "0 3 * * *"
  }'

Clear the deployment queue

POST/settings/clean-deployment-queue

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/clean-deployment-queue \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Clean unused images

POST/settings/cleanup/images

docker image prune --all.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/images \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverId": "Ni7mAbWKjbWy4KErPjtrY"
  }'

Clean unused volumes

POST/settings/cleanup/volumes

docker volume prune --all.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/volumes \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverId": "Ni7mAbWKjbWy4KErPjtrY"
  }'

Clean stopped containers

POST/settings/cleanup/stopped-containers

docker container prune.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/stopped-containers \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverId": "Ni7mAbWKjbWy4KErPjtrY"
  }'

Clean Docker builder

POST/settings/cleanup/docker-builder

docker builder prune --all.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/docker-builder \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverId": "Ni7mAbWKjbWy4KErPjtrY"
  }'

Prune Docker system

POST/settings/cleanup/docker-prune

System prune + builder prune.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/docker-prune \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverId": "Ni7mAbWKjbWy4KErPjtrY"
  }'

Run every cleanup

POST/settings/cleanup/all

Every prune but volumes, backgrounded.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/all \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverId": "Ni7mAbWKjbWy4KErPjtrY"
  }'

Clear stored metrics

POST/settings/cleanup/monitoring

Deletes the platform host's stored samples — its server_metric and container_metric rows, every organization's containers on it included — and recreates its metrics directory. No serverId — the store is the instance's — so the instance organization’s owners and admins outright. A Server's samples are not touched; its own retention cleanup prunes them.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/cleanup/monitoring \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Get Docker disk usage

GET/settings/docker-disk-usage

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/docker-disk-usage \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Update Docker cleanup

POST/settings/docker-cleanup

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
enableDockerCleanuprequiredboolean
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/docker-cleanup \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "enableDockerCleanup": true
  }'

Reload server

POST/settings/reload-server

Force-updates the cloudgate service, which restarts the backend serving this request.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/reload-server \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Reload Traefik

POST/settings/traefik/reload

Restarts Traefik on the platform host or the named Server, fire-and-forget so the request returns before Traefik goes down (avoids proxy timeouts).

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/reload \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverId": "Ni7mAbWKjbWy4KErPjtrY"
  }'

Enable request metrics

POST/settings/traefik/request-metrics

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/request-metrics \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverId": "Ni7mAbWKjbWy4KErPjtrY"
  }'

Read Traefik env

GET/settings/traefik/env

Traefik's environment as KEY=value lines, less every key the machine's DNS-01 setup names: those are credentials, and a response carries a secret's presence, never its value. GET /settings/traefik/dns-challenge is where their names are answered.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Parameters

NameInTypeNotes
serverIdquerystring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/env \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Write Traefik env

POST/settings/traefik/env

Replaces Traefik's environment: resolve the env refs, keep the current ports, and recreate Traefik in the background.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
envrequiredstring
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/env \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "env": "NODE_ENV=production"
  }'

Read DNS challenge

GET/settings/traefik/dns-challenge

The machine's DNS-01 setup: { provider, credentialKeys }, or null when it has none. The credential values are never answered.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Parameters

NameInTypeNotes
serverIdquerystring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/dns-challenge \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Update DNS challenge

PUT/settings/traefik/dns-challenge

Sets the machine's DNS provider and credentials, writes the letsencrypt-dns resolver into its traefik.yml and recreates its Traefik with the credentials in its env. Answers what the GET answers.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIdstring or null
providerrequiredstringMatches ^[a-z0-9-]{1,64}$.
credentialsmap of string

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X PUT https://cloudgate.octabyte.app/backend/settings/traefik/dns-challenge \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "provider": "example"
  }'

Remove DNS challenge

DELETE/settings/traefik/dns-challenge

Removes the machine's DNS-01 setup — row, resolver and env keys — or 409s naming the Applications whose previews still use it.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Parameters

NameInTypeNotes
serverIdquerystring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X DELETE https://cloudgate.octabyte.app/backend/settings/traefik/dns-challenge \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Check the Traefik dashboard port

GET/settings/traefik/dashboard

Whether Traefik publishes dashboard port 8080.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Parameters

NameInTypeNotes
serverIdquerystring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/dashboard \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Turn the Traefik dashboard on or off

POST/settings/traefik/dashboard

Publishes or withdraws Traefik's dashboard port 8080 and the api block that answers on it, 409 when 8080 is taken.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
enableDashboardboolean
serverIdstring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/dashboard \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "enableDashboard": true,
    "serverId": "Ni7mAbWKjbWy4KErPjtrY"
  }'

Get Traefik ports

GET/settings/traefik/ports

Traefik's additional published ports.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Parameters

NameInTypeNotes
serverIdquerystring or null

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl https://cloudgate.octabyte.app/backend/settings/traefik/ports \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Update Traefik ports

POST/settings/traefik/ports

Replaces Traefik's additional published ports after checking none is in use, and recreates Traefik in the background.

Who can call it: Any signed-in member. The route names no permission of its own; Cloudgate checks your role and your access to what it touches as it runs.

Request body

FieldTypeNotes
serverIdstring or null
additionalPortsrequiredarray of object
additionalPorts[].targetPortrequirednumber
additionalPorts[].publishedPortrequirednumber
additionalPorts[].protocolrequiredstringOne of tcp, udp, sctp.

Responses

200 OK
The result, as JSON.
Refusals
400 Validation failed; details names each field; 401 No key, or the key is not valid; 403 You may not reach what it touches. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/settings/traefik/ports \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "additionalPorts": [
      {
        "targetPort": 3000,
        "publishedPort": 3000,
        "protocol": "tcp"
      }
    ]
  }'

Something missing or wrong on this page? Email support@octabyte.io, or start a free trial and try it in the console.