Timeline

The timeline projects who's on call for any future window, with the reason each segment was assigned (override / fixed shift / rotation).

Get timeline

GET /oncall/schedules/{schedule_id}/timeline

fromstringrequiredquery

ISO 8601 start.

tostringrequiredquery

ISO 8601 end. Max range: 90 days.

layer_idstringquery

Restrict to one layer. Omit for all layers.

bash
curl "https://happyuptime.com/api/v1/oncall/schedules/sch_abc/timeline?from=2026-04-17T00:00:00Z&to=2026-04-24T00:00:00Z" \ -H "Authorization: Bearer hu_..."
json
{ "data": [ { "layer_id": "lyr_primary", "layer_name": "Primary", "segments": [ { "user": { "id": "usr_alice", "name": "Alice", "slack_id": "U01ABCD" }, "starts_at": "2026-04-17T00:00:00Z", "ends_at": "2026-04-17T20:00:00Z", "reason": "rotation" }, { "user": { "id": "usr_carol", "name": "Carol" }, "starts_at": "2026-04-17T20:00:00Z", "ends_at": "2026-04-17T22:00:00Z", "reason": "override", "note": "Covering for Alice" }, { "user": { "id": "usr_alice", "name": "Alice" }, "starts_at": "2026-04-17T22:00:00Z", "ends_at": "2026-04-22T13:00:00Z", "reason": "rotation" } ] } ]}

Reason values

ReasonMeaning
rotationStandard rotation (ungated by restriction)
fixed_shiftFixed shift assigned this slot
overrideOverride active for this window
noneLayer is unmanned (restriction in effect with no fallback)

Use cases

  • Render a Gantt-style schedule view
  • Validate "is anyone covering 2 AM Saturday?" before going to bed
  • Power external integrations (e.g. an internal status board showing tonight's on-call)
Ask a question... ⌘I