Schedule fields
Rotation layers
Each schedule can have multiple rotation layers. A layer defines a repeating on-call cycle for a specific group of participants. Layers within a schedule are ordered byposition — an integer (unique per schedule) where position 0 is the owner-bearing layer. Lower position = higher precedence for ownership resolution. The position determines:
- Which layer’s resolved participant becomes the Schedule Owner (used to populate the incident Lead at incident creation).
- Which layer the schedule-wide override displaces when the override is active.
- The display order of layers in the UI.
Layer fields
Rotation types
- Daily
- Weekly
- Custom
Each participant is on-call for one calendar day before the rotation shifts to the next person. Set
rotationLengthDays to 1.The
rotationType field is informational and used to label the rotation in
the UI. The actual rotation calculation always uses rotationLengthDays.Participant order
The order ofparticipantIds defines the rotation sequence. The first participant in the list is on-call starting from effectiveFrom. After rotationLengthDays days at handoffTime, the second participant takes over — and so on, cycling back to the first when the list is exhausted.
To change the rotation order, update the layer with the full participantIds array in the new sequence.
Querying who is on-call
You can ask scaling.cloud who is currently on-call for any schedule. TheGET /oncall/schedules/{scheduleId}/resolve endpoint returns three views in one response:
owner— the single Schedule Owner (used to populate the incident Lead). The lowest-positioned currently-active layer’s resolved participant, with that layer’s override applied if active. Falls through to the next position when position 0 is between effective windows.nullif no layer is active.pagingTargets— the full set of users an escalation policy targeting this schedule would page right now. One entry per currently-active layer in position order, with each layer’s override applied.currentOncallView— a richer breakdown with per-entryposition,source(rotationoroverride), and (when applicable) the displacedoverriddenUserandviaOverrideId.
at query parameter to resolve at a specific point in time instead of now.
entries is empty (and therefore owner is null and pagingTargets is []), no layers are active for that schedule at the requested time.