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

# Update Booking

> Updates an existing Booking with the provided details.



## OpenAPI

````yaml public-api.json PUT /bookings/{bookingUuid}
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:
  /bookings/{bookingUuid}:
    put:
      tags:
        - Booking
      summary: Update Booking
      description: Updates an existing Booking with the provided details.
      operationId: booking.update
      parameters:
        - name: bookingUuid
          in: path
          required: true
          description: The Booking UUID
          schema:
            type: string
            examples:
              - 50b5571be67b477baa9dead4b290c555
        - 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: '`UpdateBookingRequest`'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBookingRequest'
      responses:
        '200':
          description: |-
            `UpdatePrivateBookingResponse`

            `UpdatePublicBookingResponse`
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/UpdatePrivateBookingResponse'
                  - $ref: '#/components/schemas/UpdatePublicBookingResponse'
        '409':
          $ref: '#/components/responses/BookingException'
        '422':
          $ref: '#/components/responses/ValidationException'
components:
  schemas:
    UpdateBookingRequest:
      type: object
      description: Request payload for updating an existing Booking.
      properties:
        customer:
          $ref: '#/components/schemas/BookingCustomerRequest'
        date:
          type: string
          format: date
          description: The date of the Booking in ISO 8601 format `YYYY-MM-DD`
          examples:
            - '2025-03-20'
        time:
          type: string
          description: The time of the Booking in ISO 8601 format `HH:MM:SS`
          examples:
            - '22:30:00'
        floorPlanAreaId:
          type:
            - integer
            - 'null'
          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
        experience:
          anyOf:
            - $ref: '#/components/schemas/ExperienceRequest'
              description: The Experience requested
            - type: 'null'
        customerSpecialRequests:
          type:
            - string
            - 'null'
          description: >-
            Free-text field for customer special requests.

            The Venue will try to accommodate them but cannot guarantee
            fulfillment
          examples:
            - Table near the window
          maxLength: 1024
        hasAllergies:
          type: boolean
          description: |-
            Indicates whether any of the guests have allergies
            (e.g., peanut, chocolate, nuts, etc.)
          examples:
            - true
        allergiesDescription:
          type:
            - string
            - 'null'
          description: Free-text description of allergies
          examples:
            - Peanuts, shellfish, lactose intolerance
          maxLength: 1024
        specialOccasion:
          anyOf:
            - $ref: '#/components/schemas/BookingSpecialOccasionEnum'
              description: The special occasion associated with the booking
              examples:
                - BIRTHDAY
            - type: 'null'
        needsAccessibleSeating:
          type: boolean
          description: |-
            Indicates whether the guest requires an accessible seating
            (e.g., suitable for wheelchairs or reduced mobility)
          examples:
            - true
        hotelRoom:
          type:
            - string
            - 'null'
          description: Hotel room number or identifier associated with the Booking
          examples:
            - Room 305
          maxLength: 50
        redemptionCode:
          type:
            - string
            - 'null'
          description: The redemption code requested for the reservation
          examples:
            - ABC123
          minLength: 6
          maxLength: 6
        promoCode:
          type:
            - string
            - 'null'
          description: The promotion code requested for the reservation
          examples:
            - promo2x1
          minLength: 6
          maxLength: 255
        highChairs:
          type: integer
          description: The number of high chairs requested
          examples:
            - 1
          minimum: 0
        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
        addOns:
          type: array
          description: The Shift Add-ons requested
          items:
            $ref: '#/components/schemas/AddOnRequest'
        strollers:
          type: integer
          description: The number of strollers requested
          examples:
            - 1
          minimum: 0
        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
      required:
        - customer
        - date
        - time
        - paxChildren
        - pax
        - status
      title: UpdateBookingRequest
    UpdatePrivateBookingResponse:
      type: object
      properties:
        redirectUrl:
          type:
            - string
            - 'null'
          format: uri
          description: The URL to redirect the customer after updating the booking
          examples:
            - https://example.com/widget/?view=reservation/confirmed&uuid=...
        privateNotes:
          type:
            - string
            - 'null'
          description: Internal notes visible only to the venue staff
          examples:
            - Customer requested a table near the window.
          maxLength: 2048
        quotedWaitMinutes:
          type:
            - integer
            - 'null'
          description: Estimated waiting time in minutes quoted to the customer
          examples:
            - 15
          minimum: 5
        isWalkIn:
          type: boolean
          description: Indicates whether the booking was created as a Walk-in
          examples:
            - true
        hasFixedTables:
          type: boolean
          description: >-
            Indicates whether the booking has fixed table assignments that
            cannot be changed
          examples:
            - false
        isHighlighted:
          type: boolean
          description: Indicates whether the booking is highlighted
          examples:
            - false
        channel:
          $ref: '#/components/schemas/ChannelEnum'
          description: The booking creation channel
          examples:
            - API
        ticketPartner:
          anyOf:
            - $ref: '#/components/schemas/TicketPartnerEnum'
              description: >-
                The partner system that created or manages the ticket (if
                applicable)
            - type: 'null'
        ticketExternalId:
          type:
            - string
            - 'null'
          description: >-
            The external identifier of the ticket in the POS or third-party
            system
          examples:
            - POS-98234
          maxLength: 64
        ticketTotalAmount:
          type:
            - integer
            - 'null'
          description: The total amount of the ticket in cents
          examples:
            - 12500
          minimum: 0
        tableReadyAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            The datetime when the table was ready for the customer in ISO 8601
            format
          examples:
            - '2025-03-20T20:15:00+02:00'
        arrivedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: The datetime when the customer arrived in ISO 8601 format
          examples:
            - '2025-03-20T20:25:00+02:00'
        seatedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: The datetime when the customer was seated in ISO 8601 format
          examples:
            - '2025-03-20T20:30:00+02:00'
        endedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: The datetime when the booking ended in ISO 8601 format
          examples:
            - '2025-03-20T22:15:00+02:00'
        ip:
          type:
            - string
            - 'null'
          description: The IP address of the device or system that created the booking
          examples:
            - 192.168.0.25
        customer:
          anyOf:
            - $ref: '#/components/schemas/PrivateCustomer'
              description: Full Customer details, including private properties
            - type: 'null'
        tables:
          type: array
          description: The list of tables assigned to the booking
          items:
            $ref: '#/components/schemas/BookingTable'
        uuid:
          type: string
          description: UUID of the Booking
          examples:
            - 50b5571be67b477baa9dead4b290c555
        bookingAt:
          type: string
          format: date-time
          description: The Booking date and time in ISO 8601 format
          examples:
            - '2025-03-20T23:00:00+02:00'
        status:
          $ref: '#/components/schemas/BookingStatusEnum'
          description: The Booking status
          examples:
            - CONFIRMED
        isTimeLimited:
          type: boolean
          description: |-
            Indicates whether the Booking has a time limit
            that must be notified and accepted by the customer
          examples:
            - true
        customerSpecialRequests:
          type:
            - string
            - 'null'
          description: >-
            Free-text field for customer special requests.

            The Venue will try to accommodate them but cannot guarantee
            fulfillment
          examples:
            - Table near the window
          maxLength: 1024
        hasAllergies:
          type: boolean
          description: |-
            Indicates whether any of the guests have allergies
            (e.g., peanut, chocolate, nuts, etc.)
          examples:
            - true
        allergiesDescription:
          type:
            - string
            - 'null'
          description: Free-text description of allergies
          examples:
            - Peanuts, shellfish, lactose intolerance
          maxLength: 1024
        specialOccasion:
          anyOf:
            - $ref: '#/components/schemas/BookingSpecialOccasionEnum'
              description: The special occasion associated with the booking
              examples:
                - BIRTHDAY
            - type: 'null'
        needsAccessibleSeating:
          type: boolean
          description: |-
            Indicates whether the guest requires an accessible seating
            (e.g., suitable for wheelchairs or reduced mobility)
          examples:
            - true
        hotelRoom:
          type:
            - string
            - 'null'
          description: Hotel room number or identifier associated with the Booking
          examples:
            - Room 305
          maxLength: 50
        publicNotes:
          type:
            - string
            - 'null'
          description: Public notes defined by the venue and visible to the customer
          examples:
            - Your reservation includes a birthday cake.
          maxLength: 2048
        isReconfirmed:
          type: boolean
          description: >-
            Indicates whether the booking was manually reconfirmed

            by the customer **after** the venue contacted them to request
            reconfirmation
          examples:
            - true
        isReconfirmedByCustomer:
          type: boolean
          description: |-
            Indicates whether the booking was automatically reconfirmed
            by the customer through Restoo’s automated reconfirmation service
          examples:
            - false
        cancelReason:
          anyOf:
            - $ref: '#/components/schemas/BookingCancelReasonEnum'
              description: The reason provided when canceling the booking (if applicable)
              examples:
                - CHANGED_PLANS
            - type: 'null'
        bookingPartner:
          anyOf:
            - $ref: '#/components/schemas/BookingPartnerEnum'
              description: The partner through which the Booking was made (if any)
              examples:
                - GOOGLE
            - type: 'null'
        bookingExternalId:
          type:
            - string
            - 'null'
          description: |-
            The Booking ID provided by the external partner (if applicable).
            Required if `bookingPartner` is present
          examples:
            - book_123456
          maxLength: 64
        shiftType:
          $ref: '#/components/schemas/ShiftType'
          description: The Shift Type in which the Booking takes place
        floorPlanArea:
          anyOf:
            - $ref: '#/components/schemas/BookingFloorPlanArea'
            - type: 'null'
        promo:
          anyOf:
            - $ref: '#/components/schemas/BookingPromo'
            - type: 'null'
        product:
          anyOf:
            - $ref: '#/components/schemas/BookingProduct'
            - type: 'null'
        experience:
          anyOf:
            - $ref: '#/components/schemas/BookingExperience'
            - type: 'null'
        cancellationPolicy:
          anyOf:
            - $ref: '#/components/schemas/BookingCancellationPolicy'
            - type: 'null'
        addOns:
          type: array
          description: List of add-ons associated with the Booking (if any)
          items:
            $ref: '#/components/schemas/BookingAddOn'
        accountId:
          type: string
          description: The unique Restoo Account identifier for the Tenant
          examples:
            - best-burger
        highChairs:
          type: integer
          description: The number of high chairs
          examples:
            - 1
          minimum: 0
        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
        strollers:
          type: integer
          description: The number of strollers
          examples:
            - 1
          minimum: 0
        turnMinutes:
          type: integer
          description: The duration of the Booking in minutes
          examples:
            - 90
          minimum: 15
          maximum: 720
        createdAt:
          type:
            - string
            - 'null'
          format: date-time
          description: The creation timestamp in ISO 8601 format
          examples:
            - '2025-03-20T18:45:00+02:00'
        updatedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: The last update timestamp in ISO 8601 format
          examples:
            - '2025-03-21T09:30:00+02:00'
      required:
        - redirectUrl
        - privateNotes
        - quotedWaitMinutes
        - isWalkIn
        - hasFixedTables
        - isHighlighted
        - channel
        - ticketPartner
        - ticketExternalId
        - ticketTotalAmount
        - tableReadyAt
        - arrivedAt
        - seatedAt
        - endedAt
        - ip
        - customer
        - tables
        - uuid
        - bookingAt
        - status
        - isTimeLimited
        - customerSpecialRequests
        - hasAllergies
        - allergiesDescription
        - specialOccasion
        - needsAccessibleSeating
        - hotelRoom
        - publicNotes
        - isReconfirmed
        - isReconfirmedByCustomer
        - cancelReason
        - bookingPartner
        - bookingExternalId
        - shiftType
        - floorPlanArea
        - promo
        - product
        - experience
        - cancellationPolicy
        - addOns
        - accountId
        - highChairs
        - paxChildren
        - pax
        - strollers
        - turnMinutes
        - createdAt
        - updatedAt
      title: UpdatePrivateBookingResponse
    UpdatePublicBookingResponse:
      type: object
      properties:
        redirectUrl:
          type:
            - string
            - 'null'
          format: uri
          description: The URL to redirect the customer after updating the booking
          examples:
            - https://example.com/widget/?view=reservation/confirmed&uuid=...
        customer:
          anyOf:
            - $ref: '#/components/schemas/PublicCustomer'
              description: Public Customer details
            - type: 'null'
        uuid:
          type: string
          description: UUID of the Booking
          examples:
            - 50b5571be67b477baa9dead4b290c555
        bookingAt:
          type: string
          format: date-time
          description: The Booking date and time in ISO 8601 format
          examples:
            - '2025-03-20T23:00:00+02:00'
        status:
          $ref: '#/components/schemas/BookingStatusEnum'
          description: The Booking status
          examples:
            - CONFIRMED
        isTimeLimited:
          type: boolean
          description: |-
            Indicates whether the Booking has a time limit
            that must be notified and accepted by the customer
          examples:
            - true
        customerSpecialRequests:
          type:
            - string
            - 'null'
          description: >-
            Free-text field for customer special requests.

            The Venue will try to accommodate them but cannot guarantee
            fulfillment
          examples:
            - Table near the window
          maxLength: 1024
        hasAllergies:
          type: boolean
          description: |-
            Indicates whether any of the guests have allergies
            (e.g., peanut, chocolate, nuts, etc.)
          examples:
            - true
        allergiesDescription:
          type:
            - string
            - 'null'
          description: Free-text description of allergies
          examples:
            - Peanuts, shellfish, lactose intolerance
          maxLength: 1024
        specialOccasion:
          anyOf:
            - $ref: '#/components/schemas/BookingSpecialOccasionEnum'
              description: The special occasion associated with the booking
              examples:
                - BIRTHDAY
            - type: 'null'
        needsAccessibleSeating:
          type: boolean
          description: |-
            Indicates whether the guest requires an accessible seating
            (e.g., suitable for wheelchairs or reduced mobility)
          examples:
            - true
        hotelRoom:
          type:
            - string
            - 'null'
          description: Hotel room number or identifier associated with the Booking
          examples:
            - Room 305
          maxLength: 50
        publicNotes:
          type:
            - string
            - 'null'
          description: Public notes defined by the venue and visible to the customer
          examples:
            - Your reservation includes a birthday cake.
          maxLength: 2048
        isReconfirmed:
          type: boolean
          description: >-
            Indicates whether the booking was manually reconfirmed

            by the customer **after** the venue contacted them to request
            reconfirmation
          examples:
            - true
        isReconfirmedByCustomer:
          type: boolean
          description: |-
            Indicates whether the booking was automatically reconfirmed
            by the customer through Restoo’s automated reconfirmation service
          examples:
            - false
        cancelReason:
          anyOf:
            - $ref: '#/components/schemas/BookingCancelReasonEnum'
              description: The reason provided when canceling the booking (if applicable)
              examples:
                - CHANGED_PLANS
            - type: 'null'
        bookingPartner:
          anyOf:
            - $ref: '#/components/schemas/BookingPartnerEnum'
              description: The partner through which the Booking was made (if any)
              examples:
                - GOOGLE
            - type: 'null'
        bookingExternalId:
          type:
            - string
            - 'null'
          description: |-
            The Booking ID provided by the external partner (if applicable).
            Required if `bookingPartner` is present
          examples:
            - book_123456
          maxLength: 64
        shiftType:
          $ref: '#/components/schemas/ShiftType'
          description: The Shift Type in which the Booking takes place
        floorPlanArea:
          anyOf:
            - $ref: '#/components/schemas/BookingFloorPlanArea'
            - type: 'null'
        promo:
          anyOf:
            - $ref: '#/components/schemas/BookingPromo'
            - type: 'null'
        product:
          anyOf:
            - $ref: '#/components/schemas/BookingProduct'
            - type: 'null'
        experience:
          anyOf:
            - $ref: '#/components/schemas/BookingExperience'
            - type: 'null'
        cancellationPolicy:
          anyOf:
            - $ref: '#/components/schemas/BookingCancellationPolicy'
            - type: 'null'
        addOns:
          type: array
          description: List of add-ons associated with the Booking (if any)
          items:
            $ref: '#/components/schemas/BookingAddOn'
        accountId:
          type: string
          description: The unique Restoo Account identifier for the Tenant
          examples:
            - best-burger
        highChairs:
          type: integer
          description: The number of high chairs
          examples:
            - 1
          minimum: 0
        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
        strollers:
          type: integer
          description: The number of strollers
          examples:
            - 1
          minimum: 0
        turnMinutes:
          type: integer
          description: The duration of the Booking in minutes
          examples:
            - 90
          minimum: 15
          maximum: 720
      required:
        - redirectUrl
        - customer
        - uuid
        - bookingAt
        - status
        - isTimeLimited
        - customerSpecialRequests
        - hasAllergies
        - allergiesDescription
        - specialOccasion
        - needsAccessibleSeating
        - hotelRoom
        - publicNotes
        - isReconfirmed
        - isReconfirmedByCustomer
        - cancelReason
        - bookingPartner
        - bookingExternalId
        - shiftType
        - floorPlanArea
        - promo
        - product
        - experience
        - cancellationPolicy
        - addOns
        - accountId
        - highChairs
        - paxChildren
        - pax
        - strollers
        - turnMinutes
      title: UpdatePublicBookingResponse
    BookingCustomerRequest:
      type: object
      description: Request payload with the Booking Customer details.
      properties:
        birthDate:
          type:
            - string
            - 'null'
          format: date
          description: Date of birth of the Customer in ISO 8601 format (YYYY-MM-DD)
          examples:
            - '1979-03-20'
        postalCode:
          type:
            - string
            - 'null'
          description: The Customer's postal code
          examples:
            - '28045'
          maxLength: 12
        language:
          $ref: '#/components/schemas/CustomerLanguageEnum'
          description: >-
            The preferred language of the Customer, represented as an ISO 639-1
            code
          examples:
            - en
        country:
          $ref: '#/components/schemas/CountryEnum'
          description: >-
            The country of the Customer, represented as a two-letter ISO 3166-1
            alpha-2 code
          examples:
            - ES
        hasGdprConsent:
          type: boolean
          description: >-
            Whether the Customer consents to their personal data being processed
            so the venue

            can manage the Booking. Not the marketing consent — that is
            `acceptsMarketing`.


            `false` is not accepted: without consent there is no Customer, and
            so no Booking.

            Withdrawing a consent already given is not something this API
            exposes yet, and a

            Customer who has withdrawn it stops appearing in Customer search
          examples:
            - true
        acceptsMarketing:
          type: boolean
          description: >-
            Indicates whether the Customer has consented to receive marketing
            communications
          examples:
            - true
        name:
          type: string
          description: The full name of the Customer
          examples:
            - Steve Jobs
          minLength: 3
          maxLength: 255
        uuid:
          type: string
          description: >-
            The UUID of an existing Customer to be linked to the Booking.


            Include this field only to explicitly associate the Booking with an
            existing Customer in Restoo.

            If omitted, Restoo will attempt to automatically match the Customer
            using their email and phone number
          examples:
            - 50b5571be67b477baa9dead4b290c555
        email:
          type:
            - string
            - 'null'
          format: email
          description: The Customer's email address
          examples:
            - steve.jobs@restoo.me
          maxLength: 255
        phone:
          type:
            - string
            - 'null'
          description: The Customer's phone number in E.164 format
          examples:
            - '+34600111222'
      required:
        - hasGdprConsent
        - acceptsMarketing
        - name
      title: BookingCustomerRequest
    ExperienceRequest:
      type: object
      description: Request payload representing an Experience.
      properties:
        tickets:
          type: integer
          description: The Experience tickets requested
          examples:
            - 2
          minimum: 1
        addOns:
          type: array
          description: The Experience Add-ons requested
          items:
            $ref: '#/components/schemas/AddOnRequest'
        id:
          type: integer
          description: The unique identifier of the resource
          examples:
            - 101
          minimum: 1
      required:
        - tickets
        - id
      title: ExperienceRequest
    BookingSpecialOccasionEnum:
      type: string
      enum:
        - WEDDING
        - BIRTHDAY
        - ROMANTIC
        - FRIENDS
        - FAMILY
        - BUSINESS
        - OTHER
      title: BookingSpecialOccasionEnum
    AddOnRequest:
      type: object
      description: Request payload representing an Add-on.
      properties:
        id:
          type: integer
          description: The unique identifier of the resource
          examples:
            - 101
          minimum: 1
        quantity:
          type: integer
          description: The quantity of this resource
          examples:
            - 1
          minimum: 1
      required:
        - id
        - quantity
      title: AddOnRequest
    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
    ChannelEnum:
      type: string
      enum:
        - WIDGET
        - OFFLINE
        - API
      title: ChannelEnum
    TicketPartnerEnum:
      type: string
      enum:
        - DEFAULT
        - REVO
        - HOSTELTACTIL
        - AGORA
        - WINEX
        - SIMPHONY
        - CUINER
        - BDP
        - GLOP
        - FRONT_REST
        - YANTAR
        - MADISA
        - LASTAPP
        - SQUARE
        - HIOPOS
        - API
        - WE_WELCOM
      title: TicketPartnerEnum
    PrivateCustomer:
      type: object
      description: Full Customer details, including private properties.
      properties:
        privateNotes:
          type:
            - string
            - 'null'
          description: Internal notes about the customer, visible only to venue staff
          examples:
            - Customer prefers a table near the terrace.
          maxLength: 2048
        visitFrequency:
          type:
            - integer
            - 'null'
          description: >-
            Average frequency of visits, expressed as the number of days between
            visits
          examples:
            - 30
          minimum: 0
        averageOrderAmountPerPax:
          type:
            - integer
            - 'null'
          description: Average order amount per guest (in cents)
          examples:
            - 4500
          minimum: 0
        bookingReputation:
          type: number
          description: >-
            The customer's reputation score based on their booking behavior.

            Calculated by Restoo from attendance, cancellation, and no-show
            history.

             Interpretation:
             - Negative values: poor reputation.
             - 0: no sufficient history (neutral).
             - Positive values: good reputation
          examples:
            - 0.85
        bookingsCount:
          type: integer
          description: Total number of bookings made by the customer
          examples:
            - 25
          minimum: 0
        visitsCount:
          type: integer
          description: Total number of completed visits by the customer
          examples:
            - 18
          minimum: 0
        cancellationsCount:
          type: integer
          description: Total number of cancellations made by the customer
          examples:
            - 3
          minimum: 0
        noShowsCount:
          type: integer
          description: Total number of no-shows by the customer
          examples:
            - 2
          minimum: 0
        firstVisitAt:
          type:
            - string
            - 'null'
          format: date-time
          description: The date and time of the customer's first visit in ISO 8601 format
          examples:
            - '2023-05-10T20:00:00+02:00'
        lastVisitAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            The date and time of the customer's most recent visit in ISO 8601
            format
          examples:
            - '2025-03-15T21:30:00+02:00'
        firstCancellationAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            The date and time of the customer's first cancellation in ISO 8601
            format
          examples:
            - '2024-09-12T19:00:00+02:00'
        nextVisitScheduledAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            The date and time of the customer's next scheduled visit in ISO 8601
            format
          examples:
            - '2025-04-05T22:00:00+02:00'
        tags:
          type: array
          description: List of customer tags
          items:
            $ref: '#/components/schemas/Tag'
        uuid:
          type: string
          description: The Customer UUID
          examples:
            - 50b5571be67b477baa9dead4b290c555
        email:
          type:
            - string
            - 'null'
          format: email
          description: The Customer's email address
          examples:
            - steve.jobs@restoo.me
        phone:
          type:
            - string
            - 'null'
          description: The Customer's phone number in E.164 format
          examples:
            - '+34600111222'
        birthDate:
          type:
            - string
            - 'null'
          format: date
          description: Date of birth of the Customer in ISO 8601 format (YYYY-MM-DD)
          examples:
            - '1979-03-20'
        postalCode:
          type:
            - string
            - 'null'
          description: The Customer's postal code
          examples:
            - '28045'
          maxLength: 12
        isVip:
          type: boolean
          description: Indicates whether the Customer is marked as VIP
          examples:
            - true
        isBusiness:
          type: boolean
          description: Indicates whether the Customer is associated with a business
          examples:
            - false
        language:
          $ref: '#/components/schemas/CustomerLanguageEnum'
          description: >-
            The preferred language of the Customer, represented as an ISO 639-1
            code
          examples:
            - en
        acceptsImportantAlerts:
          type: boolean
          description: >-
            Indicates whether the customer agrees to receive important alerts
            related to their bookings

            (e.g., cancellations due to weather or unexpected incidents)
          examples:
            - true
        hasGdprConsent:
          type: boolean
          description: Indicates whether the Customer has given GDPR consent
          examples:
            - true
        acceptsMarketing:
          type: boolean
          description: >-
            Indicates whether the Customer has consented to receive marketing
            communications
          examples:
            - true
        country:
          $ref: '#/components/schemas/CountryEnum'
          description: The country represented as a two-letter ISO 3166-1 alpha-2 code
          examples:
            - ES
        name:
          type: string
          description: The full name of the Customer
          examples:
            - Steve Jobs
          minLength: 3
          maxLength: 255
      required:
        - privateNotes
        - visitFrequency
        - averageOrderAmountPerPax
        - bookingReputation
        - bookingsCount
        - visitsCount
        - cancellationsCount
        - noShowsCount
        - firstVisitAt
        - lastVisitAt
        - firstCancellationAt
        - nextVisitScheduledAt
        - tags
        - uuid
        - email
        - phone
        - birthDate
        - postalCode
        - isVip
        - isBusiness
        - language
        - acceptsImportantAlerts
        - hasGdprConsent
        - acceptsMarketing
        - country
        - name
      title: PrivateCustomer
    BookingTable:
      type: object
      properties:
        name:
          type: string
          description: The table name as defined in Restoo
          examples:
            - T101
          maxLength: 16
        floorPlanAreaId:
          type:
            - integer
            - 'null'
          description: The identifier of the floor plan area the table belongs to
          examples:
            - 12
          minimum: 1
        posId:
          type:
            - string
            - 'null'
          description: The table identifier in the POS or external system
          examples:
            - POS-T101
          maxLength: 64
        id:
          type: integer
          description: The unique identifier of the resource
          examples:
            - 101
          minimum: 1
      required:
        - name
        - floorPlanAreaId
        - posId
        - id
      title: BookingTable
    BookingCancelReasonEnum:
      type: string
      enum:
        - CALL_TO_CANCEL
        - UPDATE_BOOKING
        - UNEXPECTED_SITUATION
        - BOOKED_ANOTHER_PLACE
        - CHANGED_PLANS
        - OTHER
        - REVOKE_LEGAL_CONSENT
      title: BookingCancelReasonEnum
    BookingPartnerEnum:
      type: string
      enum:
        - DEFAULT
        - GOOGLE
        - BOOKLINE
        - BOOKY_BOT
        - FLIP_EAT
        - FACEBOOK
        - MAYBEIN
        - LASTAPP
        - PRIMA
      title: BookingPartnerEnum
    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
    BookingFloorPlanArea:
      type: object
      description: The Floor Plan Area details related to a Booking.
      properties:
        name:
          type: string
          description: >-
            The Floor Plan Area name, localized in the preferred requested
            language
          examples:
            - Terrace
          maxLength: 255
        id:
          type: integer
          description: The unique identifier of the resource
          examples:
            - 101
          minimum: 1
      required:
        - name
        - id
      title: BookingFloorPlanArea
    BookingPromo:
      type: object
      description: The Promotion details related to a Booking.
      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: BookingPromo
    BookingProduct:
      type: object
      description: The Product details related to a Booking.
      properties:
        orderItemId:
          type: integer
          description: The unique identifier of the related Order Item
          examples:
            - 101
          minimum: 1
        orderUuid:
          type: string
          description: The unique identifier of the related Order
          examples:
            - 50b5571be67b477baa9dead4b290c555
        currency:
          $ref: '#/components/schemas/CurrencyEnum'
          description: The currency represented as a three-letter ISO 4217 code
          examples:
            - EUR
        experienceTickets:
          type:
            - integer
            - 'null'
          description: |-
            The number of experience tickets included.

            This applies only to Products that provide experience access.
            If the Product does not include tickets, this value is `null`
          examples:
            - 1
          minimum: 1
        id:
          type: integer
          description: The unique identifier of the resource
          examples:
            - 101
          minimum: 1
        isGift:
          type: boolean
          description: Indicates whether this item is a gift
          examples:
            - true
        name:
          type: string
          description: The Product name, localized in the preferred requested language
          examples:
            - Gift Card
          maxLength: 255
        quantity:
          type: integer
          description: The quantity of this resource
          examples:
            - 1
          minimum: 1
        taxRate:
          type: integer
          description: |-
            Tax rate, expressed in basis points.

            For example, 10.5% is represented as 1050
          examples:
            - 1050
          minimum: 0
          maximum: 10000
        type:
          $ref: '#/components/schemas/ProductTypeEnum'
          description: |-
            The type of Product.

            Determines how the Product behaves during purchase and how its price
            is interpreted. The following product types are supported:

            - **ITEM** — A fixed-price product.
              The customer selects quantity to purchase.
              Each unit has a predefined price (e.g., menus, experiences).

            - **CREDIT** — A monetary-value product.
              The customer selects the amount of credit to purchase.
              The minimum allowed amount is defined by the Product’s base price
              (e.g., gift cards)
          examples:
            - ITEM
        unitPrice:
          type: integer
          description: |-
            The base price of the Product, expressed in cents.

            Its interpretation depends on the Product type:

            - **ITEM** — Represents the fixed unit price of the product.
              The customer selects a quantity, and the final charge is calculated as
              `quantity × amount`.

            - **CREDIT** — Represents the minimum purchasable credit amount.
              The customer chooses the final amount, which must be **greater than or equal**
              to this value
          examples:
            - 7500
          minimum: 100
      required:
        - orderItemId
        - orderUuid
        - currency
        - experienceTickets
        - id
        - isGift
        - name
        - quantity
        - taxRate
        - type
        - unitPrice
      title: BookingProduct
    BookingExperience:
      type: object
      description: The Experience details related to a Booking.
      properties:
        tickets:
          type: integer
          description: The number of tickets reserved for the Booking Experience
          examples:
            - 1
          minimum: 1
        discount:
          type: number
          description: >-
            Discount applied to the Booking Experience, expressed as a
            percentage
          examples:
            - 10.5
          minimum: 0
          maximum: 100
        experienceId:
          type: integer
          description: The unique identifier of the Experience
          examples:
            - 123
          minimum: 1
        name:
          type: string
          description: The Experience name, localized in the preferred requested language
          examples:
            - Premium Menu
          maxLength: 255
        pricePerTicket:
          type: integer
          description: The Experience price per ticket in cents
          examples:
            - 7500
          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:
        - tickets
        - discount
        - experienceId
        - name
        - pricePerTicket
        - currency
        - id
      title: BookingExperience
    BookingCancellationPolicy:
      type: object
      description: |-
        The Cancellation Policy details associated with a Booking.

        Represents the **persisted and authoritative state**
        of the Cancellation Policy for a Booking.
      properties:
        status:
          $ref: '#/components/schemas/BookingCancellationPolicyStatusEnum'
          description: >-
            The current persisted status of the Cancellation Policy for this
            Booking
          examples:
            - PENDING_SIGNATURE
        signDeadlineAt:
          type: string
          format: date-time
          description: >-
            Deadline for the customer to accept the Cancellation Policy,
            expressed in ISO 8601 format.


            If the customer does not complete the acceptance flow before this
            timestamp,

            the Booking will be **automatically cancelled** and the signature
            process

            becomes invalid
          examples:
            - '2025-03-20T22:00:00+02:00'
        signedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Date and time when the customer signed/accepted the Cancellation
            Policy, expressed in ISO 8601 format.


            If `null`, the policy has not been signed yet
          examples:
            - '2025-03-20T21:35:10+02:00'
        signedFromIp:
          type:
            - string
            - 'null'
          description: |-
            IP address from which the Cancellation Policy was signed/accepted.

            If `null`, the policy has not been signed yet
          examples:
            - 203.0.113.10
        endedAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Date and time when the Cancellation Policy ended, expressed in ISO
            8601 format.


            If `null`, the policy has not ended yet
          examples:
            - '2025-03-21T23:59:59+02:00'
        endedBy:
          anyOf:
            - $ref: '#/components/schemas/CancellationPolicyEndedByEnum'
              description: >-
                Indicates who or what ended the Cancellation Policy.


                If `null`, the policy has not ended yet.


                Possible values:


                - **GUEST** — The policy was ended by the customer.

                - **STAFF** — The policy was ended by the merchant or venue
                staff.

                - **RESTOO_BOT** — The policy was ended automatically by Restoo
                (system action)
              examples:
                - GUEST
            - type: 'null'
        chargeStatus:
          anyOf:
            - $ref: '#/components/schemas/ChargeStatusEnum'
              description: |-
                Defines the current status of the charge.

                This field is applicable only when `chargedAmount > 0`.
                If no charge was attempted or applied, this field is `null`
              examples:
                - SUCCEEDED
            - type: 'null'
        refundStatus:
          anyOf:
            - $ref: '#/components/schemas/RefundStatusEnum'
              description: |-
                Defines the current status of the refund.

                This field is applicable only when `refundedAmount > 0`.
                If no refund was initiated, this field is `null`
              examples:
                - null
            - type: 'null'
        type:
          $ref: '#/components/schemas/CancellationPolicyTypeEnum'
          description: Type of Cancellation Policy
          examples:
            - GUARANTEE_AUTHORIZATION
        amount:
          type: integer
          description: Base unit amount of the Cancellation Policy, expressed in cents
          examples:
            - 2500
          minimum: 100
          maximum: 200000
        amountType:
          $ref: '#/components/schemas/CancellationPolicyAmountTypeEnum'
          description: >-
            Defines how the Cancellation Policy amount is applied.


            - `PER_PAX` — The policy amount applies **per guest**.
              The final charge is calculated as: `amount × number_of_guests`.

            - `PER_BOOKING` — The policy amount applies **once to the entire
            booking**,
              regardless of the number of guests
          examples:
            - PER_PAX
        cancellationNoticeHours:
          type: integer
          description: |-
            Minimum notice required (in hours) before the booking start time
            for the Cancellation Policy to apply
          examples:
            - 24
          minimum: 0
        currency:
          $ref: '#/components/schemas/CurrencyEnum'
          description: The currency represented as a three-letter ISO 4217 code
          examples:
            - EUR
        cancellationFeeAmount:
          type: integer
          description: |-
            Cancellation fee amount dictated by the agreed policy terms,
            regardless of the amount finally charged to the customer
          examples:
            - 5000
          minimum: 0
          maximum: 200000
        chargedAmount:
          type: integer
          description: >-
            The total amount charged to the customer, expressed in cents.


            This value represents the **amount actually charged** to the
            customer,

            independent of the cancellation fee that **should have been
            applied**

            according to the Cancellation Policy, and regardless of the current

            payment or refund status
          examples:
            - 5000
          minimum: 0
          maximum: 200000
        guaranteedPax:
          type: integer
          description: |-
            The number of guests covered by the Cancellation Policy guarantee.
            Only applies when amountType is "PER_PAX"
          examples:
            - 2
          minimum: 0
        id:
          type: integer
          description: The unique identifier of the resource
          examples:
            - 101
          minimum: 1
        refundedAmount:
          type: integer
          description: >-
            The total amount refunded to the customer, expressed in cents.


            This value represents the **amount to be refunded** to the customer,
            regardless of

            whether the refund has already been issued or fully settled
          examples:
            - 0
          minimum: 0
          maximum: 200000
      required:
        - status
        - signDeadlineAt
        - signedAt
        - signedFromIp
        - endedAt
        - endedBy
        - chargeStatus
        - refundStatus
        - type
        - amount
        - amountType
        - cancellationNoticeHours
        - currency
        - cancellationFeeAmount
        - chargedAmount
        - guaranteedPax
        - id
        - refundedAmount
      title: BookingCancellationPolicy
    BookingAddOn:
      type: object
      description: The Add-ons details related to a Booking.
      properties:
        addOnId:
          type: integer
          description: The unique identifier of the Add-on
          examples:
            - 123
          minimum: 1
        name:
          type: string
          description: The Add-on name localized in the preferred requested language
          examples:
            - Premium wine tasting
          maxLength: 255
        unitPrice:
          type:
            - integer
            - 'null'
          description: The unit price of the Add-on in cents
          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
        quantity:
          type: integer
          description: The quantity of this resource
          examples:
            - 1
          minimum: 1
      required:
        - addOnId
        - name
        - unitPrice
        - currency
        - id
        - quantity
      title: BookingAddOn
    PublicCustomer:
      type: object
      description: Public Customer details.
      properties:
        uuid:
          type: string
          description: The Customer UUID
          examples:
            - 50b5571be67b477baa9dead4b290c555
        email:
          type:
            - string
            - 'null'
          format: email
          description: The Customer's email address
          examples:
            - steve.jobs@restoo.me
        phone:
          type:
            - string
            - 'null'
          description: The Customer's phone number in E.164 format
          examples:
            - '+34600111222'
        birthDate:
          type:
            - string
            - 'null'
          format: date
          description: Date of birth of the Customer in ISO 8601 format (YYYY-MM-DD)
          examples:
            - '1979-03-20'
        postalCode:
          type:
            - string
            - 'null'
          description: The Customer's postal code
          examples:
            - '28045'
          maxLength: 12
        isVip:
          type: boolean
          description: Indicates whether the Customer is marked as VIP
          examples:
            - true
        isBusiness:
          type: boolean
          description: Indicates whether the Customer is associated with a business
          examples:
            - false
        language:
          $ref: '#/components/schemas/CustomerLanguageEnum'
          description: >-
            The preferred language of the Customer, represented as an ISO 639-1
            code
          examples:
            - en
        acceptsImportantAlerts:
          type: boolean
          description: >-
            Indicates whether the customer agrees to receive important alerts
            related to their bookings

            (e.g., cancellations due to weather or unexpected incidents)
          examples:
            - true
        hasGdprConsent:
          type: boolean
          description: Indicates whether the Customer has given GDPR consent
          examples:
            - true
        acceptsMarketing:
          type: boolean
          description: >-
            Indicates whether the Customer has consented to receive marketing
            communications
          examples:
            - true
        country:
          $ref: '#/components/schemas/CountryEnum'
          description: The country represented as a two-letter ISO 3166-1 alpha-2 code
          examples:
            - ES
        name:
          type: string
          description: The full name of the Customer
          examples:
            - Steve Jobs
          minLength: 3
          maxLength: 255
      required:
        - uuid
        - email
        - phone
        - birthDate
        - postalCode
        - isVip
        - isBusiness
        - language
        - acceptsImportantAlerts
        - hasGdprConsent
        - acceptsMarketing
        - country
        - name
      title: PublicCustomer
    CustomerLanguageEnum:
      type: string
      enum:
        - es
        - ca
        - it
        - en
        - de
        - fr
        - pt
        - eu
      title: CustomerLanguageEnum
    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
    Tag:
      type: object
      description: Customer tag details.
      properties:
        id:
          type: integer
          description: The tag unique identifier
          examples:
            - 1
        name:
          type: string
          description: The tag display name
          examples:
            - VIP
        color:
          type: string
          description: The tag color in hexadecimal format
          examples:
            - '#FF5733'
      required:
        - id
        - name
        - color
      title: Tag
    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
    CurrencyEnum:
      type: string
      enum:
        - EUR
        - USD
        - GBP
        - MXN
        - DOP
      title: CurrencyEnum
    ProductTypeEnum:
      type: string
      description: >
        Representa el tipo de negocio del producto. CREDIT:  - Producto que
        representa valor monetario (gift cards, vouchers, saldo, crédito)  -
        Precio variable (is_fixed_price = false)  - Se trata como un
        pago/crédito, no como un consumo  - En integraciones POS se envía como
        parte de los "cobros_realizados"  ITEM:  - Producto vendible de precio
        fijo (menús, packs, experiencias, artículos)  - is_fixed_price = true  -
        Se trata como un consumo de producto, no como un pago  - NO se incluye
        dentro de "cobros_realizados"
      enum:
        - CREDIT
        - ITEM
      title: ProductTypeEnum
    BookingCancellationPolicyStatusEnum:
      type: string
      enum:
        - PENDING_SIGNATURE
        - SIGNATURE_EXPIRED
        - ACTIVE
        - COMPLETED
        - REVOKED
        - PENALTY_PARTIAL
        - PENALTY_CANCEL
        - PENALTY_NO_SHOW
      title: BookingCancellationPolicyStatusEnum
    CancellationPolicyEndedByEnum:
      type: string
      enum:
        - RESTOO_BOT
        - GUEST
        - STAFF
      title: CancellationPolicyEndedByEnum
    ChargeStatusEnum:
      type: string
      enum:
        - SUCCEEDED
        - PENDING
        - FAILED
      title: ChargeStatusEnum
    RefundStatusEnum:
      type: string
      enum:
        - PENDING
        - SUCCEEDED
      title: RefundStatusEnum
    CancellationPolicyTypeEnum:
      type: string
      enum:
        - NONE
        - GUARANTEE_AUTHORIZATION
        - PREPAYMENT
      title: CancellationPolicyTypeEnum
    CancellationPolicyAmountTypeEnum:
      type: string
      enum:
        - PER_PAX
        - PER_BOOKING
      title: CancellationPolicyAmountTypeEnum
  responses:
    BookingException:
      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

````