Wallboard API - Channel/Schedule (2.0)
This API manages two fundamentally different systems that share the same underlying
data model (Campaign). Understanding the distinction is critical for correct API usage.
| Aspect | Channel | Schedule |
|---|---|---|
| Purpose | Hierarchical content container for normal playback | Temporary content override |
| Assignment | Device groups (via folder/tag/team targeting) | Individual devices (manual or dynamic) |
| Hierarchy | Contains sub-channel groups → sub-channels → content | Single content item only |
| Duration | Permanent (always available when scheduled) | Temporary (replaces content during active period) |
| Conflict Resolution | Saturation balancing between channels | Priority number (higher = wins) |
| API Identifier | level: WIDGET |
level: TOP |
Channels are hierarchical content containers assigned to device groups. They organize content into a multi-level structure with sophisticated playback balancing.
Channel Structure
Channel (Campaign with level=WIDGET)
├── Sub-channel Groups (Message Groups) - organizational containers
│ ├── Sub-channel A (Message) - contains content + device tags + schedule
│ └── Sub-channel B (Message) - contains content + device tags + schedule
├── Saturation Setting - proportional playback weight
├── Device Group Targeting - folder/tag/team-based assignment
└── Working Time Restrictions - when channel is active
Channel Content Types (mutually exclusive)
- Content: Slides, playlists, multi-page interactive content
- Media: Images, videos, PDFs
- Sub-channels: Nested sub-channel groups only
- SSP (Vistar): Programmatic advertising
Channel Playback Logic
- Channels play sequentially based on order
- Saturation controls relative airtime between channels (e.g., saturation 2 = 2x airtime)
- Playback slots control how many items play before switching channels
Schedules are temporary content overrides that replace a device's assigned content during specific time periods. When the schedule ends, devices return to their base content.
Schedule Structure
Schedule (Campaign with level=TOP)
├── Single Content Item - exactly one playlist/slide/content
├── Priority Number - higher number wins conflicts
├── Device Targeting - specific devices (manual or dynamic)
└── Time Rules - when override is active
Schedule Priority System
- Active Schedules - priority-based (higher number wins)
- Base Assigned Content - default when no schedule active
Schedule Example
Device: Lobby Screen
Base Content: "Daily Playlist"
Schedule A: "Lunch Menu" (Priority 1, 11:30-13:00)
Schedule B: "CEO Announcement" (Priority 2, 12:00-12:15)
Timeline:
- 11:30-12:00 → Lunch Menu (Priority 1 active)
- 12:00-12:15 → CEO Announcement (Priority 2 overrides)
- 12:15-13:00 → Lunch Menu (back to Priority 1)
- After 13:00 → Daily Playlist (schedule ended)
| UI Term | API Term | Field/Concept |
|---|---|---|
| Channel | Campaign | level: WIDGET |
| Schedule | Campaign | level: TOP |
| Sub-channel Group | Message Group | Container for sub-channels |
| Sub-channel | Message | Content item within channel |
Creating a Channel
POST /api/campaign- Create campaign (level defaults to WIDGET = Channel)POST /api/campaign/{id}/messageGroup- Add sub-channel groupsPOST /api/campaign/{id}/message- Add sub-channels with content
Creating a Schedule
POST /api/campaignwithlevel: TOP- Create schedule- Assign single content item directly
- Set priority and device targeting
Use the search parameter with WBQL syntax:
| Filter | Field | Example |
|---|---|---|
| By team | teamAssignments.team.id |
search=teamAssignments.team.id=team1 |
| By name | name |
search=name:welcome |
| Channels only | level |
search=level=WIDGET |
| Schedules only | level |
search=level=TOP |
| Active | enabled |
search=enabled=true |
See Getting Started for full WBQL syntax.
Channel and Schedule management. Channels (level: WIDGET) are hierarchical content containers
assigned to device groups with saturation balancing. Schedules (level: TOP) are temporary
content overrides with priority-based conflict resolution.
List campaigns
Retrieve a paginated list of campaigns (channels).
Minimum role: VIEWER with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL (Wallboard Query Language) search expression for filtering. Value operators:
Logical operators:
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:
|
| select | string WBQL select expression to specify returned fields. Syntax:
Examples:
|
Responses
Request samples
- cURL
curl -X GET 'https://{server}/api/v2/campaign?customerId=182&page=0&size=15&sort=name' \ -H 'Authorization: Bearer YOUR_TOKEN'
Response samples
- 200
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 0,
- "name": "string",
- "validFrom": 0,
- "validTo": 0,
- "duration": 0,
- "defaultDuration": 0,
- "weight": 0,
- "type": "CONTENT",
- "orderingMode": "RANDOM",
- "contentShuffleMode": "BALANCED",
- "saturation": 0.1,
- "skipDefaultPage": true,
- "skipInvalidFiles": true,
- "enabled": true,
- "createDate": 0,
- "lastSavedAt": 0,
- "playMultipleItemsInSinglePlaybackSlot": true,
- "playAllItemsInSinglePlaybackSlot": true,
- "playbackSlotItemType": "SIMPLE_LOOP",
- "playbackSlotDuration": 0,
- "playbackSlotNumberOfElementsToPlay": 0,
- "tags": "string",
- "level": "TOP",
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC",
- "messageGroupAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "deviceAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "deviceGroupAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "contentAssignments": [
- {
- "id": "string",
- "name": "string",
- "weight": 0
}
], - "contentGroupAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "fileFolderAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "fileAssignments": [
- {
- "id": "string",
- "name": "string",
- "weight": 0
}
], - "customerId": 0,
- "advertiserId": "string",
- "creatorEmail": "string",
- "lastSavedByEmail": "string",
- "affectedScreenCount": 0,
- "readOnly": true
}
]
}Create campaign
Create a new campaign (channel).
Minimum role: APPROVER 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 for new resources. Format: |
Request Body schema: application/jsonrequired
| name | string Campaign name |
| comment | string Campaign comment |
| version | string Version identifier |
| level | string Enum: "TOP" "WIDGET" Campaign level (TOP = Schedule, WIDGET = Channel) |
| locked | boolean Whether the campaign is locked |
| validFrom | string Start date (format YYYY-MM-DD) |
| validTo | string End date (format YYYY-MM-DD) |
| duration | integer Total duration in seconds |
| defaultDuration | integer Default duration for media items without length |
| minimumDuration | integer <int64> Minimum duration in seconds |
| weight | integer Priority (lower number = higher priority) |
| contentShuffleMode | string (CampaignContentShuffleMode) Enum: "BALANCED" "SERIAL" Content shuffle mode for playback |
| saturation | number <float> Proportional playback frequency |
| audioOnly | boolean Audio-only campaign |
| supportedMediaTypes | Array of strings Supported media types |
| dspExcludedCreativeIds | Array of strings Excluded DSP creative IDs |
| dspBlockedCategories | Array of strings Blocked DSP categories |
| dspOrderId | string DSP order ID |
| skipDefaultPage | boolean Default: false |
| skipInvalidFiles | boolean Default: false |
| enabled | boolean Default: true |
object (WorkingTime) Daily time range configuration (JSON) | |
object (WorkingDays) Days of the week configuration (JSON) | |
object (WorkingDateRanges) Date range intervals | |
object (TagCondition) Tag-based filtering condition (JSON) | |
object (TagCondition) Tag-based filtering condition (JSON) | |
object (TagCondition) Tag-based filtering condition (JSON) | |
| type | string (CampaignPlayedAssetType) Enum: "CONTENT" "CONTENT_DYNAMIC" "MESSAGE_GROUP" "ASSETS_STATIC" "ASSETS_DYNAMIC" "CONTENT_QUICK_FILTER" "ASSET_QUICK_FILTER" "DSP_VISTAR_MEDIA" Type of assets played by the campaign |
| orderingMode | string (CampaignOrderingMode) Enum: "RANDOM" "ALPHABET" "DEFAULT" Content ordering mode |
| advertiserId | string |
object (TeamAccessList) Team access configuration (JSON) | |
object (TeamAccessList) Team access configuration (JSON) | |
| playMultipleItemsInSinglePlaybackSlot | boolean Default: false |
| playbackSlotItemType | string (CampaignPlaybackSlotItemType) Enum: "SIMPLE_LOOP" "SIMPLE_LOOP_SLIDE" "CONTENT" "CONTENT_PAGE" "MESSAGE_GROUP" "MESSAGE" "MESSAGE_ITEM" Type of item in playback slot |
| playAllItemsInSinglePlaybackSlot | boolean Default: true |
| playbackSlotDuration | integer <int64> |
| playbackSlotNumberOfElementsToPlay | integer <int64> |
| tags | Array of strings |
object (CampaignMessageGroupAssignmentDto) | |
object (CampaignDeviceAssignmentDto) | |
object (CampaignDeviceGroupAssignmentDto) | |
object (CampaignContentAssignmentDto) | |
object (CampaignContentGroupAssignmentDto) | |
object (CampaignFileFolderAssignmentDto) | |
object (CampaignFileAssignmentDto) | |
| contentQuickFilterId | string |
| fileQuickFilterId | string |
| deviceQuickFilterId | string |
| deviceSelectionMode | string (CampaignDeviceSelectionMode) Enum: "STATIC" "DYNAMIC" "QUICK_FILTER" Device selection mode |
Responses
Request samples
- Payload
- cURL
{- "name": "string",
- "comment": "string",
- "version": "string",
- "level": "TOP",
- "locked": true,
- "validFrom": "string",
- "validTo": "string",
- "duration": 0,
- "defaultDuration": 0,
- "minimumDuration": 0,
- "weight": 0,
- "contentShuffleMode": "BALANCED",
- "saturation": 0.1,
- "audioOnly": true,
- "supportedMediaTypes": [
- "string"
], - "dspExcludedCreativeIds": [
- "string"
], - "dspBlockedCategories": [
- "string"
], - "dspOrderId": "string",
- "skipDefaultPage": false,
- "skipInvalidFiles": false,
- "enabled": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "type": "CONTENT",
- "orderingMode": "RANDOM",
- "advertiserId": "string",
- "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playMultipleItemsInSinglePlaybackSlot": false,
- "playbackSlotItemType": "SIMPLE_LOOP",
- "playAllItemsInSinglePlaybackSlot": true,
- "playbackSlotDuration": 0,
- "playbackSlotNumberOfElementsToPlay": 0,
- "tags": [
- "string"
], - "messageGroupAssignment": {
- "assignments": [
- {
- "messageGroupId": 0
}
], - "removeIds": [
- 0
]
}, - "deviceAssignment": {
- "assignments": [
- {
- "deviceId": "string"
}
], - "removeIds": [
- "string"
]
}, - "deviceGroupAssignment": {
- "assignments": [
- {
- "deviceGroupId": "string"
}
], - "removeIds": [
- "string"
]
}, - "contentAssignment": {
- "assignments": [
- {
- "contentId": "string",
- "weight": 0
}
], - "removeIds": [
- "string"
]
}, - "contentGroupAssignment": {
- "assignments": [
- {
- "contentGroupId": "string"
}
], - "removeIds": [
- "string"
]
}, - "fileFolderAssignment": {
- "assignments": [
- {
- "fileFolderId": "string"
}
], - "removeIds": [
- "string"
]
}, - "fileAssignment": {
- "assignments": [
- {
- "fileId": "string"
}
], - "removeIds": [
- "string"
]
}, - "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC"
}Response samples
- 200
{- "id": 0,
- "name": "string",
- "validFrom": "string",
- "validTo": "string",
- "duration": 0,
- "defaultDuration": 0,
- "weight": 0,
- "contentShuffleMode": "BALANCED",
- "saturation": 0.1,
- "skipDefaultPage": true,
- "skipInvalidFiles": true,
- "enabled": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "type": "CONTENT",
- "orderingMode": "RANDOM",
- "customerId": 0,
- "advertiserId": "string",
- "affectedScreenCount": 0,
- "creatorEmail": "string",
- "lastSavedByEmail": "string",
- "createdDate": 0,
- "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playMultipleItemsInSinglePlaybackSlot": true,
- "playAllItemsInSinglePlaybackSlot": true,
- "playbackSlotDuration": 0,
- "playbackSlotNumberOfElementsToPlay": 0,
- "tags": [
- "string"
], - "level": "TOP",
- "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC",
- "readOnly": true
}List campaigns (legacy)
Retrieve a paginated list of campaigns. Use /api/v2/campaign for improved response format.
Minimum role: VIEWER with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL (Wallboard Query Language) search expression for filtering. Value operators:
Logical operators:
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:
|
| includeAffectedScreenCount | boolean Default: false Include count of affected screens |
Responses
Response samples
- 200
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 0,
- "name": "string",
- "validFrom": "string",
- "validTo": "string",
- "duration": 0,
- "defaultDuration": 0,
- "weight": 0,
- "contentShuffleMode": "BALANCED",
- "saturation": 0.1,
- "skipDefaultPage": true,
- "skipInvalidFiles": true,
- "enabled": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "type": "CONTENT",
- "orderingMode": "RANDOM",
- "customerId": 0,
- "advertiserId": "string",
- "affectedScreenCount": 0,
- "creatorEmail": "string",
- "lastSavedByEmail": "string",
- "createdDate": 0,
- "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playMultipleItemsInSinglePlaybackSlot": true,
- "playAllItemsInSinglePlaybackSlot": true,
- "playbackSlotDuration": 0,
- "playbackSlotNumberOfElementsToPlay": 0,
- "tags": [
- "string"
], - "level": "TOP",
- "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC",
- "readOnly": true
}
]
}Update campaign
Update an existing campaign.
Minimum role: APPROVER
Authorizations:
path Parameters
| campaignId required | integer Campaign ID |
Request Body schema: application/jsonrequired
| id | integer |
| name | string |
| comment | string Campaign comment |
| version | string Version identifier |
| level | string Enum: "TOP" "WIDGET" Campaign level (TOP = Schedule, WIDGET = Channel) |
| locked | boolean Whether the campaign is locked |
| validFrom | string |
| validTo | string |
| duration | integer |
| defaultDuration | integer |
| minimumDuration | integer <int64> Minimum duration in seconds |
| weight | integer |
| contentShuffleMode | string (CampaignContentShuffleMode) Enum: "BALANCED" "SERIAL" Content shuffle mode for playback |
| saturation | number <float> |
| audioOnly | boolean Audio-only campaign |
| supportedMediaTypes | Array of strings Supported media types |
| dspExcludedCreativeIds | Array of strings Excluded DSP creative IDs |
| dspBlockedCategories | Array of strings Blocked DSP categories |
| dspOrderId | string DSP order ID |
| resetDspOrderId | boolean Reset DSP order ID |
| skipDefaultPage | boolean |
| skipInvalidFiles | boolean |
| enabled | boolean |
object (WorkingTime) Daily time range configuration (JSON) | |
object (WorkingDays) Days of the week configuration (JSON) | |
object (WorkingDateRanges) Date range intervals | |
object (TagCondition) Tag-based filtering condition (JSON) | |
object (TagCondition) Tag-based filtering condition (JSON) | |
object (TagCondition) Tag-based filtering condition (JSON) | |
| orderingMode | string (CampaignOrderingMode) Enum: "RANDOM" "ALPHABET" "DEFAULT" Content ordering mode |
| advertiserId | string |
object (CampaignMessageGroupAssignmentDto) | |
object (CampaignDeviceAssignmentDto) | |
object (CampaignDeviceGroupAssignmentDto) | |
object (CampaignContentAssignmentDto) | |
object (CampaignContentGroupAssignmentDto) | |
object (CampaignFileAssignmentDto) | |
object (CampaignFileFolderAssignmentDto) | |
| resetValidTo | boolean If true, clears the validTo date |
| resetDuration | boolean |
| resetDefaultDuration | boolean |
| resetAdvertiserId | boolean |
object (TeamAccessList) Team access configuration (JSON) | |
object (TeamAccessList) Team access configuration (JSON) | |
| playMultipleItemsInSinglePlaybackSlot | boolean |
| playbackSlotItemType | string (CampaignPlaybackSlotItemType) Enum: "SIMPLE_LOOP" "SIMPLE_LOOP_SLIDE" "CONTENT" "CONTENT_PAGE" "MESSAGE_GROUP" "MESSAGE" "MESSAGE_ITEM" Type of item in playback slot |
| playAllItemsInSinglePlaybackSlot | boolean |
| playbackSlotDuration | integer <int64> |
| playbackSlotNumberOfElementsToPlay | integer <int64> |
| resetPlaybackSlotDuration | boolean |
| resetPlaybackSlotNumberOfElementsToPlay | boolean |
| tags | Array of strings |
| contentQuickFilterId | string |
| fileQuickFilterId | string |
| deviceQuickFilterId | string |
| deviceSelectionMode | string (CampaignDeviceSelectionMode) Enum: "STATIC" "DYNAMIC" "QUICK_FILTER" Device selection mode |
Responses
Request samples
- Payload
- cURL
{- "id": 0,
- "name": "string",
- "comment": "string",
- "version": "string",
- "level": "TOP",
- "locked": true,
- "validFrom": "string",
- "validTo": "string",
- "duration": 0,
- "defaultDuration": 0,
- "minimumDuration": 0,
- "weight": 0,
- "contentShuffleMode": "BALANCED",
- "saturation": 0.1,
- "audioOnly": true,
- "supportedMediaTypes": [
- "string"
], - "dspExcludedCreativeIds": [
- "string"
], - "dspBlockedCategories": [
- "string"
], - "dspOrderId": "string",
- "resetDspOrderId": true,
- "skipDefaultPage": true,
- "skipInvalidFiles": true,
- "enabled": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "orderingMode": "RANDOM",
- "advertiserId": "string",
- "messageGroupAssignment": {
- "assignments": [
- {
- "messageGroupId": 0
}
], - "removeIds": [
- 0
]
}, - "deviceAssignment": {
- "assignments": [
- {
- "deviceId": "string"
}
], - "removeIds": [
- "string"
]
}, - "deviceGroupAssignment": {
- "assignments": [
- {
- "deviceGroupId": "string"
}
], - "removeIds": [
- "string"
]
}, - "contentAssignment": {
- "assignments": [
- {
- "contentId": "string",
- "weight": 0
}
], - "removeIds": [
- "string"
]
}, - "contentGroupAssignment": {
- "assignments": [
- {
- "contentGroupId": "string"
}
], - "removeIds": [
- "string"
]
}, - "fileAssignment": {
- "assignments": [
- {
- "fileId": "string"
}
], - "removeIds": [
- "string"
]
}, - "fileFolderAssignment": {
- "assignments": [
- {
- "fileFolderId": "string"
}
], - "removeIds": [
- "string"
]
}, - "resetValidTo": true,
- "resetDuration": true,
- "resetDefaultDuration": true,
- "resetAdvertiserId": true,
- "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playMultipleItemsInSinglePlaybackSlot": true,
- "playbackSlotItemType": "SIMPLE_LOOP",
- "playAllItemsInSinglePlaybackSlot": true,
- "playbackSlotDuration": 0,
- "playbackSlotNumberOfElementsToPlay": 0,
- "resetPlaybackSlotDuration": true,
- "resetPlaybackSlotNumberOfElementsToPlay": true,
- "tags": [
- "string"
], - "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC"
}Response samples
- 200
{- "id": 0,
- "name": "string",
- "validFrom": "string",
- "validTo": "string",
- "duration": 0,
- "defaultDuration": 0,
- "weight": 0,
- "contentShuffleMode": "BALANCED",
- "saturation": 0.1,
- "skipDefaultPage": true,
- "skipInvalidFiles": true,
- "enabled": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "type": "CONTENT",
- "orderingMode": "RANDOM",
- "customerId": 0,
- "advertiserId": "string",
- "affectedScreenCount": 0,
- "creatorEmail": "string",
- "lastSavedByEmail": "string",
- "createdDate": 0,
- "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playMultipleItemsInSinglePlaybackSlot": true,
- "playAllItemsInSinglePlaybackSlot": true,
- "playbackSlotDuration": 0,
- "playbackSlotNumberOfElementsToPlay": 0,
- "tags": [
- "string"
], - "level": "TOP",
- "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC",
- "readOnly": true
}Get devices playing a campaign
Retrieve devices that are assigned to play the specified campaign.
Minimum role: VIEWER
Authorizations:
query Parameters
| campaignId required | integer Campaign ID |
Responses
Request samples
- cURL
curl -X GET 'https://{server}/api/campaign/playerDevices?campaignId=653' \ -H 'Authorization: Bearer YOUR_TOKEN'
Response samples
- 200
[- {
- "id": "string",
- "name": "string"
}
]Delete campaigns by date
Delete campaigns that have a validTo date before the specified date.
Minimum role: OWNER with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| date required | string Example: date=2024-01-01 Delete campaigns with validTo before this date (format YYYY-MM-DD) |
| level | string Default: "WIDGET" Enum: "WIDGET" "TOP" Campaign level filter (WIDGET = Channel, TOP = Schedule) |
Responses
Request samples
- cURL
curl -X DELETE 'https://{server}/api/campaign/deleteCampaignsByDate?customerId=182&date=2024-01-01' \ -H 'Authorization: Bearer YOUR_TOKEN'
Update campaign team assignments
Update team assignments for a campaign. Controls which teams have access to the campaign.
Minimum role: OWNER with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| campaignId required | integer Campaign 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"
]
}Sub-channel group management. Sub-channel groups are organizational containers that group related sub-channels within a channel.
List message groups
Retrieve a paginated list of message groups (sub-channel groups).
Minimum role: VIEWER with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL (Wallboard Query Language) search expression for filtering. Value operators:
Logical operators:
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/messageGroup?customerId=182&page=0&size=15&sort=name' \ -H 'Authorization: Bearer YOUR_TOKEN'
Response samples
- 200
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 0,
- "name": "string",
- "weight": 0,
- "saturation": 0.1,
- "shuffleMode": "BALANCED",
- "customerId": 0,
- "readOnly": true
}
]
}Create message group
Create a new message group (sub-channel group).
Minimum role: APPROVER 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 for new resources. Format: |
Request Body schema: application/jsonrequired
| name | string Message group name |
| comment | string Message group comment |
| weight | integer Priority (lower number = higher priority) |
| saturation | number <float> |
| shuffleMode | string (CampaignContentShuffleMode) Enum: "BALANCED" "SERIAL" Content shuffle mode for playback |
Responses
Request samples
- Payload
- cURL
{- "name": "string",
- "comment": "string",
- "weight": 0,
- "saturation": 0.1,
- "shuffleMode": "BALANCED"
}Response samples
- 200
{- "id": 0,
- "name": "string",
- "weight": 0,
- "saturation": 0.1,
- "shuffleMode": "BALANCED",
- "customerId": 0,
- "readOnly": true
}Update message group
Update an existing message group.
Minimum role: APPROVER
Authorizations:
path Parameters
| messageGroupId required | integer Message group ID |
Request Body schema: application/jsonrequired
| name | string |
| comment | string Message group comment |
| weight | integer |
| saturation | number <float> |
| shuffleMode | string (CampaignContentShuffleMode) Enum: "BALANCED" "SERIAL" Content shuffle mode for playback |
Responses
Request samples
- Payload
- cURL
{- "name": "string",
- "comment": "string",
- "weight": 0,
- "saturation": 0.1,
- "shuffleMode": "BALANCED"
}Response samples
- 200
{- "id": 0,
- "name": "string",
- "weight": 0,
- "saturation": 0.1,
- "shuffleMode": "BALANCED",
- "customerId": 0,
- "readOnly": true
}Update message group team assignments
Update team assignments for a message group.
Minimum role: OWNER with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| messageGroupId required | integer Message group 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"
]
}Sub-channel management. Sub-channels are content items within channels, each with its own device tags, scheduling rules, and content assignment.
List messages (sub-channels)
Retrieve a paginated list of messages (sub-channels).
Minimum role: VIEWER with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL (Wallboard Query Language) search expression for filtering. Value operators:
Logical operators:
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:
|
| select | string WBQL select expression to specify returned fields. Syntax:
Examples:
|
Responses
Request samples
- cURL
curl -X GET 'https://{server}/api/v2/message?customerId=182&page=0&size=15&sort=name' \ -H 'Authorization: Bearer YOUR_TOKEN'
Response samples
- 200
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 0,
- "name": "string",
- "validFrom": "string",
- "validTo": "string",
- "weight": 0,
- "saturation": 0.1,
- "text": "string",
- "skipDefaultPage": true,
- "enabled": true,
- "createDate": 0,
- "lastSavedAt": 0,
- "tags": [
- "string"
], - "defaultDuration": 0,
- "orderingMode": "RANDOM",
- "contentShuffleMode": "BALANCED",
- "type": "CONTENT",
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "contentId": "string",
- "simpleLoopId": "string",
- "messageGroupId": 0,
- "deviceGroupId": "string",
- "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "advertiserId": "string",
- "customerId": 0,
- "creatorEmail": "string",
- "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC",
- "deviceAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "deviceGroupAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "contentAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "contentGroupAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "fileFolderAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "fileAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "teamAssignments": [
- {
- "id": "string",
- "name": "string"
}
], - "readOnly": true
}
]
}Create message (sub-channel)
Create a new message (sub-channel) in a campaign.
Minimum role: EDITOR 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 for new resources. Format: |
Request Body schema: application/jsonrequired
| text | string Message text/name |
| comment | string Message comment |
| version | string Version identifier |
| locked | boolean Default: false Whether the message is locked |
| isPlayedElementsCappedByItemCount | boolean Default: true Cap played elements by item count |
| widgetOverrides | object Widget override configuration (JSON) |
| validFrom | string Start date |
| validTo | string End date |
object (TeamAccessList) Team access configuration (JSON) | |
object (TeamAccessList) Team access configuration (JSON) | |
| type | string (MessagePlayedAssetType) Enum: "CONTENT" "ASSETS_STATIC" "ASSETS_DYNAMIC" "TEXT" "CONTENT_DYNAMIC" "CONTENT_QUICK_FILTER" "ASSET_QUICK_FILTER" Type of assets played by the message |
| contentId | string Content to play |
| weight | integer Priority (lower number = higher priority) |
| skipDefaultPage | boolean |
| enabled | boolean Default: true |
object (WorkingTime) Daily time range configuration (JSON) | |
object (WorkingDays) Days of the week configuration (JSON) | |
| messageGroupId | integer Parent message group ID |
| name | string |
| deviceGroupId | string |
| saturation | number <float> |
| tags | Array of strings |
| defaultDuration | integer |
| orderingMode | string (CampaignOrderingMode) Enum: "RANDOM" "ALPHABET" "DEFAULT" Content ordering mode |
| contentShuffleMode | string (CampaignContentShuffleMode) Enum: "BALANCED" "SERIAL" Content shuffle mode for playback |
object (WorkingDateRanges) Date range intervals | |
| advertiserId | string |
object (MessageFileAssignmentDto) | |
object (MessageFileFolderAssignmentDto) | |
object (MessageDeviceAssignmentDto) | |
object (MessageDeviceGroupAssignmentDto) | |
object (MessageContentAssignmentDto) | |
object (MessageContentGroupAssignmentDto) | |
object (TagCondition) Tag-based filtering condition (JSON) | |
object (TagCondition) Tag-based filtering condition (JSON) | |
object (TagCondition) Tag-based filtering condition (JSON) | |
| contentQuickFilterId | string |
| fileQuickFilterId | string |
| deviceQuickFilterId | string |
| deviceSelectionMode | string (CampaignDeviceSelectionMode) Enum: "STATIC" "DYNAMIC" "QUICK_FILTER" Device selection mode |
Responses
Request samples
- Payload
- cURL
{- "text": "string",
- "comment": "string",
- "version": "string",
- "locked": false,
- "isPlayedElementsCappedByItemCount": true,
- "widgetOverrides": { },
- "validFrom": "string",
- "validTo": "string",
- "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "type": "CONTENT",
- "contentId": "string",
- "weight": 0,
- "skipDefaultPage": true,
- "enabled": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "messageGroupId": 0,
- "name": "string",
- "deviceGroupId": "string",
- "saturation": 0.1,
- "tags": [
- "string"
], - "defaultDuration": 0,
- "orderingMode": "RANDOM",
- "contentShuffleMode": "BALANCED",
- "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "advertiserId": "string",
- "fileAssignment": {
- "assignments": [
- {
- "fileId": "string"
}
], - "removeIds": [
- "string"
]
}, - "fileFolderAssignment": {
- "assignments": [
- {
- "fileFolderId": "string"
}
], - "removeIds": [
- "string"
]
}, - "deviceAssignment": {
- "assignments": [
- {
- "deviceId": "string"
}
], - "removeIds": [
- "string"
]
}, - "deviceGroupAssignment": {
- "assignments": [
- {
- "deviceGroupId": "string"
}
], - "removeIds": [
- "string"
]
}, - "contentAssignment": {
- "assignments": [
- {
- "contentId": "string",
- "weight": 0
}
], - "removeIds": [
- "string"
]
}, - "contentGroupAssignment": {
- "assignments": [
- {
- "contentGroupId": "string"
}
], - "removeIds": [
- "string"
]
}, - "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC"
}Response samples
- 200
{- "id": 0,
- "validFrom": "string",
- "validTo": "string",
- "weight": 0,
- "text": "string",
- "type": "CONTENT",
- "skipDefaultPage": true,
- "enabled": true,
- "contentId": "string",
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "messageGroupId": 0,
- "name": "string",
- "deviceGroupId": "string",
- "customerId": 0,
- "creatorEmail": "string",
- "lastSavedByEmail": "string",
- "createDate": 0,
- "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "saturation": 0.1,
- "tags": [
- "string"
], - "defaultDuration": 0,
- "orderingMode": "RANDOM",
- "contentShuffleMode": "BALANCED",
- "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "advertiserId": "string",
- "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC",
- "readOnly": true,
- "deviceGroupName": "string",
- "contentName": "string"
}List messages (legacy)
Retrieve a paginated list of messages. Use /api/v2/message for improved response format.
Minimum role: VIEWER with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| search | string WBQL (Wallboard Query Language) search expression for filtering. Value operators:
Logical operators:
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:
|
| includeDeviceGroupName | boolean Default: false Include device group name in response |
| includeContentName | boolean Default: false Include content name in response |
Responses
Response samples
- 200
{- "first": true,
- "last": true,
- "number": 0,
- "numberOfElements": 0,
- "totalElements": 0,
- "totalPages": 0,
- "size": 0,
- "content": [
- {
- "id": 0,
- "validFrom": "string",
- "validTo": "string",
- "weight": 0,
- "text": "string",
- "type": "CONTENT",
- "skipDefaultPage": true,
- "enabled": true,
- "contentId": "string",
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "messageGroupId": 0,
- "name": "string",
- "deviceGroupId": "string",
- "customerId": 0,
- "creatorEmail": "string",
- "lastSavedByEmail": "string",
- "createDate": 0,
- "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "saturation": 0.1,
- "tags": [
- "string"
], - "defaultDuration": 0,
- "orderingMode": "RANDOM",
- "contentShuffleMode": "BALANCED",
- "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "advertiserId": "string",
- "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC",
- "readOnly": true,
- "deviceGroupName": "string",
- "contentName": "string"
}
]
}Update message
Update an existing message (sub-channel).
Minimum role: EDITOR
Authorizations:
path Parameters
| messageId required | integer Message ID |
Request Body schema: application/jsonrequired
| text | string |
| comment | string Message comment |
| version | string Version identifier |
| locked | boolean Whether the message is locked |
| isPlayedElementsCappedByItemCount | boolean Cap played elements by item count |
| validFrom | string |
| validTo | string |
object (TeamAccessList) Team access configuration (JSON) | |
object (TeamAccessList) Team access configuration (JSON) | |
| contentId | string |
| resetContentId | boolean If true, clears the content assignment |
| weight | integer |
| skipDefaultPage | boolean |
| enabled | boolean |
object (WorkingTime) Daily time range configuration (JSON) | |
object (WorkingDays) Days of the week configuration (JSON) | |
| name | string |
| deviceGroupId | string |
| resetDeviceGroup | boolean |
| widgetOverrides | object |
| resetValidTo | boolean |
| saturation | number <float> |
| tags | Array of strings |
| defaultDuration | integer |
| orderingMode | string (CampaignOrderingMode) Enum: "RANDOM" "ALPHABET" "DEFAULT" Content ordering mode |
| contentShuffleMode | string (CampaignContentShuffleMode) Enum: "BALANCED" "SERIAL" Content shuffle mode for playback |
object (WorkingDateRanges) Date range intervals | |
| advertiserId | string |
| resetAdvertiserId | boolean |
object (MessageFileAssignmentDto) | |
object (MessageFileFolderAssignmentDto) | |
object (MessageDeviceAssignmentDto) | |
object (MessageDeviceGroupAssignmentDto) | |
object (MessageContentAssignmentDto) | |
object (MessageContentGroupAssignmentDto) | |
object (TagCondition) Tag-based filtering condition (JSON) | |
object (TagCondition) Tag-based filtering condition (JSON) | |
object (TagCondition) Tag-based filtering condition (JSON) | |
| contentQuickFilterId | string |
| fileQuickFilterId | string |
| deviceQuickFilterId | string |
| deviceSelectionMode | string (CampaignDeviceSelectionMode) Enum: "STATIC" "DYNAMIC" "QUICK_FILTER" Device selection mode |
Responses
Request samples
- Payload
- cURL
{- "text": "string",
- "comment": "string",
- "version": "string",
- "locked": true,
- "isPlayedElementsCappedByItemCount": true,
- "validFrom": "string",
- "validTo": "string",
- "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "contentId": "string",
- "resetContentId": true,
- "weight": 0,
- "skipDefaultPage": true,
- "enabled": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "name": "string",
- "deviceGroupId": "string",
- "resetDeviceGroup": true,
- "widgetOverrides": { },
- "resetValidTo": true,
- "saturation": 0.1,
- "tags": [
- "string"
], - "defaultDuration": 0,
- "orderingMode": "RANDOM",
- "contentShuffleMode": "BALANCED",
- "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "advertiserId": "string",
- "resetAdvertiserId": true,
- "fileAssignment": {
- "assignments": [
- {
- "fileId": "string"
}
], - "removeIds": [
- "string"
]
}, - "fileFolderAssignment": {
- "assignments": [
- {
- "fileFolderId": "string"
}
], - "removeIds": [
- "string"
]
}, - "deviceAssignment": {
- "assignments": [
- {
- "deviceId": "string"
}
], - "removeIds": [
- "string"
]
}, - "deviceGroupAssignment": {
- "assignments": [
- {
- "deviceGroupId": "string"
}
], - "removeIds": [
- "string"
]
}, - "contentAssignment": {
- "assignments": [
- {
- "contentId": "string",
- "weight": 0
}
], - "removeIds": [
- "string"
]
}, - "contentGroupAssignment": {
- "assignments": [
- {
- "contentGroupId": "string"
}
], - "removeIds": [
- "string"
]
}, - "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC"
}Response samples
- 200
{- "id": 0,
- "validFrom": "string",
- "validTo": "string",
- "weight": 0,
- "text": "string",
- "type": "CONTENT",
- "skipDefaultPage": true,
- "enabled": true,
- "contentId": "string",
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}, - "messageGroupId": 0,
- "name": "string",
- "deviceGroupId": "string",
- "customerId": 0,
- "creatorEmail": "string",
- "lastSavedByEmail": "string",
- "createDate": 0,
- "teamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "playedAssetTeamAccessList": {
- "teamAccessList": [
- {
- "teamId": "string",
- "readOnly": true
}
]
}, - "saturation": 0.1,
- "tags": [
- "string"
], - "defaultDuration": 0,
- "orderingMode": "RANDOM",
- "contentShuffleMode": "BALANCED",
- "affectedDateRanges": {
- "intervals": [
- {
- "from": 0,
- "to": 0,
- "isExcluded": true,
- "affectedHours": {
- "from": 0,
- "end": 0,
- "timeZone": "string",
- "allDay": true,
- "allowPartialStartingSegment": true,
- "allowPartialEndingSegment": true,
- "allowDayOfWeekOverflow": true
}, - "affectedDays": {
- "monday": true,
- "tuesday": true,
- "wednesday": true,
- "thursday": true,
- "friday": true,
- "saturday": true,
- "sunday": true
}
}
]
}, - "advertiserId": "string",
- "deviceTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "fileTagCondition": {
- "tags": [
- "string"
], - "operator": "OR"
}, - "contentQuickFilterId": "string",
- "fileQuickFilterId": "string",
- "deviceQuickFilterId": "string",
- "deviceSelectionMode": "STATIC",
- "readOnly": true,
- "deviceGroupName": "string",
- "contentName": "string"
}Delete messages by date
Delete messages that have a validTo date before the specified date.
Minimum role: OWNER with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| date required | string Example: date=2024-01-01 Delete messages with validTo before this date (format YYYY-MM-DD) |
Responses
Update message team assignments
Update team assignments for a message.
Minimum role: OWNER with customer selector
Authorizations:
query Parameters
| customerId | integer Customer/tenant ID for multi-tenant filtering.
|
| messageId required | integer Message 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"
]
}