---
title: "Get availability details for a date"
method: GET
path: "/shop/availability-details"
tags: ["Availability"]
---

# Get availability details for a date

`GET /shop/availability-details`

Returns an exhaustive availability snapshot for a single site/date,
combining opening hours, calendar availability, practitioner and
room schedules, equipment, and the periods already occupied by
existing bookings or blocks.

The endpoint powers Trybe's calendar day view and the booking
workflow's "explain" panel — the same payload is used to render
why a slot is or isn't bookable.

Scope the response to a single offering by supplying both
`offering_type` and `offering_id`. When omitted, the response
includes every practitioner, room and equipment item at the site
and skips offering-specific calendars.

The current user must have the `reservations.manage` permission on
the site to call this endpoint.

## Query parameters

- `site_id` string, required
- `date` string, date-time, required
- `offering_type` 'appointment' | 'area_booking' | 'session' | 'course' | 'product' | 'package' | 'voucher'
- `offering_id` string, object-id

## Response `200`

The availability details were successfully retrieved.

- AvailabilityDetailsResponse
  - `data` AvailabilityDetails, required — A point-in-time snapshot of every resource that influences availability for a single site/date (and optionally a single offering). The Trybe calendar uses this payload to render the day view and to explain why a particular slot is or isn't bookable.
    - `opening_hours` AvailabilityWindow[], required — The site's opening-hour windows for the requested date.
      - `start_time` string, date-time, required — The inclusive start of the window.
      - `end_time` string, date-time, required — The exclusive end of the window.
    - `offering` SchemasOfferingSummary, nullable — Summary information about the offering the request was scoped to. Null when no offering was supplied.
      - `id` string, object-id, required — The offering identifier.
      - `offering_type` 'appointment' | 'area_booking' | 'session' | 'course' | 'product' | 'package' | 'voucher', required — The offering's type discriminator.
      - `name` string, required — The human-readable offering name.
      - `duration` integer, nullable — The offering duration in minutes.
      - `end_buffer` integer, nullable — The minutes of buffer that should be reserved at the end of each booking.
      - `min_advance_bookings_interval` integer, nullable — The minimum number of minutes ahead of the start time that the offering can be booked.
      - `max_advance_bookings_interval` integer, nullable — The maximum number of minutes ahead of the start time that the offering can be booked.
      - `start_time_interval` integer, nullable — The interval, in minutes, at which start times are offered (e.g. every 15 minutes).
    - `calendar_availability` CalendarAvailability, nullable — The offering's day-level availability summary as it would appear on the booking calendar (e.g. available/unavailable/closed).
      - `date` string, date, required — The date this availability summary applies to.
      - `available` boolean, required — Whether the offering can be booked on the date.
    - `scheduled_availability` AvailabilityWindow[], nullable — The combined availability windows derived from practitioner, room and equipment schedules for the offering. Only populated when `offering_id` is an appointment type.
      - `start_time` string, date-time, required — The inclusive start of the window.
      - `end_time` string, date-time, required — The exclusive end of the window.
    - `scheduled_slots` ScheduledSlot[], nullable — Discrete bookable slots generated from the scheduled availability for the offering. Only populated when `offering_id` is an appointment type.
      - `start_time` string, date-time, required
      - `end_time` string, date-time, required
    - `rooms` RoomAvailability[], required — The rooms relevant to the request. When an offering is supplied, only rooms eligible for that offering are returned.
      - `room` SchemasRoomSummary, required — A reduced summary of a `Room`.
        - `id` string, object-id, required
        - `name` string, required
      - `availability_rules` AvailabilityWindow[], required — The room's configured availability rules for the date.
        - `start_time` string, date-time, required — The inclusive start of the window.
        - `end_time` string, date-time, required — The exclusive end of the window.
      - `scheduled_slots` AvailabilityWindow[], required — The room's scheduled availability windows for the date.
        - `start_time` string, date-time, required — The inclusive start of the window.
        - `end_time` string, date-time, required — The exclusive end of the window.
    - `practitioners` PractitionerAvailability[], required — The practitioners relevant to the request. When an offering is supplied, only practitioners eligible for that offering are returned.
      - `practitioner` SchemasPractitionerSummary2, required — A reduced summary of a `Practitioner`.
        - `id` string, object-id, required
        - `name` string, required
      - `availability_rules` AvailabilityWindow[], required — The practitioner's configured availability rules for the date.
        - `start_time` string, date-time, required — The inclusive start of the window.
        - `end_time` string, date-time, required — The exclusive end of the window.
      - `scheduled_slots` AvailabilityWindow[], required — The practitioner's scheduled availability windows for the date.
        - `start_time` string, date-time, required — The inclusive start of the window.
        - `end_time` string, date-time, required — The exclusive end of the window.
      - `restrictions` object[], required — Practitioner-specific restrictions that apply to the requested offering on the date (e.g. maximum bookings, maximum duration).
    - `equipment` EquipmentAvailability[], required — The equipment items relevant to the request. When an offering is supplied, only equipment associated with the offering is returned.
      - `equipment` SchemasEquipmentSummary, required — A reduced summary of an `Equipment` resource.
        - `id` string, object-id, required
        - `name` string, required
    - `occupied_periods` OccupiedPeriod[], required — The periods within the day that are already occupied by an existing booking, hold, or block. Use these to render unavailable regions on the calendar.
      - `start_time` string, date-time, required
      - `end_time` string, date-time, required
      - `practitioner_ids` string[] — The practitioners occupied by the booking, if any.
      - `room_id` string, object-id, nullable — The room occupied by the booking, if any.

## Other responses

- `400` — The request failed.
- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `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)
