> ## Documentation Index
> Fetch the complete documentation index at: https://restoo.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Experience Add-ons Availability

> Retrieves availability of Add-ons for a specific Experience.



## OpenAPI

````yaml /public-api.json post /availability/work-days/{date}/shifts/{time}/experiences/add-ons
openapi: 3.1.0
info:
  title: Restoo Public API
  version: 3.0.0-alpha
  description: Connect your App with Restoo.
servers:
  - url: https://api-dev.myrestoo.net/v3
    description: Dev
  - url: https://api.myrestoo.net/v3
    description: Prod
security:
  - http: []
tags:
  - name: Review
paths:
  /availability/work-days/{date}/shifts/{time}/experiences/add-ons:
    post:
      tags:
        - Availability
      summary: Get Experience Add-ons Availability
      description: Retrieves availability of Add-ons for a specific Experience.
      operationId: availability.getExperienceAddOns
      parameters:
        - name: date
          in: path
          required: true
          description: The date for the availability search in ISO 8601 format (YYYY-MM-DD)
          schema:
            type: string
            format: date
            examples:
              - '2025-03-20'
        - name: time
          in: path
          required: true
          description: The time for the availability search in ISO 8601 format (HH:MM:SS)
          schema:
            type: string
            examples:
              - '22:30:00'
        - name: Restoo-Partner-Id
          in: header
          required: true
          description: Unique identifier of your Partner account (defined by Restoo).
          schema:
            type: string
          example: your-restoo-partner-id
        - name: Restoo-Account-Id
          in: header
          required: true
          description: >-
            Unique identifier of the
            [Tenant](/getting-started/key-concepts#tenant).
          schema:
            type: string
          example: best-burger
      requestBody:
        description: '`GetExperienceAddOnsAvailabilityRequest`'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetExperienceAddOnsAvailabilityRequest'
      responses:
        '200':
          description: '`GetExperienceAddOnsAvailabilityResponse`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExperienceAddOnsAvailabilityResponse'
        '409':
          $ref: '#/components/responses/AvailabilityException'
        '422':
          $ref: '#/components/responses/ValidationException'
components:
  schemas:
    GetExperienceAddOnsAvailabilityRequest:
      type: object
      properties:
        experience:
          $ref: '#/components/schemas/ExperienceAvailabilityRequest'
        customerUuid:
          type: string
          description: >-
            The Customer UUID.


            Include this field only to associate the request with an existing
            Customer in Restoo
          examples:
            - 0199ce9adaab7327bda33ef9f75c123
        excludeBookingUuid:
          type: string
          description: |-
            UUID of the Booking to be excluded from the availability search.
            Required only when updating an existing Booking
          examples:
            - 50b5571be67b477baa9dead4b290c555
        paxChildren:
          type: integer
          description: >-
            The number of children in the Booking.

            Available only if the Tenant setting for differentiating adults and
            children is enabled
          examples:
            - 0
          minimum: 0
          maximum: 100
        pax:
          type: integer
          description: >-
            The number of people (or adults, depending on Tenant settings) in
            the Booking
          examples:
            - 2
          minimum: 1
          maximum: 100
        promoCode:
          type: string
          description: The promotion code requested for the reservation
          examples:
            - promo2x1
          minLength: 6
          maxLength: 255
        status:
          $ref: '#/components/schemas/BookingStatusEnum'
          description: >-
            Desired status of the Booking.


            This value determines how availability should be evaluated and how
            the Booking

            should be handled if created.


            - **`CONFIRMED`** — The Booking should be immediately confirmed.

            - **`REQUESTED`** — The Booking requires manual review and
            confirmation by the venue.

            - **`PENDING_WAIT_LIST_BOOKING`** — The customer wishes to join the
            wait list and may be confirmed if availability becomes available.


            Availability requests should initially be performed using the
            `CONFIRMED` status.

            If no availability is found, alternative statuses may be offered
            depending on

            the availability result and venue configuration.


            Not all statuses are available for every availability request
          examples:
            - CONFIRMED
        redemptionCode:
          type: string
          description: The alphanumeric code to redeem the purchased Product
          examples:
            - ABC123
          minLength: 6
          maxLength: 6
        floorPlanAreaId:
          type: integer
          description: >-
            The ID of the Floor Plan Area requested, taken from the chosen Time
            Slot's

            `floorPlanAreaId`. Required when the Shift offers Floor Plan Areas
            open to

            online booking
          examples:
            - 123
          minimum: 1
        highChairs:
          type: integer
          description: The number of high chairs requested
          examples:
            - 1
          minimum: 0
        strollers:
          type: integer
          description: The number of strollers requested
          examples:
            - 1
          minimum: 0
      required:
        - experience
        - paxChildren
        - pax
        - status
      title: GetExperienceAddOnsAvailabilityRequest
    GetExperienceAddOnsAvailabilityResponse:
      type: object
      properties:
        shift:
          $ref: '#/components/schemas/Shift'
        experience:
          $ref: '#/components/schemas/Experience'
        addOnGroup:
          anyOf:
            - $ref: '#/components/schemas/AddOnGroupAvailability'
              description: The Experience Add-on Group availability details
            - type: 'null'
        promo:
          anyOf:
            - $ref: '#/components/schemas/Promo'
            - type: 'null'
        availability:
          $ref: '#/components/schemas/Availability'
        accountId:
          type: string
          description: The unique Restoo Account identifier for the Tenant
          examples:
            - best-burger
        workDay:
          $ref: '#/components/schemas/WorkDay'
      required:
        - shift
        - experience
        - addOnGroup
        - promo
        - availability
        - accountId
        - workDay
      title: GetExperienceAddOnsAvailabilityResponse
    ExperienceAvailabilityRequest:
      type: object
      description: >-
        Request payload representing an Experience selector (id + tickets only,
        without add-ons).

        Used by availability endpoints that compute availability for all add-ons
        in the group,

        regardless of any prior selection.
      properties:
        tickets:
          type: integer
          description: The Experience tickets requested
          examples:
            - 2
          minimum: 1
        id:
          type: integer
          description: The unique identifier of the resource
          examples:
            - 101
          minimum: 1
      required:
        - tickets
        - id
      title: ExperienceAvailabilityRequest
    BookingStatusEnum:
      type: string
      enum:
        - REQUESTED
        - PENDING_MERCHANT_CONFIRMATION
        - PENDING_WAIT_LIST_BOOKING
        - CONFIRMED
        - WAIT_LIST_WALK_IN
        - ARRIVED
        - SEATED
        - DESSERTS
        - ACCOUNT_SENT
        - ACCOUNT_PAID
        - ATTENDED
        - CANCELED
        - NO_SHOW
        - DECLINED_BY_MERCHANT
        - DELETED
      title: BookingStatusEnum
    Shift:
      type: object
      description: The Shift details.
      properties:
        type:
          $ref: '#/components/schemas/ShiftType'
          description: The Shift Type details
        firstBookingAt:
          type: string
          format: date-time
          description: The Shift's first booking datetime in ISO 8601 format
          examples:
            - '2025-03-20T20:00:00+02:00'
        lastBookingAt:
          type: string
          format: date-time
          description: The Shift's last booking datetime in ISO 8601 format
          examples:
            - '2025-03-21T01:00:00+02:00'
        hasExperiences:
          type: boolean
          description: Indicates whether the Shift has related Experiences
          examples:
            - true
        hasAddOns:
          type: boolean
          description: Indicates whether the Shift has related Add-ons
          examples:
            - true
        isExperienceRequired:
          type: boolean
          description: >-
            Indicates whether selecting an Experience is required to continue

            the booking flow for this Shift.


            This value is determined dynamically based on the Shift
            configuration

            and the number of guests in the availability request
          examples:
            - true
      required:
        - type
        - firstBookingAt
        - lastBookingAt
        - hasExperiences
        - hasAddOns
        - isExperienceRequired
      title: Shift
    Experience:
      type: object
      description: The Experience details.
      properties:
        name:
          type: string
          description: The Experience name, localized in the preferred response language
          examples:
            - Premium Menu
          maxLength: 255
        summary:
          type:
            - string
            - 'null'
          description: >-
            A short rich text in HTML description of the Experience, localized
            in the preferred response language
          examples:
            - <p>A 5-course premium tasting menu.</p>
          maxLength: 1024
        description:
          type:
            - string
            - 'null'
          description: >-
            The full rich text in HTML description of the Experience, localized
            in the preferred response language
          examples:
            - <p>Enjoy a 5-course tasting menu crafted by our head chef.</p>
          maxLength: 2048
        detailsUrl:
          type:
            - string
            - 'null'
          description: A URL with more information about the Experience
          examples:
            - https://example.com/experiences/premium-menu
          maxLength: 2048
        images:
          type: array
          description: Images of the Experience
          items:
            $ref: '#/components/schemas/Image'
        turnMinutes:
          type:
            - integer
            - 'null'
          description: Duration of the Experience in minutes
          examples:
            - 90
          minimum: 15
          maximum: 720
        isTimeLimited:
          type:
            - boolean
            - 'null'
          description: |-
            Indicates whether the Experience has a time limit that must be
            notified to and accepted by the customer before confirmation
          examples:
            - true
        minBookingSize:
          type:
            - integer
            - 'null'
          description: >-
            Minimum booking size — `pax` plus `paxChildren` — required to book
            the

            Experience
          examples:
            - 2
          minimum: 1
        maxBookingSize:
          type:
            - integer
            - 'null'
          description: >-
            Maximum booking size — `pax` plus `paxChildren` — allowed to book
            this

            Experience
          examples:
            - 10
          minimum: 1
        minTicketsPerBooking:
          type:
            - integer
            - 'null'
          description: >-
            Minimum number of tickets required to book this Experience.


            If `null`, no minimum is enforced and any quantity from `1` is
            accepted
          examples:
            - 1
          minimum: 1
        paxPerTicket:
          type: integer
          description: Number of guests per ticket, children included
          examples:
            - 4
          minimum: 1
        automaticTicketQuantity:
          type: boolean
          description: >-
            Indicates whether the ticket quantity is determined from the booking
            size rather

            than chosen by the Customer. `tickets` is required either way
          examples:
            - false
        pricePerTicket:
          type:
            - integer
            - 'null'
          description: The Experience price per ticket in cents
          examples:
            - 7500
          minimum: 1
        minAdvanceBookingMinutes:
          type:
            - integer
            - 'null'
          description: >-
            Minimum number of minutes required in advance to book the
            Experience.


            If `null`, no minimum advance time is enforced
          examples:
            - 60
          minimum: 0
        firstBookingTime:
          type:
            - string
            - 'null'
          description: >-
            Earliest time at which this Experience can be booked in `HH:MM:SS`
            format
          examples:
            - '18:00:00'
        lastBookingTime:
          type:
            - string
            - 'null'
          description: >-
            Latest time at which this Experience can be booked in `HH:MM:SS`
            format
          examples:
            - '23:00:00'
        groupId:
          type:
            - integer
            - 'null'
          description: The Experience group ID to which this Experience belongs, if any
          examples:
            - 1
        floorPlanAreas:
          type: array
          description: |-
            Floor plan areas available for this Experience.

            Each item describes a specific area within the venue

                 [
                    {
                        "id": 1,
                        "name": "Terrace",
                        "summary": "The beautiful terrace of our restaurant.",
                        "images": [],
                    }
                ]
          examples:
            - |-
              :
                  [
                      {
                          "id": 1,
                          "name": "Terrace",
                          "summary": "The beautiful terrace of our restaurant.",
                          "images": [],
                      }
                  ]
          items:
            $ref: '#/components/schemas/FloorPlanArea'
        hasAddOns:
          type: boolean
          description: Indicates whether the Experience has related Add-ons
          examples:
            - true
        currency:
          $ref: '#/components/schemas/CurrencyEnum'
          description: The currency represented as a three-letter ISO 4217 code
          examples:
            - EUR
        id:
          type: integer
          description: The unique identifier of the resource
          examples:
            - 101
          minimum: 1
      required:
        - name
        - summary
        - description
        - detailsUrl
        - images
        - turnMinutes
        - isTimeLimited
        - minBookingSize
        - maxBookingSize
        - minTicketsPerBooking
        - paxPerTicket
        - automaticTicketQuantity
        - pricePerTicket
        - minAdvanceBookingMinutes
        - firstBookingTime
        - lastBookingTime
        - groupId
        - floorPlanAreas
        - hasAddOns
        - currency
        - id
      title: Experience
    AddOnGroupAvailability:
      type: object
      description: The Add-on Group availability details.
      properties:
        name:
          type: string
          description: The Add-on Group name, localized in the preferred response language
          examples:
            - Wine pairing
          maxLength: 255
        summary:
          type:
            - string
            - 'null'
          description: >-
            A short rich text in HTML description of the Add-on Group, localized
            in the preferred response language
          examples:
            - <p>Do you want wine pairing with your experience?</p>
          maxLength: 1024
        minTotalQuantity:
          type:
            - integer
            - 'null'
          description: >-
            The minimum total add-on units required for this booking based on
            the number of guests.

            null means no minimum constraint
          examples:
            - 2
          minimum: 1
        maxTotalQuantity:
          type:
            - integer
            - 'null'
          description: >-
            The maximum total add-on units allowed for this booking based on the
            number of guests.

            null means no maximum constraint
          examples:
            - 4
          minimum: 1
        maxTotalTypes:
          type:
            - integer
            - 'null'
          description: >-
            The maximum number of distinct add-on types allowed for this booking
            based on the number of guests.

            null means no type limit constraint
          examples:
            - 2
          minimum: 1
        addOns:
          type: array
          description: List of Add-ons that belong to this Add-on Group
          items:
            $ref: '#/components/schemas/AddOnAvailability'
        availability:
          $ref: '#/components/schemas/Availability'
      required:
        - name
        - summary
        - minTotalQuantity
        - maxTotalQuantity
        - maxTotalTypes
        - addOns
        - availability
      title: AddOnGroupAvailability
    Promo:
      type: object
      description: |-
        The Promo applied during the availability request, if any.

        If `null`, no Promo was applied or no valid Promo was detected.
      properties:
        name:
          type: string
          description: The Promotion name, localized in the preferred requested language
          examples:
            - Summer Discount 2025
          maxLength: 255
        id:
          type: integer
          description: The unique identifier of the resource
          examples:
            - 101
          minimum: 1
      required:
        - name
        - id
      title: Promo
    Availability:
      type: object
      description: The Availability details for the request.
      properties:
        isAvailable:
          type: boolean
          description: Indicates whether availability exists for the request
          examples:
            - false
        outcome:
          anyOf:
            - $ref: '#/components/schemas/AvailabilityOutcomeEnum'
              description: The main outcome describing why no availability was found
              examples:
                - SHIFT_FULL
            - type: 'null'
        code:
          anyOf:
            - $ref: '#/components/schemas/AvailabilityCodeEnum'
              description: >-
                A short machine-readable code explaining why no availability was
                found

                (useful for programmatic handling)
              examples:
                - TENANT_BOOKING_MAX_DATE_NOTICE_EXCEEDED
            - type: 'null'
        detail:
          type:
            - string
            - 'null'
          description: >-
            A human-readable message providing more details about why no
            availability was found
          examples:
            - Bookings cannot be made more than 30 days in advance.
          maxLength: 1024
        fallbackOptions:
          type: array
          items:
            $ref: '#/components/schemas/AvailabilityFallbackOption'
      required:
        - isAvailable
        - outcome
        - code
        - detail
        - fallbackOptions
      title: Availability
    WorkDay:
      type: object
      description: The Work Day details.
      properties:
        date:
          type: string
          format: date
          description: The start date of the Work Day in ISO 8601 format (YYYY-MM-DD)
          examples:
            - '2025-03-20'
      required:
        - date
      title: WorkDay
    ShiftType:
      type: object
      description: The Shift Type details.
      properties:
        id:
          $ref: '#/components/schemas/ShiftTypeEnum'
          description: The Shift Type ID
          examples:
            - LUNCH
        name:
          type: string
          description: The Shift name, localized in the preferred response language
          examples:
            - Lunch
          maxLength: 16
      required:
        - id
        - name
      title: ShiftType
    Image:
      type: object
      description: The Image details.
      properties:
        type:
          $ref: '#/components/schemas/ImageTypeEnum'
          description: The type of the Image
          examples:
            - THUMBNAIL
        url:
          type: string
          description: The URL where the Image is stored
          examples:
            - https://example.com/assets/image.jpg
          maxLength: 2048
      required:
        - type
        - url
      title: Image
    FloorPlanArea:
      type: object
      description: The Floor Plan Area details.
      properties:
        name:
          type: string
          description: >-
            The Floor Plan Area name, localized in the preferred response
            language
          examples:
            - Terrace
          maxLength: 255
        summary:
          type:
            - string
            - 'null'
          description: >-
            The short rich text in HTML description of the Floor Plan Area,
            localized in the preferred response language
          examples:
            - <p>The beautiful terrace of our restaurant.</p>
          maxLength: 2048
        images:
          type: array
          description: Images of the Floor Plan Area
          items:
            $ref: '#/components/schemas/Image'
        id:
          type: integer
          description: The unique identifier of the resource
          examples:
            - 101
          minimum: 1
      required:
        - name
        - summary
        - images
        - id
      title: FloorPlanArea
    CurrencyEnum:
      type: string
      enum:
        - EUR
        - USD
        - GBP
        - MXN
        - DOP
      title: CurrencyEnum
    AddOnAvailability:
      type: object
      description: The Add-on availability details.
      properties:
        minQuantity:
          type:
            - integer
            - 'null'
          description: Minimum quantity required to book the Add-on
          examples:
            - 1
          minimum: 1
        maxQuantity:
          type:
            - integer
            - 'null'
          description: Maximum quantity allowed to book the Add-on
          examples:
            - 10
          minimum: 1
        minAdvanceBookingMinutes:
          type:
            - integer
            - 'null'
          description: Minimum advance time (in minutes) required to book the Add-on
          examples:
            - 10
          minimum: 1
        availability:
          $ref: '#/components/schemas/Availability'
        name:
          type: string
          description: The Add-on name, localized in the preferred response language
          examples:
            - Premium wine tasting
          maxLength: 255
        summary:
          type:
            - string
            - 'null'
          description: >-
            A short rich text in HTML description of the Add-on, localized in
            the preferred response language
          examples:
            - <p>Enjoy our best wines with your experience.</p>
          maxLength: 1024
        unitPrice:
          type:
            - integer
            - 'null'
          description: The unit price of the Add-on in cents (if any)
          examples:
            - 1000
          minimum: 0
        currency:
          $ref: '#/components/schemas/CurrencyEnum'
          description: The currency represented as a three-letter ISO 4217 code
          examples:
            - EUR
        id:
          type: integer
          description: The unique identifier of the resource
          examples:
            - 101
          minimum: 1
      required:
        - minQuantity
        - maxQuantity
        - minAdvanceBookingMinutes
        - availability
        - name
        - summary
        - unitPrice
        - currency
        - id
      title: AddOnAvailability
    AvailabilityOutcomeEnum:
      type: string
      enum:
        - TENANT_CONFLICT
        - WORK_DAY_FULL
        - WORK_DAY_CLOSED
        - WORK_DAY_ENDED
        - SHIFT_NO_AVAILABILITY
        - SHIFT_SHOULD_CONTACT
        - SHIFT_MUST_CONTACT
        - SHIFT_FULL
        - SHIFT_CONFLICT
        - SHIFT_CLOSED
        - SHIFT_NOT_FOUND
        - BOOKING_FORBIDDEN
        - BOOKING_SIZE_EXCEEDED
        - BOOKING_CONFLICT
        - RESOURCE_NOT_AVAILABLE
      title: AvailabilityOutcomeEnum
    AvailabilityCodeEnum:
      type: string
      enum:
        - NO_AVAILABILITY
        - DATE_IS_PAST
        - DATE_TIME_IS_PAST
        - TIME_INTERVAL_NOT_VALID
        - CUSTOMER_IS_BANNED
        - EXCLUDE_BOOKING_STATUS_CONFLICT
        - UPDATE_NOT_ALLOWED_BOOKING_WITH_CANCELLATION_POLICY
        - UPDATE_NOT_ALLOWED_BOOKING_IS_PENALIZABLE
        - UPDATE_NOT_ALLOWED_BOOKING_WITH_PRODUCT
        - TENANT_MAX_BOOKING_SIZE_EXCEEDED
        - TENANT_BOOKING_MAX_NOTICE_DATE_EXCEEDED
        - WORK_DAY_SHIFTS_ENDED
        - WORK_DAY_SHIFTS_STATUS_CLOSED
        - WORK_DAY_SPECIAL_CLOSED
        - WORK_DAY_HAS_NO_SHIFTS
        - WORK_DAY_SHIFTS_STATUS_FULL
        - WORK_DAY_SHIFT_NOT_FOUND
        - WORK_DAY_EXPERIENCE_NOT_AVAILABLE
        - SHIFT_STATUS_CLOSED
        - SHIFT_STATUS_FULL
        - SHIFT_STATUS_CONTACT
        - SHIFT_ENDED
        - SHIFT_MAX_PAX_EXCEEDED
        - SHIFT_MAX_BOOKING_SIZE_EXCEEDED
        - SHIFT_MIN_BOOKING_SIZE_NOT_REACHED
        - SHIFT_FIRST_BOOKING_AT_MIN_NOTICE_TIME_EXCEEDED
        - SHIFT_BOOKING_START_MIN_NOTICE_TIME_EXCEEDED
        - SHIFT_LARGE_BOOKINGS_NOT_ALLOWED
        - SHIFT_LARGE_BOOKINGS_MUST_CONTACT_TO_BOOK
        - SHIFT_LARGE_BOOKING_START_MIN_NOTICE_TIME_EXCEEDED
        - SHIFT_PUBLIC_WAIT_LIST_NOT_ENABLED
        - SHIFT_WAIT_LIST_BOOKINGS_COUNT_EXCEEDED
        - SHIFT_BOOKING_FLOOR_PLAN_AREA_MUST_BE_DEFINED
        - SHIFT_FLOOR_PLAN_AREA_NOT_AVAILABLE
        - SHIFT_TABLE_NOT_AVAILABLE
        - SHIFT_TIME_SLOT_MINUTE_NOT_VALID
        - SHIFT_TIME_SLOTS_NOT_AVAILABLE
        - SHIFT_PHONE_OVERLAPPED
        - SHIFT_IP_OVERLAPPED
        - SHIFT_STROLLERS_NOT_ALLOWED
        - SHIFT_HIGH_CHAIRS_NOT_ALLOWED
        - SHIFT_MAX_CHILDREN_COUNT_EXCEEDED
        - SHIFT_BOOKING_CHILDREN_TOTAL_EXCEEDED
        - SHIFT_BOOKING_CHILDREN_PERCENT_EXCEEDED
        - SHIFT_BOOKING_SIZE_REQUIRES_EXPERIENCE
        - SHIFT_REQUIRES_EXPERIENCE_NO_EXPERIENCE_AVAILABLE
        - SHIFT_EXPERIENCE_NOT_ACTIVE
        - SHIFT_EXPERIENCE_NOT_AVAILABLE
        - SHIFT_EXPERIENCE_FLOOR_PLAN_AREA_NOT_AVAILABLE
        - SHIFT_AVAILABLE_TICKETS_EXCEEDED_FOR_EXPERIENCE_AUTO_TICKETS
        - >-
          SHIFT_AVAILABLE_TICKETS_EXCEEDED_FOR_EXPERIENCE_MIN_TICKETS_PER_BOOKING
        - SHIFT_AVAILABLE_TICKETS_EXCEEDED
        - SHIFT_TICKETS_NOT_AVAILABLE
        - FLOOR_PLAN_AREA_MAX_PAX_EXCEEDED
        - FLOOR_PLAN_AREA_PUBLIC_BOOKINGS_NOT_ALLOWED
        - FLOOR_PLAN_AREA_EXPERIENCE_NOT_ALLOWED
        - TIME_SLOT_BOOKINGS_NOT_ALLOWED
        - TIME_SLOT_MIN_BOOKING_SIZE_NOT_REACHED
        - TIME_SLOT_MAX_BOOKING_SIZE_EXCEEDED
        - TIME_SLOT_MAX_PAX_EXCEEDED
        - TIME_SLOT_MAX_BOOKINGS_EXCEEDED
        - TIME_SLOT_PAX_CAPACITY_EXCEEDED
        - TIME_SLOT_FLOOR_PLAN_AREA_MAX_CAPACITY_EXCEEDED
        - TIME_SLOT_STROLLERS_CAPACITY_EXCEEDED
        - TIME_SLOT_HIGH_CHAIRS_CAPACITY_EXCEEDED
        - TIME_SLOT_START_MIN_NOTICE_TIME_EXCEEDED
        - TIME_SLOT_NOT_AVAILABLE_FOR_EXPERIENCE
        - TABLE_NOT_FOUND
        - TABLE_BOOKINGS_NOT_ALLOWED
        - TABLE_BOOKING_SIZE_OUT_OF_RANGE
        - TABLE_COMBINATION_BOOKING_SIZE_OUT_OF_RANGE
        - TABLE_IS_OVERBOOKED
        - TABLE_BOOKINGS_NOT_ALLOWED_ON_TIME_SLOT
        - TABLE_COMBINATION_BOOKINGS_NOT_ALLOWED_ON_TIME_SLOT
        - EXPERIENCE_PUBLIC_BOOKINGS_NOT_ALLOWED
        - EXPERIENCE_BOOKING_FLOOR_PLAN_AREA_NOT_ALLOWED
        - EXPERIENCE_AUTO_TICKETS_AND_BOOKING_SIZE_NOT_MATCH
        - EXPERIENCE_MIN_TICKETS_PER_BOOKING_NOT_REACHED
        - EXPERIENCE_MIN_BOOKING_SIZE_NOT_REACHED
        - EXPERIENCE_MAX_BOOKING_SIZE_EXCEEDED
        - EXPERIENCE_MIN_NOTICE_TIME_EXCEEDED
        - ADD_ON_GROUP_REQUIRES_UNIQUE_ADD_ON_PER_BOOKING
        - ADD_ON_GROUP_BOOKING_SIZE_AND_ADD_ON_UNITS_NOT_MATCH
        - ADD_ON_GROUP_MIN_UNITS_NOT_REACHED
        - ADD_ON_GROUP_MIN_UNITS_PER_PAX_NOT_REACHED
        - ADD_ON_GROUP_MAX_UNITS_EXCEEDED
        - ADD_ON_GROUP_MAX_UNITS_PER_PAX_EXCEEDED
        - ADD_ON_GROUP_MAX_DISTINCT_TYPES_EXCEEDED
        - ADD_ON_GROUP_MAX_DISTINCT_TYPES_PER_PAX_EXCEEDED
        - ADD_ON_GROUP_NO_AVAILABLE_ADD_ONS
        - ADD_ON_MIN_UNITS_NOT_REACHED
        - ADD_ON_MAX_UNITS_EXCEEDED
        - ADD_ON_MIN_NOTICE_TIME_EXCEEDED
        - ADD_ON_MIN_BOOKING_SIZE_NOT_REACHED
        - ADD_ON_MAX_BOOKING_SIZE_EXCEEDED
      title: AvailabilityCodeEnum
    AvailabilityFallbackOption:
      type: object
      description: >-
        Represents a customer-facing option that can be offered when no
        availability exists for the requested search.
      properties:
        action:
          $ref: '#/components/schemas/AvailabilityFallbackActionEnum'
          description: The action suggested to the customer
          examples:
            - CONTACT
        isPreferred:
          type: boolean
          description: >-
            Indicates whether this option should be highlighted as the preferred
            or

            recommended action
          examples:
            - true
      required:
        - action
        - isPreferred
      title: AvailabilityFallbackOption
    ShiftTypeEnum:
      type: string
      enum:
        - LUNCH
        - DINNER
        - SNACK
        - BREAKFAST
        - BRUNCH
        - LUNCH_LATAM
        - SUNBED
        - BALINESE_BED
        - COCKTAILS
        - AFTER_HOUR
        - HAPPY_HOUR
        - EVENT
        - VERMOUTH
        - TARDEO
        - APERITIF
        - TASTING
      title: ShiftTypeEnum
    ImageTypeEnum:
      type: string
      enum:
        - THUMBNAIL
        - DETAIL
      title: ImageTypeEnum
    AvailabilityFallbackActionEnum:
      type: string
      enum:
        - CONTACT
        - REQUEST_BOOKING
        - JOIN_WAIT_LIST
        - SEARCH_ALTERNATIVE_DATES
        - SEARCH_ALTERNATIVE_TENANTS
        - UPDATE_SEARCH
      title: AvailabilityFallbackActionEnum
  responses:
    AvailabilityException:
      description: >-
        Business Logic Error — The request is syntactically correct but cannot
        be processed due to logical constraints. Example: attempting to create a
        booking on a closed day or outside the allowed hours.
      content:
        application/problem+json:
          schema:
            type: object
            properties:
              type:
                type: string
                description: A URI identifier that categorizes the error type.
                examples:
                  - about:blank
              title:
                type: string
                description: A short, human-readable summary of the problem type.
                examples:
                  - Conflict
              status:
                type: integer
                description: >-
                  The HTTP status code generated by the origin server for this
                  occurrence of the problem.
                examples:
                  - 409
              code:
                type: string
                description: >-
                  A short string indicating the error code that could be handled
                  programmatically.
                examples:
                  - BOOKING_IS_NOT_ON_SEATED_GROUP
              detail:
                type: string
                description: >-
                  A human-readable message providing more details about the
                  error.
                examples:
                  - The booking must be on the seated group status to be ended.
            required:
              - type
              - title
              - status
              - code
              - detail
    ValidationException:
      description: >-
        Validation Error — The request structure is correct, but one or more
        fields contain invalid or missing data. Example: missing required
        parameters, invalid formats, or out-of-range values.
      content:
        application/problem+json:
          schema:
            type: object
            properties:
              type:
                type: string
                description: A URI identifier that categorizes the error type.
                examples:
                  - about:blank
              title:
                type: string
                description: A short, human-readable summary of the problem type.
                examples:
                  - Validation Error
              status:
                type: integer
                description: >-
                  The HTTP status code generated by the origin server for this
                  occurrence of the problem.
                examples:
                  - 422
              code:
                type: string
                description: >-
                  A short string indicating the error code that could be handled
                  programmatically.
                examples:
                  - VALIDATION_ERROR
              detail:
                type: string
                description: >-
                  A human-readable message providing more details about the
                  error.
                examples:
                  - The request is not valid.
              errors:
                type: array
                description: >-
                  A detailed description of each parameter that failed
                  validation.
                items:
                  type: object
                  properties:
                    parameter:
                      type: string
                      description: The name of the parameter that failed validation.
                      examples:
                        - status
                    reason:
                      type: string
                      description: A human-readable description of the validation error.
                      examples:
                        - The selected status is invalid.
                  required:
                    - parameter
                    - reason
            required:
              - type
              - title
              - status
              - code
              - detail
              - errors
  securitySchemes:
    http:
      type: http
      description: >-
        All requests must include the static API Key in the Authorization header
        using the Bearer scheme.
      scheme: bearer

````