site:api

Документация API к системе russhotels.ru

Адрес API серверов:

Продакт: https://russhotels.ru

Тест: https://test.api.russhotels.ru/

Документация состоит из описания бизнес-процессов и технической части

hotel/view объявлен устаревшим. Hotel/index возвращает аналогичные данные и позволяет делать меньшее кол-во запросов при интеграции (используя offset и limit = 1000)

Клиенты теперь могут видеть города и гостиницы респ. Беларусь (country id 15)

В типы мест размещения добавили количество фактических спальных мест для взрослых sleeping_place

При запросе изменений, которые произошли в заявке можно не передавать номер лога, если заявка требует подтверждение Клиента.


Для удобства отслеживания обновлений по заявкам добавлено поле last_modified, оно показывает когда последний раз обновлялась заявки или её дочерние объекты (услуги, комментарии, фин. документы и тд). Так же добавлен поисковый фильтр по этому параметру(поля start_last_modified_date и end_last_modified_date)

Модернизирован метод Поиска hotel/index. Теперь можно для фильтрации передавать массив типов размещения. Раньше можно было передавать один тип размещения. Так же добавлен фильтр на гостиницы(hotels)

Модернизирован метод списка гостиниц

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

Модернизирован метод Создания заявки request/create-with-service

Теперь Кураторы от клиента могут указывать контактным лицом по заявке любого своего сотрудника, заполняя поля contact_name, contact_phone и contact_email.

Модернизирован метод Поиска hotel/index. Теперь в нём можно искать предложения на конкретные даты. Расширены возможности по ограничению географии (поиск по нескольким городам, поиск по координатам).

Добавлены пометки является ли предложение бронируемым Онлайн и добавлена информация по условиям отмены бронирования. На 20 июня условия прописываются во всех предложениях фиксировано и все предложения являются оффлайн : online=0

Поля price_netto_client и discount_client можно использовать для самостоятельного расчёта сумм, но необходимо иметь ввиду следующее:

  1. price_netto_client - полная сумма за услугу, discount_client - скидка\комиссия клиенту-агенту(не конечному гостю, а заказчику этой услуги у компании Сусанин).
  2. discount_client - может интерпретироваться по разному, поэтому конечным юридическим документом по-прежнему является счёт
  3. В случае если услуга штрафная (is_penalty = 1), то в счёте будет только сумма price_netto_client

На продакшн сервере hotel/view теперь требует обязательной авторизации. Для гостя доступ закрыт

  1. Поля price_netto_client и discount_client объявлены устаревшими, для получения сумм необходимо использовать Счёт из выходных документов
  2. В услуги добавлено поле is_penalty явно указывающее на наличие Штрафа

Бизнес-процессы

Для клиента бизнес процесс выглядит следующим образом:

  1. Поиск предложения
  2. Создание заявки
  3. Обработка заявки
    1. Менеджер берёт в работу заявку
    2. Если происходят изменения важной для клиента информации, то требуется подтверждение клиента.
    3. Когда происходит фактическое бронирование заявки в гостинице, тогда у заявки статус меняется на Забронирован (бронирование происходит в рамках SLA, подписанного между клиентом и компанией)
  4. Получение финансовых документов (счет + ваучер)

Подробнее в следующих разделах

Для поиска предложений можно использовать метод hotel/index , он показывает гостиницы по определённым параметрам (фильтрация номеров в этом методе не доступна), а так же позволяет искать предложения с заданными датами.

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


В связи со спецификой нашей работы мы приняли решение не тарифицировать заранее ранний заезд и поздний выезд, поэтому предварительный расчет будет как за полные сутки. Так же мы заранее не тарифицируем высокие сезоны. Точная цена будет сообщена только после создания бронирования через метод Создания заявки

Фотографии для гостиниц и номеров в данный момент мы не предоставляем!


Для бронирования необходимо использовать метод создания. В него передаются данные по гостям, те же параметры проживания из пункта 1 и id выбранного номера из пункта 1.

Вся коммуникация по заявке может происходить целиком через API, с помощью:

  1. Статусов заявки
  2. Комментариев клиента и ТФ Сусанин
  3. Email уведомлений, которые система Russhotels может отправлять на адрес, указанный как контактный e-mail

При создании заявки статус будет Новый, когда менеджер возьмёт в работу заявку, статус изменится на Принят. Когда на стороне Сусанина внесены изменения в данные клиента (финансовые, даты\время заезда\выезда, гостей) статус автоматически меняется на Изменён и заявка ожидает принятия изменений, подробнее об этом механизме будет написано далее. Когда бронирование подтверждено в гостинице, то статус будет Забронирован. При аннуляции заявки будет соответствующих статус Аннулирован. Для завершенной заявки статус будет Выполнен. Подробнее про статусы можно прочитать в разделе

При создании заявки у неё статус Новый. После создания к ней добавляется тег «Создана клиентом», чтобы явно можно без просмотра лога увидеть, что заявка создана Клиентом (тег не удаляемый). Подробнее можно прочитать в разделе тегов. Заявки так же могут создаваться менеджером компании Сусанин.

Когда менеджер берёт в работу заявку, он изменяет статус на Принят.

Подтверждением заявки является статус Забронирован, он означает что заявка забронирована, набор услуг и цены подтверждены и зафиксированы.

Как до бронирования так и после менеджер Сусанина может менять любую информацию, но при изменении данных клиента автоматически создаётся тег «Необходимо подтверждение клиента» и меняется статус на Изменён. При наличии статуса и тега менеджер Сусанина не может забронировать заявку и поменять статус.


Все действия по заявке фиксируются в логе заявки


В списке заявок вы будете видеть статус Изменен. Чтобы узнать какие изменения нужно подтвердить смотрите Экшн сводки по изменениям Если нужно детальное представление , с временными метками, пользователями, то только лог.

Если Клиент согласен с изменениями , то отправляет на экшн набор логов, с которыми согласен или просто безусловное согласие с последними изменениями (временные метки учитываются, если вдруг менеджер Сусанина в момент принятия решения внесёт какую-то правку). Так же удаляется тег о необходимости подтверждения и создаётся новый тег «Акцепт клиентом». В комментарий заявки записывается на какие изменения Клиент согласен (номера логов). В логе так же всё фиксируется. Менеджер Сусанина может перевести заявку в статус Забронирован.

Если Клиент не согласен, то на экш отправляется сообщение об отказе. Или через комментарии заявки идёт обсуждение до достижения консенсуса. Если отказ от изменений высылается на экшн, Заявка автоматически аннулируется

В случае если ответа от Клиента нет, то заявка так и продолжает висеть в статусе Изменён.

Если менеджер Сусанина вновь меняет ваши данные, то весь цикл пункта 3.4 повторяется

 Почему возможны изменения в забронированной заявке?
 
 ответ:
  - Клиент до заезда меняет гостей, которые должны были проживать
  - Клиентом дозаказывается услуга, например питание. Клиентом меняется номер.
  - Клиент по какой-либо причине просит уменьшить размер комиссии;
  - Гость не заехал
  - Заехал раньше, а раннего заезда не было, попросил выставить на фирму ранний заезд
  - Выехал раньше\позже
  - Гость пользовался мини-баром
  - и тд

Документы клиенту становятся доступными, как только менеджер откроет к ним доступ (к каждой заявке) или когда у Заявки будет статус Выполнен.

Обратите внимание! Информация в финансовых документах не зафиксирована, а собирается динамически на основании текущей информации заявки.

Клиент может аннулировать заявку только в статусе Новый. Если менеджер Сусанина взял заявку в работу, то аннулировать её можно только через менеджера.

Общие условия отмены указаны при поиске предложения: за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы.

Когда заявка создана, перед фактическим бронированием менеджер компании Сусанин сообщает условия отмены. Для этого могут использоваться поля дата наступления штрафных санкций, размер штрафных санкций, Примечание клиенту, если есть дополнительные условия

Формат

Отправляемые данные могут быть как в XML так и в JSON.

Чтобы отправлять данные в формате JSON должен быть установлен заголовок Content-Type: application/json

Чтобы отправлять данные в формате XML должен быть установлен заголовок Content-Type: application/xml или text/xml

Ответ по умолчанию приходит в JSON формате, чтобы получать ответ в XML укажите заголовок: Accept: application/xml

Авторизация

Адрес: /api/site/login

Метод запрос: POST

Данные:

[
    "username":"admin", 
    "password":"111111"
]

Возвращаемые данные:

[
    'token'=>'0FbEBD-Mo5EzAu9o51684F6hPk7ufCLR',
    'expired'=>'2018-09-22T10:10:11+05:00'
]

Полученный токен используется при работе. Отправляется заголовком способом авторизации Bearer

POST https://russhotels.ru/api/request/index
Accept: application/json
Cache-Control: no-cache
Content-Type: application/json; charset=utf-8
Authorization: Bearer Ciuw2qcWDXbQJIv2tYiB2IeeM9_JEoOc
POST https://russhotels.ru/api/request/index
Accept: application/xml
Cache-Control: no-cache
Content-Type: text/xml; charset=utf-8
Authorization: Bearer Ciuw2qcWDXbQJIv2tYiB2IeeM9_JEoOc

Hotel Гостиницы

Все цены в системе указаны в Рублях РФ

Описание: НЕ ТРЕБУЕТ АВТОРИЗАЦИИ. Список городов и гостиниц.

Адрес: /api/hotel/list

Метод запрос: POST\GET

Данные:

filter - GETпараметр, фильтр выдачи. Только гостиницы = 1, Только города = 2, всё = 3. По умолчанию 3.

last_modified - GET временная метка unixtime последнего обновления гостиницы\цен и тд.

Возвращаемые данные: Набор городов и\или отелей доступный пользователю для поиска. Города без разделения на тип поселения. Набор отелей без разделения на тип:гостиница,хостел, гостевой дом и тд.

Данную выдачу можно использовать для виджетов с автодополнением, у нас используется на главной странице поиска https://russhotels.ru

     {
        "value": "2546",//ид сущности, в данном случае города
        "unic_id": "city-2546",//уникальное значение, которое можно использовать для списков
        "name": "Бутурлино",//название нас. пункта
        "city_country": "Российская Федерация",//страна нахождения нас. пункта
        "address": "",//адрес для нас. пунктов всегда пустой
        "type": "город",//тип строкой
        "code_type": 202,//тип кодом
        "country_id": "1",//страна кодом
        "geo_lat": null,
        "geo_lon": null,
        "last_modified": 1599032229//Временная метка последнего обновления города(гостиниц в нём)
    },
    {
        "value": "3",//ид гостиницы
        "unic_id": "hotel-3",
        "name": "Филтон",//название гостиницы
        "city_country": "Тюмень",//название нас. пункта, где находится гостиница
        "address": "ул. Привокзальная, д. 30",//адрес гост.
        "type": "отель",//тип строкой. Здесь не пишется точный тип гостиницы (хостел, гостевой дом и тд).
        "code_type": 30,//тип кодом
        "city_id": "1",//город кодом
        "geo_lat": "57.0453509",
        "geo_lon": "28.9159137",
        "last_modified": 1550419710б //временная метка последнего обновления отеля\номеров\цен
    },
    

УСТАРЕЛ!

Используйте hotel/index. Он возвращает данных в том же формате, обёрнутые в массив (для получения гостиницы в теле передайте json {«hotels»:[86]}

Описание: Просмотр конкретной гостиницы (на тестовом сервере авторизация не требуется)

Адрес: /api/hotel/view?id=86

Метод запрос: GET\POST

Данные: id - номер гостиницы. Параметр можно передавать как в URI, так и в теле запроса

Возвращаемые данные: Модель гостиницы с номерами и ценами

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

   
{
    "id": "86",//ид гостиницы
    "city": {//объект города гостиницы
        "id": "11",
        "country": {
            "id": "1",
            "name": "Российская Федерация",
            "continent": null,
            "code": null
        },
        "name": "Красноярск",
        "code": null
    },
    "address": "Красноярск, ул. Авиаторов , д.19",//адрес гостиницы
    "post_address": "660077, Россия, Красноярский край, Красноярск, ул. Авиаторов , д.19",//почтовый адрес
    "description_client": "",//Заметка для клиента
    "placement_type": {//тип гостиницы (хостел, гостиница и тд)
        "id": "1",
        "name": "Гостиница",
        "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
    },
    "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы",//Описание условий отмены при бронировании
    "check_in": "14:00",//стандартное время заезда
    "check_out": "12:00",//стандартное время выезда
    "relax_place": "0",//гостиница является местом отдыха
    "hotel_description": "Гостиница МВДЦ Сибирь расположена в городе Красноярск. Гостиница МВДЦ Сибирь - современный отель, соответствующий уровню...", //Описание гостиницы
    "name": "Сибирь",//Название гостиницы
    "created_at": "1251955948",//Дата создания
    "updated_at": "1563381026",//Дата последнего обновления объекта
    "last_modified": "1563381026", //Дата последнего изменения объекта в целом (самой гостиницы или номеров, правил формирования цен и тд). Именно на этот параметр нужно смотреть, чтобы понимать актуальность данных
    "alias": "Park Inn by Radisson Ижевск, Парк Инн Рэдиссон Ижевск",//Псевдонимы через запятую. В основном нужно для гостиниц с англоязычным названием
    "active": "1",//Гостиница актуальная\работает
    "geo_lon": "44.5267469",//координаты
    "geo_lat": "48.7175457",
    "child_updated": "1563381026", //DEPRECATED: тоже самое что last_modified
    "rooms": [//Набор номеров с ценами
        {
            "id": "2073",//ид номера
            "placement_type": {//тип размещения в номере)
                "id": "1",
                "name": "Одноместное",
                "description": null
            },
            "price_stand": "16129",//цена стойки гостиницы (цена за сутки при стандартном заезде\выезде)
            "created_at": "1260329213",//временная метка создания номера
            "updated_at": "1552991831",//временная метка обновления номера
            "name": "Апартаменты",//Название номера
            "food_type": {//Типа питания, включенный в стоимость номера
                "id": "1",
                "name": "Завтрак",
                "description": null
            },
            "online": 0,//Пометка является ли предложение бронируемым онлайн
            "description": "",//Описание номера (практически не используется)
            "price_client": null//Цена клиенту за номер(за сутки или за период).Если null\0 - не задана. Окончательная цена будет подтверждена менеджером Сусанина в услуге, после создании запроса на бронирование клиентом.
        },
        {
            "id": "2074",
            "placement_type": {
                "id": "2",
                "name": "Двухместное",
                "description": null
            },
            "price_stand": "17204",
            "created_at": "1260329365",
            "updated_at": "1552991831",
            "name": "Апартаменты",
            "food_type": {
                "id": "1",
                "name": "Завтрак",
                "description": null
            },
            "description": "",
            "hide": null,
            "price_client": null
        },
        ....
    ]
}

Описание: НЕ ТРЕБУЕТ АВТОРИЗАЦИИ. Поиск гостиниц и их предложений.

Адрес: /api/hotel/index

Метод запрос: POST

Данные:

limit - количество гостиниц в выдаче, по умолчанию 20, максимум = 1000

offset - смещение поисковой выдачи, по умолчанию 0

Ограничение географии:

city_name - имя города, можно передавать часть имени, например чер

cities - массив id, ограничение по городам,. Пример: «cities»:[2, 180]. См список городов и отелей или справочник городов

hotels - массив id, ограничение по отелям,. Пример: «hotels»:[5, 10]. См список городов и отелей

search - строка для поиска по названию гостиниц, адресам и псевдонимам.


Так же доступна фильтрация по координатам, предложения по отелям можно искать в определённом квадрате или круге. (Если указать оба, то поиск будет производится в координатах круга)

Гео координаты передаются в формате double.


geo_lat_center - координата широты центра круга.

geo_lon_center - координата долготы центра круга.

radius - радиус круга в км.


geo_lat_1 - широта 1 точки области.

geo_lon_1 - долгота 1 точки области.

geo_lat_2 - широта 2 точки области.

geo_lon_2 - долгота 2 точки области.


Актуальность:

last_modified - Фильтрация по времени обновлению отеля. Временная метка Unixtime, новее которой отели нужно показывать. Может использоваться для показа отелей, в которых были произведены изменения с указанного времени.

Параметры предложений:

room_placement_type - массив или int , id типа размещения в номере

date_from - дата заезда. Временная метка Unixtime.

date_to - дата выезда. Временная метка Unixtime, должна быть позже даты заезда

arrival_time - Время заезда в формате HH:MM, всегда указывается местное время отеля. (На данный момент по большинству отелей мы не тарифицируем нестандартные заезд\выезд, поэтому данные параметры не влияют на цену предложения)

departure_time - Время выезда в формате HH:MM, всегда указывается местное время отеля.


Параметры передавать в теле запроса. Параметры комбинируется через условие And

Примеры: Поиск можно осуществлять по заданному городу\городам (с помощью ид или search строки). Так же можно задавать параметры предложений, тогда в выдаче будут не все номера, а только запрошенные.

Все возвращаемые данные: Набор моделей гостиниц с номерами и ценами. Пример смотреть в экшене View. Если запрос на предложение на конкретные даты, то стоимость будет указана за весь период проживания, иначе будет стоимость за сутки проживания.


Найти предложения с 20 июня 2020 по 22 июня 2020 на двухместные номера в Спб:

{
  "cities":[4],
  "date_from":1592611200,
  "date_to":1592784000,
  "room_placement_type":[2,8]
  "limit":1
}

Ответ:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

[
    {
        "id": "22",
        "city": {
            "id": "4",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Санкт-Петербург",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "Санкт-Петербург, пл. Александра Невского, д.2",
        "post_address": "191317, Россия, Санкт-Петербург, пл. Александра Невского, д.2",
        "description_client": "",
        "placement_type": {
            "id": "1",
            "name": "Гостиница",
            "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
        },
        "check_in": "14:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "Отель «Москва» – это многофункциональный комплекс в историческом центре Санкт-Петербурга, состоящий из бизнес-отеля категории 4 звезды, конференц- и банкетных залов, кинозалов общей вместимостью до 2200 человек, уютной лаунж-зоны с камином. На территории отеля сосредоточено все для максимально комфортного отдыха и приятного времяпрепровождения гостей – атмосферный кинолофт «Москва» с новинками кино, СПА-центр  с саунами и бассейном, салон красоты, прачечная и химчистка, консьерж-сервис, почта, сувенирные лавки, торговый центр (с аптекой, с магазинами косметики, одежды, обуви, игрушек и др.), супермаркет Prisma 24 часа, 2 парковки. В одном здании отеля  - множество различных ресторанов и баров: панорамный Beef Bar Vosem 24 часа, Пиворама с разнообразной кухней, собственной коптильней и летней террасой, лобби-бар 24 часа, французcкая кондитерская \"Онтроме\", кофейня \"Шоколадница\" со специальным меню категории healthy food, Макдоналдс и Маккафе, итальянский ресторан \"La Cuchina\". Завтрак  \"Шведский стол\" для гостей отеля \"Москва\" проходит в просторном ресторане \"Бальмонт\" (1 и 2 этаж отеля).\r\n\r\nУникальное расположение комплекса, в историческом центре города на набережной Невы в конце Невского проспекта, создает дополнительное преимущество как для деловых, так и для отдыхающих путешественников.  \r\nВ здании отеля находится пересадочная станция метро «Площадь Александра Невского» (3-4 линии). Удобное транспортное сообщение позволяет гостям за 15–20 минут добраться до главных исторических достопримечательностей Санкт-Петербурга: Дворцовой набережной, Эрмитажа, Адмиралтейства, Казанского собора, Русского музея.\r\n\r\nИз окон отеля открывается великолепный вид на набережную Невы, разводной мост Александра Невского и на Александро-Невскую лавру (первого монастыря Санкт-Петербурга 1713 года, одного из первых петербургских архитектурных ансамблей XVIII столетия). Напротив отеля так же располагается Городской музей скульптуры.\r\n\r\nВ 2016 году отель \"Москва\" получил  категорию 4 звезды после прохождения официальной классификации.\r\n(Приказ Министерства культуры Российской Федерации от 11 июля 2014 г. №1215, зарегистрирован в Минюсте РФ 29 декабря 2014 г. ,рег. №35473)  в соответствии со ст. 36 ФЗ № 108 от 7 июня 2013 года «О подготовке и проведении в РФ чемпионата мира по футболу FIFA 2018 года и Кубка конфедераций FIFA 2017 года»).\r\n\r\n\r\nАдрес отеля «Москва»:  Площадь Александра Невского, дом 2, Центральный район Санкт-Петербурга, Россия. Индекс: 191317",
        "name": "Москва",
        "created_at": "1251875054",
        "updated_at": "1586234139",
        "alias": "",
        "geo_lat": "59.9244060",
        "geo_lon": "30.3857930",
        "rooms": [
            {
                "id": "2207",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1260507610",
                "updated_at": "1553341569",
                "name": "Стандарт двухместный",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 6192,
                "online": 0
            },
            {
                "id": "2210",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1260509297",
                "updated_at": "1553341569",
                "name": "Комфорт двухместный",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 7796,
                "online": 0
            },
            {
                "id": "2212",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1260509426",
                "updated_at": "1553341569",
                "name": "Комфорт бизнес двухкомнатный",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            },
            {
                "id": "2214",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1260509747",
                "updated_at": "1553341569",
                "name": "Полулюкс двухкомнатный",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            },
            {
                "id": "2217",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1260509933",
                "updated_at": "1553341569",
                "name": "Люкс двухкомнатный",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            },
            {
                "id": "2219",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1260510653",
                "updated_at": "1553341569",
                "name": "Люкс бизнес (трехкомнатный)",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            },
            {
                "id": "2221",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1260510687",
                "updated_at": "1553341569",
                "name": "Люкс плюс (трехкомнатный)",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            },
            {
                "id": "13591",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1428297501",
                "updated_at": "1553341569",
                "name": "Семейный +",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            }
        ],
        "last_modified": "1586234139",//Дата последнего изменения объекта в целом (самой гостиницы или номеров, правил формирования цен и тд). Именно на этот параметр нужно смотреть, чтобы понимать актуальность данных
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    }
]

Чтобы получить предложения по заданному радиусу:

{
  "date_from":1592611200,
  "date_to":1592784000,
  "room_placement_type":1,
  "radius":2,  
  "geo_lat_center":59.7244060,
  "geo_lon_center":30.3857930
  
}

Ответ:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

[
    {
        "id": "3601",
        "city": {
            "id": "549",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Пушкин",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "Пушкин, ул. Ленинградская , д.93",
        "post_address": "191001, Россия, Санкт-Петербург, Пушкин, ул. Ленинградская , д.93",
        "description_client": "",
        "placement_type": {
            "id": "1",
            "name": "Гостиница",
            "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
        },
        "check_in": "14:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "Гостиница Охотничья усадьба расположена в городе Пушкин, в 5 минутах езды от Александровского парка и располагает террасой и бесплатной парковкой. К услугам гостей 25 номеров различной ценовой категории. В 3 км можно посетить Екатерининский дворец. В оформленных в классическом стиле номерах имеются мини-бар и телевизор с плоским экраном и кабельными каналами. В собственной ванной комнате есть фен, тапочки и бесплатные туалетно-косметические принадлежности. Гости смогут посетить ресторан на территории, в котором подают блюда русской и европейской кухонь, а также бар, где можно заказать напитки. Отель расположен в 12 км от аэропорта Пулково, в 25 км от города Санкт-Петербурга и в 5 минутах езды от железнодорожного вокзала Пушкина.",
        "name": "Охотничья усадьба",
        "created_at": "1443686855",
        "updated_at": "1548840775",
        "alias": "",
        "geo_lat": "59.7334179",
        "geo_lon": "30.3981726",
        "rooms": [
            {
                "id": "104974",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1466761804",
                "updated_at": "1550419709",
                "name": "Стандарт",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 6636,
                "online": 0
            },
            {
                "id": "139273",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1548840758",
                "updated_at": "1548840758",
                "name": "Двухместный номер с 1 кроватью",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "139276",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1548840766",
                "updated_at": "1548840766",
                "name": "Трехместный",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "139277",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1548840772",
                "updated_at": "1548840772",
                "name": "Семейный",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            }
        ],
        "last_modified": "1550419709", //Дата последнего изменения объекта в целом (самой гостиницы или номеров, правил формирования цен и тд). Именно на этот параметр нужно смотреть, чтобы понимать актуальность данных
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    },
    {
        "id": "9200",
        "city": {
            "id": "549",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Пушкин",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "Малая ул., 13, Пушкин",
        "post_address": "196601, Россия, Санкт-Петербург, Пушкин, ул. Малая, д.13",
        "description_client": "",
        "placement_type": {
            "id": "11",
            "name": "Гостевой дом",
            "declensions": "гостевой дом,гостевой дом,гостевому дому,гостевой дом,гостевому дому,гостевом доме,гостевом доме"
        },
        "check_in": "14:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "Гостиница Дом Паткуль расположена в городе Пушкин, в 12 км от аэропорта Пулково. К услугам гостей бесплатный Wi-Fi, ресторан, 10 номеров различной ценовой категории и бесплатная частная парковка. Во всех номерах имеется телевизор с плоским экраном и чайник. В собственной ванной комнате установлена ванна или душ. Предоставляются халаты, тапочки и бесплатные туалетно-косметические принадлежности. В числе удобств — круглосуточная стойка регистрации и парикмахерская. Музей-заповедник Царское Село и Александровский дворец находятся в 500 метрах от гостиницы Дом Паткуль.",
        "name": "Дом Паткуль",
        "created_at": "1497873701",
        "updated_at": "1549605151",
        "alias": "",
        "geo_lat": "59.7193960",
        "geo_lon": "30.4006240",
        "rooms": [
            {
                "id": "127566",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1548330423",
                "updated_at": "1548330423",
                "name": "Стандарт",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "142639",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1549605135",
                "updated_at": "1549605135",
                "name": "Одноместный",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "142640",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1549605138",
                "updated_at": "1549605138",
                "name": "Двухместный номер с 1 кроватью",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "142641",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1549605141",
                "updated_at": "1549605141",
                "name": "Семейный",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "142642",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1549605144",
                "updated_at": "1549605144",
                "name": "Люкс",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "142643",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1549605146",
                "updated_at": "1549605146",
                "name": "Номер-студио",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            }
        ],
        "last_modified": "1549605151", //Дата последнего изменения объекта в целом (самой гостиницы или номеров, правил формирования цен и тд). Именно на этот параметр нужно смотреть, чтобы понимать актуальность данных
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    },
    {
        "id": "9274",
        "city": {
            "id": "4",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Санкт-Петербург",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "Гусарская ул., 4, к. 3, Пушкин, Санкт-Петербург",
        "post_address": "196603, Россия, Санкт-Петербург, Пушкин, ул. Гусарская, д.4/3",
        "description_client": "",
        "placement_type": {
            "id": "1",
            "name": "Гостиница",
            "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
        },
        "check_in": "14:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "Гостиница Аксинья расположена в городе Пушкин, в 5 минутах ходьбы от института Турнера и Екатерининского парка, в 30 км от Санкт-Петербурга. К услугам гостей 11 номеров различной ценовой категории. На территории предоставляется бесплатный WiFi. Во всех номерах установлен шкаф, В собственной ванной комнате с феном предоставляются полотенца. В стоимость проживания включено постельное белье. В гостиницее имеются круглосуточная стойка регистрации и общая кухня. Предоставляются такие услуги, как доставка продуктов, магазины на территории и прачечная.",
        "name": "Аксинья",
        "created_at": "1498460953",
        "updated_at": "1549610129",
        "alias": "",
        "geo_lat": "59.7064090",
        "geo_lon": "30.3886279",
        "rooms": [
            {
                "id": "133463",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1548405094",
                "updated_at": "1548405094",
                "name": "Стандарт",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "142729",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1549610120",
                "updated_at": "1549610120",
                "name": "Кровать в общем номере",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "142730",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1549610122",
                "updated_at": "1549610122",
                "name": "Двухместный номер с 1 кроватью",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "142731",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1549610125",
                "updated_at": "1549610125",
                "name": "Двухместный номер с 2 отдельными кроватями",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            }
        ],
        "last_modified": "1549610129", //Дата последнего изменения объекта в целом (самой гостиницы или номеров, правил формирования цен и тд). Именно на этот параметр нужно смотреть, чтобы понимать актуальность данных
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    },
    {
        "id": "12010",
        "city": {
            "id": "4",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Санкт-Петербург",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "Ленинградская ул., 93, Пушкин, Ленинградская обл.",
        "post_address": "191001, Россия, Санкт-Петербург, Пушкин, ул. Ленинградская , д.93",
        "description_client": "",
        "placement_type": {
            "id": "1",
            "name": "Гостиница",
            "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
        },
        "check_in": "14:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "Гостиница Охотничья усадьба расположена в городе Пушкин, в 5 минутах езды от Александровского парка и располагает террасой и бесплатной парковкой. К услугам гостей 25 номеров различной ценовой категории. В 3 км можно посетить Екатерининский дворец. В оформленных в классическом стиле номерах имеются мини-бар и телевизор с плоским экраном и кабельными каналами. В собственной ванной комнате есть фен, тапочки и бесплатные туалетно-косметические принадлежности. Гости смогут посетить ресторан на территории, в котором подают блюда русской и европейской кухонь, а также бар, где можно заказать напитки. Отель расположен в 12 км от аэропорта Пулково, в 25 км от города Санкт-Петербурга и в 5 минутах езды от железнодорожного вокзала Пушкина.",
        "name": "Охотничья Усадьба",
        "created_at": "1529042121",
        "updated_at": "1550570860",
        "alias": "",
        "geo_lat": "59.7334179",
        "geo_lon": "30.3981726",
        "rooms": [
            {
                "id": "134658",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1548405094",
                "updated_at": "1548405094",
                "name": "Стандарт",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "147297",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1550570845",
                "updated_at": "1550570845",
                "name": "Двухместный номер с 2 отдельными кроватями",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "147298",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1550570848",
                "updated_at": "1550570848",
                "name": "Двухместный номер с 1 кроватью",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "147299",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1550570851",
                "updated_at": "1550570851",
                "name": "Трехместный",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "147300",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1550570853",
                "updated_at": "1550570853",
                "name": "Семейный",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            }
        ],
        "last_modified": "1550570860",//Дата последнего изменения объекта в целом (самой гостиницы или номеров, правил формирования цен и тд). Именно на этот параметр нужно смотреть, чтобы понимать актуальность данных
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    },
    {
        "id": "13900",
        "city": {
            "id": "549",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Пушкин",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "Кузьминское ш., 66, Пушкин",
        "post_address": "",
        "description_client": "",
        "placement_type": {
            "id": "1",
            "name": "Гостиница",
            "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
        },
        "check_in": "14:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "",
        "name": "Форт Колесник",
        "created_at": "1553703900",
        "updated_at": "1553703900",
        "alias": null,
        "geo_lat": "59.7330761",
        "geo_lon": "30.3777503",
        "rooms": [
            {
                "id": "151245",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1553703900",
                "updated_at": "1553703900",
                "name": "Стандарт",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            }
        ],
        "last_modified": "1553703900",  //Дата последнего изменения объекта в целом (самой гостиницы или номеров, правил формирования цен и тд). Именно на этот параметр нужно смотреть, чтобы понимать актуальность данных
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    }
]

Чтобы получить все гостиницы Рэдиссон в Москве, нужно передать:

{
  "cities":[2],//ид городов можно взять из экшена list
  "search":"Рэдиссон",
  "last_modified": 1533496165
}

Ответ:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

[
    {
        "id": "209",
        "city": {
            "id": "2",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Москва",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "г Москва, пл Европы, д 2",
        "post_address": "121059, Россия, Москва, пл. Европы, д.2",
        "description_client": "",
        "placement_type": {
            "id": "1",
            "name": "Гостиница",
            "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
        },
        "check_in": "15:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "Радиссон Славянская Гостиница и Деловой Центр расположена в центре г.Москвы, рядом с Площадью Европы, на берегу Москвы-реки, с видом на Белый Дом и Министерство Иностранных Дел, недалеко от Экспоцентра, в трех километрах от Красной Площади, Кремля и исторического центра г.Москвы, рядом со станцией метро Киевская. Для проживания в гостинице имеется 410 элегантных номеров, в том числе стандартные номера и номера бизнес-класса, 24 номера класса люкс и президентские апартаменты. Во всех номерах есть кондиционер, компьютерный порт, прямой международный телефон с индивидуальной голосовой почтой, беспроводной доступ в Интернет, фен, минибар. Для проведения деловых встреч, конференций, выставок, ужинов, семинаров и других мероприятий гостиница предлагает 14 конференц-залов, которые могут вместить от 10 до 1500 человек. Имеется конференц-зал на 550 мест со сценой, киноэкраном, световой и акустической системами и 5-канальной системой синхронного перевода. В фитнес-клубе гостиницы - тренажерный зал, 25-метровый закрытый бассейн с подогревом, сауна, турецкая баня, солярий, джакузи, массаж, аэробика и аквааэробика, фитнес-бар. Радиссон Славянская Гостиница и Деловой Центр приглашает посетить лобби-бар и четыре ресторана: Талавера - со средиземноморской кухней, Амадеус - с международной кухней, Сумосан - с японской кухней и Баланчин - с русской кухней. Гости отеля могут воспользоваться 24-часовым обслуживанием в номерах. В гостинице работает Деловой Центр с широким спектром предоставляемых услуг: аренда офисов, виртуальный офис, полиграфический центр, аренда конференц-комнат, услуги переводчиков. Прочие услуги гостиницы включают: заказ экскурсий и билетов в театры, бронирование мест в ресторанах, транспортные услуги, торговый пассаж, банк, салон красоты и казино.",
        "name": "Рэдиссон Блу Славянская",
        "created_at": "1256117214",
        "updated_at": "1589725265",
        "alias": "",
        "geo_lat": "55.7418697",
        "geo_lon": "37.5671073",
        "rooms": [
            {
                "id": "5984",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1273636482",
                "updated_at": "1553278760",
                "name": "Однокомнатный стандартный",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 7079,
                "online": 0
            },
            {
                "id": "5985",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1273636486",
                "updated_at": "1553278760",
                "name": "Однокомнатный стандартный",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            },
            {
                "id": "5986",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1273636505",
                "updated_at": "1553278760",
                "name": "Бизнес-класс",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            },
            {
                "id": "5987",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1273636508",
                "updated_at": "1553278760",
                "name": "Бизнес-класс",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            },
            {
                "id": "118721",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1544595815",
                "updated_at": "1553278760",
                "name": "Двухместный номер с 1 кроватью",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 7964,
                "online": 0
            },
            {
                "id": "118722",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1544595826",
                "updated_at": "1553278760",
                "name": "Двухместный с 1 кроватью или 2 отдельными кроватями",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 7964,
                "online": 0
            },
            {
                "id": "118723",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1544595836",
                "updated_at": "1553278760",
                "name": "Люкс",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            }
        ],
        "last_modified": "1589725265",
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    },
    {
        "id": "902",
        "city": {
            "id": "2",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Москва",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "г Москва, Кутузовский пр-кт, д 2/1",
        "post_address": "",
        "description_client": "цены по запросу",
        "placement_type": {
            "id": "1",
            "name": "Гостиница",
            "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
        },
        "check_in": "15:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "",
        "name": "Рэдиссон Коллекшн Отель ( бывш. Украина)",
        "created_at": "1281092812",
        "updated_at": "1586762730",
        "alias": "",
        "geo_lat": "55.7515007",
        "geo_lon": "37.5653824",
        "rooms": [
            {
                "id": "8765",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1296123710",
                "updated_at": "1469145967",
                "name": "Супериор",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            },
            {
                "id": "8767",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1296123920",
                "updated_at": "1469145967",
                "name": "Супериор",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            },
            {
                "id": "8769",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1296124119",
                "updated_at": "1469145967",
                "name": "ДеЛюкс",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            },
            {
                "id": "8770",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1296124191",
                "updated_at": "1469145967",
                "name": "ДеЛюкс",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 0,
                "online": 0
            }
        ],
        "last_modified": "1586762730",
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    },
    {
        "id": "1564",
        "city": {
            "id": "2",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Москва",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "г Москва, ул Ямского Поля 3-я, д 26А",
        "post_address": "",
        "description_client": "",
        "placement_type": {
            "id": "1",
            "name": "Гостиница",
            "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
        },
        "check_in": "14:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "",
        "name": "Рэдиссон Блу Белорусская",
        "created_at": "1429014250",
        "updated_at": "1591533277",
        "alias": "",
        "geo_lat": "55.7831873",
        "geo_lon": "37.5791244",
        "rooms": [
            {
                "id": "13655",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1429014403",
                "updated_at": "1550419709",
                "name": "стандарт одноместный",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 6636,
                "online": 0
            },
            {
                "id": "13656",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1429014486",
                "updated_at": "1469145967",
                "name": "Стандарт",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 13704,
                "online": 0
            }
        ],
        "last_modified": "1591533277",
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    },
    {
        "id": "1799",
        "city": {
            "id": "2",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Москва",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "Москва, пл. Европы, д.2",
        "post_address": "121059, Россия, Москва, пл. Европы, д.2",
        "description_client": "",
        "placement_type": {
            "id": "1",
            "name": "Гостиница",
            "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
        },
        "check_in": "14:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "",
        "name": "Рэдиссон Блю Славянская",
        "created_at": "1431496452",
        "updated_at": "1552091144",
        "alias": "Radison Blue,Radisson Blu,Рэдисон Блю,Редисон Блю,Рэдисон Блу",
        "geo_lat": "55.7418697",
        "geo_lon": "37.5671073",
        "rooms": [
            {
                "id": "13960",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1431496470",
                "updated_at": "1552091141",
                "name": "Стандарт",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": "",
                "price_client": 4646,
                "online": 0
            },
            {
                "id": "120782",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1547737114",
                "updated_at": "1552091141",
                "name": "Двухместный с 1 кроватью или 2 отдельными кроватями",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 4646,
                "online": 0
            },
            {
                "id": "120783",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1547737127",
                "updated_at": "1552091141",
                "name": "Люкс",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "120784",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1547737144",
                "updated_at": "1552091141",
                "name": "Двухместный номер с 1 кроватью",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "120785",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1547737172",
                "updated_at": "1552091141",
                "name": "Двухместный номер с 1 кроватью",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            }
        ],
        "last_modified": "1552091144",
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    },
    {
        "id": "3167",
        "city": {
            "id": "2",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Москва",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "Химки,  Международное шоссе, вл. 2",
        "post_address": "141400, Россия, Московская область, Химки,  Международное шоссе, вл. 2",
        "description_client": "",
        "placement_type": {
            "id": "1",
            "name": "Гостиница",
            "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
        },
        "check_in": "14:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "Гостиница Рэдиссон Блу Шереметьево Аэропорт Москва расположена в городе Химки. К услугам гостей 391 номер различной ценовой категории, сауна, фитнес-центр и паровая баня. На территории работает бесплатный Wi-Fi. Гостиница соединена галереей с главными терминалами Международного аэропорта Шереметьево. Современные номера  оформлены в скандинавском стиле и оснащены кондиционером, а к прочим удобствам относятся электрический чайник, фен и телевизор с плоским экраном, транслирующий кабельные каналы. В ресторане Stratosphere, специализирующемся на европейской и русской кухне, подают завтрак, обед и ужин. В баре Altitude с видом на взлетно-посадочную полосу аэропорта Шереметьево вам предложат напитки и закуски. Поездка на «Аэроэкспрессе» от аэропорта до центра Москвы занимает 35 минут.",
        "name": "Рэдиссон Блу Шереметьево",
        "created_at": "1440073823",
        "updated_at": "1551681316",
        "alias": "Radison Blue,Radisson Blu,Рэдисон Блю,Редисон Блю,Рэдисон Блу",
        "geo_lat": "55.9569617",
        "geo_lon": "37.4144120",
        "rooms": [
            {
                "id": "104644",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1466761804",
                "updated_at": "1550419709",
                "name": "Стандарт",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 4977,
                "online": 0
            },
            {
                "id": "137237",
                "placement_type": {
                    "id": "2",
                    "name": "Двухместное",
                    "description": null
                },
                "created_at": "1548651921",
                "updated_at": "1548651921",
                "name": "Двухместный номер с 1 кроватью",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            },
            {
                "id": "137238",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1548651933",
                "updated_at": "1548651933",
                "name": "Люкс",
                "food_type": {
                    "id": "1",
                    "name": "Завтрак",
                    "description": null
                },
                "description": null,
                "price_client": 0,
                "online": 0
            }
        ],
        "last_modified": "1551681316",
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    },
    {
        "id": "3816",
        "city": {
            "id": "2",
            "country": {
                "id": "1",
                "name": "Российская Федерация",
                "continent": null,
                "code": null
            },
            "name": "Москва",
            "code": null,
            "fias_id": null,
            "timezone": "3"
        },
        "address": "Химки, Международное шоссе, владение 1",
        "post_address": "",
        "description_client": "",
        "placement_type": {
            "id": "1",
            "name": "Гостиница",
            "declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
        },
        "check_in": "14:00",
        "check_out": "12:00",
        "relax_place": "0",
        "hotel_description": "",
        "name": "Парк Инн от Рэдиссон Шереметьево Аэропорт",
        "created_at": "1445319433",
        "updated_at": "1549079359",
        "alias": "",
        "geo_lat": "55.9611258",
        "geo_lon": "37.4121352",
        "rooms": [
            {
                "id": "105141",
                "placement_type": {
                    "id": "1",
                    "name": "Одноместное",
                    "description": null
                },
                "created_at": "1466761804",
                "updated_at": "1550419710",
                "name": "Стандарт",
                "food_type": {
                    "id": "2",
                    "name": "Нет питания",
                    "description": null
                },
                "description": null,
                "price_client": 6636,
                "online": 0
            }
        ],
        "last_modified": "1550419710",
        "cancellation_rule": "за 48 часов до заезда - без штрафа, Менее 48 часов - на усмотрение гостиницы"
    }
]

Request Заявки

Адрес: /api/request/create-with-service

Метод запрос: POST

Данные:

{
"room":6,//Обязательный. номер комнаты в гостинице
"guests":[//Обязательный. набор гостей
  {
    "lastname":"Петров",
    "name":"Иван"
  },
  {
    "lastname":"Петрова",
    "name":"Василина",
    "category": 2,//категория , справочник предоставим позже
    "nationality": 2 //национальность, справочник предоставим позже
  }
],
  "guest_check_in":1564444800,//Обязательно. дата заезда в unixtime
  "guest_check_out":1564704000,//Обязательно. дата выезда в unixtime
  "unstandart_check_in":1,//не стандартное время заезда, 1\0
  "unstandart_check_out":1,//не стандартное время выезда, 1\0
  "check_in":"09:00",//время заезда, строка. Учитывается только если нестандартное время заезда = 1
  "check_out":"09:00",//время выезда, строка. Учитывается только если нестандартное время выезда = 1
  "comments": "В номере должен быть заполнен мини-бар", //комментарий к заявке. Будет создан сразу после создания заявки
  "reserve_limit": "Лимит на номер 5000руб без учета завтрака" //лимит на проживание, строка. Можно задавать просто сумму в руб.
  "contact_name": "Николай Иванович",//ТОЛЬКО ДЛЯ КУРАТОРА! контактное имя, если отличается от имени текущего пользователя
  "contact_phone": "+7-888-999-66-55",//ТОЛЬКО ДЛЯ КУРАТОРА! телефон контактного лица, если отличается от имени текущего пользователя
  "contact_email": "booking-no-reply@susanin.ru",//ТОЛЬКО ДЛЯ КУРАТОРА! email контактного лица, если отличается от имени текущего пользователя
}

Поля contact_name, contact_phone и contact_email может изменять только Куратор. Иначе значения будут присвоены текущего пользователя.

Возвращаемые данные: Заявка целиком, подробнее в просмотре заявки

Адрес: /api/request/index

Метод запрос: POST

Данные:

id - массив id заявок


start_create_date- минимальное время в unixtime, в которое создана заявка

end_create_date - максимальное время в unixtime, в которое создана заявка


start_last_modified_date- минимальное время в unixtime, в которое обновлена заявка

end_last_modified_date - максимальное время в unixtime, в которое обновлена заявка


cities- массив id городов,

guests- тип string. имя гостя\пассажира,

manager- id менеджера компании Сусанин,

client- id пользователя клиента (Вас). Если заявка заведена компанией Сусанин, то может отличаться от id вашего пользователя,

status- массив id статусов заявок,

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

Будьте внимательны, ответ сервера может быть очень большим.

Пример:

{
  "id":[34579,34513],
  "start_create_date":1548979200,
  "end_create_date":1552000000,
  "cities": [2],
  "guests":"ваган",
  "manager":379,
  "client":100
}

Возвращаемые данные:

Массив заявок. Формат в просмотре заявки. Отличие будет только в отсутствии документов и комментариев, в списке заявок их не будет

Описание: Возвращает информацию по заявке + всем услугам + комментариям + тегам + гостям + выходным документам.

Адрес: /api/request/view?id=1

Метод запрос: GET\POST

Данные: id - номер заявки

Возвращаемые данные:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

{
        "id": "137841",//номер заявки
        "created_at": "1528193303",
        "updated_at": "1529469065",
        "last_modified": "1529469065",//Время изменения заявки или любого дочернего объекта. Для бизнес кейсов использовать этот параметр
        "status": "7",//статус , подробнее справочнике
        "manager": {
                    "id":1060,
                    "username":"Горяева Ирина",
                    "email":"hotel14@susanin.ru",
                    "phone":"3512454500"
                    },
        "client":{
                    "id":5649,
                    "username":"API user",
                    "email":"booking-no-reply@susanin.ru",
                    "phone":"+7 (351) 2454500"
                   },
        "company": "5",//компания заказчика(Вас).  Нужно для идентификации принадлежности заявки к определённой компании,если пользователь имеет право создавать заявки от лица нескольких ЮЛ\ИП.
        "contact_name": "Иванов",//контактное лицо
        "contact_phone": "+7 495 555 222 0",//номер контактного лица
        "contact_email": "booking-no-reply@susanin.ru",//мейл контактного лица
        "services": [],//ORM услуги
        "servicesTransfer": [],//Услуги трансфер
        "servicesResidence": [ //Услуги Проживания в гостинице
        {
            "id": "181450",//ид услуги
            "status": "1",//статус, в данный момент не используется
            "placement": "6279",//ид гостиницы
            "hotel_room": "107605",//номер
            "check_in": "14:00",//время заезда, актуально, когда unstandart_check_in=1, в противном случае время по гостинице
            "check_out": "12:00",//время выезда, актуально, когда unstandart_check_out=1, в противном случае время по гостинице
            "unstandart_check_in": "0",//не стандартное время заезда
            "unstandart_check_out": "0",//не стандартное время выезда
            "request_for_rest": "0",//заявка на отдых
            "food": "1",//тип питания для номера
            "description_client": "",//примечание для клиента
            "reserve_limit": "",//лимит 
            "reserve_number": "ФИО",//номер брони
            "penalty_until": "1565722800",//дата наступления штрафа
            "penalty_amount": "100%",//размер штрафа. Указывается либо в проценте (50%, 100%) , либо сумма (5000,2331,50)
            "calc_client": "",//расчет клиенту
            "price_netto_client": null,//см обновление от 1 мая 2020! Цена за заказ будет указана в счёте (output_docs-> bills)
            "discount_client": null,//см обновление от 1 мая 2020! Скидка\комиссия будет указана в счёте (output_docs-> bills)
            "created_at": "1564328908",//дата создания
            "updated_at": "1564328908",//дата обновления
            "request": "181474",//родительский заказ
            "guest_check_in": "1565895600",//дата заезда
            "guest_check_out": "1565895600",//дата выезда
            "is_penalty": "1", //Является ли услуга штрафной (дополнительно в счёте будет соответствующая формулировка). Значения: 1 -есть штраф, null\0 - услуга без штрафа
            "serviceResidenceGuests": [//массив гостей
                {
                    "id": "153602",
                    "name": "Тестируем Форму",//ФИО гостя
                    "service": "181450",
                    "request": "181474",
                    "category": "1",//категория М,Ж и тд, справочник будет позже
                    "nationality": "1"//наицональность
                },
                {
                    "id": "153603",
                    "name": "Беларус Жен",
                    "service": "181450",
                    "request": "181474",
                    "category": "2",
                    "nationality": "3"
                }
            ],
            "comments0": [//набор комментариев услуги
                {
                    "id": "3385",
                    "object_type": "52",
                    "object_id": "181450",
                    "message": "Тест коммент публичный",//сообщение
                    "author": "1",//автор
                    "created_at": "1564507983",
                    "updated_at": "1564507983",
                    "private": "0"
                }
            ]
        }
    ],
    "comments0": [//Комментарии заказа
        {
            "id": "3387",
            "object_type": "40",
            "object_id": "181474",
            "message": "Коммент к заявке",
            "author": "1",
            "created_at": "1564560397",
            "updated_at": "1564560397",
            "private": "0"
        }
    ],
    "tag": [//Теги заявки
        {
            "id": "78",//уникальный номер этого тега в системе
            "updated_at": "1570791467",
            "created_at": "1570791467",
            "title": "Создал API Болеро в 11 окт. 2019 г., 15:57:47 UTC +5",//заголовок тега
            "tag0": {//тип тега
                "id": "1",
                "name": "Создана клиентом",//ру название
                "tag": "created_by_client",//служебное
                "icon": "fa fa-user"//иконка fontawesome
            }
        }
    ],
     "output_docs": {//Исходящие документы. Доступны при определённых условиях\если менеджер открывает клиенту доки.
        "bills": [//Счета, сейчас в заявках только 1 счет
            {
                "id": 1189957,//служебный номер документа, нужен только для технической диагностики
                "number": "161526",//номер счета цифрами
                "full_number": "БГС161526",//полный номер счета
                "bill_date": "09.11.2018",//дата выставления счета
                "consignee": "Грузополучатель",
                "items": [//массив позиций счета, как правило 1. Если клиенту выделяется комиссия, то 2
                    {
                        "text": "Проживание в гостинице \"Премьер\" (г. Железногорск (Курская обл)), 17.11.2018 (ранний заезд с 07:00) - 21.11.2018 (поздний выезд до 22:00), Баринов",//формулировка позиции
                        "count": 1,//количество, всегда 1
                        "unit": "шт",//ед-ца измерения, всегда штуки
                        "price": 19100,//цена, в рублях
                        "sum": 19100//сумма , в рублях
                    },
                    {
                        "text": "Комиссионное вознаграждение",
                        "count": 1,
                        "unit": "шт",
                        "price": -955,//для позиции с комиссией\вознаграждением и тп сумма будет отрицательной
                        "sum": -955
                    }
                ],
                "download_link": "https://russhotels.ru/api/request/generate-doc?id=1189957"//ссылка на скачивание оригинала документа
            }
        ],
        "vouchers": {
            "id": 1189956,
            "download_link": "https://russhotels.ru/api/request/generate-doc?id=1189956"
        }
    }
},

Описание: В выходных документах доступны Ваучеры по заказу и Счета (как правило 1 счет и 1 ваучер на услугу).

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

Для ваучера доступна только ссылка на скачивание.

Для счета помимо ссылки на печатный вид документа доступна его детализация построчно. Комиссия\скидка всегда будет со знаком минус: «price»: -955

Чтобы получить итоговую сумму, нужно сложить суммы позиций счета(items)

Если заявка аннулирована, то документы доступны не будут

Компания «Сусанин» работает по УСН, все суммы БЕЗ НДС

Адрес запроса: используйте просмотр заявки раздел в выдаче output_docs

Описание: Генерирует печатный документ по указанному ид.

Метод запроса: GET

Адрес запроса: /api/request/generate-doc?id=1189957

Данные: id - ид документа

Ответ: Ответом возвращается файл.

Описание: Обновление информации о Заказе. Клиенту доступно изменение статуса, изменение контактной информации. Остальная информация меняется через обновление услуги, которая содержится в заказе.

Адрес: /api/request/update?id=72312

Метод запрос: POST

Данные:

uri параметром id - номер обновляемой заявки

и обновляемые данные в теле запроса:

{
  'status' => 5, //ид статуса
  'client' => 123, //ид пользователя 
  'contact_name' => 'ФИО контактного лица',
  'contact_phone' => 'Телефон контактного лица',
  'contact_email' => 'Email контактного лица',
}

Возвращаемые данные: заявка в таком же виде, как при запросе к view

Описание: В зависимости от типа услуги разные URL для изменения услуг.

Услуги есть 3х типов:

  1. Услуга проживание (/service-residence/update)
  2. Услуга Трансфер (/service-transfer/update description coming soon)
  3. ORM Услуга (Различные мероприятия, доп. питание, конференц-залы, аренда чего-то и тд) (/service/update description coming soon)

Адрес: /api/service-residence/update?id=1

Метод запрос: POST

Данные: uri параметром id - номер обновляемой услуги (не номер заявки)

В теле запроса:

{
            "check_in": "14:00", //время заезда, учитывается только при нестандартном заезде\выезде
            "check_out": "12:00",//время выезда
            "unstandart_check_in": "0", //не стандартное время заезда
            "unstandart_check_out": "0", //не стандартное время заезда
            "food": "1", //тип необходимого питания, справочники внизу документации
            "reserve_limit": null, //лимит на проживание
            "guest_check_in": "1555527600",//дата заезда в unixtime
            "guest_check_out": "1555614000",//дата выезда в unixtime
}

Возвращаемые данные: все данные текущей модели с комментариями и гостями

[    
   {
    "id": "181506",
    "status": "1",
    "placement": "34",
    "hotel_room": "6",
    "check_in": "12:02",
    "check_out": "12:00",
    "unstandart_check_in": "1",
    "unstandart_check_out": "0",
    "request_for_rest": null,
    "food": "1",
    "description_client": "",
    "reserve_limit": "Лимит на каждый номер 5000руб",
    "reserve_number": "ФИО",
    "penalty_until": "1566067646",
    "penalty_amount": "100%",
    "calc_client": "",
    "price_netto_client": null,
    "discount_client": null,
    "created_at": "1566067646",
    "updated_at": "1566560181",
    "request": "181530",
    "guest_check_in": "1564444800",
    "guest_check_out": "1564704000",
    "serviceResidenceGuests": [
        {
            "id": "153616",
            "name": "Иван Петров",
            "service": "181506",
            "request": "181530",
            "category": "1",
            "nationality": "1"
        },
        {
            "id": "153617",
            "name": "Василина Петрова",
            "service": "181506",
            "request": "181530",
            "category": "2",
            "nationality": "2"
        }
    ],
    "comments0": []
}
]

Адрес: /api/service-residence-guest/update?id=1

Метод запрос: POST

Данные:

в uri параметр id - номер гостя

[
    "name": "Иван Иванович",//ФИО одной строкой
    "category": 2,//Категория, справочник есть в доке ниже
    "nationality": 2, //Национальность, справочник есть в доке ниже
]

Возвращаемые данные: модель гостя с новыми данными

[    
    "service": 1,
    "request": 1,
    "name": "Иван Иванович",
    "category": 2,
    "nationality": 2,
    "id": 1,
]

Адрес: /api/service-residence-guest/create?request=1&service=1

Метод запрос: POST

Данные:

В uri request - id заявки , service - id услуги

[
    "name": "Василий Иванович",
    "category": 2,
    "nationality": 3,
]

Возвращаемые данные: модель созданного гостя

[    
    "service": 1,
    "request": 1,
    "name": "Василий Иванович",
    "category": 2,
    "nationality": 3,
    "id": 1,
]

Адрес: /api/service-residence-guest/delete?id=1

Метод запрос: POST

Данные:

В uri id - номер гостя

Возвращаемые данные: номер удалённого гостя

Адрес: /api/request/add-comment?request=1

Метод запрос: POST

Данные:

в uri параметр request- номер заявки

В теле:

[
    "message": "Текст коммента",
]

Возвращаемые данные: подробная модель заявки

Описание: Для клиентов метод предоставляет возможность аннулировать заявку и отменить ошибочную аннуляцию. Аннуляция возможна только если статус заказа = 1, иначе система выдаст ошибку о невозможности смены статуса; аннуляция заказа в таком случае производится менеджером Сусанина. Уведомить менеджера о необходимости аннуляции заказа можно через отправку комментария или любым иным способом коммуникации.

Адрес: /api/request/change-status

Метод запрос: POST

Данные:

[
    'status'=>5,
]

Возвращаемые данные: новый статус

[
    "status": "5",
]

Описание: Подтверждение определённых или всех изменений произошедший в заявке, которые осуществили менеджеры компании Сусанин.

Адрес метода: /accept-changes?id=181585

Данные:

id - заявки, обязательный,

log_id - набор ид логов через запятую, с которым производится согласие

Метод: POST\GET

Возвращаемые данные: подробная модель заявки

Описание: Подтверждение определённых или всех изменений произошедший в заявке, которые осуществили менеджеры компании Сусанин.

Адрес метода: /reject-changes?id=181580&comment=Не ясны изменения, ответа нет.

Данные:

id - заявки. Обязательный

comment - комментарий, не обязательно.

Метод: POST\GET

Возвращаемые данные: подробная модель заявки

Клиентам удаление заявок запрещено. В случае ошибочного создания заявки или дублирования - используйте статус Аннулирован.

Описание: Получает все логи по заявке.

Адрес: /api/request/log?id=181558

Метод запрос: POST/GET

Данные: id - номер заявки

Возвращаемые данные:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

[
     {
        "id": "2439",//ид лога, логи сортируются от последних к первым(старым) логам
        "user": {//пользователь, который инициировал действие
            "id": "1",//ид пользователя
            "username": "Администратор",//имя пользователя
            "email": "booking-no-reply@susanin.ru"
        },
        "event": "Обновление заявки",//тип ивента
        "object_id": "181558",//ид объекта ивента
        "data": {//данные события\объекта, здесь может быть различный набор данных. 
            "status": [//Если массив, то для поля статус произошла изменения с первого значения(5) на значение второе(7)
                5,
                7
            ]
        },
        "created_at": "1568826510",//время создания лога
        "updated_at": "1568826510",//время изменения лога. логи не меняются
        "parent_object": null,//Служебное. Тип родительского объекта, используется для связи логов по дочерним объектам
        "parent_id": null // Служебное. ИД родительского объекта
    },
    {
        "id": "2391",
        "user": {
            "id": "5557",
            "username": "API пользователь",
            "email": "booking-no-reply@susanin.ru"
        },
        "event": "Создание тега заявки\услуги",
        "object_id": "24",
        "data": {//создан тег с данными ид-24, к заявке 181558, тег - 1 и тд..
            "id": 24,
            "object_id": 181558,
            "tag": 1,
            "updated_at": 1568727563,
            "created_at": 1568727563,
            "title": "Создал API пользователь в 17 сент. 2019 г., 18:39:23 UTC +5",
            "object_type": 40
        },
        "created_at": "1568727563",
        "updated_at": "1568727563",
        "parent_object": "40",
        "parent_id": "181558"
    },
    {
        "id": "2388",//Номер лога, используется для подтверждения изменений
        "user": {
            "id": "5557",//ид пользователя, который выполнил действие
            "username": "API пользоваель",//имя пользователя
            "email": "booking-no-reply@susanin.ru"//мейл пользовалея
        },
        "event": "Добавление комментария",//тип события
        "object_id": "3424",//ид объекта, попавшего под событие
        "data": {
            "id": 3424,
            "object_type": 40,
            "object_id": 181558,
            "message": "В номере должен быть заполнен мини-бар",
            "author": 5557,
            "created_at": 1568727561,
            "updated_at": 1568727561
        },
        "created_at": "1568727561",
        "updated_at": "1568727561",
        "parent_object": "40",
        "parent_id": "181558"
    },
    ...

Описание: Возвращает изменения по заявке за определённый период (период указывается в границах логов, передаются ид лога отсчета и окончания)

Адрес: /api/request/get-changes?id=181558&start_id=2402

Метод запрос: POST/GET

Данные: id* - номер заявки

start_id - Номер лога, с которого вычисляются изменения. Номера логов можно посмотреть в экшне логов. Если заявка имеет тег «Требуется подтверждение клиента», то можно не передавать номер лога, запрос вернёт только изменения , которые необходимо подтвердить

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

Возвращаемые данные:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

{
    "Обновление заявки": {//тип ивента
        "181558": {
            "cur_data": {//информация на момент последнего указанного лога
                "Статус": 2 //статус = 2 в конце
            },
            "prev_data": {
                "Статус": 1 //статус = 1 в самом начале отрезка 
            }
        }
    },
    "Удаление тега заявки\\услуги": {
        "25": {
            "cur_data": {
                "ID": 25,
                "Номер объекта": 181558,
                "Номер тега": 5,
                "Обновлён": 1568727584,
                "Создан": 1568727584,
                "Заметка": "asd",
                "Тип объекта": 40
            },
            "prev_data": {//все изначальные значения равны нулю,т.к. удаление это не изменение полей, а удаление сущности целиком.
                "ID": null,
                "Номер объекта": null,
                "Номер тега": null,
                "Обновлён": null,
                "Создан": null,
                "Заметка": null,
                "Тип объекта": null
            }
        }
    }
}

Описание: Используется для подтверждения изменений по заявке. После отправки удаляется тег «Необходимо подтверждение клиента», добавляется тег «Акцепт клиентом» и автоматически создаётся комментарий о принятии изменений Клиентом. В случае указания набора логов, в комментарии будет указано с какими изменениями согласен Клиент.

Адрес: /api/request/accept-changes?id=181585

Метод запрос: GET

Данные: id* - номер заявки

log_id - номера логов через запятую. Необязательное

Возвращаемые данные: подробная модель заявки

Описание: Используется для отказа клиента от изменений в заявке. После отказа заявка автоматически аннулируется.

Адрес: /api/request/reject-changes?id=181580&comment=Не ясны изменения, ответа нет.

Метод запрос: GET

Данные: id* - номер заявки

comment - Опционально. Комментарий о причине отказа.

Возвращаемые данные: подробная модель заявки

Справочники

  • Новый - заявка только создана
  • Принят - менеджер принял заявку в работу
  • Забронирован - от гостиницы получили подтверждение о бронировании
  • Изменен - в заявке есть серьезные изменения\изменения информации клиента. В таком статусе от клиента требуется активное участие,​ например подтверждение изменений
  • Аннулирован - заявка аннулирована
  • Выполнен - заявка завершена
  • Отказ - отель не подтверждает бронь, нет номеров и тд.

Описание: Справочник статусов заявок. Подробнее в общей статье о статусах

Адрес: /api/request-status/index

Метод запрос: POST

Возвращаемые данные:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

[
    {
        "id": 1,
        "name": "Новая",
        "description": null,
        "scenario": null
    },
    {
        "id": 2,
        "name": "Принят",
        "description": null,
        "scenario": null
    },
 ...
]
  1. Мужчина
  2. Женщина
  3. Ребенок
  4. Младенец

Описание: Справочник категорий гостей

Адрес: /api/service-residence-guest/category

Метод запрос: POST/GET

Возвращаемые данные:

    {
    "1": "Мужчина",
    "2": "Женщина",
    "3": "Ребенок",
    "4": "Младенец"
}

Описание: Справочник типов размещения в номерах гостиниц

Адрес: /api/hotel-placement-type/index

Метод запрос: POST/GET

Возвращаемые данные:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

[
    {
        "id": "1",
        "name": "Одноместное",
        "description": "",
        "sleeping_place": "1" //Количество спальных мест для взрослых
    },
    {
        "id": "2",
        "name": "Двухместное",
        "description": "",
        "sleeping_place": "2"
    }
]

Описание: Справочник типов гостиниц

Адрес: /api/hotel-type/index

Метод запрос: POST/GET

Возвращаемые данные:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

[
    
{
"id": "1",
"name": "Гостиница",
"declensions": "гостиница,гостиницу,гостинице,гостиницу,гостиницей,гостинице,гостинице,гостиницы"
},
{
"id": "2",
"name": "Апартаменты",
"declensions": "апартаменты,апартаменты,апартаментам,апартаменты,апартаментами,апартаментам,апартаментах,апартаментов"
},
{
"id": "3",
"name": "Квартиры",
"declensions": "квартира,квартиру,квартире,квартиру,квартирой,квартире,квартире,квартиры"
},
{
"id": "4",
"name": "Коттеджи",
"declensions": "коттедж,коттедж,коттеджу,коттедж,коттеджем,коттеджу,коттедже,коттеджа"
},
{
"id": "5",
"name": "База отдыха",
"declensions": "база отдыха,базу отдыха,базе отдыха,базу отдыха,базой отдыха,базе отдыха,базе отдыха,базы отдыха"
},
{
"id": "6",
"name": "Санаторий",
"declensions": "санаторий,санаторий,санаторию,санаторий,санаторием,санаторию,санатории,санатория"
},
{
"id": "7",
"name": "Профилакторий",
"declensions": "профилакторий,профилакторий,профилакторию,профилакторий,профилакторием,профилакторию,профилактории,профилактория"
},
{
"id": "8",
"name": "Хостел",
"declensions": "хостел,хостел,хостелу,хостел,хостелом,хостелу,хостеле,хостела"
},
{
"id": "9",
"name": "Пансионат",
"declensions": "пансионат,пансионат,пансионату,пансионат,пансионатом,пансионату,пансионате,пансионата"
},
{
"id": "10",
"name": "Общежитие",
"declensions": "общежитие,общежитие,общежитию,общежитие,общежитием,общежитию,общежитии,общежития"
},
{
"id": "11",
"name": "Гостевой дом",
"declensions": "гостевой дом,гостевой дом,гостевому дому,гостевой дом,гостевому дому,гостевом доме,гостевом доме,гостевого дома"
}
]

Описание: Справочник национальностей (гражданства)

Адрес: /api/service-residence-guest/nationality

Метод запрос: POST/GET

Возвращаемые данные:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

   [
    {
        "id": "1",
        "name": "RUS"
    },
    {
        "id": "2",
        "name": "KAZ"
    },
    {
        "id": "3",
        "name": "BLR"
    },
    {
        "id": "4",
        "name": "UKR"
    },
    {
        "id": "5",
        "name": "OTHER"
    }
]

Описание: Справочник тегов , пометки к заявкам и услугам.

Адрес: /api/tag/index

Метод запрос: POST/GET

Возвращаемые данные:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

   [
    {
        "id": 1,
        "name": "Создана клиентом",
        "tag": "created_by_client",
        "icon": "fa fa-user"
    },
    {
        "id": 2,
        "name": "Новая платежка",
        "tag": "new_payment",
        "icon": "far fa-clipboard text-primary"
    },
    {
        "id": 3,
        "name": "бух-ия оповещена",
        "tag": "buh_notified",
        "icon": "fa fa-bullhorn"
    },
    {
        "id": 4,
        "name": "Проверить",
        "tag": "need_check",
        "icon": "fa fa-exclamation-circle text-primary"
    },
    {
        "id": 5,
        "name": "Перепроводка",
        "tag": "rewire",
        "icon": "fa fa-times text-danger"
    },
    {
        "id": 6,
        "name": "Нарушен SLA",
        "tag": "sla_violation",
        "icon": "fas fa-clock"
    },
    {
        "id": 7,
        "name": "Бронь подтверждена гостиницей",
        "tag": "booking_apply",
        "icon": "fa fa-check"
    },
    {
        "id": 8,
        "name": "Гость(и) выехал, всё ок",
        "tag": "ok",
        "icon": "fa fa-check-double text-success"
    },
    {
        "id": 9,
        "name": "Новый комментарий от клиента",
        "tag": "new_comment_client",
        "icon": "fa fa-comment-alt text-warning"
    },
    {
        "id": 10,
        "name": "Новый комментарий от сусанина",
        "tag": "new_comment_susanin",
        "icon": "fa fa-comment-alt text-success"
    },
    {
        "id": 11,
        "name": "счет изменён",
        "tag": "bill_change",
        "icon": "fas fa-file-invoice"
    },
    {
        "id": 12,
        "name": "комиссия не стандартная",
        "tag": "diff_commission",
        "icon": "fab fa-creative-commons-nc"
    },
    {
        "id": 13,
        "name": "счёт отправлен в бух",
        "tag": "bill_in_buh",
        "icon": "far fa-envelope text-primary"
    },
    {
        "id": 14,
        "name": "ПП отелем принято",
        "tag": "payment_accept",
        "icon": "fa fa-check text-success"
    },
    {
        "id": 15,
        "name": "Необходимо подтверждение клиента",
        "tag": "need_client_check",
        "icon": "fa fa-check text-danger"
    },
    {
        "id": 16,
        "name": "Ацепт клиентом",
        "tag": "client_accept",
        "icon": "fa fa-check-double text-success"
    }
]

Описание: Справочник стран

Адрес: /api/country/index

Метод запрос: GET/POST

Возвращаемые данные:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

    [
{
"id": "1",
"name": "Российская Федерация",
"continent": null,
"code": null
},
{
"id": "7",
"name": "Казахстан",
"continent": null,
"code": null
}
]

Описание: Справочник городов

Адрес: /api/city/index?country=1

Метод запрос: GET

Параметры:

country* - параметр, ид страны

Возвращаемые данные:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

    [
    {
        "id": 1,
        "country": 1,
        "name": "Тюмень",
        "code": null,
        "fias_id": null
    },
    {
        "id": 2,
        "country": 1,
        "name": "Москва",
        "code": null,
        "fias_id": null
    },
    ...
    ]

Описание: Справочник типов питания

Адрес: /api/food-type

Метод запрос: POST/GET

Возвращаемые данные:

Нажмите, чтобы отобразить

Нажмите, чтобы скрыть

    [
    {
        "id": 1,
        "name": "Завтрак",
        "description": null
    },
    {
        "id": 2,
        "name": "Нет питания",
        "description": null
    },
    {
        "id": 3,
        "name": "Обед",
        "description": null
    },
    {
        "id": 4,
        "name": "Ужин",
        "description": null
    },
    {
        "id": 5,
        "name": "Полный пансион",
        "description": null
    },
    {
        "id": 6,
        "name": "Полупансион",
        "description": null
    },
    {
        "id": 7,
        "name": "завтрак,ужин",
        "description": ""
    },
    {
        "id": 8,
        "name": "завтрак,обед,ужин",
        "description": ""
    }
]
  • site/api.txt
  • Последние изменения: 2022/06/20 08:35
  • crs