Alerts
Tools for monitoring and managing device alerts. Alerts are generated automatically when monitored conditions trigger — for example, when a device goes offline, encounters a content error, or exceeds resource thresholds.
An alert rule is the definition (the conditions to watch); an alert is an instance the rule produced. The tools below cover alerts; Alert Rules covers the rules themselves.
list_alerts
List alerts for the account. Returns alert objects with id, device reference, status (active/resolved), timestamps, and alert details.
| Parameter | Type | Required | Description |
|---|---|---|---|
device_id |
string or string[] | No | Filter by device ID(s) |
active_only |
boolean | No | Return only active (unresolved) alerts |
resolved |
boolean | No | Include resolved alerts |
org_id |
string | No | Filter by organization ID (multi-org accounts) |
take |
number | No | Results per page |
page |
number | No | Page number (1-based) |
get_alert
Get detailed information about a specific alert including type, associated device, trigger condition, timestamps, and resolution status.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | The alert ID |
update_alert
Update an alert’s status — typically to mark it as resolved or acknowledged.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | The alert ID |
resolved |
boolean | No | Set to true to mark as resolved |
Alert Rules
Alert rules define the conditions that generate alerts. They are GraphQL-only — there are no REST equivalents.
Reading rules uses the GraphQL query path:
build_query({ operation: "alertRule", preset: "basic" }) → execute_query
The ruleSet format
ruleSet is the heart of a rule. It is an array of groups: groups are combined with AND, and the items within a group are combined with OR.
[
{ "items": [
{ "type": "CpuUsage", "op": "GTE", "value": [90] },
{ "type": "MemoryUsage", "op": "GTE", "value": [95] }
]},
{ "items": [{ "type": "DiskUsage", "op": "GT", "value": [80] }] }
]
That rule fires when (CPU ≥ 90% or memory ≥ 95%) and disk > 80%.
Each item takes a type, an optional op (EQ, NE, GT, LT, GTE, LTE — defaults to EQ, which is rarely what you want, so set it), and a value array whose first element is the threshold.
type |
Unit |
|---|---|
TimeOffline |
Minutes since last ping (device offline). Ignores op — always “offline for at least value minutes” |
LastUpdate |
Minutes since last content check-in (content not in sync) |
CpuUsage / MemoryUsage / DiskUsage |
Percent, averaged over period |
SystemTemperature |
Degrees Celsius |
NoContent |
Count of content items played in the window |
ClockSkew |
Minutes of clock drift. Honors only GT / GTE |
DisplayDetected |
Number of displays detected |
BatteryVoltage / BatteryPercentage |
Volts / percent |
BytesTxDay / BytesRxDay / BytesTotalDay |
KB over a fixed 24-hour window |
BytesTxPeriod / BytesRxPeriod / BytesTotalPeriod |
KB over period |
Condition types are case-sensitive, and the list is closed — an unrecognized type is rejected.
create_alert_rule
Create an alert rule.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Name of the alert rule |
ruleSet |
group[] | Yes | The conditions — see the ruleSet format |
isEnabled |
boolean | No | Whether the rule is evaluated |
period |
number | No | Look-back window in minutes (default 60). Used by the time-window conditions; ignored by those that read the current value |
webhookUrl |
string | No | HTTPS URL POSTed to when the rule triggers |
allDevices |
boolean | No | Evaluate every device; ignores deviceIds |
deviceIds |
string[] | No | Devices to evaluate (when allDevices is not set) |
allUsers |
boolean | No | Notify every user; ignores userIds |
userIds |
string[] | No | Users to notify (when allUsers is not set) |
threshold |
number | No | Legacy — leave unset; put thresholds in each condition’s value |
Example — alert when a lobby display has been offline for 30 minutes:
{
"name": "Lobby display offline",
"ruleSet": [{ "items": [{ "type": "TimeOffline", "value": [30] }] }],
"deviceIds": ["<device-id>"],
"allUsers": true,
"isEnabled": true
}
update_alert_rule
Update an existing alert rule. Pass the complete desired state, not just the deltas — read the rule back first (build_query({ operation: "alertRule" })) so you don’t drop fields you meant to keep. Supplying ruleSet replaces the entire condition set.
Takes the same parameters as create_alert_rule, all optional, plus:
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | The alert rule ID to update |
Set isEnabled: false to pause a rule without deleting it.
delete_alert_rule
Permanently delete an alert rule. It stops being evaluated and generates no further alerts. To pause a rule instead, use update_alert_rule with isEnabled: false.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | The alert rule ID to delete |