Set a site's notification override
const url = 'https://api.overwatch.weareheavy.dev/v1/sites/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/notifications';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"crawlReportRecipients":[{"kind":"email","email":"editor@client.com"}],"includeOrgDefaults":false}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Section titled “ Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ”The site’s UUID.
Request Bodyrequired
Section titled “ Request Bodyrequired ”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
Webhooks for uptime incident alerts.
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
Webhooks for search-traffic-drop alerts.
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
Webhooks for Core Web Vitals regression alerts.
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
Site overrides only — union the org defaults back in at delivery time. Meaningless on the org-defaults scope itself.
Example
{ "crawlReportRecipients": [ { "kind": "email", "email": "editor@client.com" } ], "includeOrgDefaults": false}Responses
Section titled “ Responses ”The merged override now in effect.
object
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
Webhooks for uptime incident alerts.
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
Webhooks for search-traffic-drop alerts.
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
Webhooks for Core Web Vitals regression alerts.
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
Site overrides only — union the org defaults back in at delivery time. Meaningless on the org-defaults scope itself.
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.
object
A human-readable error message.
Examplegenerated
{ "error": "example"}Missing or invalid credentials.
object
A human-readable error message.
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.
object
A human-readable error message.
Example
{ "error": "a dashboard session is required"}No site with that id is visible to the caller.
object
A human-readable error message.
Example
{ "error": "site not found"}