Practitioners

Create an appointment restriction for a practitioner

Adds a new PractitionerAppointmentRestriction to the practitioner. Use type: cannot_offer to stop the practitioner taking matching appointments outright, or type: max_duration with max_duration (minutes) to cap how long matching appointments can run.

Requires the SETTINGS_MANAGE permission on the practitioner's site.

post/shop/practitioners/{practitionerId}/appointment-restrictions

Request body

type'cannot_offer' | 'max_duration' required

The kind of restriction. cannot_offer blocks matching appointments outright; max_duration caps how long they can be.

applies_to_type'specific' | 'categories' required

How the restriction picks which appointment types it applies to. specific uses the supplied appointment_type_ids; categories uses category_ids.

appointment_type_idsstring[]

IDs of the appointment types this restriction applies to. Required when applies_to_type is specific; prohibited when it is categories.

category_idsstring[]

IDs of the categories this restriction applies to. Required when applies_to_type is categories; prohibited when it is specific.

date_fromstring date nullable

First date the restriction takes effect (inclusive), parsed in the practitioner's timezone. Omit or send null to apply with no start bound.

date_tostring date nullable

Last date the restriction takes effect (inclusive), parsed in the practitioner's timezone. Omit or send null for an open-ended restriction.

max_durationinteger

Maximum appointment duration in minutes. Required when type is max_duration; ignored otherwise.

Example request

{
  "type": "cannot_offer",
  "applies_to_type": "specific",
  "appointment_type_ids": [
    "5e932c0901d210625e3a8766"
  ],
  "date_from": "2026-06-01",
  "date_to": "2026-08-31",
  "max_duration": 60
}

Response

A single PractitionerAppointmentRestriction.

Example response

{
  "data": {
    "type": "cannot_offer",
    "applies_to_type": "specific",
    "appointment_types": [
      {
        "name": "Deep Tissue Massage"
      }
    ],
    "categories": [
      {
        "name": "Massages"
      }
    ],
    "date_from": "2026-06-01",
    "date_to": "2026-08-31",
    "max_duration": 60,
    "occupied_mins": 30
  }
}

Changes

No recorded changes to this endpoint across all 1 revision of this API.