{"command":{"effect":"write","timeoutSeconds":30,"inputSchema":{"type":"object","description":"To create a notification channel, send a POST request to\n`/v2/insights/notification-channels` with a `name` and exactly one of\n`email`, `slack`, or `webhook`.\n\nEmail recipients must be verified team member addresses. Webhook URLs must\nuse HTTPS. Secret fields (`slack.webhook_url`, webhook credentials) are\nwrite-only. Subsequent reads never return secret values; they include\noptional `*_status` objects when a secret is configured.\n","properties":{"body":{"$ref":"#/definitions/notification_channel_request","examples":[{"name":"Platform alerts","slack":{"webhook_url":"https://hooks.slack.com/services/T000/B000/XXXXXXXX","channel":"#platform-alerts"}}]}},"required":["body"],"additionalProperties":false,"definitions":{"notification_channel_request":{"type":"object","description":"Create or update body for a notification channel. Provide a `name` and\nexactly one of `email`, `slack`, or `webhook`.\n\nSecret fields are write-only: send the full value to set or rotate; omit the\nfield on update to keep the existing secret.\n","required":["name"],"oneOf":[{"title":"Email","required":["email"]},{"title":"Slack","required":["slack"]},{"title":"Webhook","required":["webhook"]}],"properties":{"name":{"type":"string","description":"A human-readable name for the notification channel.","examples":["Platform alerts"]},"email":{"$ref":"#/definitions/email_notification_config"},"slack":{"$ref":"#/definitions/slack_notification_config"},"webhook":{"$ref":"#/definitions/webhook_notification_config"}}},"email_notification_config":{"type":"object","description":"Email notification channel configuration. Recipients must be verified team\nmember email addresses.\n","required":["to"],"properties":{"to":{"type":"string","description":"One or more recipient email addresses, separated by commas, semicolons,\nor spaces.\n","examples":["alerts@example.com, backup@example.com"]}}},"slack_notification_config":{"type":"object","description":"Slack notification channel configuration for create and update requests.\n`webhook_url` is write-only: send the full value to set or rotate. Omit\n`webhook_url` on update to keep the existing secret.\n","required":["channel"],"properties":{"webhook_url":{"type":"string","description":"Slack incoming webhook URL. Write-only secret — send the full value on\ncreate or update. Omit on update to retain the existing value. Never\nreturned in responses.\n","examples":["https://hooks.slack.com/services/T000/B000/XXXXXXXX"]},"channel":{"type":"string","description":"The Slack channel name to notify.","examples":["#platform-alerts"]}}},"webhook_notification_config":{"type":"object","description":"Generic HTTPS webhook notification channel configuration for create and\nupdate requests. The URL must use HTTPS and must not include userinfo.\nOptionally configure either `basic_auth` or `bearer_token` (not both),\ncustom headers, and a signing secret.\n\n`url` is not a secret and is returned in full on read. Credential fields\n(`basic_auth.password`, `bearer_token.token`, `signature.secret`) are\nwrite-only: send the full value to set or rotate. Omit a secret field on\nupdate to keep the existing value. Responses return nested `*_status`\nobjects instead of secret values.\n","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"HTTPS URL that receives webhook deliveries. Returned in full on read.","examples":["https://example.com/hook"]},"basic_auth":{"$ref":"#/definitions/webhook_basic_auth"},"bearer_token":{"$ref":"#/definitions/webhook_bearer_token"},"headers":{"type":"object","maxProperties":20,"additionalProperties":{"type":"string","examples":["1"]},"description":"Optional custom HTTP headers to include on webhook deliveries. At most\n20 headers are allowed. Reserved header names such as `host`,\n`content-type`, and `proxy-*` are rejected.\n","examples":[{"X-Custom":"1"}]},"signature":{"$ref":"#/definitions/webhook_signature_config"}}},"webhook_basic_auth":{"type":"object","description":"HTTP basic authentication credentials for a webhook create or update\nrequest. `password` is write-only: send the full value to set or rotate.\nOmit `password` on update to keep the existing password.\n","required":["username"],"properties":{"username":{"type":"string","description":"Basic auth username.","examples":["webhook-user"]},"password":{"type":"string","description":"Basic auth password. Write-only secret — send the full value on create\nor update. Omit on update to retain the existing value. Never returned\nin responses.\n","examples":["secret-password"]}}},"webhook_bearer_token":{"type":"object","description":"Bearer token authentication for a webhook create or update request. `token`\nis write-only: send the full value to set or rotate. Omit `token` on update\nto keep the existing token.\n","properties":{"token":{"type":"string","description":"Bearer token value sent in the Authorization header. Write-only secret —\nsend the full value on create or update. Omit on update to retain the\nexisting value. Never returned in responses.\n","examples":["secret-token"]}}},"webhook_signature_config":{"type":"object","description":"Optional HMAC signature configuration for a webhook create or update\nrequest. `secret` is write-only: send the full value to set or rotate. Omit\n`secret` on update to keep the existing secret.\n","properties":{"secret":{"type":"string","description":"Shared secret used to sign webhook payloads. Write-only secret — send\nthe full value on create or update. Omit on update to retain the\nexisting value. Never returned in responses.\n","examples":["whsec"]}}}}},"name":"Create a Notification Channel","id":"digitalocean.insights_create_notificationchannel","example":{"body":{"name":"Platform alerts","email":{"to":"alerts@example.com, backup@example.com"}}},"maxRequests":1,"summary":false}}