Schedules
Tools for managing schedules. A schedule defines time-based rules that determine when playlists, templates, or campaigns play on devices.
list_schedules
List all schedules in the account. Returns schedule objects with id, name, type, group assignment, and device targets.
| Parameter | Type | Required | Description |
|---|---|---|---|
group_id |
string | No | Filter by schedule group ID |
device_id |
string | No | Filter by target device ID |
take |
number | No | Results per page |
page |
number | No | Page number (1-based) |
get_schedule
Get a schedule by ID including its time entries and device assignments. Returns the schedule’s name, type (Playlist, Template, or Campaign), content reference, playback rules, and assigned device IDs.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | The schedule ID |
create_schedule
Create a schedule via the GraphQL createSchedule mutation. A schedule plays a playlist or template — or, for CAMPAIGN (Smart Schedule), content chosen by conditions — on devices. Returns the created schedule; on failure validationErrors lists each rejected condition with its index and field.
| Parameter | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Schedule name |
type |
PLAYLIST | TEMPLATE | CAMPAIGN |
Yes | Content type |
priority |
LOWEST … HIGHEST |
No | Resolves overlapping schedules (default NORMAL) |
groupId |
string | No | Schedule group (folder) id |
tags |
string[] | No | Tags |
playlistId |
string | When type = PLAYLIST |
Playlist to play |
templateId |
string | When type = TEMPLATE |
Template to play |
timing |
object | No | Recurring window: { startDate, endDate (yyyy-MM-dd), startTime, endTime (HH:mm:ss), days: DayOfWeek[] }. Omit for always-eligible |
deviceIds |
string[] | No | Devices assigned directly. Campaign schedules usually target devices with Where conditions instead |
conditions |
condition[] | No | Smart-schedule conditions — see below |
Conditions
Each condition is { type, operator?, value1?, value2?, value3?, value4? }. operator (AND, OR, AND_NOT, OR_NOT) combines with the previous condition and is ignored on the first. Value meanings depend on type; run introspect_schema({ typeName: "ConditionType" }) for the full 46-type reference. The common ones:
| Group | Type | Values |
|---|---|---|
| Where | EVERYWHERE / NOWHERE |
none |
| Where | SPECIFIC_DEVICE |
value1 = device id |
| Where | DEVICE_BY_GROUP / DEVICE_BY_NESTED_GROUP |
value1 = device group id |
| Where | DEVICE_BY_TAG |
value1 = newline-delimited tags |
| Where | DEVICE_BY_NAME |
value1 = name or .NET regex |
| When | DATE_RANGE / TIME_RANGE |
value1 = start, value2 = end ("MM/dd/yyyy hh:mm:ss tt" or ISO 8601) |
| When | DAYS_OF_WEEK |
value1 = bitfield, Sun=1 Mon=2 Tue=4 Wed=8 Thu=16 Fri=32 Sat=64 |
| When | ALWAYS / NEVER |
none (NEVER disables a schedule without deleting it) |
| What (Campaign only) | SPECIFIC_PLAYLIST / SPECIFIC_TEMPLATE |
value1 = id |
| What (Campaign only) | PLAYLIST_BY_TAG / TEMPLATE_BY_TAG |
value1 = newline-delimited tags |
| Audience | PCT_MALE, PCT_FEMALE, PCT_ADULT, … |
value1 = 0-100, value2 = optional comparison operator |
Example — weekday business-hours playlist on two lobby displays:
{
"name": "Lobby loop",
"type": "PLAYLIST",
"playlistId": "<playlist-id>",
"timing": { "startTime": "08:00:00", "endTime": "18:00:00", "days": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"] },
"deviceIds": ["<device-id>", "<device-id>"]
}
update_schedule
Update a schedule via the GraphQL updateSchedule mutation. type and priority are required by the API on every update. deviceIds and conditions replace the existing assignments/conditions when supplied, so read the schedule first (get_schedule) if you are editing them. tags: null or [] clears the tags. Changing type requires the matching templateId / playlistId.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | The schedule id |
type |
PLAYLIST | TEMPLATE | CAMPAIGN |
Yes | Content type |
priority |
LOWEST … HIGHEST |
Yes | Schedule priority |
name |
string | No | Schedule name |
tags |
string[] | null | No | null / [] clears |
Plus groupId, playlistId, templateId, timing, deviceIds and conditions as in create_schedule.
delete_schedule
Permanently delete a schedule together with its conditions and device assignments. Cannot be undone; devices assigned to it stop receiving its content. To disable a schedule without deleting it, update it with a NEVER condition instead.
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | The schedule id |