---
title: "List rotations"
method: GET
path: "/v3/schedules/{id}/rotations"
tags: ["Schedules_v3"]
---

# List rotations

`GET /v3/schedules/{id}/rotations`

<!-- theme: info -->

> **Important note:** Shift-based schedules use the V3 API and are not compatible with V2 automations. **To create automations for Shift-Based Schedules, you need to:**
>
> 1. **Update your automations** to use the V3 API for all new shift-based schedules
> 2. **Keep the V2 endpoint** for your existing schedules
>
> An upgrade tool for existing schedules is coming soon; your legacy schedules will keep working in the meantime. [Learn more](https://support.pagerduty.com/main/docs/shift-based-schedules-api-upgrade-examples).

Retrieve all rotations for a schedule.

## Path parameters

- `id` string, required

## Query parameters

- `limit` integer
- `offset` integer

## Response `200`

Rotations retrieved successfully

- object
  - `rotations` Rotation[], required
    - `id` string, required
    - `type` 'schedule_rotation', required
    - `events` Event[] — Events in this rotation
      - `id` string, required
      - `type` 'schedule_event', required
      - `name` string, required — Display name for this event
      - `start_time` ZonedDateTime, required — A time-of-day value with an explicit time zone. Used for event `start_time` and `end_time` to define the recurring window of coverage (e.g., 9 AM–5 PM every Monday in New York).
        - `date_time` string, date-time, required — The date and time
        - `time_zone` string, required — IANA timezone identifier
      - `end_time` ZonedDateTime, required — A time-of-day value with an explicit time zone. Used for event `start_time` and `end_time` to define the recurring window of coverage (e.g., 9 AM–5 PM every Monday in New York).
        - `date_time` string, date-time, required — The date and time
        - `time_zone` string, required — IANA timezone identifier
      - `effective_since` string, date-time, required — When this event starts producing shifts (UTC)
      - `effective_until` string, date-time, nullable — When this event stops producing shifts (UTC). Null means indefinite.
      - `recurrence` string[], required — RFC 5545 recurrence rules defining the repeating pattern. This must be an array containing: <br> - Exactly one <b>RRULE</b> <br>- Zero or more <b>EXDATE</b> <br>- Zero or more <b>RDATE</b>
      - `assignment_strategy` EventAssignmentStrategy, required — Defines how users are assigned on-call within an event's time window. - `rotating_member_assignment_strategy`: users rotate in sequence. `shifts_per_member` controls how many consecutive shift periods each member covers before rotating. - `every_member_assignment_strategy`: all listed members are on-call simultaneously for every occurrence.
        - `type` 'rotating_member_assignment_strategy' | 'every_member_assignment_strategy', required
        - `shifts_per_member` integer — Required for `rotating_member_assignment_strategy`. Number of consecutive shift occurrences each member covers before the next member takes over. **UI editor constraint:** When `recurrence` uses `FREQ=WEEKLY`, `shifts_per_member` must be evenly divisible by the number of days listed in the RRULE `BYDAY` parameter. Events that violate this are fully functional via the API but cannot be loaded in the web schedule editor.
        - `members` ShiftMember[], required
          - `type` 'user_member' | 'empty_member', required — `user_member` — a specific user is assigned. `empty_member` — the slot is intentionally unassigned.
          - `user_id` string — The ID of the user. Required when type is `user_member`.
      - `self` string, uri
      - `html_url` string, uri
    - `self` string, uri
    - `html_url` string, uri
  - `limit` integer
  - `offset` integer
  - `more` boolean

## Other responses

- `401` — Caller did not supply credentials or did not provide the correct credentials. If you are using an API key, it may be invalid or your Authorization header may be malformed.
- `403` — Caller is not authorized to view the requested resource. While your authentication is valid, the authenticated user or token does not have permission to perform this action.
- `404` — The requested resource was not found.
- `500` — Internal Server Error the PagerDuty server experienced an error.

---

[API](https://skmtc.net/pagerduty/apis/rest-api.md) · [All operations](https://skmtc.net/pagerduty/apis/rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pagerduty/rest-api/versions/b679a8f3f02c/schema)
