Skip to main content

Wallboard API - Alerts & Notifications (2.0)

API Support: [email protected]

Alert rules and notification channel management for the Wallboard digital signage platform.

Overview

Alerts notify administrators when devices go offline, datasources fail, or other conditions are met. Notification channels define how alerts are delivered.

Key Concepts

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, including email, SMS, in-app notifications, and webhooks
Condition What triggers the alert (offline, error count, etc.)

Alert Rule Types

Type JSON Type Name Description
Device Offline DeviceOffline Device hasn't communicated within threshold
Datasource Error DatasourceError Datasource refresh error count exceeded

Notification Channels

Type Description
EMAIL Email notification to specified addresses
SMS SMS text message notification
USER_NOTIFICATION In-app Notification Center entry for specified customer users
WEBHOOK JSON POST to a configured public HTTP(S) URL

Working Hours

Alert rules can be configured to only evaluate during specific:

  • Working days: Specific days of the week
  • Working hours: Time range during the day

Filtering

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.

alert

Alert viewing

List all alerts

Retrieve a paginated list of triggered alerts.

Minimum role: OWNER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
search
string

WBQL (Wallboard Query Language) search expression for filtering.

Examples:

  • name:myalert - name contains "myalert"
  • enabled:true - only enabled rules
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: field,direction

  • Directions: asc, desc
  • Multiple sorts: sort=name,asc&sort=createdAtDate,desc

Responses

Request samples

curl -X GET \
  'https://{server}/api/alert?customerId=182&page=0&size=15&sort=name' \
  -H 'Authorization: Bearer <token>'

Response samples

Content type
application/json
{
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "totalElements": 0,
  • "totalPages": 0,
  • "size": 0,
  • "content": [
    ]
}

List device alerts

Retrieve a paginated list of device-related alerts.

Minimum role: VIEWER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
search
string

WBQL (Wallboard Query Language) search expression for filtering.

Examples:

  • name:myalert - name contains "myalert"
  • enabled:true - only enabled rules
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: field,direction

  • Directions: asc, desc
  • Multiple sorts: sort=name,asc&sort=createdAtDate,desc

Responses

Request samples

curl -X GET \
  'https://{server}/api/alert/device?customerId=182&page=0&size=15&sort=name' \
  -H 'Authorization: Bearer <token>'

Response samples

Content type
application/json
{
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "totalElements": 0,
  • "totalPages": 0,
  • "size": 0,
  • "content": [
    ]
}

Get all device alerts (non-paginated)

Retrieve all device-related alerts without pagination.

Minimum role: VIEWER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
search
string

WBQL (Wallboard Query Language) search expression for filtering.

Examples:

  • name:myalert - name contains "myalert"
  • enabled:true - only enabled rules

Responses

Request samples

curl -X GET \
  'https://{server}/api/alert/device/all?customerId=182' \
  -H 'Authorization: Bearer <token>'

Response samples

Content type
application/json
[
  • {
    }
]

List datasource alerts

Retrieve a paginated list of datasource-related alerts.

Minimum role: VIEWER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
search
string

WBQL (Wallboard Query Language) search expression for filtering.

Examples:

  • name:myalert - name contains "myalert"
  • enabled:true - only enabled rules
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: field,direction

  • Directions: asc, desc
  • Multiple sorts: sort=name,asc&sort=createdAtDate,desc

Responses

Request samples

curl -X GET \
  'https://{server}/api/alert/datasource?customerId=182&page=0&size=15&sort=name' \
  -H 'Authorization: Bearer <token>'

Response samples

Content type
application/json
{
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "totalElements": 0,
  • "totalPages": 0,
  • "size": 0,
  • "content": [
    ]
}

alert rule

Alert rule configuration

List alert rules

Retrieve a paginated list of alert rules.

Minimum role: TECHNICIAN with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
search
string

WBQL (Wallboard Query Language) search expression for filtering.

Examples:

  • name:myalert - name contains "myalert"
  • enabled:true - only enabled rules
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: field,direction

  • Directions: asc, desc
  • Multiple sorts: sort=name,asc&sort=createdAtDate,desc

Responses

Request samples

curl -X GET \
  'https://{server}/api/alertRule?customerId=182&page=0&size=15&sort=name' \
  -H 'Authorization: Bearer <token>'

Response samples

Content type
application/json
{
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "totalElements": 0,
  • "totalPages": 0,
  • "size": 0,
  • "content": [
    ]
}

Create alert rule

Create a new alert rule.

Minimum role: TECHNICIAN with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
teamIds
string
Example: teamIds=000c08d294df48efb1b0f5aa754d7ef9:false

Team assignment for resource creation. Format: {teamId}:{readOnly}

Request Body schema: application/json
required
@type
required
string (AlertRuleType)
Enum: "DeviceOffline" "DatasourceError"

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 @type discriminator.

Condition Types:

  • DeviceOfflineAndNoActivityForMinutes - Device offline condition
  • DatasourceRefreshErrorCondition - Datasource error condition
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

Content type
application/json
Example
{
  • "@type": "DeviceOffline",
  • "name": "Device Offline Alert",
  • "comment": "Alert when devices are offline for 30 minutes",
  • "enabled": true,
  • "condition": {
    },
  • "delayEvaluateAfterViolationMinutes": 60,
  • "workingDays": {
    },
  • "notificationChannels": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 336,
  • "@type": "DeviceOffline",
  • "name": "Device Offline Alert",
  • "comment": "Alert when devices are offline",
  • "enabled": true,
  • "condition": {
    },
  • "delayEvaluateAfterViolationMinutes": 60,
  • "scheduledEvaluateSeconds": 60,
  • "workingDays": {
    }
}

Update alert rule

Update an existing alert rule.

Minimum role: TECHNICIAN

Authorizations:
bearer
path Parameters
alertRuleId
required
integer <int64>

Alert rule ID

Request Body schema: application/json
required
@type
required
string (AlertRuleType)
Enum: "DeviceOffline" "DatasourceError"

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 @type discriminator.

Condition Types:

  • DeviceOfflineAndNoActivityForMinutes - Device offline condition
  • DatasourceRefreshErrorCondition - Datasource error condition
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

Content type
application/json
{
  • "id": 336,
  • "@type": "DeviceOffline",
  • "name": "Device Offline Alert",
  • "comment": "Alert when devices are offline",
  • "enabled": true,
  • "condition": {
    },
  • "delayEvaluateAfterViolationMinutes": 60,
  • "scheduledEvaluateSeconds": 60,
  • "workingDays": {
    }
}

Response samples

Content type
application/json
{
  • "id": 336,
  • "@type": "DeviceOffline",
  • "name": "Device Offline Alert",
  • "comment": "Alert when devices are offline",
  • "enabled": true,
  • "condition": {
    },
  • "delayEvaluateAfterViolationMinutes": 60,
  • "scheduledEvaluateSeconds": 60,
  • "workingDays": {
    }
}

Delete alert rule

Delete an alert rule.

Minimum role: TECHNICIAN

Authorizations:
bearer
path Parameters
alertRuleId
required
integer <int64>

Alert rule ID

Responses

Request samples

curl -X DELETE \
  'https://{server}/api/alertRule/336' \
  -H 'Authorization: Bearer <token>'

Update team assignments

Update the team assignments for an alert rule.

Minimum role: OWNER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
alertRuleId
required
integer <int64>

Alert rule ID

Request Body schema: application/json
required
Array of objects

Teams to assign the resource to

removeFromTeamIds
Array of strings

Team IDs to remove the resource from

Responses

Request samples

Content type
application/json
{
  • "assignToTeams": [
    ],
  • "removeFromTeamIds": [
    ]
}

notification channel

Notification delivery channels

List notification channels

Retrieve a paginated list of notification channels.

Minimum role: TECHNICIAN with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
search
string

WBQL (Wallboard Query Language) search expression for filtering.

Examples:

  • name:myalert - name contains "myalert"
  • enabled:true - only enabled rules
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: field,direction

  • Directions: asc, desc
  • Multiple sorts: sort=name,asc&sort=createdAtDate,desc

Responses

Request samples

curl -X GET \
  'https://{server}/api/alertRuleNotificationChannel?customerId=182&page=0&size=15&sort=name' \
  -H 'Authorization: Bearer <token>'

Response samples

Content type
application/json
{
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "totalElements": 0,
  • "totalPages": 0,
  • "size": 0,
  • "content": [
    ]
}

Create notification channel

Create a new notification channel.

USER_NOTIFICATION requires one or more recipient emails in notify; each must belong to the selected customer. WEBHOOK requires webhook.url, and notify must be empty or omitted. Other channel types cannot include webhook. Webhook URLs must use HTTP(S) with a valid host and port, without embedded credentials or a fragment. The host must resolve only to public addresses. Alert delivery through USER_NOTIFICATION or WEBHOOK requires the rule and channel to share a customer; user membership is rechecked when an in-app notification is delivered.

Minimum role: TECHNICIAN with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
teamIds
string
Example: teamIds=000c08d294df48efb1b0f5aa754d7ef9:false

Team assignment for resource creation. Format: {teamId}:{readOnly}

Request Body schema: application/json
required
name
required
string

Channel name (unique per customer)

comment
string

Optional description or notes

channelType
required
string (NotificationChannelType)
Enum: "EMAIL" "SMS" "USER_NOTIFICATION" "WEBHOOK"

Notification delivery method

notify
Array of strings unique

Recipients list. Content depends on channelType:

  • EMAIL: email addresses
  • SMS: phone numbers
  • USER_NOTIFICATION: one or more email addresses of users in the channel's customer
  • WEBHOOK: empty or omitted; the destination belongs in webhook.url
object (WebhookChannelConfiguration)

Destination for a WEBHOOK channel. Alert evaluations POST application/json with the versioned AlertWebhookPayload body. The URL must use HTTP(S) and a public host, with a valid port and no credentials or fragment. The host is rechecked before delivery.

Responses

Request samples

Content type
application/json
Example
{}

Response samples

Content type
application/json
{}

Update notification channel

Update an existing notification channel. The same recipient and webhook rules as creation apply to the resulting channel.

Minimum role: TECHNICIAN

Authorizations:
bearer
path Parameters
id
required
integer <int64>

Notification channel ID

Request Body schema: application/json
required
name
required
string

Channel name (unique per customer)

comment
string

Optional description or notes

channelType
required
string (NotificationChannelType)
Enum: "EMAIL" "SMS" "USER_NOTIFICATION" "WEBHOOK"

Notification delivery method

notify
Array of strings unique

Recipients list. Content depends on channelType:

  • EMAIL: email addresses
  • SMS: phone numbers
  • USER_NOTIFICATION: one or more email addresses of users in the channel's customer
  • WEBHOOK: empty or omitted; the destination belongs in webhook.url
object (WebhookChannelConfiguration)

Destination for a WEBHOOK channel. Alert evaluations POST application/json with the versioned AlertWebhookPayload body. The URL must use HTTP(S) and a public host, with a valid port and no credentials or fragment. The host is rechecked before delivery.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

Delete notification channel

Delete a notification channel.

Note: Cannot delete a notification channel that is assigned to an alert rule.

Minimum role: TECHNICIAN

Authorizations:
bearer
path Parameters
id
required
integer <int64>

Notification channel ID

Responses

Request samples

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:
bearer
query Parameters
customerId
integer <int64>

Customer/tenant ID for multi-tenant filtering.

  • Required for ADMIN users to select tenant context
  • Non-admin users can omit (defaults to their tenant)
notificationChannelId
required
integer <int64>

Notification channel ID

Request Body schema: application/json
required
Array of objects

Teams to assign the resource to

removeFromTeamIds
Array of strings

Team IDs to remove the resource from

Responses

Request samples

Content type
application/json
{
  • "assignToTeams": [
    ],
  • "removeFromTeamIds": [
    ]
}