On-Call API › Schedules
Update a schedule
Changes the schedule. A field left out or empty keeps its value; active
changes only when sent.
A schedule that belongs to a team is visible only to callers in that team (and to administrators acting in person); others get 404, as if it did not exist.
Permission (API-key scope): oncall:schedule:write.
Authorization
bearerAuth(oncall:schedule:write)apiKeyHeader(oncall:schedule:write)
Parameters
Path parameters
idstring requiredThe schedule's id.
Request body required
On create name is required; on update an empty field keeps its value.
namestringdescriptionstringtimezonestringIANA name, e.g.Europe/Istanbul.activebooleanteam_idstringA team the caller is in; defaults to the caller's first team on create.
Responses
200
The schedule after the change.
dataSchedule requiredShow Schedule properties
idstringorg_idstringteam_idstringEmpty for an organization-wide schedule.namestringdescriptionstringtimezonestringIANA timezone every shift is evaluated in.activebooleanlayersarray of ScheduleLayerShow ScheduleLayer properties
idstringschedule_idstringnamestringpriorityintegerLayers with a higher priority win over lower ones.rotation_typeRotationTyperotation_startstring (date-time)When the rota's first turn started.handoff_dayintegerWeekday of the handover for weekly rotas, 0 (Sunday) to 6.handoff_timestringHH:MMof the handover.restrict_to_weekdaysarray of integerrestrict_start_timestringHH:MMrestrict_end_timestringHH:MMrotationsarray of ScheduleRotationShow ScheduleRotation properties
idstringlayer_idstringuser_idstringpositioninteger0-based place in the rota.created_atstring (date-time)
created_atstring (date-time)updated_atstring (date-time)
overridesarray of ScheduleOverrideShow ScheduleOverride properties
idstringschedule_idstringuser_idstringWhom the override covers, when recorded.override_user_idstringWho is on call instead.start_timestring (date-time)end_timestring (date-time)reasonstringcreated_atstring (date-time)
external_sourcestringWhere it was imported from (opsgenie,pagerduty); absent for schedules made in EvoHub.external_idstringcreated_atstring (date-time)updated_atstring (date-time)
successboolean required
400
The body is not JSON (INVALID_BODY); name is blank or longer than 100 characters (VALIDATION_FAILED); or timezone is not an IANA name (VALIDATION_ERROR).
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.
401
No API key was sent, or it is unknown, revoked or expired (UNAUTHORIZED).
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.
403
The key lacks the scope (FORBIDDEN), or team_id names a team the caller is not in (NOT_IN_TEAM).
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.
404
No schedule with this id in your organization (NOT_FOUND).
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.
429
Too many requests (RATE_LIMITED). Wait Retry-After seconds.
Retry-AfterintegerSeconds to wait.
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.
500
Something went wrong on EvoHub's side (INTERNAL_ERROR). Retry later.
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.
Example request
curl -X PUT 'https://evohub.io/api/v1/schedules/5b1c7d2e-8f3a-4b9c-a0d1-e2f3a4b5c6d7' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{
"active": false
}'