Change an alert source.
const url = 'https://api.siteqwality.com/v1/alert-sources/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"example","service_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","escalation_policy_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","disabled":true,"mapping":{"dedup_key":"example","summary":"example","status":"example","trigger_values":["example"],"resolve_values":["example"],"acknowledge_values":["example"],"severity":"example","link":"example","signature_header":"example","timestamp_header":"example"},"email_rules":{"resolve_pattern":"example","dedup_pattern":"example"},"signing_secret":"example","debug_capture":true}'};
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.siteqwality.com/v1/alert-sources/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "example", "service_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "escalation_policy_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "disabled": true, "mapping": { "dedup_key": "example", "summary": "example", "status": "example", "trigger_values": [ "example" ], "resolve_values": [ "example" ], "acknowledge_values": [ "example" ], "severity": "example", "link": "example", "signature_header": "example", "timestamp_header": "example" }, "email_rules": { "resolve_pattern": "example", "dedup_pattern": "example" }, "signing_secret": "example", "debug_capture": true }'Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Header Parameters
Section titled “Header Parameters ”Makes a retry safe: the same key and body within 24 hours returns the first response with Idempotent-Replayed: true. The same key with another body is refused with 422 idempotency_key_reused, and one still running with 409 idempotency_key_in_use.
Request Body required
Section titled “Request Body required ”Leave a field out to keep it; escalation_policy_id: null clears the override.
object
true stops the source; its events are recorded and ignored.
Replaces a generic_json source’s mapping.
object
The dedup key: events with the same one open, update and close one incident.
The status. Left out, every event triggers.
Status values that trigger, ignoring case. Empty takes trigger, triggered, firing, alert, alerting,
open, problem and down.
Status values that resolve. Empty takes resolve, resolved, ok, recovered, closed, up, normal and
cleared.
Status values that acknowledge. Empty takes acknowledge, acknowledged and ack.
The severity: critical, error, warning, info or a common synonym.
An http(s) link back to the alert.
With a signing secret set: the header holding the body’s HMAC-SHA256, in hex or base64, with or without
sha256=. Left out, X-Signature.
With a signing secret set: a header holding the Unix time the sender signed at. When named, the signature
covers <timestamp>.<body> and must be under 10 minutes old.
Replaces an email source’s rules.
object
A subject that matches resolves its incident instead of opening one, for example ^(UP|RECOVERY|OK)\b.
Its first group, or the whole match, is the dedup key, so each thing it names gets its own incident: for
example (?:DOWN|UP): (.+). Left out, or with no match, all of the address’s emails share one incident.
The secret the sender signs bodies with: Sentry’s Client Secret, or a generic JSON sender’s own. Never
returned. null removes it from a generic_json source, which then takes unsigned bodies again.
true keeps each event’s body, redacted, for the next 24 hours; false stops now.
Example generated
{ "name": "example", "service_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "escalation_policy_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "disabled": true, "mapping": { "dedup_key": "example", "summary": "example", "status": "example", "trigger_values": [ "example" ], "resolve_values": [ "example" ], "acknowledge_values": [ "example" ], "severity": "example", "link": "example", "signature_header": "example", "timestamp_header": "example" }, "email_rules": { "resolve_pattern": "example", "dedup_pattern": "example" }, "signing_secret": "example", "debug_capture": true}Responses
Section titled “ Responses ”The source
A source as the api returns it. The key is never stored, only its hash and first characters.
object
Incidents open on this service.
Overrides the service’s escalation policy for incidents this source opens.
The key’s first characters, to tell keys apart.
Where an email source receives alerts. Rolling the key replaces it.
How an email source reads each email.
object
A subject that matches resolves its incident instead of opening one, for example ^(UP|RECOVERY|OK)\b.
Its first group, or the whole match, is the dedup key, so each thing it names gets its own incident: for
example (?:DOWN|UP): (.+). Left out, or with no match, all of the address’s emails share one incident.
Where a generic_json source finds each field.
object
The dedup key: events with the same one open, update and close one incident.
The status. Left out, every event triggers.
Status values that trigger, ignoring case. Empty takes trigger, triggered, firing, alert, alerting,
open, problem and down.
Status values that resolve. Empty takes resolve, resolved, ok, recovered, closed, up, normal and
cleared.
Status values that acknowledge. Empty takes acknowledge, acknowledged and ack.
The severity: critical, error, warning, info or a common synonym.
An http(s) link back to the alert.
With a signing secret set: the header holding the body’s HMAC-SHA256, in hex or base64, with or without
sha256=. Left out, X-Signature.
With a signing secret set: a header holding the Unix time the sender signed at. When named, the signature
covers <timestamp>.<body> and must be under 10 minutes old.
Whether a signing secret is set (sentry and generic_json). The secret itself is never returned.
While set, each event keeps its body, redacted, for debugging. Ends 24 hours after it was turned on.
Example generated
{ "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "account_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "service_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "escalation_policy_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "format": "example", "key_prefix": "example", "email_address": "example", "email_rules": { "resolve_pattern": "example", "dedup_pattern": "example" }, "mapping": { "dedup_key": "example", "summary": "example", "status": "example", "trigger_values": [ "example" ], "resolve_values": [ "example" ], "acknowledge_values": [ "example" ], "severity": "example", "link": "example", "signature_header": "example", "timestamp_header": "example" }, "signing_secret_set": true, "debug_capture_until": "2026-04-15T12:00:00Z", "disabled_at": "2026-04-15T12:00:00Z", "last_event_at": "2026-04-15T12:00:00Z", "created_at": "2026-04-15T12:00:00Z"}Headers
Section titled “Headers ”true when this is the stored first response
Missing or invalid credentials
An RFC 9457 problem, the body of every /v1 error.
object
https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.
urn:uuid: and the request id.
The invalid fields, when the request body was refused.
One validation failure; pointer is an RFC 6901 pointer into the request body.
object
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example", "errors": [ { "pointer": "example", "detail": "example" } ]}The key or member may not do this, or lacks the scope it needs
An RFC 9457 problem, the body of every /v1 error.
object
https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.
urn:uuid: and the request id.
The invalid fields, when the request body was refused.
One validation failure; pointer is an RFC 6901 pointer into the request body.
object
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example", "errors": [ { "pointer": "example", "detail": "example" } ]}No such source, service or escalation policy in this account
An RFC 9457 problem, the body of every /v1 error.
object
https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.
urn:uuid: and the request id.
The invalid fields, when the request body was refused.
One validation failure; pointer is an RFC 6901 pointer into the request body.
object
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example", "errors": [ { "pointer": "example", "detail": "example" } ]}Invalid name, mapping, email rules or signing secret
An RFC 9457 problem, the body of every /v1 error.
object
https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.
urn:uuid: and the request id.
The invalid fields, when the request body was refused.
One validation failure; pointer is an RFC 6901 pointer into the request body.
object
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example", "errors": [ { "pointer": "example", "detail": "example" } ]}Too many requests; wait for the time in Retry-After
An RFC 9457 problem, the body of every /v1 error.
object
https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.
urn:uuid: and the request id.
The invalid fields, when the request body was refused.
One validation failure; pointer is an RFC 6901 pointer into the request body.
object
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example", "errors": [ { "pointer": "example", "detail": "example" } ]}The signing secret could not be sealed; nothing changed, try again
An RFC 9457 problem, the body of every /v1 error.
object
https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.
urn:uuid: and the request id.
The invalid fields, when the request body was refused.
One validation failure; pointer is an RFC 6901 pointer into the request body.
object
Example generated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example", "errors": [ { "pointer": "example", "detail": "example" } ]}