Appointments

Check whether an Appointment update would be allowed

Dry-runs an Appointment update without persisting the change. Reports whether the proposed assignment of practitioners, room and time-of-day slot would succeed.

Note: this endpoint validates against time-of-day only — it is NOT a full reschedule dry-run. The body is a strict subset of UpdateAppointment (practitioner_ids, room_id and a HH:mm start_time); other writable appointment fields (move, stage, item_configuration, etc.) are not consulted here. Use PUT /shop/appointments/{appointmentId} to actually persist a reschedule.

Use this to surface conflicts (overlapping bookings, room capacity, equipment availability, opening hours) to the operator before they commit a drag-and-drop move on the calendar. The response indicates whether the update is allowed, lists the specific availability errors that would block it, and reports whether the current user has the reservations.override-rules permission to bypass them.

put/shop/appointments/{appointmentId}/check

Request body

practitioner_idsstring[]

The practitioners that would be assigned to the appointment. Each entry must be a valid Practitioner ID; the check fails if any of the practitioners is unavailable or unqualified for the appointment type.

room_idstring nullable

The room the appointment would take place in. Pass null to check availability without a room constraint.

start_timestring time

Time-of-day the appointment would start, in HH:mm (24-hour) format. The check endpoint validates only the time-of-day slot — it does NOT accept a full RFC 3339 datetime; pass the date via the path/appointment context and the clock time here.

Example request

{
  "room_id": "5e1e3f6c-2a44-4f6e-8c61-9c1f7d2e1c11",
  "start_time": "14:30"
}

Response

The check was successfully carried out.

Example response

{
  "data": {
    "errors": [
      {
        "type": "NoSlotException",
        "message": "The requested time slot isn't valid for this appointment type."
      }
    ]
  }
}

Changes

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