AreaBookings

Update an AreaBooking

Updates an existing AreaBooking — typically to reassign the booked areas, reschedule the time slot, adjust the duration, or progress the parent order through its check-in stages.

The update is routed through the basket / availability layer, so every change is validated against the same rules as a fresh booking: overlapping area reservations, capacity, site opening hours, and the parent AreaBookingType's permitted areas are all enforced. Users with the reservations.override-rules permission can bypass these checks server-side; everyone else will receive a 400 Bad Request describing the conflict.

When only stage is supplied the booking slot is left untouched and the change is applied to the parent order, saving the availability round-trip entirely.

put/shop/area-bookings/{areaBookingId}

Request body

area_idsstring[] nullable

Replace the set of BookableAreas assigned to this booking. Each area must permit the parent AreaBookingType and must be available for the booking's time slot.

start_timestring date-time

Move the booking so it starts at this date and time. If end_time is not also supplied it will be recalculated from the existing duration. Must be an RFC 3339 timestamp with offset.

end_timestring date-time

Move the booking so it ends at this date and time. Must be an RFC 3339 timestamp with offset and must be after start_time.

timestring date-time

Deprecated. Legacy alias for start_time. Will be removed once all calendar drag-and-drop clients have migrated.

durationinteger

Set the booking duration in minutes. Must be positive. When only duration is supplied the booking's end_time is recalculated from the current start_time.

stage'arrived' | 'in_treatment' | 'checked_out' | 'not_arrived' nullable

Move the parent order through its check-in flow. When stage is the only field provided the availability layer is skipped entirely. Pass null to clear the stage back to the default.

Example request

{
  "area_ids": [
    "5e932c0901d210625e3a8766"
  ],
  "start_time": "2026-06-01T10:00:00+01:00",
  "end_time": "2026-06-01T12:00:00+01:00",
  "time": "2026-06-01T10:00:00+01:00",
  "duration": 60
}

Response

The AreaBooking was successfully updated.

Example response

{
  "data": {
    "area_booking_type_name": "Pool Cabana",
    "order_ref": "TRY00",
    "order_labels": [
      {
        "color": "#FF0000",
        "name": "VIP"
      }
    ],
    "email": "janedoe@example.com",
    "phone": "+447727123456",
    "first_name": "Jane",
    "last_name": "Doe",
    "areas": [
      {
        "name": "Hot Tub 1"
      }
    ],
    "guests": [
      {
        "id": "5dcb47800000000000000000",
        "checked_in_at": "2025-10-01T12:00:00+00:00",
        "checked_out_at": "2025-10-01T16:30:00+00:00",
        "customer_id": "5f8a1b2c-9d3e-4a5b-8c6d-7e8f9a0b1c2d",
        "email": "jane.doe@example.com",
        "first_name": "Jane",
        "intake_form_submission_id": "5dcb47800000000000000010",
        "last_name": "Doe",
        "name": "Jane Doe"
      }
    ],
    "start_time": "2019-01-15T12:00:00+01:00",
    "end_time": "2019-01-15T13:00:00+01:00",
    "duration": 60,
    "end_buffer": 15,
    "product_code": "SPA-CABANA",
    "created_at": "2025-02-04T12:00:00+01:00",
    "updated_at": "2025-02-04T12:00:00+01:00"
  }
}

Changes

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