← Documentation

Asset Scheduling

Restrict assets to specific days of the week and time-of-day windows.

Each asset can be restricted to a specific set of days of the week and a daily time window, on top of the existing start_date / end_date range. With the defaults, scheduling is a no-op and assets behave as before.

Field reference

FieldTypeDefaultEffect
play_daysJSON list of ints 1-7 (Mon-Sun, ISO weekday)[1,2,3,4,5,6,7]Days of week the asset is eligible to play
play_time_fromtime (HH:MM:SS)nullStart of daily play window. null together with play_time_to=null means “anytime”
play_time_totime (HH:MM:SS)nullEnd of daily play window (exclusive). null together with play_time_from=null means “anytime”

is_enabled, start_date, end_date, play_order, duration, and skip_asset_check keep their existing meanings.

When is an asset active?

An asset is active (and therefore eligible for the playlist) only when all of the following are true:

CheckActive when…
Enabledis_enabled = true
Date rangestart_date < now < end_date (both must be set)
Day of weeklocal weekday is in play_days
Time of daylocal time is in [play_time_from, play_time_to), or both fields are null

Time-of-day and day-of-week checks use the device’s local timezone.

Common patterns

Goalstart_date / end_dateplay_daysplay_time_fromplay_time_to
Always (legacy behavior)covering the desired range[1,2,3,4,5,6,7]nullnull
Weekdays onlycovering the desired range[1,2,3,4,5]nullnull
Weekday business hourscovering the desired range[1,2,3,4,5]09:00:0017:00:00
Weekend eveningscovering the desired range[6,7]18:00:0023:00:00
Lunchtime menucovering the desired range[1,2,3,4,5,6,7]11:30:0014:00:00
Friday late-night promocovering the desired range[5]22:00:0002:00:00
Single-day takeover2026-11-27 / 2026-11-28[1,2,3,4,5,6,7]nullnull
Mon morning rotation, 5 weeksrange that covers 5 Mondays[1]09:00:0012:00:00

Overnight windows

When play_time_from > play_time_to, the window wraps past midnight. play_days refers to the start day of the window.

For example, an asset with play_days=[1] (Mon) and 22:00 → 06:00:

Local timeActive?Why
Mon 21:30NoBefore window
Mon 22:00YesWindow starts on Mon
Mon 23:30YesPre-midnight portion of Mon’s window
Tue 02:30YesPost-midnight portion; “yesterday” was Mon (in days)
Tue 06:00NoWindow ends (exclusive)
Tue 22:00NoTue not in play_days
Wed 02:30No“Yesterday” was Tue (not in days)

Notes

  • play_time_to is exclusive: 09:00:00 → 17:00:00 covers up to but not including 17:00:00. To include the boundary minute, set play_time_to one second past it (e.g. 17:00:01) via the v2 REST API. The web UI’s <input type="time"> is minute-precision, so second-level boundaries can only be set through the API.
  • The viewer re-evaluates the playlist when an asset’s window opens or closes; transitions are picked up within ~60 seconds.
  • DST and other clock changes use wall-clock semantics: a window configured for the spring-forward gap (02:00–03:00 on the affected day) simply will not fire that day; a window during the fall-back hour will fire twice.
  • v1.x of the REST API does not expose these fields; use v2 to set them. Existing v1.x clients see no change in behavior.