---
title: "List appointment restrictions for a practitioner"
method: GET
path: "/shop/practitioners/{practitionerId}/appointment-restrictions"
tags: ["Practitioners"]
---

# List appointment restrictions for a practitioner

`GET /shop/practitioners/{practitionerId}/appointment-restrictions`

Returns the `PractitionerAppointmentRestriction`s configured on a
practitioner. Restrictions either block the practitioner from
certain appointment types or cap how long those appointments can
be, optionally limited to a date range.

The list is paginated. Requires the `RESERVATIONS_VIEW`
permission on the practitioner's site.

## Query parameters

- `page` integer
- `per_page` integer

## Response `200`

A paginated list of `PractitionerAppointmentRestriction` objects belonging to the practitioner.

- object
  - `data` SchemasPractitionerAppointmentRestriction[], required — The restrictions configured for this practitioner. Order is not guaranteed.
    - `id` string, object-id, required — The unique identifier of the restriction.
    - `type` 'cannot_offer' | 'max_duration', required — The kind of restriction this rule applies. `cannot_offer` prevents the practitioner from taking matching appointments at all; `max_duration` caps how long matching appointments can be.
    - `applies_to_type` 'specific' | 'categories', required — How the restriction picks which appointment types it covers. `specific` matches against `appointment_type_ids`; `categories` matches every appointment type linked to one of the listed `category_ids`.
    - `appointment_type_ids` string[] — IDs of the `AppointmentType`s this restriction applies to. Only present when `applies_to_type` is `specific`.
    - `appointment_types` PractitionerAppointmentRestrictionAppointmentType[] — Inline summaries of the appointment types referenced by `appointment_type_ids`. Only present when `applies_to_type` is `specific`.
      - `id` string, object-id, required — The ID of the appointment type.
      - `name` string, required — The display name of the appointment type.
    - `category_ids` string[] — IDs of the `Category`s this restriction applies to. Only present when `applies_to_type` is `categories`.
    - `categories` PractitionerAppointmentRestrictionCategory[] — Inline summaries of the categories referenced by `category_ids`. Only present when `applies_to_type` is `categories`.
      - `id` string, object-id, required — The ID of the category.
      - `name` string, required — The name of the category.
    - `date_from` string, date, nullable, required — First date the restriction applies (inclusive), in the practitioner's timezone. `null` means it applies from any date in the past.
    - `date_to` string, date, nullable, required — Last date the restriction applies (inclusive), in the practitioner's timezone. `null` means it has no end date.
    - `max_duration` integer, nullable — Maximum appointment duration the practitioner can take, in minutes. Only present when `type` is `max_duration`.
    - `occupied_mins` integer — Optional context value: minutes already occupied by other bookings during the restriction's window. Present only when the restriction was loaded with availability context.
  - `meta` PaginationMeta, required — Counts and positional information for the current page of a list response. Use `current_page` and `last_page` to drive pagination UI, `total` for result counts, and `per_page` to confirm the page size the server actually applied (which may differ from the requested value when capped).
    - `from` integer, required — The item number from which this results set starts from
    - `to` integer, required — The item number from which this results set ends at
    - `total` integer, required — The total number of results
    - `current_page` integer, required — The current page number
    - `last_page` integer, required — The page number of the last result set
    - `per_page` integer, required — The number of results per page
    - `path` string, required — The path of this api request
  - `links` PaginationLinks, required — Hypermedia navigation links for paging through a list response. Each property is a fully-qualified URL that preserves the original query string (filters, sort, page size) and only swaps the `page` parameter. `next` and `prev` are `null` at the ends of the result set; `first` and `last` are always present.
    - `first` string, required — The url of the first page for the paginated results set
    - `next` string, nullable, required — The url of the next page for the paginated results set
    - `prev` string, nullable, required — The url of the previous page for the paginated results set
    - `last` string, required — The url of the last page for the paginated results set

## Other responses

- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `404` — The resource couldn't be found

---

[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)
