8  /  12

RoomList - синхронизация гостей в комнатах

Описание

Команда производит синхронизацию статусов гостей в комнатах. В целом аналогична команде CheckIn, но перед операцией поселения гостей в номера производит выселение всех гостей из всех комнат (даже из тех, которые не были переданы в запросе). Перед операцией выселения производится проверка всех параметров команды RoomList и, если они не удовлетворяют требованиям и ограничениям, выселение не производится, команда ничего не выполняет.

Команду следует отправлять со стороны PMS после запуска интерфейса с TurnIP чтобы быть уверенным, что набор гостей в PMS соответствует набору гостей в TurnIP.

Направление

PMS -> TurnIP

Метод

POST

Запрос


POST /api/RoomList HTTP/1.1
Content-Type: application/json
API-KEY: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 1516

{
"ForceCheckOut": false, //true - выселяет всех гостей из всех номеров перед началом операции "rooms": [ { "room": "101", //Комната "channelListID": 41, //Индивидуальный список ТВ-каналов "portalID": 3060, //Индивидуальный портал "language": "ru", //Язык портала "guests": [ { "guestname": "Константин Константинович", // Имя гостя //Обязательный "checkOutDateTime": "24/12/2023 12:00", //Дата выезда гостя //Обязательный "mainGuest": true, //Основной гость "guestID": "567896", //идентификатор гостя в PMS "guestGroupID": "123456654321" //Группа гостя в PMS }, { "guestname": "Лидия Петровна", "checkOutDateTime": "24/12/2023 12:00", "mainGuest": false, "guestID": "567897", "guestGroupID": "123456654321" }, { "guestname": "Петр Константинович", "checkOutDateTime": "24/12/2023 12:00" } ] }, { "room": "108", "roomChannelListID": 41, "roomPortalID": 3060, "roomLanguage": "ru", "guests": [ { "guestname": "Дмитрий Владимирович", "checkOutDateTime": "24/12/2023 12:00", "mainGuest": true, "guestID": "567896", "guestGroupID": "123456654321" } ] } ] }

Параметры запроса

Параметр "ForceCheckOut" определяет необходимость выселения всех гостей из всех комнат перед началом операции. Необязательный, значение по умолчанию false - не выселять.

Остальные параметры запроса полностью аналогичны параметрам запроса команды CheckIn. Параметр newCheckin не применим в этой команде, но его передача не приведет к ошибке - будет проигнорирован.

Ограничения

Команда RoomList имеет вcе ограничения, накладываемые командой CheckIn, за исключением ограничений времени выезда, которое не может быть меньше текущего времени в CheckIn и обязательности наличия имени гостя в CheckIn. В случае команды RoomList ошибки заменены на предупреждения. Это сделано для смягчения требований к пакетной синхронизации, когда ошибка в одной комнате может привести к невозможности синхронизации всех комнат гостиницы.
    Так в RoomList:
  • В случае передачи времени заезда менее текущего времени, будет выдано предупреждений в коде 200 OK, синхронизация будет произведена. Смягчение требований было выполнено на тот случай, если в PMS забыли выселить гостя.
  • В случае передачи пустого имени гостя или непередачи параметра guestname, синхронизация будет произведена. Имя такого гостя будет задано в TurnIP как "Гость". Смягчение требований было выполнено на тот случай, если в PMS существует гость с незаданным или пустым именем.

Дополнительно обращаем внимание, что выполнение команды RoomList происходит транзакционно. Перед выполнением команды проверяются все параметры пакета на соответствие ограничений и, если хоть один параметр не совпадает, команда прекращает выполнение.

Ответ

TurnIP возвращает код 200 OK в случае успешного выполнения операции либо код 400 Bad Request с описанием ошибки в body в формате {"number":nn,"message":"Error Description."}.
Дополнительно в коде 200 OK могут передаваться описания исключений, связанных с временем выезда и именем гостя.

Параметры ответа, коды ошибок

Коды и описания ошибок в 400 Bad Request команды RoomList полностью соответствуют кодам ответа команды CheckIn за исключением кодов:
  • {"number":11,"message":"Room field not set. "},
  • {"number":12,"message":"Room XXX not found."},
  • {"number":17,"message":"Enter the guest's name."},
  • {"number":20,"message":"Check-out time is less than current."}.
Эти ошибки исключены и перенесены в предупреждения кода 200 OK.

Описание сообщений исключений в коде 200 OK

number room message Описание
100 XXX Guest name not set. Для комнаты XXX не задан параметр guestname или имя гостя - пустая строка. Имя гостя в TurnIP будет задано как "Гость".
101 XXX Check-out time is less than current. Для комнаты XXX в госте передано время выезда меньше текущего. Время выезда будет установлено в TurnIP как передано. Имя гостя не будет отображаться в портале, даже если этот гость главный, не будут применяться значение из portalID, channelListID и language, поскольку проживание гостя закончилось.
111
Room field not set. Обязательное поле комнаты "room" не задано для набора. Набор будет проигнорирован.
112 XXX Room XXX not found. Комната XXX не найдена в системе TurnIP и будет пропущена

Выселение всех гостей

Следующий вызов команды RoomList приведет к выселению всех гостей из всех комнат в TunIP

{
    "rooms": [
        {
            "room": "101" //Любой существующий номер комнаты
        }
    ]
}
Нравится0