Skip to main content

Wallboard API - Webhooks (2.0)

API Support: [email protected]

Configure actions in Wallboard, then trigger them from an external system using a webhook API key.

Setup and trigger

  1. Create a webhook API key with the WEBHOOK_CALL scope. Key and action management require TECHNICIAN access.
  2. Create an action with a name, action type and a nonempty eventId unique within the customer. Event IDs cannot contain whitespace.
  3. Configure its targets and action parameters, and enable the action (enabled defaults to false).
  4. Send JSON to the trigger endpoint, with the configured ID in event_id:
curl -X POST 'https://{server}/public-api/integration/webhooks' \
  -H 'X-Webhook-Apikey: <webhook-api-key>' \
  -H 'Content-Type: application/json' \
  -d '{"event_id":"emergency-on"}'

The API key selects the customer. A successful response confirms that execution was triggered; device and datasource actions run in the background. A disabled action is not executed.

Payload fields

Examples use event_id; the payload also accepts eventId. Use the fields relevant to the configured action.

Field JSON type Used for
event_id string Configured event ID
data string containing JSON Replace/merge datasource data or insert an array item
keySelector string Datasource key or array path
minimumValue, maximumValue integer Bounds for decrement/increment actions
index integer Array insertion/removal position
contentId string Content assignment or preview
message string Toast message
sensorData object Sensor event JSON
volumeLevel integer Volume change
priority integer Channel priority
saturation number Channel saturation
capIds, removeAll string array, boolean Clear selected or all CAP alerts

Increment/decrement actions change the selected value by one; they do not consume a value amount. URL-loading actions use actionParams.url saved in the action configuration.

Payload examples

Configure a separate event ID for each action before sending its payload.

{"event_id":"merge-data","data":"{\"name\":\"John\",\"score\":100}"}
{"event_id":"increase-counter","keySelector":"score","maximumValue":100}
{"event_id":"set-volume","volumeLevel":50}
{"event_id":"sensor-trigger","sensorData":{"type":"motion","zone":"entrance"}}

For systems limited to GET requests, encode the JSON as UTF-8 Base64 and URL-encode the query values. The GET operation below documents that integration path.

webhook trigger

Endpoints to trigger webhook actions

Trigger webhook (GET request)

Trigger a webhook action using a GET request with Base64-encoded payload.

This endpoint allows external systems to trigger webhook actions using URL parameters, which is useful when the calling system cannot easily send POST requests (e.g., simple automation systems, bookmarks, or QR codes).

How it works:

  1. Encode your JSON payload as Base64
  2. Include the API key and encoded payload as query parameters
  3. The webhook action matching the event_id in the payload is executed

Important: Webhook calls are asynchronous - the response acknowledges triggering; the actual action executes in the background.

Payload format:

{"event_id": "your-event-id", "keySelector": "optional-selector"}

The event_id field is required and must match an existing webhook event action. Additional fields in the payload are passed to the action as parameters.

query Parameters
apiKey
required
string

Webhook API key (JWT format)

payload
required
string <base64>
Example: payload=eyJldmVudF9pZCI6ImRlY3JlYXNlIiwia2V5U2VsZWN0b3IiOiJ0ZXN0In0=

Base64-encoded JSON payload. Must contain at least event_id field matching an existing webhook action.

Responses

Request samples

# Payload: {"event_id":"decrease","keySelector":"test"}
# Base64 encoded: eyJldmVudF9pZCI6ImRlY3JlYXNlIiwia2V5U2VsZWN0b3IiOiJ0ZXN0In0=

curl -X GET \
  'https://{server}/public-api/integration/webhooks?apiKey=your_api_key&payload=eyJldmVudF9pZCI6ImRlY3JlYXNlIiwia2V5U2VsZWN0b3IiOiJ0ZXN0In0='

Response samples

Content type
application/json
{
  • "message": "Execution triggered successfully (the execution is running in the background)",
  • "errorReason": "string"
}

Trigger webhook (POST request)

Trigger a webhook action using a POST request with JSON payload.

This is the recommended method for triggering webhooks as it provides better security (API key in header) and supports larger payloads.

How it works:

  1. Set the X-Webhook-Apikey header with your API key
  2. Send a JSON body with event_id and any additional parameters
  3. The webhook action matching the event_id is executed

Important: Webhook calls are asynchronous - the response acknowledges triggering; the actual action executes in the background.

Payload format:

{"event_id": "your-event-id", "keySelector": "optional-selector"}

The event_id field is required and must match an existing webhook event action. Additional fields in the payload are passed to the action as parameters.

header Parameters
X-Webhook-Apikey
required
string
Example: <webhook-api-key>

Webhook API key

Request Body schema: application/json
required

JSON payload with the event ID and optional parameters. The event_id is required and must match an existing webhook event action.

event_id
required
string non-empty

Configured event ID. The payload also accepts the spelling eventId.

data
string

JSON text for datasource replacement, merge or array insertion.

keySelector
string

Key or array path for the selected datasource action.

minimumValue
integer <int64>

Lower bound for decrement actions.

maximumValue
integer <int64>

Upper bound for increment actions.

index
integer <int64>

Position for array insertion/removal.

contentId
string
message
string
object

Sensor event JSON passed to the device.

volumeLevel
integer

Volume level for the configured device action.

priority
integer
saturation
number
capIds
Array of strings
removeAll
boolean
property name*
additional property
any

Responses

Request samples

Content type
application/json
Example
{
  • "event_id": "emergency-on"
}

Response samples

Content type
application/json
{
  • "message": "Execution triggered successfully (the execution is running in the background)",
  • "errorReason": "string"
}

webhook event action

Webhook event action configuration

List webhook event actions

Retrieve a paginated list of webhook event actions.

Minimum role: TECHNICIAN with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint.

page
integer >= 0
Default: 0

Page index (0-based)

size
integer >= 1
Default: 20

Requested page size; server limits and endpoint overrides apply.

sort
string
Example: sort=name,asc

Sort expression. Format: field,direction

  • Directions: asc, desc
  • Multiple sorts: sort=name,asc&sort=lastActivity,desc
  • Nested fields: sort=content.name,asc
search
string

WBQL filter expression. Operators: : (contains), = (equals), , , ^ (starts with), >, , <, , (in set). Logic: , (AND), | (OR). Special: NULL, !NULL. Example: name:lobby,deviceStatus=ONLINE

Responses

Request samples

curl -X GET \
  'https://{server}/api/webhookEvent/actions?customerId=123&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 webhook event action

Create a new webhook event action.

Minimum role: TECHNICIAN with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint.

teamIds
string
Example: teamIds=000c08d294df48efb1b0f5aa754d7ef9:true,00a22e86602c4a88914614aa9516a481:false

Team assignments for a newly created resource. Comma-separated teamId:readOnly pairs.

Request Body schema: application/json
required
name
required
string

Human-readable name for the webhook action

eventId
required
string non-empty

Required, nonempty event ID, unique within the customer and containing no whitespace. The server does not generate this value.

enabled
boolean
Default: false

Whether to enable this action immediately

action
required
string (WebhookActionType)
Enum: "ENABLE_EMERGENCY_ON_DEVICE" "ENABLE_EMERGENCY_ON_DEVICE_TAG" "ENABLE_EMERGENCY_ON_DEVICE_GROUP" "ENABLE_EMERGENCY_ON_DEVICE_ALL" "DISABLE_EMERGENCY_ON_DEVICE" "DISABLE_EMERGENCY_ON_DEVICE_TAG" "DISABLE_EMERGENCY_ON_DEVICE_GROUP" "DISABLE_EMERGENCY_ON_DEVICE_ALL" "LOAD_URL_ON_DEVICE" "LOAD_URL_ON_DEVICE_TAG" "LOAD_URL_ON_DEVICE_GROUP" "LOAD_URL_ON_DEVICE_ALL" "PAUSE_CONTENT_ON_DEVICE" "PAUSE_CONTENT_ON_DEVICE_TAG" "PAUSE_CONTENT_ON_DEVICE_GROUP" "PAUSE_CONTENT_ON_DEVICE_ALL" "RESUME_CONTENT_ON_DEVICE" "RESUME_CONTENT_ON_DEVICE_TAG" "RESUME_CONTENT_ON_DEVICE_GROUP" "RESUME_CONTENT_ON_DEVICE_ALL" "REFRESH_CONTENT_ON_DEVICE" "REFRESH_CONTENT_ON_DEVICE_TAG" "REFRESH_CONTENT_ON_DEVICE_GROUP" "REFRESH_CONTENT_ON_DEVICE_ALL" "REFRESH_DATASOURCE" "REFRESH_DATASOURCE_ALL" "SET_INTERNAL_DATASOURCE" "INCREASE_VALUE_IN_DATASOURCE" "DECREASE_VALUE_IN_DATASOURCE" "MERGE_INTERNAL_DATASOURCE" "INSERT_CAP_DATASOURCE" "CLEAR_CAP_DATASOURCE" "DELETE_BY_KEY_INTERNAL_DATASOURCE" "INSERT_TO_ARRAY_INTERNAL_DATASOURCE" "REMOVE_FROM_ARRAY_INTERNAL_DATASOURCE" "EMPTY_ARRAY_INTERNAL_DATASOURCE" "ROTATE_ARRAY_INTERNAL_DATASOURCE" "REPLACE_OR_MERGE_ELEMENT_IN_ARRAY_INTERNAL_DATASOURCE" "SEND_SENSOR_EVENT_TO_DEVICE" "SEND_SENSOR_EVENT_TO_DEVICE_TAG" "SEND_SENSOR_EVENT_TO_DEVICE_GROUP" "SEND_SENSOR_EVENT_TO_DEVICE_ALL" "RESTART_DEVICE" "RESTART_DEVICE_TAG" "RESTART_DEVICE_GROUP" "RESTART_DEVICE_ALL" "ASSIGN_CONTENT_ON_DEVICE" "ASSIGN_CONTENT_ON_DEVICE_TAG" "ASSIGN_CONTENT_ON_DEVICE_GROUP" "ASSIGN_CONTENT_ON_DEVICE_ALL" "PREVIEW_CONTENT_ON_DEVICE" "PREVIEW_CONTENT_ON_DEVICE_TAG" "PREVIEW_CONTENT_ON_DEVICE_GROUP" "PREVIEW_CONTENT_ON_DEVICE_ALL" "WAKE_UP_DEVICE" "WAKE_UP_DEVICE_TAG" "WAKE_UP_DEVICE_GROUP" "WAKE_UP_DEVICE_ALL" "SNOOZE_DEVICE" "SNOOZE_DEVICE_TAG" "SNOOZE_DEVICE_GROUP" "SNOOZE_DEVICE_ALL" "SHOW_TOAST_MESSAGE_DEVICE" "SHOW_TOAST_MESSAGE_DEVICE_TAG" "SHOW_TOAST_MESSAGE_DEVICE_GROUP" "SHOW_TOAST_MESSAGE_DEVICE_ALL" "CHANGE_VOLUME_DEVICE" "CHANGE_VOLUME_DEVICE_TAG" "CHANGE_VOLUME_DEVICE_GROUP" "CHANGE_VOLUME_DEVICE_ALL" "FORCE_SYNC_SHARED_FOLDER" "UPLOAD_FILE_TO_FOLDER" "ENABLE_CAMPAIGN" "DISABLE_CAMPAIGN" "CHANGE_SATURATION_CAMPAIGN" "CHANGE_PRIORITY_CAMPAIGN" "ENABLE_CAMPAIGN_BY_TAGS" "DISABLE_CAMPAIGN_BY_TAGS" "CHANGE_SATURATION_CAMPAIGN_BY_TAGS" "CHANGE_PRIORITY_CAMPAIGN_BY_TAGS"

Action to execute when webhook is triggered.

Emergency Mode Actions:

  • ENABLE_EMERGENCY_ON_DEVICE - Enable emergency mode on specific device
  • ENABLE_EMERGENCY_ON_DEVICE_TAG - Enable emergency mode on devices with tag
  • ENABLE_EMERGENCY_ON_DEVICE_GROUP - Enable emergency mode on device group
  • ENABLE_EMERGENCY_ON_DEVICE_ALL - Enable emergency mode on all devices
  • DISABLE_EMERGENCY_ON_DEVICE - Disable emergency mode on specific device
  • DISABLE_EMERGENCY_ON_DEVICE_TAG - Disable emergency mode on devices with tag
  • DISABLE_EMERGENCY_ON_DEVICE_GROUP - Disable emergency mode on device group
  • DISABLE_EMERGENCY_ON_DEVICE_ALL - Disable emergency mode on all devices

URL Loading Actions:

  • LOAD_URL_ON_DEVICE - Load custom URL on specific device
  • LOAD_URL_ON_DEVICE_TAG - Load custom URL on devices with tag
  • LOAD_URL_ON_DEVICE_GROUP - Load custom URL on device group
  • LOAD_URL_ON_DEVICE_ALL - Load custom URL on all devices

Content Control Actions:

  • PAUSE_CONTENT_ON_DEVICE - Pause content on specific device
  • PAUSE_CONTENT_ON_DEVICE_TAG - Pause content on devices with tag
  • PAUSE_CONTENT_ON_DEVICE_GROUP - Pause content on device group
  • PAUSE_CONTENT_ON_DEVICE_ALL - Pause content on all devices
  • RESUME_CONTENT_ON_DEVICE - Resume content on specific device
  • RESUME_CONTENT_ON_DEVICE_TAG - Resume content on devices with tag
  • RESUME_CONTENT_ON_DEVICE_GROUP - Resume content on device group
  • RESUME_CONTENT_ON_DEVICE_ALL - Resume content on all devices
  • REFRESH_CONTENT_ON_DEVICE - Refresh content on specific device
  • REFRESH_CONTENT_ON_DEVICE_TAG - Refresh content on devices with tag
  • REFRESH_CONTENT_ON_DEVICE_GROUP - Refresh content on device group
  • REFRESH_CONTENT_ON_DEVICE_ALL - Refresh content on all devices

Content Assignment Actions:

  • ASSIGN_CONTENT_ON_DEVICE - Assign content to specific device
  • ASSIGN_CONTENT_ON_DEVICE_TAG - Assign content to devices with tag
  • ASSIGN_CONTENT_ON_DEVICE_GROUP - Assign content to device group
  • ASSIGN_CONTENT_ON_DEVICE_ALL - Assign content to all devices
  • PREVIEW_CONTENT_ON_DEVICE - Preview content on specific device
  • PREVIEW_CONTENT_ON_DEVICE_TAG - Preview content on devices with tag
  • PREVIEW_CONTENT_ON_DEVICE_GROUP - Preview content on device group
  • PREVIEW_CONTENT_ON_DEVICE_ALL - Preview content on all devices

Datasource Actions:

  • REFRESH_DATASOURCE - Refresh specific datasource
  • REFRESH_DATASOURCE_ALL - Refresh all datasources
  • SET_INTERNAL_DATASOURCE - Set value in internal datasource
  • INCREASE_VALUE_IN_DATASOURCE - Increase numeric value in datasource
  • DECREASE_VALUE_IN_DATASOURCE - Decrease numeric value in datasource
  • MERGE_INTERNAL_DATASOURCE - Merge data into internal datasource
  • INSERT_CAP_DATASOURCE - Insert capacity data into datasource
  • DELETE_BY_KEY_INTERNAL_DATASOURCE - Delete key from internal datasource
  • INSERT_TO_ARRAY_INTERNAL_DATASOURCE - Insert element to array in datasource
  • REMOVE_FROM_ARRAY_INTERNAL_DATASOURCE - Remove element from array in datasource
  • EMPTY_ARRAY_INTERNAL_DATASOURCE - Empty array in datasource
  • ROTATE_ARRAY_INTERNAL_DATASOURCE - Rotate array in datasource
  • REPLACE_OR_MERGE_ELEMENT_IN_ARRAY_INTERNAL_DATASOURCE - Replace or merge array element

Sensor Event Actions:

  • SEND_SENSOR_EVENT_TO_DEVICE - Send sensor event to specific device
  • SEND_SENSOR_EVENT_TO_DEVICE_TAG - Send sensor event to devices with tag
  • SEND_SENSOR_EVENT_TO_DEVICE_GROUP - Send sensor event to device group
  • SEND_SENSOR_EVENT_TO_DEVICE_ALL - Send sensor event to all devices

Device Control Actions:

  • RESTART_DEVICE - Restart specific device
  • RESTART_DEVICE_TAG - Restart devices with tag
  • RESTART_DEVICE_GROUP - Restart device group
  • RESTART_DEVICE_ALL - Restart all devices
  • WAKE_UP_DEVICE - Wake up specific device
  • WAKE_UP_DEVICE_TAG - Wake up devices with tag
  • WAKE_UP_DEVICE_GROUP - Wake up device group
  • WAKE_UP_DEVICE_ALL - Wake up all devices
  • SNOOZE_DEVICE - Snooze specific device
  • SNOOZE_DEVICE_TAG - Snooze devices with tag
  • SNOOZE_DEVICE_GROUP - Snooze device group
  • SNOOZE_DEVICE_ALL - Snooze all devices

Display Control Actions:

  • SHOW_TOAST_MESSAGE_DEVICE - Show toast message on specific device
  • SHOW_TOAST_MESSAGE_DEVICE_TAG - Show toast message on devices with tag
  • SHOW_TOAST_MESSAGE_DEVICE_GROUP - Show toast message on device group
  • SHOW_TOAST_MESSAGE_DEVICE_ALL - Show toast message on all devices
  • CHANGE_VOLUME_DEVICE - Change volume on specific device
  • CHANGE_VOLUME_DEVICE_TAG - Change volume on devices with tag
  • CHANGE_VOLUME_DEVICE_GROUP - Change volume on device group
  • CHANGE_VOLUME_DEVICE_ALL - Change volume on all devices

Folder Actions:

  • FORCE_SYNC_SHARED_FOLDER - Force sync shared folder
  • UPLOAD_FILE_TO_FOLDER - Upload file to folder

Channel/Campaign Actions:

  • ENABLE_CAMPAIGN - Enable specific channel/campaign
  • DISABLE_CAMPAIGN - Disable specific channel/campaign
  • CHANGE_SATURATION_CAMPAIGN - Change saturation of channel/campaign
  • CHANGE_PRIORITY_CAMPAIGN - Change priority of channel/campaign
  • ENABLE_CAMPAIGN_BY_TAGS - Enable channels/campaigns by tags
  • DISABLE_CAMPAIGN_BY_TAGS - Disable channels/campaigns by tags
  • CHANGE_SATURATION_CAMPAIGN_BY_TAGS - Change saturation by tags
  • CHANGE_PRIORITY_CAMPAIGN_BY_TAGS - Change priority by tags
object

Additional parameters for the action

targetId
string

Single target ID (alternative to targetData for single target)

object (TargetData)

Target specification for the webhook action

Responses

Request samples

Content type
application/json
Example
{
  • "name": "Fire Alarm Emergency",
  • "eventId": "emergency-device",
  • "enabled": true,
  • "action": "ENABLE_EMERGENCY_ON_DEVICE",
  • "targetData": {
    }
}

Response samples

Content type
application/json
{
  • "id": 133,
  • "name": "Emergency Alert Trigger",
  • "eventId": "fire-alarm-trigger",
  • "enabled": true,
  • "action": "ENABLE_EMERGENCY_ON_DEVICE",
  • "actionParams": {},
  • "targetData": {
    },
  • "targetName": "Lobby Display",
  • "targetId": "device-uuid-123",
  • "customerId": 182,
  • "readOnly": false
}

Update webhook event action

Update an existing webhook event action. Read its configuration first and send name, enabled, action and actionParams together; omitted values for these fields are assigned null. Omitted targets and a missing/empty eventId are preserved.

Minimum role: TECHNICIAN

Authorizations:
bearer
path Parameters
actionId
required
integer <int64>

Webhook event action ID

Request Body schema: application/json
required
name
string

Human-readable name for the webhook action

eventId
string

Replacement event ID; nonempty values must be unique within the customer and contain no whitespace.

enabled
boolean

Whether this action is enabled

action
string (WebhookActionType)
Enum: "ENABLE_EMERGENCY_ON_DEVICE" "ENABLE_EMERGENCY_ON_DEVICE_TAG" "ENABLE_EMERGENCY_ON_DEVICE_GROUP" "ENABLE_EMERGENCY_ON_DEVICE_ALL" "DISABLE_EMERGENCY_ON_DEVICE" "DISABLE_EMERGENCY_ON_DEVICE_TAG" "DISABLE_EMERGENCY_ON_DEVICE_GROUP" "DISABLE_EMERGENCY_ON_DEVICE_ALL" "LOAD_URL_ON_DEVICE" "LOAD_URL_ON_DEVICE_TAG" "LOAD_URL_ON_DEVICE_GROUP" "LOAD_URL_ON_DEVICE_ALL" "PAUSE_CONTENT_ON_DEVICE" "PAUSE_CONTENT_ON_DEVICE_TAG" "PAUSE_CONTENT_ON_DEVICE_GROUP" "PAUSE_CONTENT_ON_DEVICE_ALL" "RESUME_CONTENT_ON_DEVICE" "RESUME_CONTENT_ON_DEVICE_TAG" "RESUME_CONTENT_ON_DEVICE_GROUP" "RESUME_CONTENT_ON_DEVICE_ALL" "REFRESH_CONTENT_ON_DEVICE" "REFRESH_CONTENT_ON_DEVICE_TAG" "REFRESH_CONTENT_ON_DEVICE_GROUP" "REFRESH_CONTENT_ON_DEVICE_ALL" "REFRESH_DATASOURCE" "REFRESH_DATASOURCE_ALL" "SET_INTERNAL_DATASOURCE" "INCREASE_VALUE_IN_DATASOURCE" "DECREASE_VALUE_IN_DATASOURCE" "MERGE_INTERNAL_DATASOURCE" "INSERT_CAP_DATASOURCE" "CLEAR_CAP_DATASOURCE" "DELETE_BY_KEY_INTERNAL_DATASOURCE" "INSERT_TO_ARRAY_INTERNAL_DATASOURCE" "REMOVE_FROM_ARRAY_INTERNAL_DATASOURCE" "EMPTY_ARRAY_INTERNAL_DATASOURCE" "ROTATE_ARRAY_INTERNAL_DATASOURCE" "REPLACE_OR_MERGE_ELEMENT_IN_ARRAY_INTERNAL_DATASOURCE" "SEND_SENSOR_EVENT_TO_DEVICE" "SEND_SENSOR_EVENT_TO_DEVICE_TAG" "SEND_SENSOR_EVENT_TO_DEVICE_GROUP" "SEND_SENSOR_EVENT_TO_DEVICE_ALL" "RESTART_DEVICE" "RESTART_DEVICE_TAG" "RESTART_DEVICE_GROUP" "RESTART_DEVICE_ALL" "ASSIGN_CONTENT_ON_DEVICE" "ASSIGN_CONTENT_ON_DEVICE_TAG" "ASSIGN_CONTENT_ON_DEVICE_GROUP" "ASSIGN_CONTENT_ON_DEVICE_ALL" "PREVIEW_CONTENT_ON_DEVICE" "PREVIEW_CONTENT_ON_DEVICE_TAG" "PREVIEW_CONTENT_ON_DEVICE_GROUP" "PREVIEW_CONTENT_ON_DEVICE_ALL" "WAKE_UP_DEVICE" "WAKE_UP_DEVICE_TAG" "WAKE_UP_DEVICE_GROUP" "WAKE_UP_DEVICE_ALL" "SNOOZE_DEVICE" "SNOOZE_DEVICE_TAG" "SNOOZE_DEVICE_GROUP" "SNOOZE_DEVICE_ALL" "SHOW_TOAST_MESSAGE_DEVICE" "SHOW_TOAST_MESSAGE_DEVICE_TAG" "SHOW_TOAST_MESSAGE_DEVICE_GROUP" "SHOW_TOAST_MESSAGE_DEVICE_ALL" "CHANGE_VOLUME_DEVICE" "CHANGE_VOLUME_DEVICE_TAG" "CHANGE_VOLUME_DEVICE_GROUP" "CHANGE_VOLUME_DEVICE_ALL" "FORCE_SYNC_SHARED_FOLDER" "UPLOAD_FILE_TO_FOLDER" "ENABLE_CAMPAIGN" "DISABLE_CAMPAIGN" "CHANGE_SATURATION_CAMPAIGN" "CHANGE_PRIORITY_CAMPAIGN" "ENABLE_CAMPAIGN_BY_TAGS" "DISABLE_CAMPAIGN_BY_TAGS" "CHANGE_SATURATION_CAMPAIGN_BY_TAGS" "CHANGE_PRIORITY_CAMPAIGN_BY_TAGS"

Action to execute when webhook is triggered.

Emergency Mode Actions:

  • ENABLE_EMERGENCY_ON_DEVICE - Enable emergency mode on specific device
  • ENABLE_EMERGENCY_ON_DEVICE_TAG - Enable emergency mode on devices with tag
  • ENABLE_EMERGENCY_ON_DEVICE_GROUP - Enable emergency mode on device group
  • ENABLE_EMERGENCY_ON_DEVICE_ALL - Enable emergency mode on all devices
  • DISABLE_EMERGENCY_ON_DEVICE - Disable emergency mode on specific device
  • DISABLE_EMERGENCY_ON_DEVICE_TAG - Disable emergency mode on devices with tag
  • DISABLE_EMERGENCY_ON_DEVICE_GROUP - Disable emergency mode on device group
  • DISABLE_EMERGENCY_ON_DEVICE_ALL - Disable emergency mode on all devices

URL Loading Actions:

  • LOAD_URL_ON_DEVICE - Load custom URL on specific device
  • LOAD_URL_ON_DEVICE_TAG - Load custom URL on devices with tag
  • LOAD_URL_ON_DEVICE_GROUP - Load custom URL on device group
  • LOAD_URL_ON_DEVICE_ALL - Load custom URL on all devices

Content Control Actions:

  • PAUSE_CONTENT_ON_DEVICE - Pause content on specific device
  • PAUSE_CONTENT_ON_DEVICE_TAG - Pause content on devices with tag
  • PAUSE_CONTENT_ON_DEVICE_GROUP - Pause content on device group
  • PAUSE_CONTENT_ON_DEVICE_ALL - Pause content on all devices
  • RESUME_CONTENT_ON_DEVICE - Resume content on specific device
  • RESUME_CONTENT_ON_DEVICE_TAG - Resume content on devices with tag
  • RESUME_CONTENT_ON_DEVICE_GROUP - Resume content on device group
  • RESUME_CONTENT_ON_DEVICE_ALL - Resume content on all devices
  • REFRESH_CONTENT_ON_DEVICE - Refresh content on specific device
  • REFRESH_CONTENT_ON_DEVICE_TAG - Refresh content on devices with tag
  • REFRESH_CONTENT_ON_DEVICE_GROUP - Refresh content on device group
  • REFRESH_CONTENT_ON_DEVICE_ALL - Refresh content on all devices

Content Assignment Actions:

  • ASSIGN_CONTENT_ON_DEVICE - Assign content to specific device
  • ASSIGN_CONTENT_ON_DEVICE_TAG - Assign content to devices with tag
  • ASSIGN_CONTENT_ON_DEVICE_GROUP - Assign content to device group
  • ASSIGN_CONTENT_ON_DEVICE_ALL - Assign content to all devices
  • PREVIEW_CONTENT_ON_DEVICE - Preview content on specific device
  • PREVIEW_CONTENT_ON_DEVICE_TAG - Preview content on devices with tag
  • PREVIEW_CONTENT_ON_DEVICE_GROUP - Preview content on device group
  • PREVIEW_CONTENT_ON_DEVICE_ALL - Preview content on all devices

Datasource Actions:

  • REFRESH_DATASOURCE - Refresh specific datasource
  • REFRESH_DATASOURCE_ALL - Refresh all datasources
  • SET_INTERNAL_DATASOURCE - Set value in internal datasource
  • INCREASE_VALUE_IN_DATASOURCE - Increase numeric value in datasource
  • DECREASE_VALUE_IN_DATASOURCE - Decrease numeric value in datasource
  • MERGE_INTERNAL_DATASOURCE - Merge data into internal datasource
  • INSERT_CAP_DATASOURCE - Insert capacity data into datasource
  • DELETE_BY_KEY_INTERNAL_DATASOURCE - Delete key from internal datasource
  • INSERT_TO_ARRAY_INTERNAL_DATASOURCE - Insert element to array in datasource
  • REMOVE_FROM_ARRAY_INTERNAL_DATASOURCE - Remove element from array in datasource
  • EMPTY_ARRAY_INTERNAL_DATASOURCE - Empty array in datasource
  • ROTATE_ARRAY_INTERNAL_DATASOURCE - Rotate array in datasource
  • REPLACE_OR_MERGE_ELEMENT_IN_ARRAY_INTERNAL_DATASOURCE - Replace or merge array element

Sensor Event Actions:

  • SEND_SENSOR_EVENT_TO_DEVICE - Send sensor event to specific device
  • SEND_SENSOR_EVENT_TO_DEVICE_TAG - Send sensor event to devices with tag
  • SEND_SENSOR_EVENT_TO_DEVICE_GROUP - Send sensor event to device group
  • SEND_SENSOR_EVENT_TO_DEVICE_ALL - Send sensor event to all devices

Device Control Actions:

  • RESTART_DEVICE - Restart specific device
  • RESTART_DEVICE_TAG - Restart devices with tag
  • RESTART_DEVICE_GROUP - Restart device group
  • RESTART_DEVICE_ALL - Restart all devices
  • WAKE_UP_DEVICE - Wake up specific device
  • WAKE_UP_DEVICE_TAG - Wake up devices with tag
  • WAKE_UP_DEVICE_GROUP - Wake up device group
  • WAKE_UP_DEVICE_ALL - Wake up all devices
  • SNOOZE_DEVICE - Snooze specific device
  • SNOOZE_DEVICE_TAG - Snooze devices with tag
  • SNOOZE_DEVICE_GROUP - Snooze device group
  • SNOOZE_DEVICE_ALL - Snooze all devices

Display Control Actions:

  • SHOW_TOAST_MESSAGE_DEVICE - Show toast message on specific device
  • SHOW_TOAST_MESSAGE_DEVICE_TAG - Show toast message on devices with tag
  • SHOW_TOAST_MESSAGE_DEVICE_GROUP - Show toast message on device group
  • SHOW_TOAST_MESSAGE_DEVICE_ALL - Show toast message on all devices
  • CHANGE_VOLUME_DEVICE - Change volume on specific device
  • CHANGE_VOLUME_DEVICE_TAG - Change volume on devices with tag
  • CHANGE_VOLUME_DEVICE_GROUP - Change volume on device group
  • CHANGE_VOLUME_DEVICE_ALL - Change volume on all devices

Folder Actions:

  • FORCE_SYNC_SHARED_FOLDER - Force sync shared folder
  • UPLOAD_FILE_TO_FOLDER - Upload file to folder

Channel/Campaign Actions:

  • ENABLE_CAMPAIGN - Enable specific channel/campaign
  • DISABLE_CAMPAIGN - Disable specific channel/campaign
  • CHANGE_SATURATION_CAMPAIGN - Change saturation of channel/campaign
  • CHANGE_PRIORITY_CAMPAIGN - Change priority of channel/campaign
  • ENABLE_CAMPAIGN_BY_TAGS - Enable channels/campaigns by tags
  • DISABLE_CAMPAIGN_BY_TAGS - Disable channels/campaigns by tags
  • CHANGE_SATURATION_CAMPAIGN_BY_TAGS - Change saturation by tags
  • CHANGE_PRIORITY_CAMPAIGN_BY_TAGS - Change priority by tags
object

Additional parameters for the action

targetId
string

Single target ID

object (TargetData)

Target specification for the webhook action

Responses

Request samples

Content type
application/json
{
  • "name": "Updated Emergency Alert",
  • "eventId": "updated-fire-alarm",
  • "enabled": false,
  • "action": "ENABLE_EMERGENCY_ON_DEVICE",
  • "actionParams": {
    },
  • "targetId": "string",
  • "targetData": {
    }
}

Response samples

Content type
application/json
{
  • "id": 133,
  • "name": "Emergency Alert Trigger",
  • "eventId": "fire-alarm-trigger",
  • "enabled": true,
  • "action": "ENABLE_EMERGENCY_ON_DEVICE",
  • "actionParams": {},
  • "targetData": {
    },
  • "targetName": "Lobby Display",
  • "targetId": "device-uuid-123",
  • "customerId": 182,
  • "readOnly": false
}

Delete webhook event action

Delete a webhook event action.

Minimum role: TECHNICIAN

Authorizations:
bearer
path Parameters
actionId
required
integer <int64>

Webhook event action ID

Responses

Request samples

curl -X DELETE \
  'https://{server}/api/webhookEvent/actions/133' \
  -H 'Authorization: Bearer <token>'

Update team assignments

Update team assignments for a webhook event action.

Minimum role: OWNER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint.

actionId
required
integer <int64>

Webhook event action 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": [
    ]
}

webhook api key

Webhook API key management

List webhook API keys

Retrieve a paginated list of webhook API keys.

Minimum role: TECHNICIAN with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint.

page
integer >= 0
Default: 0

Page index (0-based)

size
integer >= 1
Default: 20

Requested page size; server limits and endpoint overrides apply.

sort
string
Example: sort=name,asc

Sort expression. Format: field,direction

  • Directions: asc, desc
  • Multiple sorts: sort=name,asc&sort=lastActivity,desc
  • Nested fields: sort=content.name,asc
search
string

WBQL filter expression. Operators: : (contains), = (equals), , , ^ (starts with), >, , <, , (in set). Logic: , (AND), | (OR). Special: NULL, !NULL. Example: name:lobby,deviceStatus=ONLINE

Responses

Request samples

curl -X GET \
  'https://{server}/api/webhooks/apikey?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 webhook API key

Create a new webhook API key.

Important: The token field is only returned once during creation. Store it securely as it cannot be retrieved again.

Minimum role: TECHNICIAN with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint.

teamIds
string
Example: teamIds=000c08d294df48efb1b0f5aa754d7ef9:true,00a22e86602c4a88914614aa9516a481:false

Team assignments for a newly created resource. Comma-separated teamId:readOnly pairs.

Request Body schema: application/json
required
name
required
string

Human-readable name for the API key

restricted
boolean
Default: false

Whether to restrict this key to team resources

object (ScopesObject)

API key scope configuration. Scopes determine what actions the API key can perform.

Scope Description
WEBHOOK_CALL Can trigger webhook actions
PROOF_OF_PLAY_READ Can read proof of play statistics
DATASOURCE_DATA_READ Can read datasource data
INTERNAL_DATASOURCE_WRITE Can write to internal datasources
object (TeamAccessList)

Responses

Request samples

Content type
application/json
Example
{
  • "name": "Integration Key",
  • "restricted": false
}

Response samples

Content type
application/json
{
  • "id": "981eb1fb92a045bf96a919f8c810cfd4",
  • "token": "<webhook-api-key>",
  • "name": "External System Integration",
  • "createdAt": 1705314600000,
  • "restricted": false,
  • "scopes": {
    },
  • "teamAccessList": {
    },
  • "customerId": 182,
  • "readOnly": false
}

Update webhook API key

Update an existing webhook API key.

Minimum role: TECHNICIAN

Authorizations:
bearer
path Parameters
id
required
string

Webhook API key ID (UUID format)

Request Body schema: application/json
required
name
string

Human-readable name for the API key

restricted
boolean

Whether to restrict this key to team resources

object (TeamAccessList)

Responses

Request samples

Content type
application/json
{
  • "name": "Updated Integration Key",
  • "restricted": true,
  • "teamAccessList": {
    }
}

Response samples

Content type
application/json
{
  • "id": "981eb1fb92a045bf96a919f8c810cfd4",
  • "token": "<webhook-api-key>",
  • "name": "External System Integration",
  • "createdAt": 1705314600000,
  • "restricted": false,
  • "scopes": {
    },
  • "teamAccessList": {
    },
  • "customerId": 182,
  • "readOnly": false
}

Delete webhook API key

Delete a webhook API key.

Minimum role: TECHNICIAN

Authorizations:
bearer
path Parameters
id
required
string

Webhook API key ID (UUID format)

Responses

Request samples

curl -X DELETE \
  'https://{server}/api/webhooks/apikey/981eb1fb92a045bf96a919f8c810cfd4' \
  -H 'Authorization: Bearer <token>'

Update team assignments

Update team assignments for a webhook API key.

Minimum role: OWNER with customer selector

Authorizations:
bearer
query Parameters
customerId
integer <int64>

Select a customer/tenant within the caller's access. When this parameter is optional, omitting it uses the caller's scope: global for ADMIN, owned member customers for a network owner, and the own customer for other callers. Use an explicit customerId for customer-specific operations. Requiredness is declared per endpoint.

webhookApiKeyId
required
string

Webhook API key ID (UUID format)

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": [
    ]
}