---
title: "Update a practitioner rota"
method: PUT
path: "/shop/practitioners/{practitionerId}/rotas/{rotaId}"
tags: ["PractitionerRotas"]
---

# Update a practitioner rota

`PUT /shop/practitioners/{practitionerId}/rotas/{rotaId}`

Use this endpoint to update an existing `PractitionerRota`.

## Request body

- object
  - `start_date` string, date, nullable — The date from which this rota is active (YYYY-MM-DD).
  - `end_date` string, date, nullable — The date on which this rota ends. Pass null for an open-ended rota.
  - `scheduling_week_interval` integer, required — The number of weeks in the rolling schedule cycle.
  - `availability_rules` PractitionerRotaAvailabilityRule[], required — The availability rules for this rota.
    - `week_num` integer, required — The week number within the rota cycle that this rule applies to (1-indexed).
    - `weekday` 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday', required — The day of the week this rule applies to.
    - `time_from` string, required — The start time of the availability window in HH:MM format.
    - `time_to` string, required — The end time of the availability window in HH:MM format.
    - `offerings` OfferingIdentifier[] — The offerings the practitioner is assigned to during this window. An empty array means the practitioner is not linked to specific offerings for this window.
      - `offering_id` string, mongo-id, required — The ID of the offering.
      - `offering_name` string, required — The name of the offering.
      - `offering_type` 'appointment' | 'appointment_enquiry' | 'area_booking' | 'course' | 'hotel_room_reservation' | 'membership' | 'package' | 'product' | 'session' | 'table_reservation' | 'voucher', required — Discriminator describing what kind of sellable item an `Offering` represents. The value determines which downstream schema (`Appointment`, `Session`, `Package`, etc.) the offering's `offering_id` resolves against, and which checkout/booking flow applies.

## Response `200`

A single `PractitionerRota` object.

- object
  - `data` PractitionerRota, required — A `PractitionerRota` defines a practitioner's recurring availability schedule over a date range.
    - `id` string, object-id, required — The ID of the rota.
    - `practitioner_id` string, object-id, required — The ID of the practitioner this rota belongs to.
    - `start_date` string, date-time, nullable, required — The date from which this rota is active.
    - `end_date` string, date-time, nullable, required — The date on which this rota ends. Null indicates an open-ended rota.
    - `scheduling_week_interval` integer, required — The number of weeks in the rolling schedule cycle (e.g. 2 for a fortnightly rota).
    - `availability_rules` PractitionerRotaAvailabilityRule[], required — The availability rules that define when the practitioner is available within the rota cycle.
      - `week_num` integer, required — The week number within the rota cycle that this rule applies to (1-indexed).
      - `weekday` 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday', required — The day of the week this rule applies to.
      - `time_from` string, required — The start time of the availability window in HH:MM format.
      - `time_to` string, required — The end time of the availability window in HH:MM format.
      - `offerings` OfferingIdentifier[] — The offerings the practitioner is assigned to during this window. An empty array means the practitioner is not linked to specific offerings for this window.
        - `offering_id` string, mongo-id, required — The ID of the offering.
        - `offering_name` string, required — The name of the offering.
        - `offering_type` 'appointment' | 'appointment_enquiry' | 'area_booking' | 'course' | 'hotel_room_reservation' | 'membership' | 'package' | 'product' | 'session' | 'table_reservation' | 'voucher', required — Discriminator describing what kind of sellable item an `Offering` represents. The value determines which downstream schema (`Appointment`, `Session`, `Package`, etc.) the offering's `offering_id` resolves against, and which checkout/booking flow applies.

## Other responses

- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `404` — The resource couldn't be found
- `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)
