Wallboard API - Webhooks (2.0)
Webhook management endpoints for the Wallboard digital signage platform.
Webhooks allow external systems to trigger actions in Wallboard. When a webhook URL receives a request with a valid API key, it executes the configured action (e.g., enable emergency mode, restart devices).
| Aspect | Direct API Calls | Webhook Actions |
|---|---|---|
| Setup | Write custom integration code | Configure in UI, no code needed |
| Permissions | Grant full API access | Scoped API keys with minimal permissions |
| Complexity | Build full request logic for each operation | Send eventId + optional payload |
| Maintenance | Code changes required for updates | Reconfigure in UI |
| Error handling | External system manages retries | Wallboard handles async execution |
| Multi-action | Multiple API calls needed | One webhook triggers multiple actions |
| Concept | Description |
|---|---|
| Webhook Event Action | Configuration defining what happens when a webhook is triggered |
| Webhook API Key | Authentication key for incoming webhook requests |
| Action | The operation to perform (emergency mode, restart, content control, etc.) |
| Target | Which devices/groups/tags/campaigns to affect |
- Create a Webhook API Key for authentication
- Create a Webhook Event Action defining what should happen
- External system calls webhook URL with API key header
- Wallboard executes the configured action (asynchronously)
Webhook triggers require an API key passed via the X-Webhook-Apikey header (or apiKey query param for GET requests).
API Key Format:
- Keys are HMAC-signed JWTs (HS256/HS384/HS512)
- Each key has scopes that determine what actions it can perform
- Keys are created via the management API (requires TECHNICIAN role)
Available Scopes:
| Scope | Description |
|---|---|
WEBHOOK_CALL |
Can trigger webhook actions |
PROOF_OF_PLAY_READ |
Can read proof of play statistics |
DATASOURCE_DATA_READ |
Can read data source data |
INTERNAL_DATASOURCE_WRITE |
Can write to internal data sources |
POST https://{server}/public-api/integration/webhooks
Header: X-Webhook-Apikey: <your-api-key>
Content-Type: application/json
Body: {"event_id": "your-event-id", ...}
The webhook trigger accepts a JSON payload with the following parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id |
string | Yes | Event ID matching a configured webhook action |
keySelector |
string | No | Key path for data source operations (e.g., "visitors", "scores.team1") |
value |
string | No | Value for data source set/increase/decrease operations |
data |
string | No | JSON data for merge/array operations |
contentId |
string | No | Content ID for assignment actions |
message |
string | No | Message text for toast message actions |
sensorData |
string | No | JSON sensor data for sensor event actions |
volumeLevel |
string | No | Volume level (0-100) for volume change actions |
priority |
string | No | Priority value for campaign priority changes |
saturation |
string | No | Saturation value for campaign saturation changes |
url |
string | No | Dynamic URL for URL loading actions |
Note: Both camelCase (eventId) and snake_case (event_id) parameter names are accepted.
| Category | Actions |
|---|---|
| Emergency Mode | Enable/Disable on device, tag, group, or all devices |
| URL Loading | Load custom URL on device, tag, group, or all devices |
| Content Control | Pause, Resume, Refresh content on devices |
| Content Assignment | Assign or preview content on devices |
| Data Source | Set, merge, increase/decrease values, array operations |
| Sensor Events | Send custom sensor events to devices |
| Device Control | Restart, Wake up, Snooze devices |
| Display Control | Show toast messages, change volume |
| Folder Sync | Force sync shared folders, upload files |
| Channel Control | Enable/Disable, change saturation/priority of channels |
| Scope Suffix | Description |
|---|---|
*_DEVICE |
Specific device by ID |
*_DEVICE_TAG |
All devices with specific tag |
*_DEVICE_GROUP |
All devices in a group |
*_DEVICE_ALL |
All devices in customer account |
*_CAMPAIGN |
Specific channel/campaign by ID |
*_CAMPAIGN_BY_TAGS |
Channels/campaigns matching tags |
*_DATASOURCE |
Specific data source by ID |
*_DATASOURCE_ALL |
All data sources |
*_FOLDER |
Specific folder by ID |
Emergency Mode
# Enable emergency on all devices
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"event_id": "emergency-enable-all"}'
# Disable emergency on specific device (targetIds set in webhook config)
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-d '{"event_id": "emergency-disable-device"}'
Data Source Operations
# Set a value in internal data source
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"event_id": "set-counter", "keySelector": "visitors", "value": "150"}'
# Increase a numeric value
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"event_id": "increase-counter", "keySelector": "score", "value": "10"}'
# Decrease a numeric value
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"event_id": "decrease-counter", "keySelector": "tickets", "value": "1"}'
# Merge data into data source (JSON object)
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"event_id": "merge-data", "value": "{\"name\":\"John\",\"score\":100}"}'
# Insert to array in data source
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"event_id": "add-to-queue", "keySelector": "queue", "value": "{\"id\":123,\"name\":\"Item\"}"}'
# Remove from array
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"event_id": "remove-from-queue", "keySelector": "queue", "value": "123"}'
Device Control
# Restart all devices
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-d '{"event_id": "restart-all"}'
# Wake up devices with specific tag
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-d '{"event_id": "wake-up-lobby"}'
# Snooze device group
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-d '{"event_id": "snooze-floor-1"}'
Content Control
# Refresh content on all devices
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-d '{"event_id": "refresh-all"}'
# Pause content on device group
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-d '{"event_id": "pause-reception"}'
# Resume content
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-d '{"event_id": "resume-reception"}'
URL Loading
# Load custom URL on all devices (URL set in webhook action config)
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-d '{"event_id": "show-alert-page"}'
Sensor Events
# Send sensor event to devices (for custom interactivity)
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"event_id": "sensor-trigger", "sensorData": "{\"type\":\"motion\",\"zone\":\"entrance\"}"}'
Display Control
# Show toast message on all devices
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"event_id": "show-message", "message": "Meeting starts in 5 minutes"}'
# Change volume on device group
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"event_id": "set-volume", "volume": "50"}'
Channel/Campaign Control
# Enable a campaign/channel
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-d '{"event_id": "enable-promo-channel"}'
# Disable a campaign/channel
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-d '{"event_id": "disable-promo-channel"}'
# Change campaign priority
curl -X POST 'https://{server}/public-api/integration/webhooks' \
-H 'X-Webhook-Apikey: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"event_id": "set-priority", "priority": "100"}'
Using GET Method (for simple integrations)
# Base64 encode: {"event_id":"emergency-on"} = eyJldmVudF9pZCI6ImVtZXJnZW5jeS1vbiJ9
curl 'https://{server}/public-api/integration/webhooks?apiKey=your_api_key&payload=eyJldmVudF9pZCI6ImVtZXJnZW5jeS1vbiJ9'
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:
- Encode your JSON payload as Base64
- Include the API key and encoded payload as query parameters
- The webhook action matching the
event_idin the payload is executed
Important: Webhook calls are asynchronous - the response is returned immediately, but the actual action is executed 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 |
Responses
Request samples
- cURL
- JavaScript
# 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
- 200
- 400
{- "message": "Webhook triggered"
}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:
- Set the
X-Webhook-Apikeyheader with your API key - Send a JSON body with
event_idand any additional parameters - The webhook action matching the
event_idis executed
Important: Webhook calls are asynchronous - the response is returned immediately, but the actual action is executed 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: wh_abc123xyz789... Webhook API key |
Request Body schema: application/jsonrequired
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 The event ID of the webhook action to trigger.
This must match the |
| keySelector | string Key path for data source operations.
Supports nested paths with dot notation (e.g., |
| value | string Value for data source operations.
|
| data | string JSON data for merge and array operations. Used with MERGE_INTERNAL_DATASOURCE to merge objects. |
| contentId | string Content UUID for content assignment actions. Used with ASSIGN_CONTENT_* and PREVIEW_CONTENT_* actions. |
| message | string Message text for toast message actions. Used with SHOW_TOAST_MESSAGE_* actions. |
| sensorData | string JSON sensor data for sensor event actions. Used with SEND_SENSOR_EVENT_* actions. |
| volume | string Volume level (0-100) for volume change actions. Used with CHANGE_VOLUME_* actions. |
| priority | string Priority value for campaign priority changes. Used with CHANGE_PRIORITY_CAMPAIGN* actions. |
| saturation | string Saturation value for campaign saturation changes. Used with CHANGE_SATURATION_CAMPAIGN* actions. |
| url | string Dynamic URL for URL loading actions. Overrides the URL configured in the webhook action. Used with LOAD_URL_* actions. |
| property name* additional property | string Additional parameters passed to the webhook action |
Responses
Request samples
- Payload
- cURL
- JavaScript
- Python
{- "event_id": "emergency-on"
}Response samples
- 200
- 400
{- "message": "Webhook triggered"
}List webhook event actions
Retrieve a paginated list of webhook event actions.
Minimum role: TECHNICIAN with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| 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:
|
| search | string WBQL filter expression. Operators: |
Responses
Request samples
- cURL
curl -X GET \ 'https://{server}/api/webhookEvent/actions?customerId=123&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": 133,
- "name": "Emergency Alert Trigger",
- "eventId": "fire-alarm-trigger",
- "enabled": true,
- "action": "ENABLE_EMERGENCY_ON_DEVICE",
- "targetData": {
- "targetIds": [
- "device-uuid-123",
- "device-uuid-456"
]
}, - "targetName": "Lobby Display",
- "targetId": "device-uuid-123",
- "customerId": 182,
- "readOnly": false
}
]
}Create webhook event action
Create a new webhook event action.
Minimum role: TECHNICIAN with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| teamIds | string Example: teamIds=000c08d294df48efb1b0f5aa754d7ef9:true,00a22e86602c4a88914614aa9516a481:false Team assignment filter. Format: |
Request Body schema: application/jsonrequired
| name required | string Human-readable name for the webhook action |
| eventId | string Custom event ID for webhook URL. If not provided, a UUID will be generated. Must be unique within the customer account. |
| 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" "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:
URL Loading Actions:
Content Control Actions:
Content Assignment Actions:
Data Source Actions:
Sensor Event Actions:
Device Control Actions:
Display Control Actions:
Folder Actions:
Channel/Campaign Actions:
|
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
- Payload
- cURL
{- "name": "Fire Alarm Emergency",
- "enabled": true,
- "action": "ENABLE_EMERGENCY_ON_DEVICE",
- "targetData": {
- "targetIds": [
- "device-uuid-123"
]
}
}Response samples
- 200
{- "id": 133,
- "name": "Emergency Alert Trigger",
- "eventId": "fire-alarm-trigger",
- "enabled": true,
- "action": "ENABLE_EMERGENCY_ON_DEVICE",
- "targetData": {
- "targetIds": [
- "device-uuid-123",
- "device-uuid-456"
]
}, - "targetName": "Lobby Display",
- "targetId": "device-uuid-123",
- "customerId": 182,
- "readOnly": false
}Update webhook event action
Update an existing webhook event action.
Minimum role: TECHNICIAN
Authorizations:
path Parameters
| actionId required | integer <int64> Webhook event action ID |
Request Body schema: application/jsonrequired
| name | string Human-readable name for the webhook action |
| eventId | string Custom event ID for webhook URL |
| 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" "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:
URL Loading Actions:
Content Control Actions:
Content Assignment Actions:
Data Source Actions:
Sensor Event Actions:
Device Control Actions:
Display Control Actions:
Folder Actions:
Channel/Campaign Actions:
|
object Additional parameters for the action | |
| targetId | string Single target ID |
object (TargetData) Target specification for the webhook action |
Responses
Request samples
- Payload
- cURL
{- "name": "Updated Emergency Alert",
- "eventId": "updated-fire-alarm",
- "enabled": false,
- "action": "ENABLE_EMERGENCY_ON_DEVICE",
- "actionParams": {
- "property1": "string",
- "property2": "string"
}, - "targetId": "string",
- "targetData": {
- "targetIds": [
- "device-uuid-123",
- "device-uuid-456"
]
}
}Response samples
- 200
{- "id": 133,
- "name": "Emergency Alert Trigger",
- "eventId": "fire-alarm-trigger",
- "enabled": true,
- "action": "ENABLE_EMERGENCY_ON_DEVICE",
- "targetData": {
- "targetIds": [
- "device-uuid-123",
- "device-uuid-456"
]
}, - "targetName": "Lobby Display",
- "targetId": "device-uuid-123",
- "customerId": 182,
- "readOnly": false
}Delete webhook event action
Delete a webhook event action.
Minimum role: TECHNICIAN
Authorizations:
path Parameters
| actionId required | integer <int64> Webhook event action ID |
Responses
Request samples
- cURL
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:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| actionId required | integer <int64> Webhook event action 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 webhook API keys
Retrieve a paginated list of webhook API keys.
Minimum role: TECHNICIAN with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| 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:
|
| search | string WBQL filter expression. Operators: |
Responses
Request samples
- cURL
curl -X GET \ 'https://{server}/api/webhooks/apikey?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": "981eb1fb92a045bf96a919f8c810cfd4",
- "token": "wh_abc123xyz789...",
- "name": "External System Integration",
- "createdAt": "2024-01-15T10:30:00Z",
- "restricted": false,
- "scopes": {
- "values": [
- "WEBHOOK_CALL"
]
}, - "teamAccessList": {
- "teams": [
- {
- "id": "string",
- "readOnly": true
}
]
}, - "customerId": 182,
- "readOnly": false
}
]
}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:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| teamIds | string Example: teamIds=000c08d294df48efb1b0f5aa754d7ef9:true,00a22e86602c4a88914614aa9516a481:false Team assignment filter. Format: |
Request Body schema: application/jsonrequired
| 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.
| |||||||||||
object (TeamAccessList) |
Responses
Request samples
- Payload
- cURL
{- "name": "Integration Key",
- "restricted": false
}Response samples
- 200
{- "id": "981eb1fb92a045bf96a919f8c810cfd4",
- "token": "wh_abc123xyz789...",
- "name": "External System Integration",
- "createdAt": "2024-01-15T10:30:00Z",
- "restricted": false,
- "scopes": {
- "values": [
- "WEBHOOK_CALL"
]
}, - "teamAccessList": {
- "teams": [
- {
- "id": "string",
- "readOnly": true
}
]
}, - "customerId": 182,
- "readOnly": false
}Update webhook API key
Update an existing webhook API key.
Minimum role: TECHNICIAN
Authorizations:
path Parameters
| id required | string Webhook API key ID (UUID format) |
Request Body schema: application/jsonrequired
| name | string Human-readable name for the API key |
| restricted | boolean Whether to restrict this key to team resources |
object (TeamAccessList) |
Responses
Request samples
- Payload
- cURL
{- "name": "Updated Integration Key",
- "restricted": true,
- "teamAccessList": {
- "teams": [
- {
- "id": "string",
- "readOnly": true
}
]
}
}Response samples
- 200
{- "id": "981eb1fb92a045bf96a919f8c810cfd4",
- "token": "wh_abc123xyz789...",
- "name": "External System Integration",
- "createdAt": "2024-01-15T10:30:00Z",
- "restricted": false,
- "scopes": {
- "values": [
- "WEBHOOK_CALL"
]
}, - "teamAccessList": {
- "teams": [
- {
- "id": "string",
- "readOnly": true
}
]
}, - "customerId": 182,
- "readOnly": false
}Delete webhook API key
Delete a webhook API key.
Minimum role: TECHNICIAN
Authorizations:
path Parameters
| id required | string Webhook API key ID (UUID format) |
Responses
Request samples
- cURL
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:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| webhookApiKeyId required | string Webhook API key ID (UUID format) |
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"
]
}