0  /  12

Интерфейс TurnIP Rest API

Авторизация

Описание

Для авторизации используется механизм API-KEY, передаваемый в заголовке (header) пакета. Каждый пакет, отправляемый PMS в TurnIP, должен содержать в заголовке соответствующей гостинце API-KEY. Ошибочный API-KEY приводит к ошибке 401 Unauthorized. Отсутствие API-KEY приводит к ошибке 400; Bad Request

Пример команды


POST /api/CheckIn HTTP/1.1
Content-Type: application/json
API-KEY: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 642
 
{
    "rooms": [
        {
            "room": "108",
            "channelListID": 41,
            "portalID": 3060,
            "newCheckIn": true,
            "language": "ru",
            "guests": [
                {
                    "guestname": "Иван Иванович",
                    "guestID": "123",
                    "guestGroupID": "1234",
                    "checkOutDateTime": "15/12/2023 12:00",
                    "mainGuest": true
                },
                {
                    "guestname": "Лидия Петровна",
                    "guestID": "321",
                    "guestGroupID": "1234",
                    "checkOutDateTime": "15/12/2023 12:00",
                    "mainGuest": false
                }
            ]
        }
    ]
}
 
HTTP/1.1 200 OK
Transfer-Encoding: chunked

Ошибки

  • Ошибочный API-KEY: 400 BadRequest

Hello

Описание

Команда возвращает имя организации и имя гостиницы. Может использоваться для проверки связи.

Направление

PMS -> TurnIP

Метод

GET

Запрос


GET /api/Hello HTTP/1.1
API-KEY: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

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

Команда не имеет параметров в body.

Ответ


HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
{
    "organizationName": "Имя организации",
    "hotelName": "Имя гостиницы"
}

Параметры ответа

Параметр Тип Значение
organizationName string Имя организации, к которой принадлежит гостиница
hotelName string Имя гостиницы, соответствующая оправленному в заголовке API-KEY

GetPortalList

Описание

Команда возвращает список гостевых порталов, созданных в гостинице. Эти порталы могут использоваться в команде CheckIn для установки индивидуального портала гостя на период его проживания.

Направление

PMS -> TurnIP

Метод

GET

Запрос


GET /api/GetPortalList HTTP/1.1
API-KEY: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

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

Команда не имеет параметров в body.

Ответ


HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
[
    {
        "id": 1234,
        "name": "Основной портал"
    },
    {
        "id": 5678,
        "name": "Праздничный портал"
    },
    {
        "id": 9012,
        "name": "Портал для лобби"
    },
    {
        "id": 3456,
        "name": "Клуб Соккер"
    },
    {
        "id": 3065,
        "name": "Новогодний портал"
    }
]

Параметры ответа

Параметр Тип Значение
id number Идентификатор гостевого портала. Это значение в дальнейшем может быть передано в параметр "portalID": команды CheckIn.
name string Имя гостевого портала.

GetChannelList

Описание

Команда возвращает набор Списков каналов, созданных в гостинице. Списки каналов могут использоваться в команде CheckIn для установки индивидуального списка каналов гостя на период его проживания. Например, как механизм платных каналов в гостинице.

Направление

PMS -> TurnIP

Метод

GET

Запрос


GET /api/GetChannelList HTTP/1.1
API-KEY: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

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

Команда не имеет параметров в body.

Ответ


HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
[
    {
        "id": 12,
        "name": "Основной список для гостевых номеров"
    },
    {
        "id": 34,
        "name": "Каналы для лобби и ресторана"
    },
    {
        "id": 56,
        "name": "Спортивные каналы"
    }
]

Параметры ответа

Параметр Тип Значение
id number Идентификатор списка каналов. Это значение в дальнейшем может быть передано в параметр "channelListID": команды CheckIn.
name string Имя списка каналов.

CheckIn

Описание

Команда производит заселение гостей в номера.

Направление

PMS -> TurnIP

Метод

POST

Запрос


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

{
    "rooms": [
        {
            "room": "101", //Комната
            "channelListID": 41, //Индивидуальный список ТВ-каналов
            "portalID": 3060, //Индивидуальный портал
            "newCheckin": false, //Новый заезд
            "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,
            "newCheckin": false,
            "roomLanguage": "ru",
            "guests": [
                {
                    "guestname": "Дмитрий Владимирович",
                    "checkOutDateTime": "24/12/2023 12:00",
                    "mainGuest": true,
                    "guestID": "567896",
                    "guestGroupID": "123456654321"
                }
            ]
        }
    ]
}


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

Параметр Тип Значение
rooms array Структура, содержащая список комнат, в которые производится заселение.
rooms:room string Комната, в которою производится заселение. Обязательный параметр.
rooms:channelListID number Индивидуальный список ТВ-каналов, устанавливаемый гостю на период проживания. Список каналов будет применяться к комнате только на период проживания главного гостя в комнате (см. параметр mainGuest).
Идентификатор гостевого портала может быть получен с помощью команды GetChannelList.
rooms:portalID number Индивидуальный портал, устанавливаемый гостю на период его проживания. Индивидуальный портал будет применяться к комнате только на период проживания главного гостя в комнате (см. параметр mainGuest).
Идентификатор гостевого портала может быть получен с помощью команды GetPortalList.
rooms:newCheckin boolean Выселить всех предыдущих гостей из номере пред операцией: true или операция подселения: false. Значение по умолчанию: false.
rooms:language string Язык портала гостя. Имеет эффект только для главного гостя (см. параметр mainGuest). Если не передается, используется язык портала по умолчанию.
rooms:guests array Структура, содержащая список гостей, заезжающих в комнату.
rooms:guests:guestname string Имя гостя. Обязательный параметр.
rooms:guests:checkOutDateTime string Время выезда гостя. Обязательный параметр. Время заезда всегда устанавливается равным времени проведения операции поселения (текущему времени).

Формат "DD/MM/YYYY HH:MM".

Ограничение: время выезда должно быть больше текущего времени. Передача времени выезда меньшего текущего привет к ошибке 400 Bad Request: {"number":20,"message":"Check-out time is less than current."}.
rooms:guests:mainGuest boolean Устанавливает данного гостя главным в комнате. На период проживания главного гостя применяются параметры rooms:channelListID и rooms:portalID, если такие передаются. В комнате может быть только один главный гость.

Значение по умолчанию: false.

Если производится поселение гостей в пустую комнату, которая не имеет главного гостя, и при этом явно не задан параметр "mainGuest": true у одного из гостей, TurnIP назначит главного гостя произвольно из списка гостей, передаваемых из PMS.

Если производится подселение гостя в комнату с уже имеющимся главным гостем, а у подселяемого нового гостя установлен параметр "mainGuest": true, то произойдет замена главного гостя в комнате.

Недопустима передача двух гостей с одновременно установленным признаком "mainGuest": true. Такой вызов приведет к ошибке 400 Bad Request: {"number":16,"message":"There is more than one main guest listed for room @room."}.

Также см. раздел Главный гость документации TurnIP.
rooms:guests:guestID string Идентификатор гостя в сторонней системе (PMS).
rooms:guests:guestGroupID string Идентификатор группы гостя в сторонней системе (PMS).

Ограничения

  • В перечислении комнат не допускаются повторения.
  • Имя гостя - обязательный параметр.
  • В комнате может быть только один главный гость.
  • В комнате каждый гость должен быть уникален в разрезе "guestID":, если код передается
  • Время выезда должно быть больше текущего времени.
  • Попытка заселить гостя в комнату, определённую как общественную зону, приведет к ошибке.
  • Попытка заселить гостя в комнату, отмеченную как недоступная, приведет к ошибке.

Ответ

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

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

Number Message Описание
10 Requires no duplicates of the room field. В запросе переданы два одинаковых номера комнаты. Номера комнат должны быть уникальны.
11 Room field not set. В запросе отсутствует обязательный параметр комната - "room":.
12 Room XXX not found. Передан несуществующий номер комнаты.
13 Room XXX not for living. Попытка засление гостя в комнату, не являющейся комнатой для проживания.
14 Room XXX not available. Попытка засление гостя в комнату, у которой в настройках снят признак доступности.
15 Portal not found. В параметре "portalID": передан код несуществующего в гостинице гостевого портала.
16 There is more than one main guest listed for room XXX. Для комнаты XXX указан более чем один главный гость. В комнате может быть только один главный гость. Неразрешимый конфликт.
17 Enter the guest's name. Не передан обязательный параметр "guestname": или имя гостя пустое.
18 Specify checkOutDateTime for main guest. Не передан обязательный параметр "checkOutDateTime": для главного гостя в комнате.
19 Invalid field format checkOutDateTime. Ошибка в формате поля "checkOutDateTime":.
20 Check-out time is less than current. Время, переданное в поле "checkOutDateTime":, меньше текущего времени.
21 Channel list not found. В параметре "channelListID": передан код несуществующего в гостинице списка каналов.
22 The request for the room XXX contains the same guestID. В параметрах "guestID": переданы задублированные коды в разрезе одной комнаты. Показан заезд одного и того же гостя в одну комнату. Комната может содержать только уникальных гостей.
22 A guest with the specified guestID yyyyyy already lives in the room XXX. В параметре "guestID": передан код, уже проживающего в комнате гостя. Комната может содержать только уникальных гостей.

CheckOut

Описание

Команда производит выселение гостей из комнат.

Можно произвести выселение всего номера, конкретного гостя или группы гостей.

Параметры запроса логически складываются - принцип фильтра. Так, например, вы можете выселить конкретного гостя из конкретного номера, передав параметры room и guestID. Выселение будет произведено по совпадению пары, другие гости останутся в комнате.

При этом, если:
  • Передана только комната, будет выселена комната целиком.
  • Если передан только гость, он будет выселен из всех занимаемых им комнат.
  • Если передана только группа, будут выселены все гости группы из занимаемых ими комнат.

Направление

PMS -> TurnIP

Метод

POST

Запрос


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

{
    "checkoutlist": [
        {
            "room": "101" //Комната
            ,"guestID": "567897" //Идентификатор гостя
            ,"guestGroupID": "123456654321" //Группа гостей
        },
        {
            "room": "108"
            ,"GuestID": "567896"
            ,"guestGroupID": "12345"
        }
    ]
}

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

Параметр Тип Значение
checkoutlist array Структура, содержащая фильтр гостей, которых необходимо выселить.
checkoutlist:room string Комната, из которой необходимо произвести выселение гостя.
checkoutlist:guestID string Идентификатор гостя, которого необходимо выселить.
Идентификатор гостя изначально передается в TurnIP во время поселения гостя командой CheckIn, параметром rooms:guests:guestID
checkoutlist:guestGroupID stringr Идентификатор группы, гостей которой необходимо выселить.
Идентификатор группы гостя изначально передается в TurnIP во время поселения гостя командой CheckIn, параметром rooms:guests:guestGroupID

Ограничения

  • При вызове должен быть передан как минимум один параметр: room, guestID или guestGroupID. Вызов без параметров не приведет к ошибке, но и не произведет никаких действий.
  • Номер комнаты должен существовать в системе. Передача несуществующего номера комнаты приведет к ошибке 400 Bad Request {"number":12,"message":"Room XXX not found."
  • При выселении возможна систуация, когда выселяется главный гость из комнаты, но в комнате остаются другие гости. Это не приведет к ошибке, система сама назначит нового главного гостя в системе, уведомив об этом в ответе. Следует обрабатывать такие сообщения, если вы используете механизм основного плательщика в вашей PMS.
    Такая ситуация может возникнуть при использовании параметров guestID или guestGroupID.
    Пример. Выполняется поселение группы гостей, в каждой комнате один гость, автоматически становящийся главным для комнаты, в которую поселен. Далее в одну из комнат, например, в комнату 101 производится подселение гостя, не относящегося к группе (у него другое, отличное от основной группы значение в параметре guestGroupID или параметр guestGroupID вообще не передан при поселении - гость без группы). После этого производится выселение группы гостей, когда команда CheckOut вызывается с единственным параметром guestGroupID. Поскольку из комнаты 101 выселен главный гость, определенный при заезде группы, оставшийся в комнате гость будет назначен главным для ее.

    Подробнее о главном госте в системе см. в разделе документации Заезд гостя.

Ответ

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

Обращаем внимание, что параметры команды работают по принципу фильтра. Вызов команды без параметров вернет 200 OK, при этом команда не выполнит никаких действий.
В случае некритических исключений, команда так же вернет 200 OK с описанием этих исключений.

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

Коды ошибок в 400 Bad Request

Number Message Описание
12 Room XXX not found. В параметре room передан несуществующий в системе TurnIP номер комнаты.

Исключения в 200 OK

Number Room guestID guestGroupID Message Описание
102 XXX не передается не передается There are no stays available for CheckOut. После применения фильтра, нет гостей для выселения из комнаты XXX.
103 XXX yyyyyy не передается Сheck outed guest is the main guest in the room. Another guest is appointed as the main guest Произведено выселение гостя с идентификатором yyyyyy, который являлся главным гостем в комнате XXX. Система произвольно назначила нового главного гостя в комнате XXX.
104 не передается yyyyyy не передается GuestID not found. Гость с идентификатором yyyyyy, не найден в системе TurnIP.
105 не передается не передается zzzzzz GuestGroupID not found. Группа гостей с идентификатором zzzzzz, не найдена в системе TurnIP.

Примеры

Выселение всех гостей комнаты 101


{
    "checkoutlist": [
        {
            "room": "101"
        }
    ]
}

Выселение всех гостей группы 12345 из всех занятых этой группой комнат


{
    "checkoutlist": [
        {
            "guestGroupID": "12345" 
        }
    ]
}

Выселение гостя 567896 из номера 101, выселение всего номера 102 и выселение гостя 567897 из всех занимаемых им номеров


{
    "checkoutlist": [
        {
            "room": "101",
            "GuestID": "567896"
        },
        {
            "room": "102"
        },
        {
            "GuestID": "567897"
        }
    ]
}

Update

Описание

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

Направление

PMS -> TurnIP

Метод

POST

Запрос


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

{
    "update": [
        {
            "filter": {
                "room": "101",
                "guestID": "567896",
                "guestGroupID": "12345"
            },
            "values": {
                "guestname": "Дмитрий Леонидович",
                "checkOutDateTime": "22/03/2024 12:00",
                "mainGuest": true,
                "channelListID": 42,
                "portalID": 3062,
                "language": "ru"
            }
        }
    ]
}

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

Параметр Тип Значение
filter array Структура, содержащая фильтр, который будет применен для обновления.
filter:room string Комната, в которой производятся изменения.
filter:guestID string Идентификатор гостя, изменения по которому производятся.
Идентификатор гостя изначально передается в TurnIP во время поселения гостя командой CheckIn, параметром rooms:guests:guestID
filter:guestGroupID string Идентификатор группы гостей по которой производятся изменения.
Идентификатор группы гостя изначально передается в TurnIP во время поселения гостя командой CheckIn, параметром rooms:guests:guestGroupID
values array Структура со списком значений, которые требуется изменить.
values:guestname string Имя гостя.
values:checkOutDateTime string Время выезда гостя.

Формат "DD/MM/YYYY HH:MM".

Ограничение: время выезда должно быть больше текущего времени. Передача времени выезда меньшего текущего привет к ошибке 400 Bad Request: {"number":20,"message":"Check-out time is less than current."}.
values:mainGuest boolean Устанавливает данного гостя главным в комнате. На период проживания главного гостя применяются параметры channelListID и portalID, если такие заданы. В комнате может быть только один главный гость.

Также см. раздел Главный гость документации TurnIP.
values:channelListID number Индивидуальный список ТВ-каналов, устанавливаемый гостю на период проживания. Список каналов будет применяться к комнате только на период проживания главного гостя в комнате (см. параметр mainGuest).
Идентификатор гостевого портала может быть получен с помощью команды GetChannelList.
values:portalID number Индивидуальный портал, устанавливаемый гостю на период его проживания. Индивидуальный портал будет применяться к комнате только на период проживания главного гостя в комнате (см. параметр mainGuest).
Идентификатор гостевого портала может быть получен с помощью команды GetPortalList.
values:language string Язык портала гостя. Имеет эффект только для главного гостя (см. параметр mainGuest). Если не установлен, используется язык портала по умолчанию.

Ограничения

  • Если в фильтре передана только комната (параметр room) то,
    • Если в комнате есть только один гость, то допустимы все параметры структуры values;
    • Если в комнате более одного гостя, то допустимы все параметры структуры values кроме параметров guestname и mainGuest.
      Такая выборка возвращает более одного гостя. Если попробовать изменить имя гостя или признак главногого гостя на выборке из нескольких гостей, будет выдана ошибка 400 Bad Request {"number":40,"message":"Incompatible parameters."}.
  • Если в фильтре передан только гость (параметр guestID) , то допустимы все параметры структуры values. Если гость в комнате не является главным, и не определяется главным в этой команде, то параметры channelListID и portalID будут проигнорированы.
  • Если в фильтре передана только группа (параметр guestGroupID) , то допустимы все параметры структуры values, кроме параметра mainGuest. Если гость в полученной в выборке не является главным в комнате, то параметры channelListID и portalID будут проигнорированы.

В общем случае, если после применения фильтров получили: 

  • один гость выборке: менять всё. Если гость не является главным, то параметры channelListID и portalID будут проигнорированы.
  • несколько гостей: менять всё, кроме guestname и mainGuest. Но если в гости в пакете по отбору не являются главными, параметры channelListID и portalID будут проигнорированы.

Подробнее о главном госте в системе см. в разделе документации Заезд гостя.

Ответ

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

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

Number Message Описание
12 Room XXX not found. В параметре room передан несуществующий в системе номер комнаты.
20 Check-out time is less than current. Время в параметре checkOutDateTime меньше текущего времни.
40 Incompatible parameters. Переданы несовместимые параметры. См. выше Ограничения. Часто при установке параметра guestname и/или mainGuest, когда выборка по фильтру возвращает более одного гостя в комнате.

Примеры

Изменение сроков проживания всех гостей в комнатах 101 и 108


{
    "update": [
        {
            "filter": {
                "room": "101"
            },
            "values": {
                "checkOutDateTime": "23/03/2024 12:00"
            }
        },
        {
            "filter": {
                "room": "108"
            },
            "values": {
                "checkOutDateTime": "23/03/2024 12:00"
            }
        }
    ]
}
}

Изменение имени гостя с идентификатором 567896 во всех связанных с ним комнатах

Гостю 567896 будет назначено новое имя "Дмитрий Леонидович"

{
    "update": [
        {
            "filter": {
                "guestID": "567896"
            },
            "values": {
                "guestname": "Дмитрий Леонидович"
            }
        }
    ]
}

Назначение гостя с идентификатором "567896" главным в комнате "101", установка времени выезда этого гостя, до которого будут действовать определяемые в этой же команде: русский язык портала, индивидуальный список каналов 42 и индивидуальный портал гостя 3062

Доступные списки каналов могут быть получены командой GetChannelList, а доступные порталы гостей командой GetPortalList.

{
    "update": [
        {
            "filter": {
                "room": "101",
                "guestID": "567896"
            },
            "values": {
                "checkOutDateTime": "22/03/2024 12:00"
                ,"mainGuest": true
                ,"channelListID": 42
                ,"portalID": 3062
                ,"language": "ru"
            }
        }
    ]
}

Изменение срока проживания всех гостей группы "12345" во всех занимаемых группой комнатах, установка индивидуального портала для для гостей в этих комнатах

Доступные порталы гостей в гостинице могут быть получены командой GetPortalList.
* Если гость в комнате не является главным, параметр "portalID": будет проигнорирован. Параметры "portalID":, "channelListID":, "language": применяется только к главному гостю в комнате

{
    "update": [
        {
            "filter": {
                "guestGroupID": "12345"
            },
            "values": {
                "checkOutDateTime": "22/03/2024 12:00",
                "portalID": 3062
            }
        }
    ]
}

Установка индивидуального портала 3062 и индивидуального списка каналов 42 для комнат 101 и 108

Индивидуальный портал и индивидуальным список каналов будут применяться до выезда главных гостей в этих комнатах. Подробнее о главном госте в документации TurnIP.
Доступные списки каналов могут быть получены командой GetChannelList, а доступные порталы гостей командой GetPortalList.

{
    "update": [
        {
            "filter": {
                "room": "101"
            },
            "values": {
                "channelListID": 42,
                "portalID": 3062
            }
        },
        {
            "filter": {
                "room": "108"
            },
            "values": {
                "channelListID": 42,
                "portalID": 3062
            }
        }
    ]
}

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" //Любой существующий номер комнаты
        }
    ]
}

Message

Описание

Команда производит отправку сообщения на комнаты, которым подключены ТВ-дисплеи.

Направление

PMS -> TurnIP

Метод

POST

Запрос


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

{
  "from": "Админстрация", // отправитель, необязательный
  "subject": "тема", // тема сообщения, необязательный
  "body": "сообщение 11", // тело сообщения, обязательный, если не задано поле "subject"
  "deliveryType": 0, //0 - доставить немедленно, 1 - доставить в sendOn, по умолчанию 0, необязательно
  "sendOn": "29/01/2024 15:35", //дата отправки, обязательно при установке deliveryType = 1
  "storeUntil": "02/02/2024 12:58", //дата хранения сообщения у гостя, необязательный
  "recipient": ["101", "108" ], //- список комнат, обязательный
  "popUp": false // показывать всплывающим сообщением, необязательный
}

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

Параметр Тип Значение
from string Отправитель сообщения, отображаемый гостю. Необязательный параметр. Если не задан заполняется именем отеля из настроек гостиницы. Максимально 200 символов.
subject string Тема сообщения, отображаемая гостю. Необязательный параметр. Если не указан заполняется значением "Новое сообщение". Максимально 200 символов.
body string Тело сообщения. Максимально 2000 символов. Обязательный параметр, если не задано поле "subject". Если передано поле темы, может быть пропущено.
Тело сообщения поддерживает HTML теги.
deliveryType int 0 - доставить немедленно, 1 - запланировать доставку в дату, заданную в параметре "sendOn", Значение по умолчанию 0. Необязательный параметр.
sendOn string Дата отправки сообщения. Применимо, если отправка запланирована (deliveryType = 1). Обязательный параметр при установке deliveryType = 1.
Формат "DD/MM/YYYY HH:MM".
storeUntil string Дата хранения сообщения в комнате. Выезд и заезд гостя имеет приоритет над данным параметром. При заезде и выезде гостя сообщения удаляются. Необязательный параметр. Если параметр не задан, устанавливается как расчетное время выезда из настроек гостиницы.
Формат "DD/MM/YYYY HH:MM".
recipient Array Массив строк - список комнат, в которые будет отправлено сообщение. Обязательный параметр.
popUp boolean Показывать всплывающим сообщением, в том числе во время просмотра ТВ-канала, если true, или доставить в список сообщений, если false. Необязательный параметр. Значение по умолчанию определяется настройкой в конкретной гостинице.

Ограничения

  • Обязательно к передаче поле subject или поле body. В противном приведет к ошибке 400 Bad Request: {"number":10,"message":"Subject field or message field is empty."}. Хотя бы одно из двух этих полей должно быть передано обязательно, чтобы не было пустых сообщений.
  • Если отправка сообщения запланирована (задан параметр deliveryType = 1), обязательно к заполнению поле sendOn - дата отправки сообщения.
  • Поля отправитель (from) и тема (subject) не могут быть больше 200 символов включая пробелы.
  • Поле тело сообщения (body) не может быть больше 2000 символов включая пробелы.

Ответ

TurnIP возвращает код 200 OK с идентификатором отправленного сообщения в случае успешного выполнения операции либо код 400 Bad Request с описанием ошибки.

Ответ 200 ОК


HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
{
    "messageID": 159 // Идентификатор сообщения
}

Параметры ответа

Параметр Тип Значение
messageID number Идентификатор отправленного сообщения.

Ответ 400 Bad Request



HTTP/1.1 400 Bad Request
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
{
    "number": 10, // Номер ошибки
    "message": "Subject field or message field is empty." //Содержание ошибки
}

Коды ошибок

Number Message Описание
50 Subject field or message field is empty Не заполнено хотя бы одно из полей subject или body.
51 If the value of deliveryType = 1, the value of the "sendOn" field must be filled in Выполняется запланированная отправка сообщения (передан параметрdeliveryType = 1), но при этом не указана дата отправки сообщения в поле sendOn.
52 The "recipient" field is required Не задано поле получателей сообщения recipient.
53 There are no rooms with linked TVs В поле recipient переданы комнаты, в которых нет подключенных телевизоров.
54 The message body exceeds 2000 characters Поле тела сообщения body содержит более 2000 символов.
55 The "from" field exceeds 200 characters Поле От сообщения from содержит более 200 символов.
56 The "subject" field exceeds 200 characters Поле Тема сообщения subject содержит более 200 символов.
57 Invalid field format sendOn Неверный формат даты в поле sendOn.
58 Invalid field format storeUntil Неверный формат даты в поле storeUntil.

GetMessageStatus

Описание

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

Направление

PMS -> TurnIP

Метод

POST

Запрос


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

{
    "messageID": 159 // Идентификатор сообщения
}

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

Параметр Тип Значение
messageID number Идентификатор сообщения, полученный как результат команды отправки сообщения Message.

Ответ

TurnIP возвращает код 200 OK и статусы сообщения в разрезе комнат в случае успешного выполнения операции либо код 404 Not Found: Message not found., если передан несуществующий идентификатор сообщения.

Ответ 200 ОК


HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
[
    {
        "room": "101", // комната
        "status": 3 // статус
    },
    {
        "room": "108",
        "status": 3
    }
]

Параметры ответа

Параметр Тип Значение
room string Комната, по которой определяется статус (status).
status number Статус сообщения в комнате. См. таблицу ниже.

Статусы сообщений

Сататус (status) Значение
0 Удалено
1 Прочитано
2 Получено
3 Отправлено
4 Удаляется
5 Ждет отправки (запланировано)
6 Не доставлено

MessageDelete

Внимание!
Статья в процессе наполнения, может содержат ошибки и неточности. Эта надпись исчезнет

Описание

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

Направление

PMS -> TurnIP

Метод

POST

Запрос


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

{
    "messageID": 159 // Идентификатор сообщения
}

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

Параметр Тип Значение
messageID number Идентификатор сообщения, полученный как результат команды отправки сообщения Message.

Ответ

TurnIP возвращает код 200 OK и статусы удаления сообщений в разрезе комнат в случае успешного выполнения операции либо код 404 Not Found: Message not found., если передан несуществующий идентификатор сообщения.

Ответ 200 ОК


HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
[
    {
        "room": "101", // комната
        "status": 0 // статус
    },
    {
        "room": "108",
        "status": 0
    }
]

Параметры ответа

Параметр Тип Значение
room string Комната, по которой определяется статус (status).
status number Статус удаления сообщения в комнате. См. таблицу ниже.

Статусы сообщений

Сататус (status) Значение
0 Запрос на удаление успешен
4 Сообщение в процессе удаления
8 Сообщение удалено ранее

Лицензионное соглашение

Термины и определения

Правообладатель – Общество с ограниченной ответственностью «ХотелСтартАп», ИНН 7714949661, являющееся разработчиком Системы гостиничного интерактивного телевидения "TurnIP", что подтверждается Свидетельством о государственной регистрации программы для ЭВМ № 023663352 от 22 июня 2023 г.

Интерфейс TurnIP Rest API – описание протокола интеграции с внешними системами, включая, но не ограничиваясь системами автоматизированного управления гостиницами (PMS), размещённое первоначально в сети интернет на сайте https://turn-ip.ru или на любом другом сайте прямо или косвенно относящемуся к Правообладателю.

Внешняя система – любая система, использующая протокол Интерфейса TurnIP Rest API для подключения к Системе гостиничного интерактивного телевидения "TurnIP".

PMS – Property Management System – программное обеспечение – система автоматизированного управления гостиницей, разновидность Внешней системы.

Третья система – любое другое программное обеспечение, не являющееся Интерфейсом TurnIP Rest API или Внешней системой.

Пользователь – любое физическое или юридическое лицо, использующее или намеревающееся использовать Интерфейс TurnIP Rest API.

Права и ограничения

Правообладатель предоставляет право любому пользователю использовать Интерфейс TurnIP Rest API с целью подключения Внешних систем к Системе гостиничного интерактивного телевидения "TurnIP" как в полном наборе команд, описанных в документации Интерфейса TurnIP Rest API, так и в части этих команд.

Правообладатель не допускает (не предоставляет право) пользователям копирование протокола Интерфейса TurnIP Rest API с целью имитации подключений своих систем (Третьих систем) к Внешним системам, когда Внешняя система использует протокол Интерфейса TurnIP Rest API для подключения к системе пользователя (Третьей системе), используя команды протокола Интерфейс TurnIP Rest API как частично, так и полностью.

Правообладатель допускает использование протокола Интерфейса TurnIP Rest API и его документации только для подключения к Системе гостиничного интерактивного телевидения "TurnIP".