API для виджетов бронирования на сайте

Материал из Frontdesk24 Wiki
Перейти к: навигация, поиск

API позволяет сделать поисковый запрос, получить наличие мест и цены на указанные даты и потом сделать бронирование

Запрос наличия мест и цен
GET-запрос следующего вида
https://pms.frontdesk24.ru/externalPrices/jsSearchJoin.aspx?arrival=2020-12-20%2010:00&depart=2020-12-20%2020:00&adults=1&byHours=1&ages=&filter=[{token:e2b7a588-abd2-424f-b5b6-dfdefdd4be1f}]&plainJson=1
Параметры:
arrival - дата и время заезда. формат гггг-ММ-дд%20чч:мм
depart - дата и время выезда. формат гггг-ММ-дд%20чч:мм
adults - число взрослых
byHours - признак что бронирование почасовое
ages - возраста детей. формат [x,y,z]
filter - в нём только токен. токен можно найти в Личном кабинете в конструкторе онлайн-виджета
plainJson - признак, что нужно именно в JSON (иначе будет Javascript)

Доступные даты для календаря
GET-запрос следующего вида
https://pms.frontdesk24.ru/externalPrices/jsAvailables.aspx?token=e2b7a588-abd2-424f-b5b6-dfdefdd4be1f&dateFrom=2022-08-11&dateTo=2022-08-30&roomId=2925&plainJson=1
Параметры:
dateFrom - начало интервала
dateTo - конец интервала
roomId - категория номера (необязательно)
В ответе будет массив интервалов, доступных для бронирования

Получение числа номеров
Если планируется бронировать несколько номеров сразу, пригодится запрос, который покажет число свободных номеров (чтобы пользователь не мог выбрать больше, чем их есть)
Формат запроса:
https://pms.frontdesk24.ru/api/online/Availables?token=e2b7a588-abd2-424f-b5b6-dfdefdd4be1f&arrival=2020-07-30&departure=2020-08-31
Формат ответа:
[
    {
        "roomTypeId": 2925,
        "roomTypeName": "Стандарт",
        "freeRooms": 7
    },
    {
        "roomTypeId": 2941,
        "roomTypeName": "Люкс",
        "freeRooms": 15
    }
]


Создание бронирования
Для создания бронирования нужно сделать POST запрос с сервера (не Javascript) на https://pms.frontdesk24.ru/externalPrices/CreateOrder.aspx, передав в параметре token приватный токен, а в data структуру следующего вида. Если передать в массиве несколько бронирований, то они будут объединены в один заказ.

[
    {
        "arrival": "2020-08-21",
        "timeArrival":"12:00",
        "departure": "2020-08-21",
        "timeDeparture":"14:00",
        "adults": 1,
        "children": 2,
        "ages": [
            7,
            2
        ],
        "roomId": 238,
        "byBedsVariant": false,
        "count": 1,
        "amount": 2400,
        "boardingId": 873,
        "tariffId": 3486,
        "contactName": "Заказчик",
        "contactPhone": "+79161234567",
        "contactEmail": "email@mail.ru",
        "comment": "Комментарий от гостя",
        "source": "site",
        "guests": [
            {
                "surname": "Кошкин",
                "name": "Василий",
                "patronymic": "",
                "phone": "123",
                "email": "vasiliy@koshkin.ru"
            },
            {
                "surname": "Кошкина",
                "name": "Василиса",
                "age": 7
            },
            {
                "surname": "Кошкин",
                "name": "Борис",
                "birthdate": "2013-12-31T20:00:00.000Z"
            }
        ]
    }
]


Отмена бронирования
Для того, чтобы отменить бронирование, нужно сделать POST запрос следующего вида, передав приватный токен и идентификатор заказа

curl --location --request POST 'https://pms.frontdesk24.ru/externalPrices/AnnulateOrder.aspx' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=PRIVATE_TOKEN' \
--data-urlencode 'orderId=1234567'