Fixed shifts
Schedule one-off coverage windows that win over the rotation.
Fixed shifts
A fixed shift is a recurring or one-off coverage window assigned to a specific person on a specific layer. Fixed shifts win over rotations but lose to overrides.
Use cases:
- "Carol covers every Friday afternoon"
- "Manager layer is on call only during business hours"
- Overflow coverage for a known-busy week
List shifts
GET /oncall/layers/{layer_id}/shifts
json{ "data": [ { "id": "shf_abc", "layer_id": "lyr_p1", "user_id": "usr_carol", "starts_at": "2026-04-17T13:00:00Z", "ends_at": "2026-04-17T17:00:00Z", "recurrence": "weekly", "until": "2026-12-31T00:00:00Z" } ]}
Create shift
POST /oncall/layers/{layer_id}/shifts
Who's covering.
ISO 8601 start time. For recurring shifts, this is the first occurrence.
ISO 8601 end time of the first occurrence.
none, daily, weekly, monthly. Default none.
Stop generating occurrences after this date.
json{ "user_id": "usr_carol", "starts_at": "2026-04-17T13:00:00Z", "ends_at": "2026-04-17T17:00:00Z", "recurrence": "weekly", "until": "2026-12-31T00:00:00Z"}
Update shift
PATCH /oncall/shifts/{id}
Delete shift
DELETE /oncall/shifts/{id}
Deleting a recurring shift removes all future occurrences. Past coverage is preserved in the timeline.