Wallboard API - Alerts & Notifications (2.0)
Alert rules and notification channel management for the Wallboard digital signage platform.
Alerts notify administrators when devices go offline, data sources fail, or other conditions are met. Notification channels define how alerts are delivered.
| Concept | Description |
|---|---|
| Alert | Triggered notification when a condition is violated |
| Alert Rule | Definition of when and how to trigger alerts |
| Notification Channel | Delivery method for alerts (Email, SMS, Push) |
| Condition | What triggers the alert (offline, error count, etc.) |
| Type | JSON Type Name | Description |
|---|---|---|
| Device Offline | DeviceOffline |
Device hasn't communicated within threshold |
| Datasource Error | DatasourceError |
Data source refresh error count exceeded |
| Device Status Changed | DeviceStatusChanged |
Device status changed to specified state |
| Device Metric | DeviceMetricChanged |
Device metric exceeded threshold |
| Type | Description |
|---|---|
EMAIL |
Email notification to specified addresses |
SMS |
SMS text message notification |
PUSH |
Push notification to mobile app |
ALL |
All available notification methods |
Alert rules can be configured to only evaluate during specific:
- Working days: Specific days of the week
- Working hours: Time range during the day
Use WBQL in the search parameter. Key fields:
| Filter Type | Field | Example |
|---|---|---|
| Team | teamAssignments.team.id |
search=teamAssignments.team.id=team1 |
| Alert type | type |
search=type=DeviceOffline |
| Name | name |
search=name:offline |
| Enabled | enabled |
search=enabled=true |
See Getting Started for full WBQL syntax.
List all alerts
Retrieve a paginated list of triggered alerts.
Minimum role: OWNER with customer selector
Authorizations:
query Parameters
| customerId | integer <int64> Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL (Wallboard Query Language) search expression for filtering. Examples:
|
| page | integer >= 0 Default: 0 Page index (0-based) |
| size | integer [ 1 .. 1000 ] Default: 20 Number of elements per page (max 1000) |
| sort | string Example: sort=name,asc Sort expression. Format:
|
Responses
Request samples
- cURL
curl -X GET \ 'https://{server}/api/alert?customerId=182&page=0&size=15&sort=name' \ -H 'Authorization: Bearer <token>'
Response samples
- 200
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 0,
- "createdAtDate": "2019-08-24T14:15:22Z",
- "alertRuleId": 0,
- "customerId": 0
}
]
}List device alerts
Retrieve a paginated list of device-related alerts.
Minimum role: VIEWER with customer selector
Authorizations:
query Parameters
| customerId | integer <int64> Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL (Wallboard Query Language) search expression for filtering. Examples:
|
| page | integer >= 0 Default: 0 Page index (0-based) |
| size | integer [ 1 .. 1000 ] Default: 20 Number of elements per page (max 1000) |
| sort | string Example: sort=name,asc Sort expression. Format:
|
Responses
Request samples
- cURL
curl -X GET \ 'https://{server}/api/alert/device?customerId=182&page=0&size=15&sort=name' \ -H 'Authorization: Bearer <token>'
Response samples
- 200
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 0,
- "createdAtDate": "2019-08-24T14:15:22Z",
- "alertRuleId": 0,
- "alertRuleName": "string",
- "deviceId": "string",
- "deviceName": "string",
- "deviceLastActivity": "2019-08-24T14:15:22Z",
- "deviceLastStatusChange": "2019-08-24T14:15:22Z",
- "deviceGroupId": "string",
- "deviceGroupPath": "string"
}
]
}Get all device alerts (non-paginated)
Retrieve all device-related alerts without pagination.
Minimum role: VIEWER with customer selector
Authorizations:
query Parameters
| customerId | integer <int64> Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL (Wallboard Query Language) search expression for filtering. Examples:
|
Responses
Request samples
- cURL
curl -X GET \ 'https://{server}/api/alert/device/all?customerId=182' \ -H 'Authorization: Bearer <token>'
Response samples
- 200
[- {
- "id": 0,
- "createdAtDate": "2019-08-24T14:15:22Z",
- "alertRuleId": 0,
- "alertRuleName": "string",
- "deviceId": "string",
- "deviceName": "string",
- "deviceLastActivity": "2019-08-24T14:15:22Z",
- "deviceLastStatusChange": "2019-08-24T14:15:22Z",
- "deviceGroupId": "string",
- "deviceGroupPath": "string"
}
]List data source alerts
Retrieve a paginated list of data source-related alerts.
Minimum role: VIEWER with customer selector
Authorizations:
query Parameters
| customerId | integer <int64> Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL (Wallboard Query Language) search expression for filtering. Examples:
|
| page | integer >= 0 Default: 0 Page index (0-based) |
| size | integer [ 1 .. 1000 ] Default: 20 Number of elements per page (max 1000) |
| sort | string Example: sort=name,asc Sort expression. Format:
|
Responses
Request samples
- cURL
curl -X GET \ 'https://{server}/api/alert/datasource?customerId=182&page=0&size=15&sort=name' \ -H 'Authorization: Bearer <token>'
Response samples
- 200
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 0,
- "createdAtDate": "2019-08-24T14:15:22Z",
- "alertRuleId": 0,
- "alertRuleName": "string",
- "datasourceId": "string",
- "datasourceName": "string",
- "datasourceErrorCounter": 0,
- "datasourceLastError": "2019-08-24T14:15:22Z"
}
]
}List alert rules
Retrieve a paginated list of alert rules.
Minimum role: TECHNICIAN with customer selector
Authorizations:
query Parameters
| customerId | integer <int64> Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL (Wallboard Query Language) search expression for filtering. Examples:
|
| page | integer >= 0 Default: 0 Page index (0-based) |
| size | integer [ 1 .. 1000 ] Default: 20 Number of elements per page (max 1000) |
| sort | string Example: sort=name,asc Sort expression. Format:
|
Responses
Request samples
- cURL
curl -X GET \ 'https://{server}/api/alertRule?customerId=182&page=0&size=15&sort=name' \ -H 'Authorization: Bearer <token>'
Response samples
- 200
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 336,
- "@type": "DeviceOffline",
- "name": "Device Offline Alert",
- "comment": "Alert when devices are offline",
- "enabled": true,
- "condition": {
- "@type": "DeviceOfflineAndNoActivityForMinutes",
- "inactiveMinutes": 30,
- "recursive": true
}, - "delayEvaluateAfterViolationMinutes": 60,
- "scheduledEvaluateSeconds": 60,
- "workingDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": false,
- "sunday": false
}
}
]
}Create alert rule
Create a new alert rule.
Minimum role: TECHNICIAN with customer selector
Authorizations:
query Parameters
| customerId | integer <int64> Customer/tenant ID for multi-tenant filtering.
|
| teamIds | string Example: teamIds=000c08d294df48efb1b0f5aa754d7ef9:false Team assignment for resource creation. Format: |
Request Body schema: application/jsonrequired
| @type required | string (AlertRuleType) Enum: "DeviceOffline" "DatasourceError" "DeviceStatusChanged" "DeviceMetricChanged" Type of alert rule. Used as discriminator for polymorphic serialization. |
| name required | string Alert rule name (unique per customer) |
| comment | string Optional description or notes |
| enabled | boolean Default: true Whether the alert rule is active |
object (AlertRuleCondition) Alert rule condition. Structure depends on the Condition Types:
| |
| delayEvaluateAfterViolationMinutes | integer >= 0 Default: 60 Minutes to wait before re-evaluating after a violation |
| scheduledEvaluateSeconds | integer >= 0 Default: 60 Seconds between scheduled evaluations |
object (WorkingDays) Days when alert should be evaluated | |
object (WorkingTime) Time range when alert should be evaluated | |
Array of objects (NotificationChannelRef) Notification channels to use when alert triggers | |
object (TeamAccessList) |
Responses
Request samples
- Payload
- cURL
{- "@type": "DeviceOffline",
- "name": "Device Offline Alert",
- "comment": "Alert when devices are offline for 30 minutes",
- "enabled": true,
- "condition": {
- "@type": "DeviceOfflineAndNoActivityForMinutes",
- "inactiveMinutes": 30,
- "recursive": true
}, - "delayEvaluateAfterViolationMinutes": 60,
- "workingDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": false,
- "sunday": false
}, - "notificationChannels": [
- {
- "id": 1
}
]
}Response samples
- 200
{- "id": 336,
- "@type": "DeviceOffline",
- "name": "Device Offline Alert",
- "comment": "Alert when devices are offline",
- "enabled": true,
- "condition": {
- "@type": "DeviceOfflineAndNoActivityForMinutes",
- "inactiveMinutes": 30,
- "recursive": true
}, - "delayEvaluateAfterViolationMinutes": 60,
- "scheduledEvaluateSeconds": 60,
- "workingDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": false,
- "sunday": false
}
}Update alert rule
Update an existing alert rule.
Minimum role: TECHNICIAN
Authorizations:
path Parameters
| alertRuleId required | integer <int64> Alert rule ID |
Request Body schema: application/jsonrequired
| @type required | string (AlertRuleType) Enum: "DeviceOffline" "DatasourceError" "DeviceStatusChanged" "DeviceMetricChanged" Type of alert rule. Used as discriminator for polymorphic serialization. |
| name required | string Alert rule name (unique per customer) |
| comment | string Optional description or notes |
| enabled | boolean Default: true Whether the alert rule is active |
object (AlertRuleCondition) Alert rule condition. Structure depends on the Condition Types:
| |
| delayEvaluateAfterViolationMinutes | integer >= 0 Default: 60 Minutes to wait before re-evaluating after a violation |
| scheduledEvaluateSeconds | integer >= 0 Default: 60 Seconds between scheduled evaluations |
object (WorkingDays) Days when alert should be evaluated | |
object (WorkingTime) Time range when alert should be evaluated | |
Array of objects (NotificationChannelRef) Notification channels to use when alert triggers | |
object (TeamAccessList) |
Responses
Request samples
- Payload
- cURL
{- "id": 336,
- "@type": "DeviceOffline",
- "name": "Device Offline Alert",
- "comment": "Alert when devices are offline",
- "enabled": true,
- "condition": {
- "@type": "DeviceOfflineAndNoActivityForMinutes",
- "inactiveMinutes": 30,
- "recursive": true
}, - "delayEvaluateAfterViolationMinutes": 60,
- "scheduledEvaluateSeconds": 60,
- "workingDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": false,
- "sunday": false
}
}Response samples
- 200
{- "id": 336,
- "@type": "DeviceOffline",
- "name": "Device Offline Alert",
- "comment": "Alert when devices are offline",
- "enabled": true,
- "condition": {
- "@type": "DeviceOfflineAndNoActivityForMinutes",
- "inactiveMinutes": 30,
- "recursive": true
}, - "delayEvaluateAfterViolationMinutes": 60,
- "scheduledEvaluateSeconds": 60,
- "workingDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": false,
- "sunday": false
}
}Update team assignments
Update the team assignments for an alert rule.
Minimum role: OWNER with customer selector
Authorizations:
query Parameters
| customerId | integer <int64> Customer/tenant ID for multi-tenant filtering.
|
| alertRuleId required | integer <int64> Alert rule ID |
Request Body schema: application/jsonrequired
Array of objects Teams to assign the resource to | |
| removeFromTeamIds | Array of strings Team IDs to remove the resource from |
Responses
Request samples
- Payload
- cURL
{- "assignToTeams": [
- {
- "teamId": "string",
- "readOnly": true
}
], - "removeFromTeamIds": [
- "string"
]
}List notification channels
Retrieve a paginated list of notification channels.
Minimum role: TECHNICIAN with customer selector
Authorizations:
query Parameters
| customerId | integer <int64> Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL (Wallboard Query Language) search expression for filtering. Examples:
|
| page | integer >= 0 Default: 0 Page index (0-based) |
| size | integer [ 1 .. 1000 ] Default: 20 Number of elements per page (max 1000) |
| sort | string Example: sort=name,asc Sort expression. Format:
|
Responses
Request samples
- cURL
curl -X GET \ 'https://{server}/api/alertRuleNotificationChannel?customerId=182&page=0&size=15&sort=name' \ -H 'Authorization: Bearer <token>'
Response samples
- 200
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 0,
- "name": "string",
- "comment": "string",
- "channelType": "EMAIL",
- "notify": [
- "string"
], - "readOnly": true
}
]
}Create notification channel
Create a new notification channel.
Minimum role: TECHNICIAN with customer selector
Authorizations:
query Parameters
| customerId | integer <int64> Customer/tenant ID for multi-tenant filtering.
|
| teamIds | string Example: teamIds=000c08d294df48efb1b0f5aa754d7ef9:false Team assignment for resource creation. Format: |
Request Body schema: application/jsonrequired
| name required | string Channel name (unique per customer) |
| comment | string Optional description or notes |
| channelType required | string (NotificationChannelType) Enum: "EMAIL" "SMS" "PUSH" "ALL" Notification delivery method |
| notify | Array of strings Recipients list. Content depends on channelType:
|
Responses
Request samples
- Payload
- cURL
{- "name": "IT Support Email",
- "comment": "Email notifications for IT team",
- "channelType": "EMAIL",
}Response samples
- 200
{- "id": 15,
- "name": "IT Support Email",
- "comment": "Email notifications for IT team",
- "channelType": "EMAIL",
}Update notification channel
Update an existing notification channel.
Minimum role: TECHNICIAN
Authorizations:
path Parameters
| id required | integer <int64> Notification channel ID |
Request Body schema: application/jsonrequired
| name required | string Channel name (unique per customer) |
| comment | string Optional description or notes |
| channelType required | string (NotificationChannelType) Enum: "EMAIL" "SMS" "PUSH" "ALL" Notification delivery method |
| notify | Array of strings Recipients list. Content depends on channelType:
|
Responses
Request samples
- Payload
- cURL
{- "id": 15,
- "name": "IT Support Email",
- "comment": "Email notifications for IT team",
- "channelType": "EMAIL",
}Response samples
- 200
{- "id": 15,
- "name": "IT Support Email",
- "comment": "Email notifications for IT team",
- "channelType": "EMAIL",
}Delete notification channel
Delete a notification channel.
Note: Cannot delete a notification channel that is assigned to an alert rule.
Minimum role: TECHNICIAN
Authorizations:
path Parameters
| id required | integer <int64> Notification channel ID |
Responses
Request samples
- cURL
curl -X DELETE \ 'https://{server}/api/alertRuleNotificationChannel/15' \ -H 'Authorization: Bearer <token>'
Update team assignments
Update the team assignments for a notification channel.
Minimum role: OWNER with customer selector
Authorizations:
query Parameters
| customerId | integer <int64> Customer/tenant ID for multi-tenant filtering.
|
| notificationChannelId required | integer <int64> Notification channel ID |
Request Body schema: application/jsonrequired
Array of objects Teams to assign the resource to | |
| removeFromTeamIds | Array of strings Team IDs to remove the resource from |
Responses
Request samples
- Payload
- cURL
{- "assignToTeams": [
- {
- "teamId": "string",
- "readOnly": true
}
], - "removeFromTeamIds": [
- "string"
]
}