> ## 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 Calendar Availability

> Returns the availability calendar for a specific date range,
showing which Work Days have available booking slots.



## OpenAPI

````yaml /public-api.json post /availability/calendar
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/calendar:
    post:
      tags:
        - Availability
      summary: Get Calendar Availability
      description: |-
        Returns the availability calendar for a specific date range,
        showing which Work Days have available booking slots.
      operationId: availability.getCalendar
      parameters:
        - 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: '`GetCalendarAvailabilityRequest`'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetCalendarAvailabilityRequest'
      responses:
        '200':
          description: '`GetCalendarAvailabilityResponse`'
          content:
            application/json:
              schema:
                type: object
                description: >-
                  Response payload representing the availability a for a range
                  of Work Days.
                properties:
                  workDays:
                    type: array
                    items:
                      $ref: '#/components/schemas/CalendarWorkDayAvailability'
                  metadata:
                    $ref: '#/components/schemas/CalendarAvailabilityMetadata'
                  promo:
                    anyOf:
                      - $ref: '#/components/schemas/Promo'
                      - type: 'null'
                  accountId:
                    type: string
                    description: The unique Restoo Account identifier for the Tenant
                    examples:
                      - best-burger
                required:
                  - workDays
                  - metadata
                  - promo
                  - accountId
        '409':
          $ref: '#/components/responses/AvailabilityException'
        '422':
          $ref: '#/components/responses/ValidationException'
components:
  schemas:
    GetCalendarAvailabilityRequest:
      type: object
      description: Request payload for calendar availability query.
      properties:
        dateStart:
          type: string
          format: date
          description: >-
            The start date for the availability search in ISO 8601 format
            (YYYY-MM-DD)
          examples:
            - '2025-01-01'
        dateEnd:
          type: string
          format: date
          description: >-
            The end date for the availability search in ISO 8601 format
            (YYYY-MM-DD)
          examples:
            - '2025-01-31'
        filters:
          $ref: '#/components/schemas/WorkDayAvailabilityFilters'
        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
      required:
        - dateStart
        - dateEnd
        - paxChildren
        - pax
        - status
      title: GetCalendarAvailabilityRequest
    CalendarWorkDayAvailability:
      type: object
      description: The Availability details for the Work Day.
      properties:
        availability:
          $ref: '#/components/schemas/Availability'
        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:
        - availability
        - date
      title: CalendarWorkDayAvailability
    CalendarAvailabilityMetadata:
      type: object
      description: Metadata returned with the calendar availability response.
      properties:
        filters:
          $ref: '#/components/schemas/CalendarAvailabilityMetadataFilters'
      required:
        - filters
      title: CalendarAvailabilityMetadata
    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
    WorkDayAvailabilityFilters:
      type: object
      description: Filters to apply on the calendar and work day availability requests.
      properties:
        experienceIds:
          type: array
          description: Limits the availability search to the specified Experience IDs
          examples:
            - - 1
              - 2
          items:
            type: integer
        floorPlanAreaIds:
          type: array
          description: Limits the availability search to the specified Floor Plan Area IDs
          examples:
            - - 1
              - 2
          items:
            type: integer
        shiftTypes:
          type: array
          description: |-
            Limits the availability search to the specified Shift Types.

            Accepts multiple values from the `ShiftTypeEnum`
          examples:
            - - LUNCH
              - DINNER
          items:
            type: string
      title: WorkDayAvailabilityFilters
    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
    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
    CalendarAvailabilityMetadataFilters:
      type: object
      description: >-
        Resource details for the filters applied in the calendar availability
        search.
      properties:
        experiences:
          type: array
          description: Experiences details requested with availability filters
          items:
            $ref: '#/components/schemas/Experience'
        floorPlanAreas:
          type: array
          description: Floor Plan Areas details requested with availability filters
          items:
            $ref: '#/components/schemas/FloorPlanArea'
        shiftTypes:
          type: array
          description: Shift Types details requested with availability filters
          items:
            $ref: '#/components/schemas/ShiftType'
      required:
        - experiences
        - floorPlanAreas
        - shiftTypes
      title: CalendarAvailabilityMetadataFilters
    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
    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
    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
    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
    AvailabilityFallbackActionEnum:
      type: string
      enum:
        - CONTACT
        - REQUEST_BOOKING
        - JOIN_WAIT_LIST
        - SEARCH_ALTERNATIVE_DATES
        - SEARCH_ALTERNATIVE_TENANTS
        - UPDATE_SEARCH
      title: AvailabilityFallbackActionEnum
    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
    CurrencyEnum:
      type: string
      enum:
        - EUR
        - USD
        - GBP
        - MXN
        - DOP
      title: CurrencyEnum
    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
  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

````