---
title: Integration with the property management system (PMS)
url: https://doc2.pstreamer.tv/en/manual/planning/hotels/pms.html
lang: en
product: Perfect Streamer
version: 2.0.2.423
---

# Integration with the property management system (PMS)

> **Important**
>
> **Beta version 2.1.** What is described here exists only in beta version 2.1: it is installed from the beta repository and only with a licence; the stable version 2.0.2 and the demo edition do not have it. The beta version comes without warranty, and support is best effort ([Beta testing programme](../../extras/beta.md#extras-beta)).

Since version 2.1.0.471 the node accepts events from the hotel’s property management system (PMS): check-in, check-out, room move and reconciliation. Check-in opens the channels to the room’s TV sets until the check-out time; check-out blocks them and ends the running sessions. The connection to the PMS usually goes through its vendor’s interface (using the FIAS protocol on the PMS side); it is this interface that calls the node. The demo edition does not have this feature.

## Rooms are logins

A hotel room is the set of local logins with the same “Room” field in the login editor ([User: add and edit](../../webui/configure.md#webui-user-editor)). Options:

- one login per TV set — a login by the TV set’s IP address;
- one address-range login per room, if the room’s TV sets are in their own subnet.

The PMS changes nothing for a login with an empty “Room”. For a room’s logins it sets the “Expiry date” (the check-out time), the guest name and, if packages are configured, the “Allowed streams”. Only the Admin role sees the guest name; it is not written to the log.

## What the events do

- **Check-in** opens the room’s logins until the check-out time, records the guest name and, if the PMS named a package, the streams of that package. The PMS uses the same event to extend or shorten a stay.
- **Check-out** blocks the room’s logins, erases the guest name and within a few seconds ends their PS1, SRT and HTTP/HLS sessions.
- **Room move** — check-out from one room and check-in to another with the same check-out time, guest and streams.
- **Reconciliation** — the PMS sends a list of all occupied rooms: the listed rooms are checked in, and the other occupied rooms with a “Room” field are released.

If the PMS sends a check-out date without a time, the room is blocked at the “Check-out hour” (in the node’s time zone, 12 by default).

## In the console

The hotel functions work while “Hotel TV” is on for the node ([Hotel TV](../../webui/administration.md#webui-hotel-tv)). On a node that has no hotel data yet it is off: switch it on before you set up the PMS link.

- The **“Rooms”** tab of the “Users / Logins” screen ([Users / Logins](../../webui/configure.md#webui-users)) — rooms, their state (“Occupied”, “Vacant”, “Paused”), the check-out time, the room’s logins, the PMS connection (last event, last reconciliation, errors, unknown rooms) and warnings about logins through which a blocked room will still be able to watch;
- the **“Administration ▸ Hotel TV”** screen — “Accept PMS events”, “API token”, “Allowed addresses”, “Check-out hour” and packages. Before version 2.1.0.477 these settings were on the “PMS” tab of the logins screen.

A **package** links a PMS package code (TV entitlement) to the streams the room receives. The code is entered exactly as the PMS sends it. The package with the code `default` applies when the PMS does not name a package; without it, check-in does not change the logins’ streams.

## PMS interface access

The PMS interface does not sign in with a web interface account but by token and address:

- “API token” — a shared secret that the interface passes in the `X-PMS-Token` header. Without the token any request is rejected. Give it only to the interface vendor; the “Generate a token” button creates a new one.
- “Allowed addresses” — IPv4 addresses or ranges from which the interface calls the node. Empty — the host itself only.
- It is recommended to call the node over HTTPS.

For the interface vendor: the node accepts events with a `POST /pms/v1/events` request (with `?dry-run=1` — a check without changes) and returns the state of the rooms with a `GET /pms/v1/status` request. The format of events and responses is in the HTTP API reference ([Managing the node over the HTTP API](../../extras/api.md#extras-api)).

## Limitations

- **Other logins can open a blocked room.** An active anonymous login or a wider address-range login that covers the room’s TV sets keeps serving them. Restrict such logins or pause them; the “Rooms” tab shows the ones it finds.
- **A separate event stream for each node.** Logins are not passed over Meshwork: each node needs its own stream of PMS events.
- **Not for prefix logins and RIST.** Do not assign a room to a prefix login: it is not disconnected at check-out. RIST sessions are not ended at check-out.
- The demo edition has no PMS integration.
