{ "description": "Committed stand-in for a user-authored scripted schedule: the ordered sequence of calls such a script makes against /api/v1/scripted/playout/build/{buildId}, replayed through the real ScriptedScheduleController by ScriptedScheduleControllerTests. Field names and casing match what the HTTP body binder accepts \u2014 the replay deserializes each body with ApiJsonSettings, the configuration Startup applies to AddNewtonsoftJson. Deliberately avoids wait_until / pad_until / pad_to_next (local day and time-of-day) and shuffle order, which would make the pinned snapshot machine-timezone- or seed-dependent. add_duration and pad_until_exact both end BETWEEN two content boundaries on purpose: an instruction that happens to end on one never reaches the engine's trim branch, and its trim flag is then witnessed by nothing.", "script": [ { "action": "add_collection", "body": { "key": "content", "collection": "Test Collection", "order": "chronological" } }, { "action": "start_epg_group", "body": { "advance": true, "customTitle": "Morning Block" } }, { "action": "add_count", "body": { "content": "content", "count": 2 } }, { "action": "stop_epg_group" }, { "action": "add_duration", "body": { "content": "content", "duration": "2:00:00", "trim": true } }, { "action": "pad_until_exact", "body": { "content": "content", "when": "2026-01-15T09:55:00+00:00", "trim": true } }, { "action": "add_all", "body": { "content": "content" } } ] }