RoomKeyPMS Reservation Data API

Pull reservation and guest-profile data by hotel.

OpenAPI Specification

roomkeypms-reservation-data-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: RoomKeyPMS POS Reservation Data API
  description: 'RoomKeyPMS''s REST API for pulling reservation and guest data, posting POS charges to a guest folio, and pulling hotel statistics/receipts. Endpoint paths, parameters, and behavior are taken directly from RoomKeyPMS''s public support documentation and version release notes. The API is partner-gated: an API key and per-hotel credentials are issued only after a hotel''s IT team emails RoomKeyPMS support and the property signs off. Responses can be requested as JSON or XML via the request header. There is no endpoint that returns only records changed since the last call; RoomKeyPMS recommends polling on a 10-15 minute cadence without parallel calls, staggered across properties for multi-property integrations. Date-ranged endpoints are capped at a 60-day window. The exact production base host is not published as a standalone value by RoomKeyPMS; it is inferred here from RoomKeyPMS''s own Help/reference portal and should be confirmed once a partner API key is issued.'
  version: 2.8.0.2
  contact:
    name: RoomKeyPMS Support
    url: https://support.roomkeypms.com/a/972656-api-documentation
servers:
- url: https://www.welcometorsi.net/RoomkeyApi/api
  description: RoomKeyPMS production API (base host inferred from the public Help/reference portal; confirm with issued credentials)
security:
- apiKeyAuth: []
tags:
- name: Reservation Data
  description: Pull reservation and guest-profile data by hotel.
paths:
  /hotels/{hotelId}/reservations/guestprofile:
    get:
      operationId: listReservations
      tags:
      - Reservation Data
      summary: List reservations by arrival date
      description: Returns reservations arriving within the given date range. Maximum range is 60 days. RoomKeyPMS recommends narrow, frequent (10-15 minute) polling windows for ongoing pulls rather than wide windows.
      parameters:
      - $ref: '#/components/parameters/HotelId'
      - $ref: '#/components/parameters/ApiKeyParam'
      - $ref: '#/components/parameters/FromDate'
      - $ref: '#/components/parameters/ToDate'
      responses:
        '200':
          description: A list of reservations.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Reservation'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /hotels/{hotelId}/reservations/guestprofile/inhouse:
    get:
      operationId: listInHouseGuests
      tags:
      - Reservation Data
      summary: List currently in-house guests
      description: Real-time snapshot of guests currently checked in at the property. Also used by POS integrations to validate a room/guest pairing before posting a charge.
      parameters:
      - $ref: '#/components/parameters/HotelId'
      - $ref: '#/components/parameters/ApiKeyParam'
      responses:
        '200':
          description: A list of in-house guests.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Reservation'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /hotels/{hotelId}/reservations/guestprofile/checkedout:
    get:
      operationId: listCheckedOutGuests
      tags:
      - Reservation Data
      summary: List checked-out guests
      description: Returns guests checked out within the given date range. Maximum range is 60 days.
      parameters:
      - $ref: '#/components/parameters/HotelId'
      - $ref: '#/components/parameters/ApiKeyParam'
      - $ref: '#/components/parameters/FromDate'
      - $ref: '#/components/parameters/ToDate'
      responses:
        '200':
          description: A list of checked-out guests.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Reservation'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /hotels/{hotelId}/reservations/guestprofile/cancellations:
    get:
      operationId: listCancellations
      tags:
      - Reservation Data
      summary: List cancelled reservations
      description: Returns reservations cancelled within the given date range.
      parameters:
      - $ref: '#/components/parameters/HotelId'
      - $ref: '#/components/parameters/ApiKeyParam'
      - $ref: '#/components/parameters/FromDate'
      - $ref: '#/components/parameters/ToDate'
      responses:
        '200':
          description: A list of cancelled reservations.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Reservation'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /hotels/{hotelId}/reservations/guestprofile/reserved:
    get:
      operationId: listReservedNotArrived
      tags:
      - Reservation Data
      summary: List reserved (not yet arrived) reservations
      description: Returns reservations that are booked but whose guests have not yet arrived, within the given date range.
      parameters:
      - $ref: '#/components/parameters/HotelId'
      - $ref: '#/components/parameters/ApiKeyParam'
      - $ref: '#/components/parameters/FromDate'
      - $ref: '#/components/parameters/ToDate'
      responses:
        '200':
          description: A list of reserved, not-yet-arrived reservations.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Reservation'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    ApiKeyParam:
      name: key
      in: query
      required: true
      description: API key for the requesting integration.
      schema:
        type: string
    FromDate:
      name: fromDate
      in: query
      required: true
      description: Start of the date range (local property timezone). Combined with toDate, capped at a 60-day maximum range.
      schema:
        type: string
        format: date
    ToDate:
      name: toDate
      in: query
      required: true
      description: End of the date range (local property timezone). Combined with fromDate, capped at a 60-day maximum range.
      schema:
        type: string
        format: date
    HotelId:
      name: hotelId
      in: path
      required: true
      description: The RoomKeyPMS-assigned identifier for the hotel/property.
      schema:
        type: string
  schemas:
    ChannelConfirmation:
      type: object
      properties:
        shortCode:
          type: string
          example: BKG
        name:
          type: string
          example: Booking.com
        confirmationNumber:
          type: string
    Reservation:
      type: object
      description: A reservation/guest-profile record. Field names are honestly modeled from RoomKeyPMS's documented data categories (guest profile, room and rate, booking source) since RoomKeyPMS's public articles describe the available data but do not publish a full field-level schema.
      properties:
        confirmationNumber:
          type: string
        guestName:
          type: string
        guestAddress:
          type: string
        guestEmail:
          type: string
        arrivalDate:
          type: string
          format: date
        departureDate:
          type: string
          format: date
        roomNumber:
          type: string
        roomType:
          type: string
        rateName:
          type: string
        baseRate:
          type: number
        bookingSource:
          type: string
        reservationUniqueId:
          type: array
          description: Channel-partner confirmation numbers, added in API v2.8.0.2.
          items:
            $ref: '#/components/schemas/ChannelConfirmation'
    Error:
      type: object
      properties:
        message:
          type: string
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: query
      name: key
      description: API key issued by RoomKeyPMS after a hotel's IT team requests access and the property signs off.