Observability

Preview — pending review

This reference is generated from the platform API contract and is still under review. Operations, fields, and descriptions can change before publication.

Create a notification channel

POST
/scopes/{scopeId}/observability/notification-channels

Creates an email or webhook notification channel in the project. Email: address is required. An address that belongs to one of the tenant's own users is verified immediately. Any other address receives a single-use verification link (valid 7 days) and gets NO alert until the link is redeemed; verificationEmailSent says whether the link could be mailed. Webhook: url is required and must be https (a dev environment may allow http by configuration). A URL whose host is or resolves to a loopback, private, link-local, metadata or otherwise non-public address is rejected (422). The response carries the channel's HMAC-SHA256 signing secret in signingSecret exactly ONCE; every delivery is signed with it in X-Publiccloud-Signature: t=<unix>,v1=<hex> over "<t>.<body>". Limits: at most 20 channels per project, of which at most 5 webhooks (operator adjustable); exceeding either is 409 QUOTA_EXCEEDED. A duplicate live name is 409 CONFLICT. Idempotency: Idempotency-Key is optional (recommended); replaying the same key with the same body (by the same caller) returns the original response; reusing it with a different body is 409 CONFLICT.

Authorization

bearerToken
headerAuthorizationBearer <token>

An API token (pc_live_…) or a service-account key (sak_live_…), created in Identity & Access Management and sent as Authorization: Bearer <token>. Requests are rate limited per credential and per tenant: every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and a refused request gets 429 RATE_LIMITED with Retry-After.

Path Parameters

scopeId*string

Opaque ownership+authorization scope resolving to tenant + subscription + project.

Header Parameters

Idempotency-Key?string

Optional; recommended for safe retries. When sent, the same key+body within 24h replays the original result and the same key with a different body is 409 CONFLICT; keys are unique per tenant. When an API token or service-account (bearer) caller omits it, the request is applied once with no replay protection (a retry may apply it again). A console session gets one from the edge.

Formatuuid

Request Body

application/json
  1. body

Create body. address is required for type=email, url for type=webhook.

name*string

Display name; unique among the project's live channels.

Match^[^\p{C}\p{Z}\x{10000}-\x{10FFFF}](?:[^\p{C}\p{Zl}\p{Zp}\x{10000}-\x{10FFFF}]*[^\p{C}\p{Z}\x{10000}-\x{10FFFF}])?$
Length1 <= length <= 255
type*NotificationChannelType

Delivery kind of a notification channel.

Value in"email""webhook"
address?string

Recipient email address (type=email).

Lengthlength <= 254
url?string

HTTPS endpoint (type=webhook).

Lengthlength <= 2048

Response Body

Idempotent replay of an earlier create (no secret).

application/json
  1. response

A created (or replayed) channel with its one-time material.

channel*

An alert notification destination owned by a project.

signingSecret*|

The webhook signing secret, returned ONLY by the create that minted it.

verificationEmailSent*boolean

Whether a verification link was mailed by this call.

curl -X POST "https://example.com/scopes/string/observability/notification-channels" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "type": "email"  }'
{  "channel": {    "id": "string",    "name": "string",    "type": "email",    "target": "string",    "verificationStatus": "verified",    "verifiedAt": "string",    "verificationExpiresAt": "string",    "managedBy": "string",    "createdAt": "string",    "createdBy": "string"  },  "signingSecret": "string",  "verificationEmailSent": true}