Skip to content

Change an alert source.

PATCH
/v1/alert-sources/{alert_source_id}
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 }'
alert_source_id
required
string format: uuid
Idempotency-Key
string
<= 255 characters

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.

Media type application/json

Leave a field out to keep it; escalation_policy_id: null clears the override.

object
name
string | null
service_id
string | null format: uuid
escalation_policy_id
string | null format: uuid
disabled

true stops the source; its events are recorded and ignored.

boolean | null
mapping
One of:

Replaces a generic_json source’s mapping.

object
dedup_key
required

The dedup key: events with the same one open, update and close one incident.

string
summary
string | null
status

The status. Left out, every event triggers.

string | null
trigger_values

Status values that trigger, ignoring case. Empty takes trigger, triggered, firing, alert, alerting, open, problem and down.

Array<string>
resolve_values

Status values that resolve. Empty takes resolve, resolved, ok, recovered, closed, up, normal and cleared.

Array<string>
acknowledge_values

Status values that acknowledge. Empty takes acknowledge, acknowledged and ack.

Array<string>
severity

The severity: critical, error, warning, info or a common synonym.

string | null
link

An http(s) link back to the alert.

string | null
signature_header

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.

string | null
timestamp_header

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.

string | null
email_rules
One of:

Replaces an email source’s rules.

object
resolve_pattern

A subject that matches resolves its incident instead of opening one, for example ^(UP|RECOVERY|OK)\b.

string | null
dedup_pattern

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.

string | null
signing_secret

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.

string | null
debug_capture

true keeps each event’s body, redacted, for the next 24 hours; false stops now.

boolean | null
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
}

The source

Media type application/json

A source as the api returns it. The key is never stored, only its hash and first characters.

object
id
required
string format: uuid
account_id
required
string format: uuid
service_id
required

Incidents open on this service.

string format: uuid
escalation_policy_id

Overrides the service’s escalation policy for incidents this source opens.

string | null format: uuid
name
required
string
format
required
string
key_prefix
required

The key’s first characters, to tell keys apart.

string
email_address

Where an email source receives alerts. Rolling the key replaces it.

string | null
email_rules
One of:

How an email source reads each email.

object
resolve_pattern

A subject that matches resolves its incident instead of opening one, for example ^(UP|RECOVERY|OK)\b.

string | null
dedup_pattern

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.

string | null
mapping
One of:

Where a generic_json source finds each field.

object
dedup_key
required

The dedup key: events with the same one open, update and close one incident.

string
summary
string | null
status

The status. Left out, every event triggers.

string | null
trigger_values

Status values that trigger, ignoring case. Empty takes trigger, triggered, firing, alert, alerting, open, problem and down.

Array<string>
resolve_values

Status values that resolve. Empty takes resolve, resolved, ok, recovered, closed, up, normal and cleared.

Array<string>
acknowledge_values

Status values that acknowledge. Empty takes acknowledge, acknowledged and ack.

Array<string>
severity

The severity: critical, error, warning, info or a common synonym.

string | null
link

An http(s) link back to the alert.

string | null
signature_header

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.

string | null
timestamp_header

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.

string | null
signing_secret_set
required

Whether a signing secret is set (sentry and generic_json). The secret itself is never returned.

boolean
debug_capture_until

While set, each event keeps its body, redacted, for debugging. Ends 24 hours after it was turned on.

string | null format: date-time
disabled_at
string | null format: date-time
last_event_at
string | null format: date-time
created_at
required
string format: date-time
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"
}
Idempotent-Replayed
string

true when this is the stored first response

Missing or invalid credentials

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
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

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
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

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
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

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
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

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
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

Media type application/problem+json

An RFC 9457 problem, the body of every /v1 error.

object
type
required

https://docs.siteqwality.com/errors/ and the failure’s code, such as not_found.

string
title
required
string
status
required
integer format: int32
detail
string | null
instance

urn:uuid: and the request id.

string | null
errors

The invalid fields, when the request body was refused.

array | null

One validation failure; pointer is an RFC 6901 pointer into the request body.

object
pointer
required
string
detail
required
string
Example generated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"errors": [
{
"pointer": "example",
"detail": "example"
}
]
}