Notifications

Notification channels for Slack, Discord, Teams, Telegram, Mattermost, email and more, with test sends.

A notification channel is where Cloudgate tells you about Deployments, backups, incidents and Server thresholds. Each kind has its own create, update and test route; listing, reading and deleting are shared.

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 Notifications in the user guide.

Add a Slack channel

POST/notifications/slack

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
webhookUrlrequiredstringNot empty.
channelstring

Responses

201 Created
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/notifications/slack \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "webhookUrl": "https://hooks.example.com/services/T000/B000/XXXX"
  }'

Update a Slack channel

PATCH/notifications/slack/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
webhookUrlstringNot empty.
channelstring

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; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/slack/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Add a Telegram channel

POST/notifications/telegram

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
botTokenrequiredstringNot empty.
chatIdrequiredstringNot empty.
messageThreadIdstring

Responses

201 Created
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/notifications/telegram \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "botToken": "<secret>",
    "chatId": "LVnG3MD9EhQMkNHgAPvxQ"
  }'

Update a Telegram channel

PATCH/notifications/telegram/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
botTokenstringNot empty.
chatIdstringNot empty.
messageThreadIdstring

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; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/telegram/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Add a Discord channel

POST/notifications/discord

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
webhookUrlrequiredstringNot empty.
decorationboolean

Responses

201 Created
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/notifications/discord \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "webhookUrl": "https://hooks.example.com/services/T000/B000/XXXX"
  }'

Update a Discord channel

PATCH/notifications/discord/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
webhookUrlstringNot empty.
decorationboolean

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; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/discord/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Add an email channel

POST/notifications/email

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
smtpServerrequiredstringNot empty.
smtpPortrequirednumberAt least 1.
usernamerequiredstringNot empty.
passwordrequiredstringNot empty.
fromAddressrequiredstringNot empty.
toAddressesrequiredarray of stringAt least 1 item.

Responses

201 Created
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/notifications/email \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "smtpServer": "example",
    "smtpPort": 3000,
    "username": "deploy",
    "password": "<secret>",
    "fromAddress": "example",
    "toAddresses": [
      "example"
    ]
  }'

Update an email channel

PATCH/notifications/email/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
smtpServerstringNot empty.
smtpPortnumberAt least 1.
usernamestringNot empty.
passwordstringNot empty.
fromAddressstringNot empty.
toAddressesarray of stringAt least 1 item.

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; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/email/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Add a Resend channel

POST/notifications/resend

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
apiKeyrequiredstringNot empty.
fromAddressrequiredstringNot empty.
toAddressesrequiredarray of stringAt least 1 item.

Responses

201 Created
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/notifications/resend \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "apiKey": "<secret>",
    "fromAddress": "example",
    "toAddresses": [
      "example"
    ]
  }'

Update a Resend channel

PATCH/notifications/resend/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
apiKeystringNot empty.
fromAddressstringNot empty.
toAddressesarray of stringAt least 1 item.

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; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/resend/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Add a Gotify channel

POST/notifications/gotify

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
serverUrlrequiredstringNot empty.
appTokenrequiredstringNot empty.
prioritynumberAt least 1. Default 5.
decorationboolean

Responses

201 Created
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/notifications/gotify \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "serverUrl": "https://northwind.dev",
    "appToken": "<secret>"
  }'

Update a Gotify channel

PATCH/notifications/gotify/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
serverUrlstringNot empty.
appTokenstringNot empty.
prioritynumberAt least 1. Default 5.
decorationboolean

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; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/gotify/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Add a ntfy channel

POST/notifications/ntfy

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
serverUrlrequiredstringNot empty.
topicrequiredstringNot empty.
accessTokenstring
prioritynumberAt least 1. Default 3.

Responses

201 Created
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/notifications/ntfy \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "serverUrl": "https://northwind.dev",
    "topic": "example"
  }'

Update a ntfy channel

PATCH/notifications/ntfy/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
serverUrlstringNot empty.
topicstringNot empty.
accessTokenstring
prioritynumberAt least 1. Default 3.

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; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/ntfy/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Add a Mattermost channel

POST/notifications/mattermost

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
webhookUrlrequiredstring (uri)
channelstring
usernamestring

Responses

201 Created
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/notifications/mattermost \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "webhookUrl": "https://hooks.example.com/services/T000/B000/XXXX"
  }'

Update a Mattermost channel

PATCH/notifications/mattermost/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
webhookUrlstring (uri)
channelstring
usernamestring

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; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/mattermost/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Add a custom webhook channel

POST/notifications/custom

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
endpointrequiredstringNot empty.
headersmap of string

Responses

201 Created
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/notifications/custom \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "endpoint": "https://northwind.dev"
  }'

Update a custom webhook channel

PATCH/notifications/custom/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
endpointstringNot empty.
headersmap 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 Your role does not allow it, or you were not granted what it touches; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/custom/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Add a Lark channel

POST/notifications/lark

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
webhookUrlrequiredstringNot empty.

Responses

201 Created
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/notifications/lark \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "webhookUrl": "https://hooks.example.com/services/T000/B000/XXXX"
  }'

Update a Lark channel

PATCH/notifications/lark/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
webhookUrlstringNot 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 Your role does not allow it, or you were not granted what it touches; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/lark/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Add a Pushover channel

POST/notifications/pushover

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
userKeyrequiredstringNot empty.
apiTokenrequiredstringNot empty.
prioritynumber-2 to 2. Default 0.
retrynumber or nullAt least 30.
expirenumber or null1 to 10800.

Responses

201 Created
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/notifications/pushover \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "userKey": "<secret>",
    "apiToken": "<secret>"
  }'

Update a Pushover channel

PATCH/notifications/pushover/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
userKeystringNot empty.
apiTokenstringNot empty.
prioritynumber-2 to 2. Default 0.
retrynumber or nullAt least 30.
expirenumber or null1 to 10800.

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; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/pushover/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Add a Microsoft Teams channel

POST/notifications/teams

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

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namerequiredstringNot empty.
webhookUrlrequiredstringNot empty.

Responses

201 Created
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/notifications/teams \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "name": "ops-alerts",
    "webhookUrl": "https://hooks.example.com/services/T000/B000/XXXX"
  }'

Update a Microsoft Teams channel

PATCH/notifications/teams/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Request body

FieldTypeNotes
appDeploybooleanDefault false.
appBuildErrorbooleanDefault false.
databaseBackupbooleanDefault false.
volumeBackupbooleanDefault false.
instanceBackupbooleanDefault false.
instanceRestartbooleanDefault false.
dockerCleanupbooleanDefault false.
serverThresholdbooleanDefault false.
licenseLapsebooleanDefault false.
licenseExpiringbooleanDefault false.
agentRateLimitedbooleanDefault false.
previewTeardownStuckbooleanDefault false.
serviceIncidentbooleanDefault false.
aiModelNotAnsweringbooleanDefault false.
namestringNot empty.
webhookUrlstringNot 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 Your role does not allow it, or you were not granted what it touches; 404 Nothing with that id in this Organization. The error body.
curl -X PATCH https://cloudgate.octabyte.app/backend/notifications/teams/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "appDeploy": false,
    "appBuildError": false,
    "databaseBackup": false
  }'

Test a Slack channel before saving

POST/notifications/slack/test

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

Request body

FieldTypeNotes
webhookUrlrequiredstringNot empty.
channelstring

Responses

204 No content
Done. The answer has no body.
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/notifications/slack/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "webhookUrl": "https://hooks.example.com/services/T000/B000/XXXX"
  }'

Test a Telegram channel before saving

POST/notifications/telegram/test

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

Request body

FieldTypeNotes
botTokenrequiredstringNot empty.
chatIdrequiredstringNot empty.
messageThreadIdstring

Responses

204 No content
Done. The answer has no body.
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/notifications/telegram/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "botToken": "<secret>",
    "chatId": "LVnG3MD9EhQMkNHgAPvxQ"
  }'

Test a Discord channel before saving

POST/notifications/discord/test

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

Request body

FieldTypeNotes
webhookUrlrequiredstringNot empty.
decorationboolean

Responses

204 No content
Done. The answer has no body.
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/notifications/discord/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "webhookUrl": "https://hooks.example.com/services/T000/B000/XXXX"
  }'

Test an email channel before saving

POST/notifications/email/test

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

Request body

FieldTypeNotes
smtpServerrequiredstringNot empty.
smtpPortrequirednumberAt least 1.
usernamerequiredstringNot empty.
passwordrequiredstringNot empty.
fromAddressrequiredstringNot empty.
toAddressesrequiredarray of stringAt least 1 item.

Responses

204 No content
Done. The answer has no body.
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/notifications/email/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "smtpServer": "example",
    "smtpPort": 3000,
    "username": "deploy",
    "password": "<secret>",
    "fromAddress": "example",
    "toAddresses": [
      "example"
    ]
  }'

Test a Resend channel before saving

POST/notifications/resend/test

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

Request body

FieldTypeNotes
apiKeyrequiredstringNot empty.
fromAddressrequiredstringNot empty.
toAddressesrequiredarray of stringAt least 1 item.

Responses

204 No content
Done. The answer has no body.
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/notifications/resend/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "apiKey": "<secret>",
    "fromAddress": "example",
    "toAddresses": [
      "example"
    ]
  }'

Test a Gotify channel before saving

POST/notifications/gotify/test

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

Request body

FieldTypeNotes
serverUrlrequiredstringNot empty.
appTokenrequiredstringNot empty.
prioritynumberAt least 1. Default 5.
decorationboolean

Responses

204 No content
Done. The answer has no body.
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/notifications/gotify/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverUrl": "https://northwind.dev",
    "appToken": "<secret>"
  }'

Test a ntfy channel before saving

POST/notifications/ntfy/test

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

Request body

FieldTypeNotes
serverUrlrequiredstringNot empty.
topicrequiredstringNot empty.
accessTokenstring
prioritynumberAt least 1. Default 3.

Responses

204 No content
Done. The answer has no body.
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/notifications/ntfy/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "serverUrl": "https://northwind.dev",
    "topic": "example"
  }'

Test a Mattermost channel before saving

POST/notifications/mattermost/test

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

Request body

FieldTypeNotes
webhookUrlrequiredstring (uri)
channelstring
usernamestring

Responses

204 No content
Done. The answer has no body.
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/notifications/mattermost/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "webhookUrl": "https://hooks.example.com/services/T000/B000/XXXX"
  }'

Test a custom webhook channel before saving

POST/notifications/custom/test

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

Request body

FieldTypeNotes
endpointrequiredstringNot empty.
headersmap of string

Responses

204 No content
Done. The answer has no body.
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/notifications/custom/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "endpoint": "https://northwind.dev"
  }'

Test a Lark channel before saving

POST/notifications/lark/test

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

Request body

FieldTypeNotes
webhookUrlrequiredstringNot empty.

Responses

204 No content
Done. The answer has no body.
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/notifications/lark/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "webhookUrl": "https://hooks.example.com/services/T000/B000/XXXX"
  }'

Test a Pushover channel before saving

POST/notifications/pushover/test

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

Request body

FieldTypeNotes
userKeyrequiredstringNot empty.
apiTokenrequiredstringNot empty.
prioritynumber-2 to 2. Default 0.
retrynumber or nullAt least 30.
expirenumber or null1 to 10800.

Responses

204 No content
Done. The answer has no body.
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/notifications/pushover/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "userKey": "<secret>",
    "apiToken": "<secret>"
  }'

Test a Microsoft Teams channel before saving

POST/notifications/teams/test

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

Request body

FieldTypeNotes
webhookUrlrequiredstringNot empty.

Responses

204 No content
Done. The answer has no body.
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/notifications/teams/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID" \
  -H "content-type: application/json" \
  -d '{
    "webhookUrl": "https://hooks.example.com/services/T000/B000/XXXX"
  }'

Test a saved channel

POST/notifications/{id}/test

The same test, naming the row instead of carrying its credentials.

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Responses

204 No content
Done. The answer has no body.
Refusals
401 No key, or the key is not valid; 403 Your role does not allow it, or you were not granted what it touches; 404 Nothing with that id in this Organization. The error body.
curl -X POST https://cloudgate.octabyte.app/backend/notifications/RAU6yAYUXFRdXdPLyLoPC/test \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

List notification channels

GET/notifications

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

Responses

200 OK
The result, as JSON.
Refusals
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/notifications \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Get a notification channel

GET/notifications/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 Your role does not allow it, or you were not granted what it touches; 404 Nothing with that id in this Organization. The error body.
curl https://cloudgate.octabyte.app/backend/notifications/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

Delete a notification channel

DELETE/notifications/{id}

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

Parameters

NameInTypeNotes
idrequiredpathstringThe notification channel's id.

Responses

200 OK
The result, as JSON.
Refusals
401 No key, or the key is not valid; 403 Your role does not allow it, or you were not granted what it touches; 404 Nothing with that id in this Organization. The error body.
curl -X DELETE https://cloudgate.octabyte.app/backend/notifications/RAU6yAYUXFRdXdPLyLoPC \
  -H "x-api-key: $CLOUDGATE_KEY" \
  -H "x-organization-id: $CLOUDGATE_ORG_ID"

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