RoomKeyPMS POS API

Point-of-sale guest lookup and folio charge posting.

OpenAPI Specification

roomkeypms-pos-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: RoomKeyPMS POS 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: POS
  description: Point-of-sale guest lookup and folio charge posting.
paths:
  /hotels/{hotelId}/reservations/guestprofile/inhouse:
    get:
      operationId: listInHouseGuests
      tags:
      - POS
      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}/guests/roominquiry:
    get:
      operationId: roomInquiry
      tags:
      - POS
      summary: Look up guest/room status for POS
      description: Returns guest and room status for a given room number, for use by a point-of-sale system before posting a charge.
      parameters:
      - $ref: '#/components/parameters/HotelId'
      - $ref: '#/components/parameters/ApiKeyParam'
      - name: roomNumber
        in: query
        required: true
        description: The room number to look up.
        schema:
          type: string
      responses:
        '200':
          description: Guest/room status for the requested room.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoomInquiry'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /hotels/{hotelId}/transactions/roomcharges:
    post:
      operationId: postRoomCharge
      tags:
      - POS
      summary: Post a charge to a guest folio
      description: Posts a point-of-sale charge to a guest's room folio. Each property configures its own CostCentres, and charges are subject to per-guest credit-limit and payment-method rules configured in RoomKeyPMS.
      parameters:
      - $ref: '#/components/parameters/HotelId'
      - $ref: '#/components/parameters/ApiKeyParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoomChargeInput'
      responses:
        '200':
          description: The posted charge.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoomCharge'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    ApiKeyParam:
      name: key
      in: query
      required: true
      description: API key for the requesting integration.
      schema:
        type: string
    HotelId:
      name: hotelId
      in: path
      required: true
      description: The RoomKeyPMS-assigned identifier for the hotel/property.
      schema:
        type: string
  schemas:
    RoomInquiry:
      type: object
      properties:
        roomNumber:
          type: string
        guestName:
          type: string
        inHouse:
          type: boolean
        costCentresAvailable:
          type: array
          items:
            type: string
    ChannelConfirmation:
      type: object
      properties:
        shortCode:
          type: string
          example: BKG
        name:
          type: string
          example: Booking.com
        confirmationNumber:
          type: string
    RoomCharge:
      type: object
      properties:
        transactionId:
          type: string
        roomNumber:
          type: string
        costCentre:
          type: string
        amount:
          type: number
        postedAt:
          type: string
          format: date-time
    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
    RoomChargeInput:
      type: object
      required:
      - roomNumber
      - costCentre
      - amount
      properties:
        roomNumber:
          type: string
        costCentre:
          type: string
        amount:
          type: number
        description:
          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.