---
title: "Update Schedules V2"
method: PUT
path: "/v2/schedules/{id}"
tags: ["Schedules V2"]
---

# Update Schedules V2

`PUT /v2/schedules/{id}`

Update a schedule.

## Path parameters

- `id` string, required

## Request body

- SchedulesV2UpdateRequestBody
  - `schedule` ScheduleUpdatePayloadV2, required
    - `annotations` object — Annotations that can track metadata about the schedule
    - `config` ScheduleConfigUpdatePayloadV2
      - `rotations` ScheduleRotationUpdatePayloadV2[]
        - `effective_from` string, date-time
        - `handover_start_at` string, date-time
        - `handovers` ScheduleRotationHandoverV2[]
          - `interval` integer
          - `interval_type` 'hourly' | 'daily' | 'weekly'
        - `id` string — Unique identifier of the rotation
        - `layers` ScheduleLayerUpdatePayloadV2[]
          - `id` string — Unique identifier of the layer
          - `name` string — Name of the layer
        - `name` string — Name of the rotation
        - `users` UserReferencePayloadV2[]
          - `email` string — The user's email address, matching the email on their Slack account
          - `id` string — The incident.io ID of a user
          - `slack_user_id` string — The ID of the user's Slack account.
        - `working_interval` ScheduleRotationWorkingIntervalUpdatePayloadV2[]
          - `end_time` string — End time of the interval, in 24hr format
          - `start_time` string — Start time of the interval, in 24hr format
          - `weekday` 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday' — Weekday this interval applies to
    - `holidays_public_config` ScheduleHolidaysPublicConfigPayloadV2
      - `country_codes` string[], required — ISO 3166-1 alpha-2 country codes for the countries that this schedule is configured to view holidays for
    - `name` string — Name of the schedule
    - `timezone` string — Timezone of the schedule

## Response `200`

OK response.

- SchedulesV2UpdateResponseBody
  - `schedule` ScheduleV2, required
    - `annotations` object, required — Annotations that track metadata about this resource
    - `config` ScheduleConfigV2
      - `rotations` ScheduleRotationV2[], required — Rotas in this schedule
        - `effective_from` string, date-time — When this rotation config will be effective from
        - `handover_start_at` string, date-time, required — Defines the next moment we'll trigger a handover
        - `handovers` ScheduleRotationHandoverV2[], required — Defines the handover intervals for this rota, in order they should apply
          - `interval` integer
          - `interval_type` 'hourly' | 'daily' | 'weekly'
        - `id` string, required — Unique internal ID of the rotation
        - `layers` ScheduleLayerV2[], required — Controls how many people are on-call concurrently
          - `id` string — Unique identifier of the layer
          - `name` string — Name of the layer
        - `name` string, required — Human readable name synced from external provider
        - `users` UserV2[], required — Users who are available to be scheduled on this rota
          - `email` string — Email address of the user.
          - `id` string, required — Unique identifier of the user
          - `name` string, required — Name of the user
          - `role` 'viewer' | 'responder' | 'administrator' | 'owner' | 'unset', required — DEPRECATED: Role of the user as of March 9th 2023, this value is no longer updated.
          - `slack_user_id` string — Slack ID of the user
        - `working_interval` ScheduleRotationWorkingIntervalV2[]
          - `end_time` string, required — End time of the interval, in 24hr format
          - `start_time` string, required — Start time of the interval, in 24hr format
          - `weekday` 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday', required — Weekday this interval applies to
    - `created_at` string, date-time, required
    - `current_shifts` ScheduleEntryV2[] — Shifts that are on-going for this schedule, if a native schedule
      - `end_at` string, date-time, required
      - `entry_id` string — Unique identifier of the schedule entry
      - `fingerprint` string — A unique identifier for this entry, used to determine a unique shift
      - `layer_id` string — If present, the layer this entry applies to on the rota
      - `rotation_id` string — If present, the rotation this entry applies to on the schedule
      - `start_at` string, date-time, required
      - `user` UserV2
        - `email` string — Email address of the user.
        - `id` string, required — Unique identifier of the user
        - `name` string, required — Name of the user
        - `role` 'viewer' | 'responder' | 'administrator' | 'owner' | 'unset', required — DEPRECATED: Role of the user as of March 9th 2023, this value is no longer updated.
        - `slack_user_id` string — Slack ID of the user
    - `next_shifts` ScheduleEntryV2[] — Shifts that are upcoming for this schedule, if a native schedule
      - `end_at` string, date-time, required
      - `entry_id` string — Unique identifier of the schedule entry
      - `fingerprint` string — A unique identifier for this entry, used to determine a unique shift
      - `layer_id` string — If present, the layer this entry applies to on the rota
      - `rotation_id` string — If present, the rotation this entry applies to on the schedule
      - `start_at` string, date-time, required
      - `user` UserV2
        - `email` string — Email address of the user.
        - `id` string, required — Unique identifier of the user
        - `name` string, required — Name of the user
        - `role` 'viewer' | 'responder' | 'administrator' | 'owner' | 'unset', required — DEPRECATED: Role of the user as of March 9th 2023, this value is no longer updated.
        - `slack_user_id` string — Slack ID of the user
    - `holidays_public_config` ScheduleHolidaysPublicConfigV2
      - `country_codes` string[], required — ISO 3166-1 alpha-2 country codes for the countries that this schedule is configured to view holidays for
    - `id` string, required — Unique internal ID of the schedule
    - `name` string, required — Human readable name synced from external provider
    - `timezone` string, required — Timezone of the schedule, as interpreted at the point of generating the report
    - `updated_at` string, date-time, required

---

[API](https://skmtc.net/incident/apis/incident-io.md) · [All operations](https://skmtc.net/incident/apis/incident-io/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/incident/incident-io/revisions/602fc25ddd76/schema)
