Skip to content

Silence the alarm's notifications without stopping evaluation.

POST
/v1/projects/{projectId}/observability/alarms/{alarmId}/actions/disable
Code sample: Shell / cURL
curl --request POST \
--url https://stratum.example.com/v1/projects/example/observability/alarms/example/actions/disable \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "until": "2026-04-15T12:00:00Z" }'

. Optional until ISO-8601 timestamp schedules an auto-flip-back to enabled. vmalert keeps evaluating + the history table records transitions; only outbound notifications are suppressed.

projectId
required
string
/^p-[a-z0-9-]+$/
alarmId
required
string
/^al-[a-z0-9]{1,32}$/
Media typeapplication/json
object
until
string format: date-time

Example generated

{
"until": "2026-04-15T12:00:00Z"
}

The updated alarm.

Media typeapplication/json

An alarm is either expression-based (raw PromQL pasted by the operator — expression set) or metric-based (CloudWatch shape — metricNamespace+metricName+statistic+comparisonOperator+ threshold set). The two forms are mutually exclusive at the DB level. Both forms require periodSeconds+evaluationPeriods+ datapointsToAlarm for the vmalert hold duration.

object
ownedBy

Set on a platform-owned row; absent on a tenant’s own.

object
kind
required
string
Allowed values: auto-scaling-group platform
id
required

The owner: the Auto Scaling group id, or for platform the component (front-door, pack:platform-health, default-network, operator-recipe).

string
id
required
string
/^al-[a-z0-9]{1,32}$/
projectId
required
string
name
required
string
displayName
required
string
description
string
expression

Raw PromQL expression. Mutually exclusive with the metric tuple + compositeExpression.

string
compositeExpression

. Boolean composition of child alarm states via the small grammar ALARM(name) AND ALARM(other) (also OK, INSUFFICIENT_DATA, NOT, parens). Mutually exclusive with expression + metric tuple. Children must live in the same project.

string
metricNamespace
string
metricName
string
metricDimensions
object
key
additional properties
string
statistic
string
Allowed values: Sum Average Maximum Minimum SampleCount
periodSeconds
required
integer
>= 10
evaluationPeriods
required
integer
>= 1
datapointsToAlarm
required
integer
>= 1
comparisonOperator
string
Allowed values: GreaterThanThreshold LessThanThreshold GreaterThanOrEqualToThreshold LessThanOrEqualToThreshold
threshold
number format: double
alarmActions

Notification-channel IDs to fire when this alarm transitions to ALARM. Every listed channel is notified; the order of the list does not matter.

Array<string>
enabled
required
boolean
actionsEnabled

. When false, vmalert keeps evaluating + the history table records transitions, but outbound notifications are suppressed. Distinct from enabled which stops evaluation entirely.

boolean
default: true
actionsEnabledUntil

. Set by the disable-actions endpoint’s until parameter. The silencer worker auto-flips actionsEnabled back to true at this time.

string format: date-time
nullable
treatMissingData

. CloudWatch TreatMissingData policy.

string
default: missing
Allowed values: missing not_breaching breaching ignore
state
required
string
Allowed values: insufficient_data pending ok alarm deleted
stateReason
string
stateUpdatedAt
string format: date-time
nullable
tags
object
key
additional properties
string
origin

. Provenance marker. platform.builtin is stamped by the Platform Health pack reconciler (once it owns alarms); every customer-created alarm is customer. Mirrors Dashboard.origin so the UI can render the substrate/customer split with the same model.

string
Allowed values: platform.builtin customer
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
deletedAt
string format: date-time
nullable
createdBy
required
string

Example

{
"ownedBy": {
"kind": "auto-scaling-group"
},
"statistic": "Sum",
"comparisonOperator": "GreaterThanThreshold",
"actionsEnabled": true,
"treatMissingData": "missing",
"state": "insufficient_data",
"origin": "platform.builtin"
}

Resource not found.

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
>= 400 <= 599
detail
string
instance
string format: uri-reference
requestId
required
string
code
required
string
issues

The findings of a rejected IAM policy document (custom and resource policies).

Array<object>

One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.

object
code
required

The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.

string
statement
required

Index of the statement at fault; -1 for the document as a whole.

integer
>= -1
detail
required
string
action

The offending action, where one is at fault (ACTION_NOT_APPLICABLE).

string
errors

Field errors, for codes that carry them: each problem at its field (see FieldError). Documented on the responses that set it, e.g. approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED. Absent otherwise.

Array<object>

One field’s problem, the stage-2 installer API’s shape. field is the field’s path, message what is wrong with it.

object
field
required

The field’s path, e.g. links[0].interface, disks[1].confirm, mgmt.address or role; empty for the whole request.

string
message
required
string
details

Structured facts about the refusal, for codes that carry them. The shape is fixed per code and documented on the response that answers it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and IMAGE_IN_USE. Absent for codes that carry none.

object
key
additional properties
any

Example

{
"issues": [
{
"code": "ACTION_NOT_APPLICABLE",
"action": "compute:CreateVpc"
}
]
}