Add docs/schedule-api-contract.md (current state, time semantics, schedule data model, validation rules, endpoints, sync behavior, System Name rules, dynamic audio, backward compatibility, per-phase touchpoints, open items, changelog) and docs/fixtures/*.json (daily, weekly, none, midnight-crossing, adjacent, dynamic-audio, and legacy v2 payloads). Kept byte-identical with the portal repo.
60 lines
1.3 KiB
JSON
60 lines
1.3 KiB
JSON
{
|
|
"version": "sched-midnight-0001",
|
|
"type": "daily",
|
|
"daily": [
|
|
{
|
|
"id": "cc111111-1111-4111-8111-111111111111",
|
|
"startTime": "21:00",
|
|
"startMinutes": 1260,
|
|
"endTime": "09:00",
|
|
"endMinutes": 540,
|
|
"overnight": true,
|
|
"durationMinutes": 720,
|
|
"proclamationIds": [
|
|
"b40fdcb9-703c-420e-af32-a081964c6f08",
|
|
"7c9e1a2b-3d4e-5f60-8a9b-0c1d2e3f4a5b"
|
|
],
|
|
"dynamicAudio": true
|
|
},
|
|
{
|
|
"id": "cc222222-2222-4222-8222-222222222222",
|
|
"startTime": "09:00",
|
|
"startMinutes": 540,
|
|
"endTime": "21:00",
|
|
"endMinutes": 1260,
|
|
"overnight": false,
|
|
"durationMinutes": 720,
|
|
"proclamationIds": ["33333333-3333-4333-8333-333333333333"],
|
|
"dynamicAudio": false
|
|
}
|
|
],
|
|
"weekly": {},
|
|
"blocks": [
|
|
{
|
|
"id": "cc111111-1111-4111-8111-111111111111",
|
|
"startTime": "21:00",
|
|
"startMinutes": 1260,
|
|
"endTime": "09:00",
|
|
"endMinutes": 540,
|
|
"overnight": true,
|
|
"durationMinutes": 720,
|
|
"dynamicAudio": true,
|
|
"proclamationIds": [
|
|
"b40fdcb9-703c-420e-af32-a081964c6f08",
|
|
"7c9e1a2b-3d4e-5f60-8a9b-0c1d2e3f4a5b"
|
|
]
|
|
},
|
|
{
|
|
"id": "cc222222-2222-4222-8222-222222222222",
|
|
"startTime": "09:00",
|
|
"startMinutes": 540,
|
|
"endTime": "21:00",
|
|
"endMinutes": 1260,
|
|
"overnight": false,
|
|
"durationMinutes": 720,
|
|
"dynamicAudio": false,
|
|
"proclamationIds": ["33333333-3333-4333-8333-333333333333"]
|
|
}
|
|
]
|
|
}
|