Practitioners

Update a practitioner

Partially updates a Practitioner. Every field is optional; only fields you send are written. Fields you omit retain their current values. Requires the SETTINGS_MANAGE permission on the practitioner's first site.

email (if sent) must be unique across all practitioners in the caller's organisations — duplicate emails are rejected with 422. user_id (if sent non-null) must share an organisation with the practitioner and not already be linked to another practitioner on the same site.

put/shop/practitioners/{practitionerId}

Request body

namestring

Display name of the practitioner.

emailstring email

Optional contact email for the practitioner. Must be unique across all practitioners in the caller's organisations.

can_offer_tagsstring[]

Free-form list of tag names the practitioner is qualified to deliver. Used by older integrations; new callers should prefer the tag_ids association on practitioners/{id}/appointment-restrictions instead.

tag_idsstring[]

IDs of practitioner tags this person belongs to. Tags must already exist in the caller's primary organisation AND be marked applies_to: Practitioner.

zone_idsstring[]

IDs of zones the practitioner is associated with. Zones must belong to the practitioner's first site.

scheduling_week_interval_startstring date

ISO 8601 date marking the first week of the practitioner's recurring schedule. Combined with scheduling_week_interval to compute multi-week rotas.

scheduling_week_intervalinteger

Length of the recurring schedule in weeks (1-10). 1 means a weekly schedule; 4 means a 4-weekly rota repeating from scheduling_week_interval_start.

avatar_idstring object-id nullable

ID of an uploaded Media to use as the practitioner's avatar.

signature_idstring object-id nullable

ID of an uploaded Media to use as the practitioner's signature image.

orderinteger

Sort order for the practitioner within the site. Lower numbers sort first. Use PUT /shop/practitioners/order to reorder a batch of practitioners in one request.

gender'male' | 'female' | 'non_binary' nullable

Optional gender; see Create.

registration_numberstring nullable

Optional registration or license number for the practitioner.

external_idstring nullable

Optional external identifier for correlating this practitioner with a record in a third-party system.

commission_package_idstring object-id nullable

Optional CommissionPackage to attach.

user_idstring uuid nullable

Optional underlying User to link to. The user must share an organisation with the practitioner. A given user can be linked to at most one practitioner per site.

Example request

{
  "name": "Jane Doe",
  "email": "jane.doe@example.com",
  "scheduling_week_interval_start": "2026-01-05",
  "scheduling_week_interval": 1,
  "order": 3,
  "registration_number": "A123",
  "external_id": "EXT-001"
}

Response

The practitioner was updated.

Example response

{
  "data": {
    "id": "5dcb47800000000000000000",
    "appointment_restrictions": [
      {
        "id": "5dcb47800000000000000011",
        "appointment_type_ids": [
          "5dcb47800000000000000010"
        ],
        "category_ids": [
          "5dcb47800000000000000010"
        ],
        "date_from": "2020-06-20",
        "date_to": "2020-06-20",
        "max_duration": 180,
        "occupied_mins": 60
      }
    ],
    "avatar": {
      "file_name": "super-cool-photo.jpg",
      "mime_type": "image/jpeg",
      "original_url": "https://example.com/media/super-cool-photo.jpg",
      "size": 84256,
      "url": "https://example.com/media/super-cool-photo-thumbnail@2x.jpg"
    },
    "signature": {
      "file_name": "super-cool-photo.jpg",
      "mime_type": "image/jpeg",
      "original_url": "https://example.com/media/super-cool-photo.jpg",
      "size": 84256,
      "url": "https://example.com/media/super-cool-photo-thumbnail@2x.jpg"
    },
    "gender": "female",
    "name": "Jane Doe",
    "registration_number": "A123",
    "organisation_id": "5f8a1b2c-9d3e-4a5b-8c6d-7e8f9a0b1c2d",
    "zones": [
      {
        "id": "5f1234567890abcdef123456",
        "name": "Pool Deck",
        "organisation_id": "22222222-2222-2222-2222-222222222222",
        "site_id": "11111111-1111-1111-1111-111111111111"
      }
    ],
    "external_id": "EXT-001",
    "user_id": "5f8a1b2c-9d3e-4a5b-8c6d-7e8f9a0b1c2d",
    "created_at": "2025-02-04T12:00:00+01:00",
    "updated_at": "2025-02-04T12:00:00+01:00"
  }
}

Changes