An on-call schedule defines a group of team members who rotate responsibility for responding to incidents. Each schedule has one or more rotation layers that determine who is on-call at any given time based on a repeating cycle. Schedules are the building blocks for escalation policies. When an escalation policy targets a schedule, Scaling looks at the schedule’s active layers to determine who to notify.Documentation Index
Fetch the complete documentation index at: https://docs.scaling.cloud/llms.txt
Use this file to discover all available pages before exploring further.
Schedule fields
| Field | Required | Notes |
|---|---|---|
name | Yes | 1–255 characters. Must be unique within your organization. |
description | No | Optional context about the schedule’s purpose. |
timezone | Yes | An IANA timezone identifier, e.g. America/New_York or Europe/London. All handoff times are interpreted in this timezone. |
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
Incident.ownerIdat incident creation). - Which layer the schedule-wide override displaces when the override is active.
- The display order of layers in the UI.
Layer fields
| Field | Required | Notes |
|---|---|---|
name | Yes | 1–255 characters. Must be unique within the schedule. |
position | Auto | Assigned by the server. Lower = higher precedence; position 0 is the owner-bearing layer. Change with the layer reorder endpoint. |
rotationType | Yes | daily, weekly, or custom. See rotation types below. |
rotationLengthDays | Yes | The length of each rotation shift in days. Minimum 1. |
handoffTime | Yes | The time of day when the rotation shifts to the next participant. Format: HH:MM (24-hour), interpreted in the schedule’s timezone. |
effectiveFrom | Yes | ISO 8601 datetime. When this layer becomes active. |
effectiveUntil | No | ISO 8601 datetime. When this layer expires. Omit for an open-ended layer. |
participantIds | Yes | An ordered list of org member IDs who rotate through this layer. 1–100 members. The order determines rotation sequence. |
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 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 populateIncident.ownerId). 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.