> ## 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.

# Search Alternative Tenants Availability

> Searches for availability across multiple Tenants belonging to the same
cross-selling group. For each tenant in the group, resolves availability
based on the tenant's feature configuration (shift time slots or experiences).
Errors encountered while resolving individual tenants are silently reported
and the tenant is excluded from the result. Each item includes the alternative
type and its corresponding availability data.



## OpenAPI

````yaml /public-api.json post /availability/search/work-days/{date}/shifts/{time}/time-slots
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/search/work-days/{date}/shifts/{time}/time-slots:
    post:
      tags:
        - Availability
      summary: Search Alternative Tenants Availability
      description: >-
        Searches for availability across multiple Tenants belonging to the same

        cross-selling group. For each tenant in the group, resolves availability

        based on the tenant's feature configuration (shift time slots or
        experiences).

        Errors encountered while resolving individual tenants are silently
        reported

        and the tenant is excluded from the result. Each item includes the
        alternative

        type and its corresponding availability data.
      operationId: availability.getTenants
      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: '`GetTenantsAvailabilityRequest`'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetTenantsAvailabilityRequest'
      responses:
        '200':
          description: '`GetTenantsAvailabilityResponse`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTenantsAvailabilityResponse'
        '409':
          $ref: '#/components/responses/UserNotFoundException'
        '422':
          $ref: '#/components/responses/ValidationException'
components:
  schemas:
    GetTenantsAvailabilityRequest:
      type: object
      description: Request payload for fetching availability across multiple Tenants.
      properties:
        customerUuid:
          type: string
          description: >-
            The Customer UUID.


            Include this field only to associate the request with an existing
            Customer in Restoo
          examples:
            - 0199ce9adaab7327bda33ef9f75c123
        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
      required:
        - paxChildren
        - pax
      title: GetTenantsAvailabilityRequest
    GetTenantsAvailabilityResponse:
      type: object
      description: >-
        Response payload containing availability information across multiple
        Tenants.
      properties:
        tenants:
          type: array
          items:
            $ref: '#/components/schemas/TenantAvailability'
      required:
        - tenants
      title: GetTenantsAvailabilityResponse
    TenantAvailability:
      type: object
      description: Represents the availability of a Tenant for a given search.
      properties:
        business:
          $ref: '#/components/schemas/TenantBusiness'
        alternatives:
          type: array
          description: A collection of availability entries for this Tenant
          items:
            $ref: '#/components/schemas/AlternativeDateAvailability'
        accountId:
          type: string
          description: The unique Restoo Account identifier for the Tenant
          examples:
            - best-burger
      required:
        - business
        - alternatives
        - accountId
      title: TenantAvailability
    TenantBusiness:
      type: object
      description: Represents the public business information of a Tenant.
      properties:
        name:
          type: string
          description: |-
            The business name of the venue.

            This is the public commercial name displayed to customers
          examples:
            - Best Burger
        phone:
          type:
            - string
            - 'null'
          description: |-
            The business phone number in E.164 format.

            If `null`, the venue does not provide a contact phone
          examples:
            - '+34910011223'
        whatsapp:
          type:
            - string
            - 'null'
          description: |-
            The business WhatsApp contact number in E.164 format.

            If `null`, the venue does not provide a WhatsApp contact
          examples:
            - '+34910011223'
        email:
          type:
            - string
            - 'null'
          format: email
          description: |-
            The general contact email of the venue.

            If `null`, no public email is available
          examples:
            - contact@bestburger.com
        websiteUrl:
          type:
            - string
            - 'null'
          format: uri
          description: The official website URL of the venue
          examples:
            - https://bestburger.com
        bookingsUrl:
          type: string
          format: uri
          description: The URL pointing to the venue's bookings' widget
          examples:
            - https://best-burger.myrestoo.net
        menuUrl:
          type:
            - string
            - 'null'
          format: uri
          description: |-
            The URL pointing to the venue's menu.

            May reference a PDF or a dedicated menu web page
          examples:
            - https://bestburger.com/menu
        groupMenuUrl:
          type:
            - string
            - 'null'
          format: uri
          description: |-
            The URL pointing to the group or corporate menu.

            Used by venues that offer special menus for groups or events
          examples:
            - https://bestburger.com/group-menu
        parkingUrl:
          type:
            - string
            - 'null'
          format: uri
          description: >-
            A URL containing parking directions or parking information for the
            venue
          examples:
            - https://bestburger.com/parking
        address:
          $ref: '#/components/schemas/Address'
          description: The complete physical address of the venue
      required:
        - name
        - phone
        - whatsapp
        - email
        - websiteUrl
        - bookingsUrl
        - menuUrl
        - groupMenuUrl
        - parkingUrl
        - address
      title: TenantBusiness
    AlternativeDateAvailability:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/AvailabilityAlternativeTypeEnum'
        data:
          anyOf:
            - $ref: '#/components/schemas/ShiftAvailabilityData'
            - $ref: '#/components/schemas/ExperiencesAvailabilityData'
      required:
        - type
        - data
      title: AlternativeDateAvailability
    Address:
      type: object
      description: The postal address details.
      properties:
        line1:
          type: string
          description: The first line of the street address
          examples:
            - Infinite Loop 1
          maxLength: 255
        line2:
          type:
            - string
            - 'null'
          description: |-
            Additional address information, if applicable.

            Commonly used for apartment numbers, building names, floors,
            or any optional extra details
          examples:
            - Apt. 4B
          maxLength: 255
        location:
          type:
            - string
            - 'null'
          description: |-
            The commercial or business complex where the venue is located.

            Used to specify contextual location details such as:
            - Shopping malls
            - Business centers
            - Corporate campuses
            - Industrial parks

            This field is optional and appears only when relevant
          examples:
            - Apple Campus
          maxLength: 255
        city:
          type: string
          description: The city or locality of the address
          examples:
            - Cupertino
          maxLength: 100
        state:
          type: string
          description: The state, province, or region of the address
          examples:
            - California
          maxLength: 100
        postalCode:
          type: string
          description: The postal or ZIP code corresponding to the address
          examples:
            - '95014'
          maxLength: 12
        country:
          $ref: '#/components/schemas/CountryEnum'
          description: The country represented as a two-letter ISO 3166-1 alpha-2 code
          examples:
            - ES
      required:
        - line1
        - line2
        - location
        - city
        - state
        - postalCode
        - country
      title: Address
    AvailabilityAlternativeTypeEnum:
      type: string
      enum:
        - EXPERIENCES
        - SHIFTS
      title: AvailabilityAlternativeTypeEnum
    ShiftAvailabilityData:
      type: object
      description: Represents a Shift availability option for a Work Day.
      properties:
        availability:
          $ref: '#/components/schemas/Availability'
        floorPlanAreas:
          type: array
          description: >-
            The Floor Plan Areas of the Shift. An area can appear here and still
            have no

            bookable times of its own in `timeSlots`
          items:
            $ref: '#/components/schemas/FloorPlanAreaAvailability'
        shift:
          anyOf:
            - $ref: '#/components/schemas/Shift'
            - type: 'null'
        timeSlots:
          type: array
          description: >-
            The bookable Time Slots, one entry per combination of start time and
            Floor Plan

            Area. `startAt` is not unique: the same time comes back once per
            area, each entry

            with its own `availability` and `floorPlanAreaId`
          items:
            $ref: '#/components/schemas/TimeSlotAvailability'
        workDay:
          $ref: '#/components/schemas/WorkDay'
      required:
        - availability
        - floorPlanAreas
        - shift
        - timeSlots
        - workDay
      title: ShiftAvailabilityData
    ExperiencesAvailabilityData:
      type: object
      properties:
        availability:
          $ref: '#/components/schemas/Availability'
        experiences:
          type: array
          description: Collection of Experiences available
          items:
            $ref: '#/components/schemas/ExperienceAvailability'
        shift:
          anyOf:
            - $ref: '#/components/schemas/Shift'
            - type: 'null'
        workDay:
          $ref: '#/components/schemas/WorkDay'
      required:
        - availability
        - experiences
        - shift
        - workDay
      title: ExperiencesAvailabilityData
    CountryEnum:
      type: string
      enum:
        - AF
        - AX
        - AL
        - DZ
        - AS
        - AD
        - AO
        - AI
        - AQ
        - AG
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BY
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BQ
        - BA
        - BW
        - BV
        - BR
        - IO
        - BN
        - BG
        - BF
        - BI
        - CV
        - KH
        - CM
        - CA
        - KY
        - CF
        - TD
        - CL
        - CN
        - CX
        - CC
        - CO
        - KM
        - CG
        - CD
        - CK
        - CR
        - CI
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - DO
        - EC
        - EG
        - SV
        - GQ
        - ER
        - EE
        - SZ
        - ET
        - FK
        - FO
        - FJ
        - FI
        - FR
        - GF
        - PF
        - TF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GI
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GW
        - GY
        - HT
        - HM
        - VA
        - HN
        - HK
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IM
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KP
        - KR
        - XK
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - MV
        - ML
        - MT
        - MH
        - MQ
        - MR
        - MU
        - YT
        - MX
        - FM
        - MD
        - MC
        - MN
        - ME
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NC
        - NZ
        - NI
        - NE
        - NG
        - NU
        - NF
        - MK
        - MP
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PG
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - BL
        - SH
        - KN
        - LC
        - MF
        - PM
        - VC
        - WS
        - SM
        - ST
        - SA
        - SN
        - RS
        - SC
        - SL
        - SG
        - SX
        - SK
        - SI
        - SB
        - SO
        - ZA
        - GS
        - SS
        - ES
        - LK
        - SD
        - SR
        - SJ
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TL
        - TG
        - TK
        - TO
        - TT
        - TN
        - TR
        - TM
        - TC
        - TV
        - UG
        - UA
        - AE
        - GB
        - UM
        - US
        - UY
        - UZ
        - VU
        - VE
        - VN
        - VG
        - VI
        - WF
        - EH
        - YE
        - ZM
        - ZW
      title: CountryEnum
    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
    FloorPlanAreaAvailability:
      type: object
      description: Availability details for a Floor Plan Area.
      properties:
        availability:
          $ref: '#/components/schemas/Availability'
          description: >-
            Availability information for this Floor Plan Area in the context of
            the request
        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:
        - availability
        - name
        - summary
        - images
        - id
      title: FloorPlanAreaAvailability
    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
    TimeSlotAvailability:
      type: object
      description: Availability details for a Time Slot.
      properties:
        availability:
          $ref: '#/components/schemas/Availability'
          description: >-
            Availability information for this Time Slot in the context of the
            request
        startAt:
          type: string
          format: date-time
          description: The Time Slot's start date and time in ISO 8601 format
          examples:
            - '2025-03-20T20:00:00+02:00'
        isTimeLimited:
          type: boolean
          description: |-
            Indicates whether the Time Slot has a time limit that must be
            notified to and accepted by the customer before confirmation
          examples:
            - true
        strollersAvailable:
          anyOf:
            - $ref: '#/components/schemas/ChildrenSeatingAvailability'
              description: Indicates the availability for strollers
            - type: 'null'
        highChairsAvailable:
          anyOf:
            - $ref: '#/components/schemas/ChildrenSeatingAvailability'
              description: Indicates the availability for high chairs
            - type: 'null'
        experienceId:
          type:
            - integer
            - 'null'
          description: The Experience ID of the Time Slot
          examples:
            - 123
          minimum: 1
        floorPlanAreaId:
          type:
            - integer
            - 'null'
          description: The Floor Plan Area ID of the Time Slot
          examples:
            - 123
          minimum: 1
        turnMinutes:
          type: integer
          description: The duration of the Booking in minutes
          examples:
            - 90
          minimum: 15
          maximum: 720
      required:
        - availability
        - startAt
        - isTimeLimited
        - strollersAvailable
        - highChairsAvailable
        - experienceId
        - floorPlanAreaId
        - turnMinutes
      title: TimeSlotAvailability
    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
    ExperienceAvailability:
      type: object
      description: The Experience availability details.
      properties:
        maxTicketsAvailable:
          type: integer
          description: >-
            Total number of tickets allocated to this Experience in the Shift.
            The

            quantity a Customer can still book is `maxTicketsAvailable -
            soldTickets`
          examples:
            - 100
          minimum: 1
        soldTickets:
          type: integer
          description: >-
            Number of tickets already sold for this Experience within the
            requested work

            day and Shift
          examples:
            - 35
          minimum: 0
        availability:
          $ref: '#/components/schemas/Availability'
          description: >-
            Availability information for this Experience in the context of the
            request
        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:
        - maxTicketsAvailable
        - soldTickets
        - availability
        - name
        - summary
        - description
        - detailsUrl
        - images
        - turnMinutes
        - isTimeLimited
        - minBookingSize
        - maxBookingSize
        - minTicketsPerBooking
        - paxPerTicket
        - automaticTicketQuantity
        - pricePerTicket
        - minAdvanceBookingMinutes
        - firstBookingTime
        - lastBookingTime
        - groupId
        - floorPlanAreas
        - hasAddOns
        - currency
        - id
      title: ExperienceAvailability
    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
    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
    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
    ChildrenSeatingAvailability:
      type: object
      description: Details about the availability of child seating options.
      properties:
        type:
          $ref: '#/components/schemas/ChildrenSeatingAvailabilityTypeEnum'
          description: >-
            The type of availability for child seating option.


            - `LIMITED`: The venue offers a limited number of items.

            - `UNLIMITED`: The venue allows selecting items without any maximum
            limit.

            - `FORBIDDEN`: The venue does not allow selecting items
          examples:
            - LIMITED
        available:
          type:
            - integer
            - 'null'
          description: The number of available items (if any)
          examples:
            - 3
          minimum: 1
      required:
        - type
        - available
      title: ChildrenSeatingAvailability
    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
    AvailabilityFallbackActionEnum:
      type: string
      enum:
        - CONTACT
        - REQUEST_BOOKING
        - JOIN_WAIT_LIST
        - SEARCH_ALTERNATIVE_DATES
        - SEARCH_ALTERNATIVE_TENANTS
        - UPDATE_SEARCH
      title: AvailabilityFallbackActionEnum
    ImageTypeEnum:
      type: string
      enum:
        - THUMBNAIL
        - DETAIL
      title: ImageTypeEnum
    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
    ChildrenSeatingAvailabilityTypeEnum:
      type: string
      enum:
        - LIMITED
        - UNLIMITED
        - FORBIDDEN
      title: ChildrenSeatingAvailabilityTypeEnum
  responses:
    UserNotFoundException:
      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

````