docs: add Phase 0 schedule API/data contract and fixtures
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.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"version": "sched-adjacent-0001",
|
||||
"type": "daily",
|
||||
"daily": [
|
||||
{
|
||||
"id": "dd111111-1111-4111-8111-111111111111",
|
||||
"startTime": "06:00",
|
||||
"startMinutes": 360,
|
||||
"endTime": "07:00",
|
||||
"endMinutes": 420,
|
||||
"overnight": false,
|
||||
"durationMinutes": 60,
|
||||
"proclamationIds": ["b40fdcb9-703c-420e-af32-a081964c6f08"],
|
||||
"dynamicAudio": true
|
||||
},
|
||||
{
|
||||
"id": "dd222222-2222-4222-8222-222222222222",
|
||||
"startTime": "07:00",
|
||||
"startMinutes": 420,
|
||||
"endTime": "08:30",
|
||||
"endMinutes": 510,
|
||||
"overnight": false,
|
||||
"durationMinutes": 90,
|
||||
"proclamationIds": [
|
||||
"7c9e1a2b-3d4e-5f60-8a9b-0c1d2e3f4a5b",
|
||||
"33333333-3333-4333-8333-333333333333"
|
||||
],
|
||||
"dynamicAudio": false
|
||||
}
|
||||
],
|
||||
"weekly": {},
|
||||
"blocks": [
|
||||
{
|
||||
"id": "dd111111-1111-4111-8111-111111111111",
|
||||
"startTime": "06:00",
|
||||
"startMinutes": 360,
|
||||
"endTime": "07:00",
|
||||
"endMinutes": 420,
|
||||
"overnight": false,
|
||||
"durationMinutes": 60,
|
||||
"dynamicAudio": true,
|
||||
"proclamationIds": ["b40fdcb9-703c-420e-af32-a081964c6f08"]
|
||||
},
|
||||
{
|
||||
"id": "dd222222-2222-4222-8222-222222222222",
|
||||
"startTime": "07:00",
|
||||
"startMinutes": 420,
|
||||
"endTime": "08:30",
|
||||
"endMinutes": 510,
|
||||
"overnight": false,
|
||||
"durationMinutes": 90,
|
||||
"dynamicAudio": false,
|
||||
"proclamationIds": [
|
||||
"7c9e1a2b-3d4e-5f60-8a9b-0c1d2e3f4a5b",
|
||||
"33333333-3333-4333-8333-333333333333"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"version": "sched-daily-0001",
|
||||
"type": "daily",
|
||||
"daily": [
|
||||
{
|
||||
"id": "11111111-1111-4111-8111-111111111111",
|
||||
"startTime": "07:00",
|
||||
"startMinutes": 420,
|
||||
"endTime": "09:00",
|
||||
"endMinutes": 540,
|
||||
"overnight": false,
|
||||
"durationMinutes": 120,
|
||||
"proclamationIds": [
|
||||
"b40fdcb9-703c-420e-af32-a081964c6f08",
|
||||
"7c9e1a2b-3d4e-5f60-8a9b-0c1d2e3f4a5b"
|
||||
],
|
||||
"dynamicAudio": true
|
||||
},
|
||||
{
|
||||
"id": "22222222-2222-4222-8222-222222222222",
|
||||
"startTime": "18:00",
|
||||
"startMinutes": 1080,
|
||||
"endTime": "20:30",
|
||||
"endMinutes": 1230,
|
||||
"overnight": false,
|
||||
"durationMinutes": 150,
|
||||
"proclamationIds": ["33333333-3333-4333-8333-333333333333"],
|
||||
"dynamicAudio": false
|
||||
}
|
||||
],
|
||||
"weekly": {},
|
||||
"blocks": [
|
||||
{
|
||||
"id": "11111111-1111-4111-8111-111111111111",
|
||||
"startTime": "07:00",
|
||||
"startMinutes": 420,
|
||||
"endTime": "09:00",
|
||||
"endMinutes": 540,
|
||||
"overnight": false,
|
||||
"durationMinutes": 120,
|
||||
"dynamicAudio": true,
|
||||
"proclamationIds": [
|
||||
"b40fdcb9-703c-420e-af32-a081964c6f08",
|
||||
"7c9e1a2b-3d4e-5f60-8a9b-0c1d2e3f4a5b"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "22222222-2222-4222-8222-222222222222",
|
||||
"startTime": "18:00",
|
||||
"startMinutes": 1080,
|
||||
"endTime": "20:30",
|
||||
"endMinutes": 1230,
|
||||
"overnight": false,
|
||||
"durationMinutes": 150,
|
||||
"dynamicAudio": false,
|
||||
"proclamationIds": ["33333333-3333-4333-8333-333333333333"]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"version": "sched-dynamic-0001",
|
||||
"type": "daily",
|
||||
"daily": [
|
||||
{
|
||||
"id": "ee111111-1111-4111-8111-111111111111",
|
||||
"startTime": "08:00",
|
||||
"startMinutes": 480,
|
||||
"endTime": "10:00",
|
||||
"endMinutes": 600,
|
||||
"overnight": false,
|
||||
"durationMinutes": 120,
|
||||
"proclamationIds": ["b40fdcb9-703c-420e-af32-a081964c6f08"],
|
||||
"dynamicAudio": true
|
||||
},
|
||||
{
|
||||
"id": "ee222222-2222-4222-8222-222222222222",
|
||||
"startTime": "20:00",
|
||||
"startMinutes": 1200,
|
||||
"endTime": "22:00",
|
||||
"endMinutes": 1320,
|
||||
"overnight": false,
|
||||
"durationMinutes": 120,
|
||||
"proclamationIds": ["7c9e1a2b-3d4e-5f60-8a9b-0c1d2e3f4a5b"],
|
||||
"dynamicAudio": false
|
||||
}
|
||||
],
|
||||
"weekly": {},
|
||||
"blocks": [
|
||||
{
|
||||
"id": "ee111111-1111-4111-8111-111111111111",
|
||||
"startTime": "08:00",
|
||||
"startMinutes": 480,
|
||||
"endTime": "10:00",
|
||||
"endMinutes": 600,
|
||||
"overnight": false,
|
||||
"durationMinutes": 120,
|
||||
"dynamicAudio": true,
|
||||
"proclamationIds": ["b40fdcb9-703c-420e-af32-a081964c6f08"]
|
||||
},
|
||||
{
|
||||
"id": "ee222222-2222-4222-8222-222222222222",
|
||||
"startTime": "20:00",
|
||||
"startMinutes": 1200,
|
||||
"endTime": "22:00",
|
||||
"endMinutes": 1320,
|
||||
"overnight": false,
|
||||
"durationMinutes": 120,
|
||||
"dynamicAudio": false,
|
||||
"proclamationIds": ["7c9e1a2b-3d4e-5f60-8a9b-0c1d2e3f4a5b"]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"email": "jane@example.com",
|
||||
"blocks": [
|
||||
{
|
||||
"id": "11111111-1111-4111-8111-111111111111",
|
||||
"startTime": "07:00",
|
||||
"startMinutes": 420,
|
||||
"endTime": "09:00",
|
||||
"endMinutes": 540,
|
||||
"overnight": false,
|
||||
"durationMinutes": 120,
|
||||
"dynamicAudio": true,
|
||||
"proclamationIds": [
|
||||
"b40fdcb9-703c-420e-af32-a081964c6f08",
|
||||
"7c9e1a2b-3d4e-5f60-8a9b-0c1d2e3f4a5b"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "22222222-2222-4222-8222-222222222222",
|
||||
"startTime": "18:00",
|
||||
"startMinutes": 1080,
|
||||
"endTime": "20:30",
|
||||
"endMinutes": 1230,
|
||||
"overnight": false,
|
||||
"durationMinutes": 150,
|
||||
"dynamicAudio": false,
|
||||
"proclamationIds": ["33333333-3333-4333-8333-333333333333"]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"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"]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": "sched-none-0001",
|
||||
"type": null,
|
||||
"daily": [],
|
||||
"weekly": {},
|
||||
"blocks": []
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"version": "sched-weekly-0001",
|
||||
"type": "weekly",
|
||||
"daily": [],
|
||||
"weekly": {
|
||||
"mon": [
|
||||
{
|
||||
"id": "a1111111-1111-4111-8111-111111111111",
|
||||
"startTime": "06:00",
|
||||
"startMinutes": 360,
|
||||
"endTime": "08:00",
|
||||
"endMinutes": 480,
|
||||
"overnight": false,
|
||||
"durationMinutes": 120,
|
||||
"proclamationIds": ["b40fdcb9-703c-420e-af32-a081964c6f08"],
|
||||
"dynamicAudio": true
|
||||
}
|
||||
],
|
||||
"tue": [],
|
||||
"wed": [
|
||||
{
|
||||
"id": "a2222222-2222-4222-8222-222222222222",
|
||||
"startTime": "12:00",
|
||||
"startMinutes": 720,
|
||||
"endTime": "13:00",
|
||||
"endMinutes": 780,
|
||||
"overnight": false,
|
||||
"durationMinutes": 60,
|
||||
"proclamationIds": ["7c9e1a2b-3d4e-5f60-8a9b-0c1d2e3f4a5b"],
|
||||
"dynamicAudio": true
|
||||
}
|
||||
],
|
||||
"thu": [],
|
||||
"fri": [
|
||||
{
|
||||
"id": "a3333333-3333-4333-8333-333333333333",
|
||||
"startTime": "18:00",
|
||||
"startMinutes": 1080,
|
||||
"endTime": "22:00",
|
||||
"endMinutes": 1320,
|
||||
"overnight": false,
|
||||
"durationMinutes": 240,
|
||||
"proclamationIds": ["33333333-3333-4333-8333-333333333333"],
|
||||
"dynamicAudio": false
|
||||
}
|
||||
],
|
||||
"sat": [],
|
||||
"sun": [
|
||||
{
|
||||
"id": "a4444444-4444-4444-8444-444444444444",
|
||||
"startTime": "23:00",
|
||||
"startMinutes": 1380,
|
||||
"endTime": "01:00",
|
||||
"endMinutes": 60,
|
||||
"overnight": true,
|
||||
"durationMinutes": 120,
|
||||
"proclamationIds": ["b40fdcb9-703c-420e-af32-a081964c6f08"],
|
||||
"dynamicAudio": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"blocks": []
|
||||
}
|
||||
Reference in New Issue
Block a user