Skip to content

Set a site's notification override

PATCH
/v1/sites/{id}/notifications
curl --request PATCH \
--url https://api.overwatch.weareheavy.dev/v1/sites/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/notifications \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "crawlReportRecipients": [ { "kind": "email", "email": "editor@client.com" } ], "includeOrgDefaults": false }'

Create or update a site’s override — client isolation, so one site’s receivers keep other sites’ alerts out of its channels. A site with no override starts from empty receivers with includeOrgDefaults: true, so a partial body can only narrow delivery deliberately (via includeOrgDefaults: false), never by accident. Session-only, owner/admin.

id
required
string format: uuid

The site’s UUID.

Media typeapplication/json

Notification receivers for one scope (org defaults or a site override). On reads every field is present; on writes all fields are optional — omitted fields keep their current value. At most 10 recipients and 5 webhooks per list.

object
uptimeRecipients

Receivers of uptime incident alerts (down/recovered).

Array
<= 10 items
One of:
object
kind
required
string
Allowed value: user
userId
required
string
uptimeWebhooks

Webhooks for uptime incident alerts.

Array<object>
<= 5 items

A notification webhook. slack, discord, and teams format the message for the respective chat app; http POSTs a structured JSON payload to any endpoint.

object
kind
required
string
Allowed values: slack discord teams http
url
required
string format: uri
crawlReportRecipients

Receivers of the per-run crawl summary (broken links + accessibility).

Array
<= 10 items
One of:
object
kind
required
string
Allowed value: user
userId
required
string
searchAlertRecipients

Receivers of search-traffic-drop alerts (Search Console).

Array
<= 10 items
One of:
object
kind
required
string
Allowed value: user
userId
required
string
searchAlertWebhooks

Webhooks for search-traffic-drop alerts.

Array<object>
<= 5 items

A notification webhook. slack, discord, and teams format the message for the respective chat app; http POSTs a structured JSON payload to any endpoint.

object
kind
required
string
Allowed values: slack discord teams http
url
required
string format: uri
perfAlertRecipients

Receivers of Core Web Vitals regression alerts.

Array
<= 10 items
One of:
object
kind
required
string
Allowed value: user
userId
required
string
perfAlertWebhooks

Webhooks for Core Web Vitals regression alerts.

Array<object>
<= 5 items

A notification webhook. slack, discord, and teams format the message for the respective chat app; http POSTs a structured JSON payload to any endpoint.

object
kind
required
string
Allowed values: slack discord teams http
url
required
string format: uri
reportRecipients

Receivers of the scheduled branded stakeholder report (PDF attachment).

Array
<= 10 items
One of:
object
kind
required
string
Allowed value: user
userId
required
string
includeOrgDefaults

Site overrides only — union the org defaults back in at delivery time. Meaningless on the org-defaults scope itself.

boolean
default: true
Example
{
"crawlReportRecipients": [
{
"kind": "email",
"email": "editor@client.com"
}
],
"includeOrgDefaults": false
}

The merged override now in effect.

Media typeapplication/json
object
settings
required

Notification receivers for one scope (org defaults or a site override). On reads every field is present; on writes all fields are optional — omitted fields keep their current value. At most 10 recipients and 5 webhooks per list.

object
uptimeRecipients

Receivers of uptime incident alerts (down/recovered).

Array
<= 10 items
One of:
object
kind
required
string
Allowed value: user
userId
required
string
uptimeWebhooks

Webhooks for uptime incident alerts.

Array<object>
<= 5 items

A notification webhook. slack, discord, and teams format the message for the respective chat app; http POSTs a structured JSON payload to any endpoint.

object
kind
required
string
Allowed values: slack discord teams http
url
required
string format: uri
crawlReportRecipients

Receivers of the per-run crawl summary (broken links + accessibility).

Array
<= 10 items
One of:
object
kind
required
string
Allowed value: user
userId
required
string
searchAlertRecipients

Receivers of search-traffic-drop alerts (Search Console).

Array
<= 10 items
One of:
object
kind
required
string
Allowed value: user
userId
required
string
searchAlertWebhooks

Webhooks for search-traffic-drop alerts.

Array<object>
<= 5 items

A notification webhook. slack, discord, and teams format the message for the respective chat app; http POSTs a structured JSON payload to any endpoint.

object
kind
required
string
Allowed values: slack discord teams http
url
required
string format: uri
perfAlertRecipients

Receivers of Core Web Vitals regression alerts.

Array
<= 10 items
One of:
object
kind
required
string
Allowed value: user
userId
required
string
perfAlertWebhooks

Webhooks for Core Web Vitals regression alerts.

Array<object>
<= 5 items

A notification webhook. slack, discord, and teams format the message for the respective chat app; http POSTs a structured JSON payload to any endpoint.

object
kind
required
string
Allowed values: slack discord teams http
url
required
string format: uri
reportRecipients

Receivers of the scheduled branded stakeholder report (PDF attachment).

Array
<= 10 items
One of:
object
kind
required
string
Allowed value: user
userId
required
string
includeOrgDefaults

Site overrides only — union the org defaults back in at delivery time. Meaningless on the org-defaults scope itself.

boolean
default: true
Example
{
"settings": {
"uptimeRecipients": [
{
"kind": "user"
}
],
"uptimeWebhooks": [
{
"kind": "slack"
}
],
"crawlReportRecipients": [
{
"kind": "user"
}
],
"searchAlertRecipients": [
{
"kind": "user"
}
],
"searchAlertWebhooks": [
{
"kind": "slack"
}
],
"perfAlertRecipients": [
{
"kind": "user"
}
],
"perfAlertWebhooks": [
{
"kind": "slack"
}
],
"reportRecipients": [
{
"kind": "user"
}
],
"includeOrgDefaults": true
}
}

A recipient or webhook failed validation, or references a non-member.

Media typeapplication/json
object
error
required

A human-readable error message.

string
Examplegenerated
{
"error": "example"
}

Missing or invalid credentials.

Media typeapplication/json
object
error
required

A human-readable error message.

string
Example
{
"error": "invalid api key"
}

A dashboard session is required (API-key callers are rejected), or the session’s role does not allow this action.

Media typeapplication/json
object
error
required

A human-readable error message.

string
Example
{
"error": "a dashboard session is required"
}

No site with that id is visible to the caller.

Media typeapplication/json
object
error
required

A human-readable error message.

string
Example
{
"error": "site not found"
}