Skip to main content
POST
Create a notification policy

Authorizations

Authorization
string
header
required

A personal access token (POST /v1/auth/tokens) or a machine identity token (POST /v1/projects/{project_id}/identities/{identity_id}/tokens), both prefixed qumo_pat_. A token's scopes cap what it can do; see Scopes and permissions. A personal token names no organization: on a route whose path names no project or organization, pass ?organization_id=.

Query Parameters

organization_id
string<uuid>

The organization the request acts in. Required with a personal token or a session, which name no organization themselves; an identity token's organization is implied.

Body

application/json
organization_id
string<uuid>
required

The organization the policy belongs to; must be the organization the request acts in.

Example:

"3f8c2a1e-7b4d-4e9a-9c61-2d5e8f0a1b7c"

event_category
enum<string>
required

The event type the policy matches, or all.

Available options:
all,
project.delete,
iam.binding_create,
iam.binding_delete,
audit,
billing.budget
Example:

"audit"

severity
enum<string>
required

The lowest severity the policy sends; a warning policy also gets critical events.

Available options:
info,
warning,
critical
Example:

"warning"

channel
enum<string>
required
Available options:
email,
slack,
discord,
webhook
Example:

"slack"

recipient
string
required

The destination: an email address for email, a public https URL for webhook, a https://hooks.slack.com/ URL for slack, a https://discord.com/api/webhooks/ URL for discord.

Example:

"https://hooks.slack.com/services/T0000/B0000/XXXXXXXXXXXXXXXX"

name
string

Display name.

Example:

"Security alerts to Slack"

enabled
boolean
default:false

Whether the policy sends anything. Omitted means a disabled policy.

Example:

true

rate_limit
object

At most count notifications per period.

locale
enum<string>
default:en

The language the notifications are written in.

Available options:
ja,
en
Example:

"en"

Response

The created policy.

A created policy; for a webhook policy, with its signing secret.

id
string<uuid>
required
Example:

"8f0b2d4e-6a8c-4e1f-a3b5-7c9e1f3a5b7d"

organization_id
string<uuid>
required
Example:

"3f8c2a1e-7b4d-4e9a-9c61-2d5e8f0a1b7c"

name
string
required
Example:

"Security alerts to Slack"

event_category
enum<string>
required
Available options:
all,
project.delete,
iam.binding_create,
iam.binding_delete,
audit,
billing.budget
Example:

"audit"

severity
enum<string>
required
Available options:
info,
warning,
critical
Example:

"warning"

channel
enum<string>
required
Available options:
email,
slack,
discord,
webhook
Example:

"slack"

recipient
string
required

Always masked.

Example:

"********"

enabled
boolean
required
Example:

true

locale
enum<string>
required
Available options:
ja,
en
Example:

"en"

created_at
string<date-time>
required
Example:

"2026-10-14T09:30:00Z"

updated_at
string<date-time>
required
Example:

"2026-10-14T09:30:00Z"

rate_limit
object

At most count notifications per period.

invalid_reason
string

Why the stored recipient no longer passes validation. Present only when it fails; such a policy delivers nothing until it is replaced.

Example:

"a Slack recipient must be a https://hooks.slack.com/ URL"

signing_secret
string

The secret a webhook policy's deliveries are signed with, shown only this once. Each delivery carries X-Notification-Timestamp (Unix seconds) and X-Notification-Signature-256, the hex HMAC-SHA256 of <timestamp>.<raw body> keyed with this secret. Absent for other channels.

Example:

"9d2f4a6c8e0b1d3f5a7c9e1b3d5f7a9c2e4a6c8f0b1d3e5a7c9f1b3d5e7a9c0b"