---
title: "List a practitioner's scheduled availability"
method: GET
path: "/shop/practitioner-scheduled-availability"
tags: ["Practitioners"]
---

# List a practitioner's scheduled availability

`GET /shop/practitioner-scheduled-availability`

Returns the resolved availability windows for one or more
practitioners over the requested date range. Windows mix
rota-derived "regular" availability with `CustomAvailabilityRule`
overrides (which can be either available or explicitly
unavailable); the response carries an `availability_type` flag so
consumers can tell them apart.

Use either a date-range (`date_from` / `date_to`, inclusive of
whole days in the practitioner's timezone) or a date-time range
(`date_time_from` / `date_time_to`, half-open) — supply one pair
or the other, not both.

Practitioners are processed in the order they appear in
`practitioner_ids`; the response is sorted by start time within
each practitioner. Returns an empty list if no practitioners were
supplied.

Requires the `view` ability on every supplied practitioner. A
single forbidden practitioner aborts the request with `403`.

## Query parameters

- `practitioner_ids` string, required
- `date_from` string, date
- `date_to` string, date
- `date_time_from` string
- `date_time_to` string

## Response `200`

The resolved practitioner availability windows.

- object
  - `data` ScheduledAvailabilityWindow[], required
    - `practitioner_id` string, object-id — ID of the practitioner the window belongs to. Present on practitioner-scoped responses; omitted on room responses.
    - `room_id` string, object-id — ID of the room the window belongs to. Present on room-scoped responses; omitted on practitioner responses.
    - `date_time_from` string, date-time, required — ISO 8601 start of the window.
    - `date_time_to` string, date-time, required — ISO 8601 end of the window.
    - `is_available` boolean, required — True for available windows, false for explicit unavailable-override windows (only meaningful when `availability_type=custom`).
    - `availability_type` 'regular' | 'custom', required — Whether the window came from the regular rota or a custom-availability override.
    - `custom_availability_id` string, object-id — ID of the `CustomAvailabilityRule` backing the window. Present only when `availability_type=custom`.

## Other responses

- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `422` — The request didn't pass validation

---

[API](https://skmtc.dev/try/apis/trybe-api.md) · [All operations](https://skmtc.dev/try/apis/trybe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/try/trybe-api/revisions/f37f92702da5/schema)
