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

# Retrieve a practitioner appointment restriction

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

Returns a single `PractitionerAppointmentRestriction` belonging
to the given practitioner. Requires the `RESERVATIONS_VIEW`
permission on the practitioner's site.

## Response `200`

A single `PractitionerAppointmentRestriction`.

- object
  - `data` SchemasPractitionerAppointmentRestriction, required — A `PractitionerAppointmentRestriction` records a constraint on the appointments a practitioner can take. Restrictions can either block the practitioner from a set of appointment types entirely (`type: cannot_offer`) or cap the duration of appointments they are allowed to take (`type: max_duration`). Restrictions can apply to a hand-picked list of appointment types (`applies_to_type: specific`) or to every appointment type in one or more categories (`applies_to_type: categories`). They can optionally be limited to a date range; outside that range the restriction has no effect.
    - `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.

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