apaleo Booking API

Bookings, reservations, blocks, groups, and offers.

OpenAPI Specification

apaleo-booking-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: apaleo Platform Availability Booking API
  description: Unified OpenAPI view of the apaleo API-first hotel property-management system. apaleo exposes its capabilities as a set of versioned REST APIs - Booking, Inventory, Rate Plan, Availability, Finance, and Settings - all served from https://api.apaleo.com and secured with OAuth 2.0 bearer tokens issued by the apaleo identity provider. Real-time events are delivered via the Webhook API at https://webhook.apaleo.com.
  termsOfService: https://apaleo.com/terms
  contact:
    name: apaleo Developer Support
    url: https://apaleo.dev
  version: v1
servers:
- url: https://api.apaleo.com
  description: apaleo Core API (Booking, Inventory, Rate Plan, Availability, Finance, Settings)
security:
- oauth2: []
tags:
- name: Booking
  description: Bookings, reservations, blocks, groups, and offers.
paths:
  /booking/v1/bookings:
    post:
      tags:
      - Booking
      operationId: BookingCreateBooking
      summary: Create a booking with one or more reservations.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBookingModel'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookingCreatedModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
    get:
      tags:
      - Booking
      operationId: BookingGetBookings
      summary: Return a list of bookings.
      parameters:
      - name: pageNumber
        in: query
        schema:
          type: integer
          format: int32
      - name: pageSize
        in: query
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
  /booking/v1/bookings/{id}:
    get:
      tags:
      - Booking
      operationId: BookingGetBookingById
      summary: Return a single booking by id.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
        '404':
          description: Not Found
    patch:
      tags:
      - Booking
      operationId: BookingPatchBooking
      summary: Modify the booker and related details of a booking.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No Content
  /booking/v1/reservations:
    get:
      tags:
      - Booking
      operationId: BookingGetReservations
      summary: Return a list of reservations matching the filter criteria.
      parameters:
      - name: propertyIds
        in: query
        schema:
          type: array
          items:
            type: string
      - name: status
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - Confirmed
            - InHouse
            - CheckedOut
            - Canceled
            - NoShow
      - name: from
        in: query
        schema:
          type: string
          format: date-time
      - name: to
        in: query
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: OK
  /booking/v1/reservations/{id}:
    get:
      tags:
      - Booking
      operationId: BookingGetReservationById
      summary: Return a single reservation by id.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReservationItemModel'
        '404':
          description: Not Found
  /booking/v1/reservation-actions/{id}/checkin:
    put:
      tags:
      - Booking
      operationId: BookingCheckinReservation
      summary: Check in a reservation.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No Content
  /booking/v1/reservation-actions/{id}/checkout:
    put:
      tags:
      - Booking
      operationId: BookingCheckoutReservation
      summary: Check out a reservation.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No Content
  /booking/v1/blocks:
    post:
      tags:
      - Booking
      operationId: BookingCreateBlock
      summary: Create a block of rooms for a group.
      responses:
        '201':
          description: Created
    get:
      tags:
      - Booking
      operationId: BookingGetBlocks
      summary: Return a list of blocks.
      responses:
        '200':
          description: OK
  /booking/v1/offers:
    get:
      tags:
      - Booking
      operationId: BookingGetOffers
      summary: Return bookable offers for the given property, dates, and occupancy.
      parameters:
      - name: propertyId
        in: query
        required: true
        schema:
          type: string
      - name: arrival
        in: query
        required: true
        schema:
          type: string
          format: date
      - name: departure
        in: query
        required: true
        schema:
          type: string
          format: date
      - name: adults
        in: query
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
components:
  schemas:
    BookingCreatedModel:
      type: object
      properties:
        id:
          type: string
        bookingId:
          type: string
        reservationIds:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
    BookerModel:
      type: object
      properties:
        title:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        phone:
          type: string
        address:
          $ref: '#/components/schemas/AddressModel'
    EmbeddedPropertyModel:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    CreateBookingModel:
      type: object
      required:
      - reservations
      properties:
        booker:
          $ref: '#/components/schemas/BookerModel'
        paymentAccount:
          type: object
          additionalProperties: true
        reservations:
          type: array
          items:
            $ref: '#/components/schemas/CreateReservationModel'
    MonetaryValueModel:
      type: object
      properties:
        amount:
          type: number
          format: double
        currency:
          type: string
    CreateReservationModel:
      type: object
      required:
      - arrival
      - departure
      - adults
      - ratePlanId
      properties:
        propertyId:
          type: string
        arrival:
          type: string
          format: date-time
        departure:
          type: string
          format: date-time
        adults:
          type: integer
          format: int32
        childrenAges:
          type: array
          items:
            type: integer
            format: int32
        ratePlanId:
          type: string
        guestComment:
          type: string
    ReservationItemModel:
      type: object
      properties:
        id:
          type: string
        bookingId:
          type: string
        status:
          type: string
          enum:
          - Confirmed
          - InHouse
          - CheckedOut
          - Canceled
          - NoShow
        property:
          $ref: '#/components/schemas/EmbeddedPropertyModel'
        ratePlanId:
          type: string
        arrival:
          type: string
          format: date-time
        departure:
          type: string
          format: date-time
        adults:
          type: integer
          format: int32
        totalGrossAmount:
          $ref: '#/components/schemas/MonetaryValueModel'
    AddressModel:
      type: object
      properties:
        addressLine1:
          type: string
        addressLine2:
          type: string
        postalCode:
          type: string
        city:
          type: string
        regionCode:
          type: string
        countryCode:
          type: string
  securitySchemes:
    oauth2:
      type: oauth2
      description: apaleo uses OAuth 2.0. Obtain a bearer access token from the apaleo identity provider and send it in the Authorization header as 'Bearer {token}'. The client-credentials and authorization-code grants are supported.
      flows:
        clientCredentials:
          tokenUrl: https://identity.apaleo.com/connect/token
          scopes:
            reservations.read: Read reservations and bookings
            reservations.manage: Create and manage reservations and bookings
            setup.read: Read inventory and configuration
            setup.manage: Manage inventory and configuration
            rates.read: Read rate plans and rates
            rates.manage: Manage rate plans and rates
            availability.read: Read availability
            availability.manage: Manage availability
            folios.read: Read folios and finance data
            folios.manage: Manage folios, payments, and invoices
        authorizationCode:
          authorizationUrl: https://identity.apaleo.com/connect/authorize
          tokenUrl: https://identity.apaleo.com/connect/token
          scopes:
            reservations.read: Read reservations and bookings
            reservations.manage: Create and manage reservations and bookings
            setup.read: Read inventory and configuration
            setup.manage: Manage inventory and configuration
            rates.read: Read rate plans and rates
            rates.manage: Manage rate plans and rates
            availability.read: Read availability
            availability.manage: Manage availability
            folios.read: Read folios and finance data
            folios.manage: Manage folios, payments, and invoices