Frontend API: различия между версиями
(→Авторизация (auth)) |
|||
(не показано 15 промежуточных версий 2 участников) | |||
Строка 185: | Строка 185: | ||
* Request | * Request | ||
− | ** URI /api/hotels/search/request/{searchId} (получение данных запроса поиска с идентификатором {searchId}) | + | ** URI /api/hotels/search/request/{searchId?} (получение данных запроса поиска с идентификатором {searchId} или создание нового запроса на поиск) |
** POST request="[[#hotels.search.request|hotels.search.request]]" (Параметры запроса поиска) | ** POST request="[[#hotels.search.request|hotels.search.request]]" (Параметры запроса поиска) | ||
* Response: | * Response: | ||
Строка 343: | Строка 343: | ||
== Модуль Заказов (order) == | == Модуль Заказов (order) == | ||
− | === Модуль | + | === Модуль аутентификации === |
Внимание, для сохранения статуса авторизованного пользователя запросы должны быть отправлены с поддержкой cookie | Внимание, для сохранения статуса авторизованного пользователя запросы должны быть отправлены с поддержкой cookie | ||
Строка 349: | Строка 349: | ||
(Параметр withCredentials = true у объекта XmlHttpRequest в случае использования JS) | (Параметр withCredentials = true у объекта XmlHttpRequest в случае использования JS) | ||
− | ==== Запрос | + | ==== Запрос аутентификации пользователя==== |
* Request | * Request | ||
** URI /api/order/auth/request | ** URI /api/order/auth/request | ||
+ | ** POST request="[[#order.auth.request|order.auth.request]]" (Параметры запроса аутентификации) | ||
* Response: | * Response: | ||
− | ** [[#order.auth.response|order.auth.response]] (Результат | + | ** [[#order.auth.response|order.auth.response]] (Результат аутентификации) |
** [[#system.info|system.info]] (Служебная информация) | ** [[#system.info|system.info]] (Служебная информация) | ||
Строка 361: | Строка 362: | ||
* Request | * Request | ||
** URI /api/order/auth/sendPasswordLink | ** URI /api/order/auth/sendPasswordLink | ||
+ | ** POST request="[[#order.auth.sendPasswordLink|order.auth.sendPasswordLink]]" (Параметры запроса восстановления пароля) | ||
* Response: | * Response: | ||
− | ** [[#order | + | ** [[#order.auth.sendPasswordLinkResponse|order.auth.sendPasswordLinkResponse]] (Информация о результате операции) |
** [[#system.info|system.info]] (Служебная информация) | ** [[#system.info|system.info]] (Служебная информация) | ||
Строка 369: | Строка 371: | ||
* Request | * Request | ||
** URI /api/order/auth/registration | ** URI /api/order/auth/registration | ||
+ | ** POST request="[[#order.auth.registration|order.auth.registration]]" (Параметры запроса регистрации) | ||
* Response: | * Response: | ||
− | ** [[#order | + | ** [[#order.auth.registrationResponse|order.auth.registrationResponse]] (Информация о результате регистрации) |
** [[#system.info|system.info]] (Служебная информация) | ** [[#system.info|system.info]] (Служебная информация) | ||
Строка 378: | Строка 381: | ||
** URI /api/order/auth/captchaParams | ** URI /api/order/auth/captchaParams | ||
* Response: | * Response: | ||
− | ** [[#order | + | ** [[#order.auth.captchaParamsResponse|order.auth.captchaParamsResponse]] (Информация о параметрах капчи) |
** [[#system.info|system.info]] (Служебная информация) | ** [[#system.info|system.info]] (Служебная информация) | ||
Строка 385: | Строка 388: | ||
* Request | * Request | ||
** URI /api/order/auth/status | ** URI /api/order/auth/status | ||
+ | ** POST request="[[#order.auth.status|order.auth.status]]" (Параметры запроса проверки состояния заказа) | ||
* Response: | * Response: | ||
− | ** [[#order | + | ** [[#order.auth.statusResponse|order.auth.statusResponse]] (Информация о состоянии заказа) |
** [[#system.info|system.info]] (Служебная информация) | ** [[#system.info|system.info]] (Служебная информация) | ||
Строка 4853: | Строка 4857: | ||
== Заказы (order) == | == Заказы (order) == | ||
− | === | + | === Аутентификация (auth) === |
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | ||
− | ==== | + | ==== Данные запроса аутентификации(request) ==== |
− | <pre id="order.auth. | + | <pre id="order.auth.request">order.auth.request = </pre> |
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<pre> | <pre> | ||
− | + | { | |
− | + | "login": "test", | |
− | + | "password": "test" | |
− | + | } | |
− | |||
</pre> | </pre> | ||
{| border="1" cellpadding="10" cellspacing="0" | {| border="1" cellpadding="10" cellspacing="0" | ||
Строка 4873: | Строка 4876: | ||
!Значения | !Значения | ||
|- | |- | ||
− | | | + | |login |
− | | | + | |Логин пользователя |
− | | | + | |string |
− | | | + | |строка |
+ | |- | ||
+ | |password | ||
+ | |Пароль пользователя | ||
+ | |string | ||
+ | |строка | ||
|- | |- | ||
|} | |} | ||
Строка 4883: | Строка 4891: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | ||
− | ==== | + | ==== Данные результата аутентификации(response) ==== |
− | <pre id="order.auth. | + | <pre id="order.auth.response">order.auth.response = </pre> |
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<pre> | <pre> | ||
− | + | { | |
− | + | "success": true | |
− | + | } | |
− | |||
− | |||
− | |||
</pre> | </pre> | ||
{| border="1" cellpadding="10" cellspacing="0" | {| border="1" cellpadding="10" cellspacing="0" | ||
Строка 4902: | Строка 4907: | ||
|- | |- | ||
|success | |success | ||
− | |Результат | + | |Результат аутентификации |
|Boolean | |Boolean | ||
|Логический тип | |Логический тип | ||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|} | |} | ||
Строка 4916: | Строка 4916: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | ||
− | ==== | + | ==== Данные запроса восстановления пароля(sendPasswordLink) ==== |
− | <pre id="order.auth. | + | <pre id="order.auth.sendPasswordLink">order.auth.sendPasswordLink = </pre> |
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<pre> | <pre> | ||
− | + | { | |
− | + | "login": "test" | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
{| border="1" cellpadding="10" cellspacing="0" | {| border="1" cellpadding="10" cellspacing="0" | ||
Строка 4936: | Строка 4931: | ||
!Значения | !Значения | ||
|- | |- | ||
− | |success | + | |login |
+ | |Логин пользователя | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |} | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | ||
+ | ==== Результат запроса восстановления пароля(sendPasswordLinkResponse) ==== | ||
+ | <pre id="order.auth.sendPasswordLinkResponse">order.auth.sendPasswordLinkResponse = </pre> | ||
+ | <div class="mw-collapsible-content"> | ||
+ | |||
+ | <pre> | ||
+ | { | ||
+ | "success": true, | ||
+ | "message": "Письмо со ссылкой на восстановление пароля отправлено вам на почту" | ||
+ | } | ||
+ | </pre> | ||
+ | {| border="1" cellpadding="10" cellspacing="0" | ||
+ | !Параметр | ||
+ | !Описание | ||
+ | !Тип | ||
+ | !Значения | ||
+ | |- | ||
+ | |success | ||
+ | |Результат аутентификации | ||
+ | |Boolean | ||
+ | |Логический тип | ||
+ | |- | ||
+ | |message | ||
+ | |Сообщение | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |} | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | ||
+ | ==== Данные запроса регистрации пользователя(registration) ==== | ||
+ | <pre id="order.auth.registration">order.auth.registration = </pre> | ||
+ | <div class="mw-collapsible-content"> | ||
+ | |||
+ | <pre> | ||
+ | { | ||
+ | "booking_name": "tst", | ||
+ | "booking_lastname": "tst", | ||
+ | "registration_email": "tst@mute-lab.com", | ||
+ | "registration_password": "tst", | ||
+ | "booking_phone": "89271111111", | ||
+ | "subscribe": true, | ||
+ | "capture": "tst" | ||
+ | } | ||
+ | </pre> | ||
+ | {| border="1" cellpadding="10" cellspacing="0" | ||
+ | !Параметр | ||
+ | !Описание | ||
+ | !Тип | ||
+ | !Значения | ||
+ | |- | ||
+ | |booking_name | ||
+ | |Имя пользователя | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |booking_lastname | ||
+ | |Фамилия пользователя | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |registration_email | ||
+ | |Адрес электронной почты пользователя | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |registration_password | ||
+ | |Пароль | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |booking_phone | ||
+ | |Телефон пользователя | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |subscribe | ||
+ | |Признак согласия на получение информации о лучших предложениях | ||
+ | |Boolean | ||
+ | |Логический тип | ||
+ | |- | ||
+ | |capture | ||
+ | |Код проверки с контрольного изображения | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |} | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | ||
+ | ==== Результат запроса регистрации пользователя(registrationResponse) ==== | ||
+ | <pre id="order.auth.registrationResponse">order.auth.registrationResponse = </pre> | ||
+ | <div class="mw-collapsible-content"> | ||
+ | |||
+ | <pre> | ||
+ | { | ||
+ | "success": true, | ||
+ | "message": "Письмо с регистрационными данными отправлено на Ваш электронный адрес. Для подтверждения | ||
+ | регистрации перейдите, пожалуйста, по ссылке в письме.", | ||
+ | "redirectUrl": null | ||
+ | } | ||
+ | </pre> | ||
+ | {| border="1" cellpadding="10" cellspacing="0" | ||
+ | !Параметр | ||
+ | !Описание | ||
+ | !Тип | ||
+ | !Значения | ||
+ | |- | ||
+ | |success | ||
|Результат регистрации | |Результат регистрации | ||
+ | |Boolean | ||
+ | |Логический тип | ||
+ | |- | ||
+ | |message | ||
+ | |Сообщение | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |redirectUrl | ||
+ | |Ссылка для перехода | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |} | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | ||
+ | ==== Данные результата запроса о параметрах капчи(captchaParamsResponse) ==== | ||
+ | <pre id="order.auth.captchaParamsResponse">order.auth.captchaParamsResponse = </pre> | ||
+ | <div class="mw-collapsible-content"> | ||
+ | |||
+ | <pre> | ||
+ | { | ||
+ | "image": "data:image/jpeg;base64,JBJ435346...." | ||
+ | } | ||
+ | </pre> | ||
+ | {| border="1" cellpadding="10" cellspacing="0" | ||
+ | !Параметр | ||
+ | !Описание | ||
+ | !Тип | ||
+ | !Значения | ||
+ | |- | ||
+ | |image | ||
+ | |Ссылка на изображение | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |} | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | ||
+ | ==== Данные запроса о состоянии заказа(status) ==== | ||
+ | <pre id="order.auth.status">order.auth.status = </pre> | ||
+ | <div class="mw-collapsible-content"> | ||
+ | |||
+ | <pre> | ||
+ | { | ||
+ | "booking_id": 445469, | ||
+ | "passenger_lastname": "Ivanov", | ||
+ | "access_code": "8Z273L" | ||
+ | } | ||
+ | </pre> | ||
+ | {| border="1" cellpadding="10" cellspacing="0" | ||
+ | !Параметр | ||
+ | !Описание | ||
+ | !Тип | ||
+ | !Значения | ||
+ | |- | ||
+ | |booking_id | ||
+ | |Идентификатор заказа | ||
+ | |string | ||
+ | |строка, может содержать цифры от 0 до 9 и дефис | ||
+ | |- | ||
+ | |passenger_lastname | ||
+ | |Фамилия одного из пассажиров | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |access_code | ||
+ | |Код доступа к заказу | ||
+ | |string | ||
+ | |строка | ||
+ | |- | ||
+ | |} | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;"> | ||
+ | ==== Данные результата запроса о состоянии заказа(statusResponse) ==== | ||
+ | <pre id="order.auth.statusResponse">order.auth.statusResponse = </pre> | ||
+ | <div class="mw-collapsible-content"> | ||
+ | |||
+ | <pre> | ||
+ | { | ||
+ | "success": true, | ||
+ | "message": null, | ||
+ | "redirectUrl": "http://nemotravel/poffice__bookinfo?booking_id=452434" | ||
+ | } | ||
+ | </pre> | ||
+ | {| border="1" cellpadding="10" cellspacing="0" | ||
+ | !Параметр | ||
+ | !Описание | ||
+ | !Тип | ||
+ | !Значения | ||
+ | |- | ||
+ | |success | ||
+ | |Признак успешности получения ответа | ||
|Boolean | |Boolean | ||
|Логический тип | |Логический тип |
Текущая версия на 14:14, 27 февраля 2019
Содержание
- 1 Общее описание
- 2 Описание запросов
- 2.1 Модуль Авиабилеты (flights)
- 2.1.1 Модуль Поиск (search)
- 2.1.1.1 Получение параметров поиска "по умолчанию"
- 2.1.1.2 Получение параметров поиска с идентификатором Х
- 2.1.1.3 Запрос поиска авиабилетов (request)
- 2.1.1.4 Запрос поиска расписания авиаперелетов (scheduleRequest)
- 2.1.1.5 Запрос получения результатов поиска
- 2.1.1.6 Запрос получения результатов дочернего поиска из матрицы окружных дат
- 2.1.1.7 Запрос получения истории поиска по текущему пользователю
- 2.1.1.8 Запрос получения информации о перелёте
- 2.1.2 Модуль Вспомогательных Функций (utils)
- 2.1.1 Модуль Поиск (search)
- 2.2 Модуль Отели (hotels)
- 2.3 Модуль Путеводитель (guide)
- 2.3.1 Модуль Autocomplete (autocomplete)
- 2.3.2 Получение информации о воздушном судне(aircraft)
- 2.3.3 Получение информации о авиакомпании(airline)
- 2.3.4 Получение информации об аэропорте(airport)
- 2.3.5 Получение информации о городе(city)
- 2.3.6 Получение информации о стране(country)
- 2.3.7 Получение информации об отеле(hotel)
- 2.3.8 Получение информации об отелях в выбранном городе
- 2.4 Модуль Заказов (order)
- 2.5 Модуль информации о системе (system)
- 2.1 Модуль Авиабилеты (flights)
- 3 Объединение запросов
- 4 Структуры данных
- 4.1 Авиабилеты (flights)
- 4.1.1 Поиск (search)
- 4.1.1.1 Данные формы поиска (formData)
- 4.1.1.2 Данные запроса поиска (request)
- 4.1.1.3 Данные запроса поиска перелетов по расписанию (scheduleRequest)
- 4.1.1.4 Данные результатов поиска (results)
- 4.1.1.5 Данные результатов поиска расписания перелетов (scheduleResults)
- 4.1.1.6 Настройки выдачи результатов (resultData)
- 4.1.1.7 Матрица окружных дат (resultMatrix)
- 4.1.1.8 Выдача истории поиска по текущему пользователю (history)
- 4.1.1.9 Получение информации о перелёте(flightInfo)
- 4.1.2 Вспомогательные функции (utils)
- 4.1.1 Поиск (search)
- 4.2 Отели (hotels)
- 4.3 Путеводитель (guide)
- 4.4 Служебная информация(system)
- 4.5 Заказы (order)
- 4.5.1 Аутентификация (auth)
- 4.5.1.1 Данные запроса аутентификации(request)
- 4.5.1.2 Данные результата аутентификации(response)
- 4.5.1.3 Данные запроса восстановления пароля(sendPasswordLink)
- 4.5.1.4 Результат запроса восстановления пароля(sendPasswordLinkResponse)
- 4.5.1.5 Данные запроса регистрации пользователя(registration)
- 4.5.1.6 Результат запроса регистрации пользователя(registrationResponse)
- 4.5.1.7 Данные результата запроса о параметрах капчи(captchaParamsResponse)
- 4.5.1.8 Данные запроса о состоянии заказа(status)
- 4.5.1.9 Данные результата запроса о состоянии заказа(statusResponse)
- 4.5.2 Протокорзина (reminder)
- 4.5.1 Аутентификация (auth)
- 4.6 Информация о системе (system)
- 4.7 Трэвел-политики (travelPolicies)
- 4.1 Авиабилеты (flights)
Общее описание
JSON сервис, доступный по адресу HOST/api/...
Предоставляет унифицированный формат для разработки фронтэнд приложения на основе системы nemo.travel
Данные доступны как кроссдоменные запросы XMLHTTPRequest
Формат запросов имеет вид
http(s)://host/api/{component}/{module}/{action} + /{parameter1}/{parameter2}... (где параметры необязательны)
Пример: http://demo.nemo.travel/api/flights/search/formData
Примечание: для изменения языка в ответах запросов нужно использовать GET параметр apilang=xx
, где xx
это 2-х буквенный код языка.
Описание запросов
Модуль Авиабилеты (flights)
Модуль Поиск (search)
Получение параметров поиска "по умолчанию"
- Request
- Response:
- guide.cities.ID (Информация о городах)
- guide.airports.CODE (Информация об аэропортах)
- flights.search.formData (Параметры формы поиска)
- flights.search.request (Параметры запроса поиска)
- guide.countries.CODE (Информация о странах)
- system.info (Служебная информация)
Получение параметров поиска с идентификатором Х
- Request
- URI /api/flights/search/formData/{searchId} (получение параметров поиска с идентификатором {searchId})
- Response:
- guide.countries.CODE (Информация о странах)
- guide.cities.ID (Информация о городах)
- guide.airports.CODE (Информация об аэропортах)
- flights.search.formData (Параметры формы поиска)
- flights.search.request (Параметры запроса поиска)
- system.info (Служебная информация)
Запрос поиска авиабилетов (request)
- Request
- URI /api/flights/search/request/{searchId} (получение данных запроса поиска с идентификатором {searchId})
- POST request="flights.search.request" (Параметры запроса поиска)
- Response:
- guide.countries.CODE (Информация о странах)
- guide.cities.ID (Информация о городах)
- guide.airports.CODE (Информация об аэропортах)
- guide.airlines.CODE (Информация об авиакомпаниях, если выбраны предпочитаемые)
- flights.search.request (Параметры запроса поиска)
- system.info (Служебная информация)
примечание: /api/flights/search/request?test : тестовый скрипт
Запрос поиска расписания авиаперелетов (scheduleRequest)
- Request
- URI /api/flights/search/scheduleRequest?test (получение данных запроса поиска с идентификатором {searchId})
- POST request="flights.search.scheduleRequest" (Параметры запроса поиска)
- Response:
- guide.countries.CODE (Информация о странах)
- guide.cities.ID (Информация о городах)
- guide.airports.CODE (Информация об аэропортах)
- guide.airlines.CODE (Информация об авиакомпаниях, если выбраны предпочитаемые)
- flights.search.request (Параметры запроса поиска)
- flights.search.scheduleRequest (Параметры запроса поиска расписания перелетов)
- flights.search.formData (Параметры формы поиска)
- flights.search.scheduleResults (Результаты поиска расписания перелетов)
- system.info (Служебная информация)
примечание: /api/flights/search/scheduleRequest?test : тестовый скрипт
Запрос получения результатов поиска
- Request
- URI /api/flights/search/results/{searchId} (получение результатов поиска с идентификатором {searchId})
- Response:
- guide.countries.CODE (Информация о странах)
- guide.cities.ID (Информация о городах)
- guide.airports.CODE (Информация об аэропортах)
- guide.airlines.CODE (Информация об авиакомпаниях)
- guide.aircrafts.CODE (Информация о воздушных судах)
- flights.search.resultData (Параметры результатов поиска)
- flights.search.results (Результаты поиска)
- flights.search.request (Параметры запроса поиска)
- flights.search.formData (Параметры формы поиска)
- flights.search.resultMatrix (Данные для отображения матрицы перелетов, если выбран поиск по окружным датам)
- travelPolicies (Трэвел-политики и их описание)
- system.info (Служебная информация)
Запрос получения результатов дочернего поиска из матрицы окружных дат
- Request
- URI /api/flights/search/results/{searchId}/{depDate} (для перелета в одну сторону)
- Пример: /api/flights/search/results/53159/2015-07-09
- URI /api/flights/search/results/{searchId}/{depDate}/{depDateBack} (для перелета туда и обратно)
- Пример: /api/flights/search/results/53159/2015-07-09/2015-07-14
- URI /api/flights/search/results/{searchId}/{depDate} (для перелета в одну сторону)
- Response:
- flights.search.resultData (Параметры результатов поиска)
- flights.search.results (Результаты поиска)
- flights.search.request (Параметры запроса поиска)
- flights.search.formData (Параметры формы поиска)
- guide.countries.CODE (Информация о странах)
- guide.cities.ID (Информация о городах)
- guide.airports.CODE (Информация об аэропортах)
- guide.airlines.CODE (Информация об авиакомпаниях)
- guide.aircrafts.CODE (Информация о воздушных судах)
- system.info (Служебная информация)
Запрос получения истории поиска по текущему пользователю
- Request
- URI /api/flights/search/history
- Response:
- guide.countries.CODE (Информация о странах)
- guide.cities.ID (Информация о городах)
- guide.airports.CODE (Информация об аэропортах)
- flights.search.history (Информация об истории поиска поиска)
- system.info (Служебная информация)
Запрос получения информации о перелёте
- Request
- URI /api/flights/search/flightInfo/{flightId}
- Response:
- flights.search.flightInfo (Информация о перелёте)
- system.info (Служебная информация)
Модуль Вспомогательных Функций (utils)
Запрос определения солнечной стороны
- Request
- URI /api/flights/utils/sunInfo/{dep_airport}/{depDateTimeLocal}/{arr_airport}/{arrDateTimeLocal}
- Пример: /api/flights/utils/sunInfo/RTW/2016-06-28T15:00:00/DME/2016-06-28T20:30:00
- URI /api/flights/utils/sunInfo/{dep_airport}/{depDateTimeLocal}/{arr_airport}/{arrDateTimeLocal}
- Response:
- flights.utils.sunInfo (Информация о солнечной стороне)
- system.info (Служебная информация)
Модуль Отели (hotels)
Модуль Поиск (search)
Получение параметров поиска "по умолчанию"
- Request
- URI /api/hotels/search/formData :
- Response:
- guide.countries.CODE (Информация о странах)
- guide.cities.ID (Информация о городах)
- guide.hotels.ID (Информация об отелях)
- hotels.search.formData (Параметры формы поиска)
- hotels.search.request (Параметры запроса поиска)
- system.info (Служебная информация)
Получение параметров поиска с идентификатором Х
- Request
- URI /api/hotels/search/formData/{searchId} (получение параметров поиска с идентификатором {searchId})
- Response:
- guide.countries.CODE (Информация о странах)
- guide.cities.ID (Информация о городах)
- guide.hotels.ID (Информация об отелях)
- hotels.search.formData (Параметры формы поиска)
- hotels.search.request (Параметры запроса поиска)
- system.info (Служебная информация)
Запрос поиска отелей (request)
- Request
- URI /api/hotels/search/request/{searchId?} (получение данных запроса поиска с идентификатором {searchId} или создание нового запроса на поиск)
- POST request="hotels.search.request" (Параметры запроса поиска)
- Response:
- guide.countries.CODE (Информация о странах)
- guide.cities.ID (Информация о городах)
- guide.hotels.ID (Информация об отелях)
- hotels.search.request (Параметры запроса поиска)
- hotels.search.response (Параметры ответа поиска)
- system.info (Служебная информация
примечание: /api/hotels/search/request?test : тестовый скрипт
Запрос получения результатов поиска(results)
- Request
- URI /api/hotels/search/results/{sroId} (получение результатов поиска с идентификатором {sroId})
- Response:
- guide.countries.CODE (Информация о странах)
- guide.cities.ID (Информация о городах)
- guide.hotels.ID (Информация об отелях)
- hotels.search.request (Параметры запроса поиска)
- hotels.search.formData (Параметры формы поиска)
- hotels.search.resultData (Параметры результатов поиска)
- hotels.search.results (Результаты поиска)
- hotels.staticDataInfo (Информация о статике отелей)
- system.info (Служебная информация)
Модуль Автокомплит (autocomplete)
Автокомплит отелей и городов
- Request
- URI api/hotels/autocomplete/request/{query} :
- Response:
- hotels.autocomplete (Данные автокомплита)
- system.info (Служебная информация)
примеры:
- /api/hotels/autocomplete/request/mos : поиск "mos.."
Внимание! Язык, используемый в запросе, зависит от языка, установленного для пользователя. Английский используется для следующих языков:
'en' => 'English',
'de' => 'Deutsch',
'it' => 'Italiano',
'bg' => 'Български',
'es' => 'Español',
'nl' => 'Nederlands',
'tr' => 'Türkçe',
'il' => 'עברית',
'pt' => 'Português',
'tr' => 'Türk',
'fr' => 'Français',
'pl' => 'Polski'
Модуль Путеводитель (guide)
Модуль Autocomplete (autocomplete)
Автокомплит по IATA локациям
Аэропорты / Города имеющие IATA-совместимый код
- Request
- URI /api/guide/autocomplete/iata/{query}
- Response:
примеры:
- /api/guide/autocomplete/iata/mo : поиск "mo.."
- /api/guide/autocomplete/iata/le/noAltLayout : поиск "le.." без исправления раскладки
Автокомплит по городам
- Request
- URI /api/guide/autocomplete/cities/title/{countryCode}
- Response:
примеры:
- /api/guide/autocomplete/cities/мос : поиск "мос.."
- /api/guide/autocomplete/cities/мос/RU : поиск "мос.." в стране с кодом countryCode
Получение информации о воздушном судне(aircraft)
- Request
- URI /api/guide/aircrafts/{code}
- Response:
Получение информации о авиакомпании(airline)
- Request
- URI /api/guide/airlines/{codeIATA}
- URI api/guide/airlines/all (информация обо всех авикомпаниях)
- Response:
Получение информации об аэропорте(airport)
- Request
- URI /api/guide/airports/{codeIATA}
- Response:
Получение информации о городе(city)
- Request
- URI /api/guide/cities/{id}
- Response:
Получение информации о стране(country)
- Request
- URI /api/guide/countries/{code}
- Response:
Получение информации об отеле(hotel)
- Request
- URI /api/guide/hotels/{id}
- Response:
Получение информации об отелях в выбранном городе
- Request
- URI /api/guide/hotels/{id}/getByCityId
- Response:
Модуль Заказов (order)
Модуль аутентификации
Внимание, для сохранения статуса авторизованного пользователя запросы должны быть отправлены с поддержкой cookie
(Параметр withCredentials = true у объекта XmlHttpRequest в случае использования JS)
Запрос аутентификации пользователя
- Request
- URI /api/order/auth/request
- POST request="order.auth.request" (Параметры запроса аутентификации)
- Response:
- order.auth.response (Результат аутентификации)
- system.info (Служебная информация)
Запрос восстановления пароля
- Request
- URI /api/order/auth/sendPasswordLink
- POST request="order.auth.sendPasswordLink" (Параметры запроса восстановления пароля)
- Response:
- order.auth.sendPasswordLinkResponse (Информация о результате операции)
- system.info (Служебная информация)
Запрос регистрации
- Request
- URI /api/order/auth/registration
- POST request="order.auth.registration" (Параметры запроса регистрации)
- Response:
- order.auth.registrationResponse (Информация о результате регистрации)
- system.info (Служебная информация)
Запрос на получение параметров капчи
- Request
- URI /api/order/auth/captchaParams
- Response:
- order.auth.captchaParamsResponse (Информация о параметрах капчи)
- system.info (Служебная информация)
Запрос проверки состояния заказа
- Request
- URI /api/order/auth/status
- POST request="order.auth.status" (Параметры запроса проверки состояния заказа)
- Response:
- order.auth.statusResponse (Информация о состоянии заказа)
- system.info (Служебная информация)
Модуль Протокорзина (reminder)
Получение истории заказов пользователя
- Request
- URI /api/order/reminder/orders
- Response:
- guide.countries.CODE (Информация о странах)
- guide.cities.ID (Информация о городах)
- guide.airports.CODE (Информация об аэропортах)
- order.reminder.orders (Информация о заказах)
- system.info (Служебная информация)
Модуль информации о системе (system)
Модуль служебной информации (info)
Получение данных о валютах
- Request
- URI /system/info/currencyRates
- Response:
- system.info.currencyRates (Служебная информация)
Объединение запросов
Есть возможность добавить в один запрос контент от дополнительных запросов, чтобы сэкономить время загрузки фротэнд-приложения. Для этого нужно отправлять в запросе POST-параметр "resources", содержащий объект данных по дополнительным запросам в формате JSON:
- POST resources="JSON",
где JSON имеет формат:
{ "guide/airports/LON": {}, "guide/airports/PAR": {} }
пример: /api/flights/search/formData?test (тестовый скрипт)
Структуры данных
Авиабилеты (flights)
Поиск (search)
Данные формы поиска (formData)
flights.search.formData =
{ "maxLimits": { "passengerCount": { "ADT": "6", "SRC": "6", "YTH": "6", "CLD": "4", "INF": "2", "INS": "2" }, "totalPassengers": "9", "flightSegments": "5" }, "dateOptions": { "minOffset": 2, "maxOffset": 365, "incorrectDatesBlock": "on", "aroundDatesValues": [ 0, 1, 3 ] }, "useURLParams": "false", "showCitySwapBtn": "false", "passengersSelect": { "extendedPassengersSelect": "false", "fastPassengersSelect": [ { "label": "singleAdult", "set": { "ADT": 1 } }, { "label": "twoAdults", "set": { "ADT": 2 } }, { "label": "twoAdultsWithChild", "set": { "ADT": 2, "CLD": 1 } } ] }, "id": 49825, "uri": "/api/flights/search/formData/49825" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
maxLimits | Ограничения на максимальные значения параметров | {} | ... |
|
Ограничения на максимальные значения кол-ва пассажиров по параметрам | {} | ... |
|
Максимальное количество взрослых (больше 12 лет) пассажиров | number | Целое положительное число |
|
Максимальное количество пожилых пассажиров | number | Целое положительное число |
|
Максимальное количество молодых пассажиров | number | Целое положительное число |
|
Максимальное количество детей (младше 10 лет) | number | Целое положительное число |
|
Максимальное количество младенцев | number | Целое положительное число |
|
Максимальное количество младенцев с местом | number | Целое положительное число |
|
Максимальное количество пассажиров | number | Целое положительное число |
|
Максимальное количество плеч сложного перелета | number | Целое положительное число |
dateOptions | Ограничения на разрешенные даты для поиска билетов | {} | ... |
|
Ближайшая разрешенная дата для поиска билетов (дней от текущего числа) | number | Целое положительное число |
|
Самая дальняя разрешенная дата для поиска билетов (дней от текущего числа) | number | Целое положительное число |
|
Включить блокировку некорректных дат | boolean | Логический тип |
|
Допустимые значения радиусов для поиска по окружным датам | [] | Массив |
useURLParams | Использовать параметры из URL, записанные в «чистом виде» | boolean | Логический тип |
showCitySwapBtn | Отображение кнопки, меняющей местами города вылета и прилета | boolean | Логический тип |
passengersSelect | Настройки выбора пассажиров | {} | ... |
|
Включить расширенный поиск пассажиров | boolean | Логический тип |
|
Комбинации пассажиров для быстрого поиска | [] | ... |
|
Название комбинации | String | Строка |
|
Набор пар "тип пассажира":количество | {} | Тип пассажира имеет одно из следующих значений:
Количество - неотрицательное целое число |
id | Идентификатор поиска | number | Целое положительное число |
uri | URI поиска | String | Строка вида "/api/flights/search/formData/id" |
Данные запроса поиска (request)
flights.search.request =
{ "segments": [ { "departure": { "IATA": "MOW", "isCity": true }, "arrival": { "IATA": "BER", "isCity": true }, "departureDate": "2015-05-10T00:00:00" } ], "passengers": [ { "type": "ADT", "count": 1 } ], "parameters": { "searchType": "OW", "direct": false, "aroundDates": 0, "serviceClass": "All", "airlines": ["UT"], "delayed": false "priceRefundType": null } }
Параметр | Описание | Тип | Значения |
---|---|---|---|
segments | Информация о сегментах перелета | [] | ... |
|
Информация об аэропорте отправления | {} | ... |
|
Информация об аэропорте назначения | {} | ... |
|
IATA код аэропорта | string | Строка из 3-х заглавных латинских букв |
|
Признак, что в качестве точки отправления указан код города-агрегатора аэропортов | boolean | Логический тип |
|
Дата отправления | string | Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601) |
passengers | Информация о пассажирах, для которых требуется найти перелёт | [] | ... |
|
Тип пассажира | string | Одно из следующих значений:
|
|
Число пассажиров данного типа | number | Целое положительное число |
parameters | Параметры поиска | {} | ... |
|
Тип поиска | string | Строка, принимающая одно из значений:
|
|
Признак поиска только прямых перелетов | boolean | Логический тип |
|
Поиск по окружным датам – ±X дней к выбранной дате вылета | number | Положительное число |
|
Тип предпочитаемого класса обслуживания | string | Строка, принимающая одно из значений:
|
|
Предпочитаемые авиакомпании | [] | Массив IATA кодов авиакомпании |
|
Признак отложенного поиска. Если delayed=true,
то поиск не запускается, а сохраняется в базу. Поиск запустится при отправке запроса на получение его результатов. |
boolean | Логический тип |
|
Признак возвратности тарифа, где
|
string | Строка, принимающая одно из значений:
|
Данные запроса поиска перелетов по расписанию (scheduleRequest)
flights.search.scheduleRequest =
{ "scheduleRequest": { "id": 84880, "uri": "/api/flights/search/scheduleRequest/84880", "departure": { "IATA": "MOW", "isCity": true, "cityId": 58165 }, "arrival": { "IATA": "LED", "isCity": false, "cityId": 58166 }, "datePeriodBegin": "2016-02-07", "datePeriodEnd": "2016-04-10", "direct": true },
Параметр | Описание | Тип | Значения |
---|---|---|---|
scheduleRequest | Информация о параметрах запроса поиска расписания перелетов | {} | ... |
|
Номер поиска | number | ... |
|
Адрес на получение результатов поиска | string | ... |
|
Информация об аэропорте отправления | {} | ... |
|
Информация об аэропорте назначения | {} | ... |
|
IATA код аэропорта | string | Строка из 3-х заглавных латинских букв |
|
Признак, что в качестве точки отправления указан код города-агрегатора аэропортов | boolean | Логический тип |
|
Номер города из путеводителя | number | ... |
|
Дата начиная с которой будет расписание перелетов | string | Дата в формате ГГГГ-ММ-дд |
|
Дата по которую будет найдено расписание | string | Дата в формате ГГГГ-ММ-дд |
|
Признак поиска только прямых перелетов | boolean | Логический тип |
Данные результатов поиска (results)
flights.search.results =
"results": { "flightGroups": [ { "segments": [ "S1", "S2" ], "flights": [ { "id": 601010001, "price": "P1" } ] } ], "groupsData": { "prices": { "P1": { "flightPrice": { "amount": 119.01888888889, "currency": "USD" }, "agencyCharge": { "amount": -2.9711111111111, "currency": "USD" }, "totalPrice": { "amount": 119.01888888889, "currency": "USD" }, "priceWithoutPromocode": { "amount": 110.01888888889, "currency": "USD" }, "validatingCompany": "PS", "refundable": false, "privateFareInd": false, "ticketTimeLimit": "2015-05-27T23:59:59", "service": "SABRE", "avlSeatsMin": 6, "pricingDebug": { "link": "index.php?go=debug/pricing&flight_id=601010001", "text": "Комиссия: Нет" }, "warnings": { "insBookingNotAllowedBySupplier": "Бронирование отдельного сидячего места для младенца не допускается перевозчиком" }, "passengerFares": [ { "type": "ADT", "count": 1, "baseFare": { "amount": 50, "currency": "EUR" }, "equivFare": { "amount": 55, "currency": "USD" }, "totalFare": { "amount": 121.99, "currency": "USD" }, "taxes": [ { "YQF": { "amount": 16.5, "currency": "USD" } }, { "YQI": { "amount": 1, "currency": "USD" } }, { "YRI": { "amount": 10, "currency": "USD" } }, { "YRI": { "amount": 10, "currency": "USD" } }, { "RI": { "amount": 8.69, "currency": "USD" } }, { "UH": { "amount": 6.3, "currency": "USD" } }, { "UA": { "amount": 4, "currency": "USD" } }, { "UD": { "amount": 2, "currency": "USD" } }, { "YK": { "amount": 8.5, "currency": "USD" } } ], "tariffs": [ { "code": "JAPOWPS4", "segNum": 0, "routeNumber": 0 }, { "code": "JAPOWPS4", "segNum": 1, "routeNumber": 0 } ] } ], "segmentInfo": [ { "segNum": 0, "bookingClass": "J", "serviceClass": "Economy", "avlSeats": 6, "freeBaggage": [ { "passtype": "ADT", "value": 1, "measurement": "pc" } ] }, { "segNum": 1, "bookingClass": "J", "serviceClass": "Economy" "avlSeats": 8, "freeBaggage": [ { "passtype": "ADT", "value": 1, "measurement": "pc" } ] } ], "id": "P1" } }, "segments": { "S1": { "id": "S1", "depAirp": "DME", "arrAirp": "KBP", "routeNumber": 0, "operatingCompany": "PS", "marketingCompany": "PS", "flightNumber": "576", "aircraftType": "73H", "depDateTime": "2015-07-06T06:35:00", "arrDateTime": "2015-07-06T08:05:00", "depTerminal": "", "arrTerminal": "", "flightTime": 90, "eTicket": true, "stopPoints": [ { "airportCode": "DME", "cityCode": "MOW", "utc" => null, "terminal": "A", "depDateTime": "2015-07-06T07:35:00", "arrDateTime": "2015-07-06T07:55:00", "passengerLanding": null, } ] }, "S2": { "id": "S2", "depAirp": "KBP", "arrAirp": "CDG", "routeNumber": 0, "operatingCompany": "PS", "marketingCompany": "PS", "flightNumber": "127", "aircraftType": "73J", "depDateTime": "2015-07-06T12:50:00", "arrDateTime": "2015-07-06T09:20:00", "depTerminal": "", "arrTerminal": "", "flightTime": 210, "eTicket": true, "stopPoints": null } } }, "info": { "errorCode": null, "errorMessageEng": null }, "id": 49825, "uri": "/api/flights/search/results/49825", "matrixUri": "/api/flights/search/results/49821", }
Параметр | Описание | Тип | Значения |
---|---|---|---|
flightGroups | Группа перелетов | [] | Массив пуст, если
|
|
Сегмент перелета | [] | Массив пуст, если поиск был сделан по окружным датам |
|
Массив перелетов | [] | .. |
|
Идентификатор перелета | number | Число |
|
Код цены | string | Строка |
groupsData | Информация о группах перелетов | {} | ... |
|
Информация о ценах | {} или [] | Пуст, если
|
|
Цена перелета по тарифу | {} | ... |
|
Сумма | number | Дробное число |
|
Код валюты | string | Строка в формате ISO 4217(трёхбуквенный алфавитный код) |
|
Агентский сбор | {} | ... |
|
Итоговая цена | {} | ... |
|
Цена без промокода | {} | Если промокод не введен, null |
|
Код валидирующего перевозчика, предоставляющего данную цену | string | Строка из 2 знаков (букв латинского алфавита и цифр) |
|
Тип возвратности билета по перелёту с данной ценой | boolean | логический тип |
|
Признак наличия приватных тарифов в данной цене | boolean | логический тип |
|
Тайм-лимит данной цены (цена действительная до) | string | Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601) |
|
Минимальное кол-во доступных мест | number | Целое положительное число |
|
Данные о ссылке на ценообразование | {} | ... |
|
Ссылка на ценообразование для данного перелета | string | Строка вида "index.php?go=debug/pricing&flight_id={id}" |
|
Текст ссылки | string | Строка может иметь вид:
|
|
Тип ГДС | string | Строка |
|
Массив предупреждений | {} | Объект |
|
Массив ценовых составляющих по типам пассажиров | [] | ... |
|
Тип пассажира | string | Одно из следующих значений:
|
|
Количество пассажиров данного типа | number | Целое положительное число |
|
Базовая цена (только тарифы без такс) для 1 пассажира данного типа | {} | ... |
|
Базовая цена в эквивалентной валюте для 1 пассажира данного типа. | {} | Формат элемента аналогичен элементу BaseFare |
|
Полная цена (тарифы + таксы) для 1 пассажира данного типа в эквивалентной валюте. | {} | Формат элемента аналогичен элементу BaseFare. |
|
Контейнер для такс для данной ценовой составляющей | [] | ... |
|
Контейнер для тарифов данной ценовой составляющей | [] | ... |
|
Код тарифа | string | Строка |
|
Номер сегмента, для которого применяется данный тариф | number | Целое число |
|
Соответствие сегментам из SRO(номер плеча) | number | Целое число |
|
Допустимая мера бесплатного провоза багажа | [] | ... |
|
Тип пассажира, для которого определена мера | string | Аналогично type |
|
Количественно значение для допустимого количества багаж | number | Целое число |
|
Мера количества багажа | string | Строка |
|
Информация о сегментах | [] | ... |
|
Номер сегмента | number | Целое число |
|
Класс бронирования | string | Строка, состоящая из 1 латинской буквы |
|
Класс обслуживания | string | Строка, принимающая одно из значений:
|
|
Число доступных мест на сегменте | number | Целое положительное число |
|
Идентификатор цены | string | Строка |
|
Подробное описание сегментов перелетов | {} или [], если нет результатов поиска или поиск не найден | ... |
|
Идентификатор сегмента | string | Строка |
|
IATA код аэропорта отправления | string | Строка из 3 букв латинского алфавита |
|
IATA код аэропорта прибытия | string | Строка из 3 букв латинского алфавита |
|
Соответствие сегментам из SRO(номер плеча) | number | Целое число |
|
(IATA)Код оперирующего перевозчика | string | Строка из 2 знаков (букв латинского алфавита и цифр) |
|
Код маркетингого перевозчика | string | Строка из 2 знаков (букв латинского алфавита и цифр) |
|
Номер рейса для данного сегмента перелёта | number | Целое число |
|
Время перелета на сегменте | number/null | Целое число или null |
|
Код типа самолёта | string | Строка |
|
Дата и время отправления | string | Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601) |
|
Дата и время прибытия | string | Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601) |
|
Код терминала отправления | string | Строка |
|
Код терминала прибытия | string | Строка |
|
Время в пути в минутах | number | Целое положительное число |
|
Признак возможности выписки электронного билета на данном сегменте | boolean | логический тип |
|
Информация о технических остановках | [] | Массив объектов или null, если остановок нет |
|
IATA код аэропорта точки остановки | string | Строка из 3 букв латинского алфавита |
|
Код города точки остановки | string | Строка из 3 букв латинского алфавита |
|
Часовой пояс точки остановки | string | логический тип |
|
Терминал в аэропорте | string | логический тип |
|
Признак возможности выписки электронного билета на данном сегменте | string | логический тип |
|
Признак возможности выписки электронного билета на данном сегменте | string | Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601) |
|
Флаг ожидания в самолете | boolean или null | Логический тип, есть только у брони, у результатов поиска нет, на данный момент парсится только для Галилео |
|
Информация об успешности/неуспешности поиска | {} | |
|
Код ошибки | number | Число, может иметь следующие значения:
|
|
Сообщение об ошибке | string | Строка, принимающая следующие значения:
|
id | Идентификатор поиска | number | Число |
uri | URI поиска | string | Строка вида /api/flights/search/results/id |
matrixUri | URI поиска c матрицей окружных дат(параметр присутствует только если поиск сделан из матрицы) | string | Строка вида /api/flights/search/results/matrixSearchId |
Формирование перелета из сгруппированных данных
Структура перелета
flight:{ id, typeInfo: { directionType } segments:[ segment: { id, depAirp:{ airportCode, cityCode, UTC, terminal }, arrAirp:{...}, flightNumber, flightTime, opAirline, markAirline, aircraftType, depDateTime, arrDateTime, bookingClass:{ baseClass, bookingClassCode, freeSeatCount }, eTicket, } ], priceInfo:[ price:{ id, validatingCompany, refundable, privateFareInd, ticketTimeLimit, service, passengerFares:[ passengerFare:{ type, quantity, baseFare:{ amount, currency }, equivFare:{...}, totalFare:{...}, taxes:[ tax:{ amount, currency, taxCode }, ... ], tariffs:[ tariff:{ code, segNum, freeBaggage:{ passtype, value, measure } }, ... ] } ] } ] }
Из flightGroups берем коды сегментов перелета, по ним получаем информацию о сегментах из groupsData.segments По flights.price в groupsData.prices ищем код цены, получаем информацию о цене перелета
- По groupsData.prices.CODE.validatingCompany получаем информацию о валидирующем переводчике из guide.airlines
- Связываем тариф и сегмент, для которого он применяется, по segNum в тарифе и коду сегмента
- Из segmentInfo берем класс обслуживания и класс бронирования и связываем с сегментом по segNum
- По groupsData.segments.depAirp и groupsData.segments.arrAirp получаем информацию из guide.airports
- По groupsData.segments.operatingCompany и groupsData.segments.marketingCompany получаем информацию из guide.airlines
- По groupsData.segments.aircraftType получаем информацию из guide.aircrafts
- Связываем тариф и сегмент, для которого он применяется, по segNum в тарифе и коду сегмента
Данные результатов поиска расписания перелетов (scheduleResults)
flights.search.scheduleResults =
"scheduleResults": { "flights": { "F1": [{ "id": null, "depAirp": "DME", "arrAirp": "LED", "routeNumber": 1, "operatingCompany": "YC", "marketingCompany": "YC", "aircraftType": "320", "flightNumber": "6", "depTerminal": "A", "arrTerminal": "1", "flightTime": 80, "eTicket": true, "depTime": "01:30", "arrTime": "02:50", "depDateShift": 0, "arrDateShift": 0, "serviceClasses": ["Business", "Economy"], "schedulePeriod": { "startDate": "2015-09-23", "endDate": "2016-12-29", "daysOfWeek": [1, 2, 3, 4, 5, 6, 0] } }], "F2": [{ "id": null, "depAirp": "VKO", "arrAirp": "LED", "routeNumber": 1, "operatingCompany": "YC", "marketingCompany": "YC", "aircraftType": "CRJ", "flightNumber": "5", "depTerminal": "A", "arrTerminal": "1", "flightTime": 60, "eTicket": true, "depTime": "03:00", "arrTime": "04:00", "depDateShift": 0, "arrDateShift": 0, "serviceClasses": ["Economy"], "schedulePeriod": { "startDate": "2015-10-06", "endDate": "2017-02-19", "daysOfWeek": [2, 0] } }] }, "dates": { "2016-02-07": ["F1", "F2", "F3"], "2016-02-08": ["F1", "F3", "F4"], }, "info": { "errorCode": null, "errorMessageEng": null }, "id": 84880, "uri": "/api/flights/search/scheduleResults/84880" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
scheduleResults | Информация о результатах поиска | {} | ... |
|
Массив найденных перелетов | [] | ... |
|
Идентификатор перелета | number | Число |
|
Код аэропорта вылета | string | Трех-буквенный код аэропорта |
|
Код аэропорта прилета | string | Трех-буквенный код аэропорта |
|
Соответствие сегментам из SRO(номер плеча) | number | Целое число |
|
(IATA)Код оперирующего перевозчика | string | Строка из 2 знаков (букв латинского алфавита и цифр) |
|
Код маркетингого перевозчика | string | Строка из 2 знаков (букв латинского алфавита и цифр) |
|
Код типа самолёта | string | Строка |
|
Номер рейса для данного сегмента перелёта | number | Целое число |
|
Код терминала отправления | string | Строка |
|
Код терминала прибытия | string | Строка |
|
Время перелета на сегменте | number/null | Целое число или null |
|
Признак возможности выписки электронного билета на данном сегменте | boolean | логический тип |
|
Время отправки | string | Время в формате чч:мм |
|
Время прибытия | string | Время в формате чч:мм |
|
Смещение дня вылета относительно даты вылета первого сегмента всего перелёта | number | целое число |
|
Смещение дня прибытия относительно даты вылета первого сегмента всего перелёта | number | целое число |
|
Массив доступных классов перелетов | [] | Возможные типы классы (Business, Economy, First) |
|
Расписание, по которому совершается перелет | {} | ... |
|
Дата с которой совершается полет | string | Дата в формате гггг-ММ-дд |
|
Дата после которой данные перелеты прекратятся | string | Дата в формате гггг-ММ-дд |
|
Дни недели по которым совершается перелет | [] | Цифровые обозначения дней недели (1 - понедельник, ..., 6 - суббота, 0 - воскресение) |
|
Расписание перелетов по дням | {} | Каждой дате соответствует список перелетов, который совершаются в этот день |
|
Информация об успешности/неуспешности поиска | {} | |
|
Код ошибки | number | Число, может иметь следующие значения:
|
|
Сообщение об ошибке | string | Строка, принимающая следующие значения:
|
|
Номер поиска | number | ... |
|
Адрес для получения результатов | string | Ссылка вида /api/flights/search/scheduleResults/{$id} |
Настройки выдачи результатов (resultData)
flights.search.resultData =
{ "postFilters": { "postFiltersSort": { "transfersCount", "departureAirport", "arrivalAirport", "departureTime", "arrivalTime", "timeEnRoute", "transfersDuration", "carrier", "price" }, "showPostFilterHint": false }, "defaultSort": "durationOnLeg", "defaultShowVariants": 100, "useHintOverlay": true, "showBlocks": { "useShowCase": true, "showBestOffers": true, "showHotelOffer": true, "useFlightCompareTable": true }, "searchTimeout": { "useSearchTimeout": true, "warningBeforeSearchTimeout": 600, "searchTimeout": 720 } }
Параметр | Описание | Тип | Значения |
---|---|---|---|
postFilters | Настройки постфильтров | {} | ... |
|
Порядок постфильтров | [] | Упорядоченные названия постфильтров. Возможные названия:
|
|
Показать подсказку к постфильтрам | boolean | Логический тип |
defaultSort | Тип выбранной по умолчанию сортировки | string | Строка, принимающая следующие значения:
|
defaultShowVariants | Количество показанных изначально вариантов в блоке “Все варианты” | number | Целое положительное число |
useHintOverlay | Показать оверлей “подсказки” | boolean | Логический тип |
showBlocks | Настройки отображения дополнительных блоков | {} | ... |
|
Показать витрину | boolean | Логический тип |
|
Показать блок с предложениями от лучших авиакомпаний | boolean | Логический тип |
|
Показать блок с предложением отелей | boolean | Логический тип |
|
Использовать сравнительную таблицу перелетов | boolean | Логический тип |
searchTimeout | Настройки устаревания результатов поиска | {} | ... |
|
Использовать таймер устаревания результатов поиска | boolean | Логический тип |
|
Время в секундах, после которого появится предупреждение, что поиск устаревает | number | Целое положительное число |
|
Время в секундах, через которое поиск устаревает | number | Целое положительное число |
Матрица окружных дат (resultMatrix)
flights.search.resultMatrix =
Например, если опция поиска по окружным датам предполагает поиск при ±3 дня, то пользователю отображается матрица дат размером 7x1 ячеек для маршрута «В одну сторону» или 7x7 ячеек для маршрута «Туда и обратно». В каждой ячейке матрицы указана минимальная стоимость перевозки, ячейки с наиболее дешевыми вариантами выделены другим цветом. При нажатии на стоимость в таблице пользователь переходит на страницу результатов поиска на выбранную дату для выбора конкретного варианта перелета.
{ "rangeData": [ { "uri": "/api/flights/search/results/53159/2015-06-12/2015-06-17", "flightDate": "2015-06-12", "flightDateBack": "2015-06-17", "minPriceFlight": { "minPrice": { "amount": "16851", "currency": "RUB" }, "carrier": "OS", "segments": [ { "routeNumber": 0, "serviceClass": "economy", "depDateTime": "2015-06-12T14:40:00", "arrDateTime": "2015-06-12T17:20:00", "depAirp": "DME", "arrAirp": "CDG" }, { "routeNumber": 1, "serviceClass": "economy", "depDateTime": "2015-06-17T07:15:00", "arrDateTime": "2015-06-17T10:00:00", "depAirp": "CDG", "arrAirp": "DME" } ] } }, { "uri": "/api/flights/search/results/53159/2015-06-12/2015-06-18", "flightDate": "2015-06-12", "flightDateBack": "2015-06-18", "minPriceFlight": { "minPrice": { "amount": "16222", "currency": "RUB" }, "carrier": "OS", "segments": [ { "routeNumber": 0, "serviceClass": "economy", "depDateTime": "2015-06-12T14:40:00", "arrDateTime": "2015-06-12T17:20:00", "depAirp": "DME", "arrAirp": "CDG" }, { "routeNumber": 1, "serviceClass": "economy", "depDateTime": "2015-06-18T17:25:00", "arrDateTime": "2015-06-18T20:40:00", "depAirp": "CDG", "arrAirp": "DME" } ] } } ] }
Параметр | Описание | Тип | Значения |
---|---|---|---|
rangeData | Массив данных о каждой ячейке матрицы | [] | ... |
|
Cсылка получения результатов на один день | string | Строка вида /api/flights/search/results/matrixSearchId/flightDate/flightDateBack |
|
Дата перелета | string | Строка в формате yyyy-MM-dd |
|
Дата обратного перелета | string | Строка в формате yyyy-MM-dd для RT, null для OW |
|
Информация о самом дешевом перелете для выбранных дат | {} | ... |
|
Информация о минимальной цене | {} | ... |
|
Сумма | string | Вещественное число |
|
Код валюты | string | Строка в формате ISO 4217(трёхбуквенный алфавитный код) |
|
IATA код перевозчика | string | Строка из 2 знаков (букв латинского алфавита и цифр) |
|
Массив сегментов самого дешевого перелета | [] | ... |
|
Соответствие сегментам из SRO | number | Целое число |
|
Класс обслуживания | string | Строка, принимающая одно из значений:
|
|
Дата и время отправления | string | Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601) |
|
Дата и время прибытия | string | Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601) |
|
IATA код аэропорта отправления | string | Строка из 3 букв латинского алфавита |
|
IATA код аэропорта прибытия | string | Строка из 3 букв латинского алфавита |
Выдача истории поиска по текущему пользователю (history)
flights.search.history =
[ { "request": { "id": 59673, "uri": "/api/flights/search/request/59673", "segments": [ { "departure": { "IATA": "MOW", "isCity": true, "cityId": 58165 }, "arrival": { "IATA": "BER", "isCity": true, "cityId": 22046 }, "departureDate": "2015-09-10T00:00:00" } ], "passengers": [ { "type": "ADT", "count": 1 } ], "parameters": { "searchType": "OW", "direct": false, "aroundDates": 0, "serviceClass": "Economy", "airlines": [], "delayed": true } }, "formData": { "maxLimits": { "passengerCount": { "ADT": "5", "SRC": "5", "YTH": "5", "CLD": "5", "INF": "1", "INS": "3" }, "totalPassengers": "6", "flightSegments": "6" }, "dateOptions": { "minOffset": 0, "maxOffset": 365, "incorrectDatesBlock": true, "aroundDatesValues": [ 0, 1, 3 ] }, "useURLParams": true, "showCitySwapBtn": false, "passengersSelect": { "extendedPassengersSelect": true, "fastPassengersSelect": [ { "label": "singleAdult", "set": { "ADT": 1 } }, { "label": "twoAdults", "set": { "ADT": 2 } } ] }, "id": 59673, "uri": "/api/flights/search/formData/59673" }, "hasResults": true, "resultsCount": 125, "isDateRange": false } ]
Названия и значения полей аналогичны flights.search.request (параметры запроса поиска) и flights.search.formData (параметры формы поиска)
Получение информации о перелёте(flightInfo)
flights.search.flightInfo =
{ "isAvail": true, "priceStatus": { "changed": false, "oldValue": { "amount": 89752, "currency": "RUB" }, "newValue": { "amount": 89752, "currency": "RUB" } }, "tariffRules": { "BNOW": [ { "name": "RULE APPLICATION AND OTHER CONDITIONS", "text": "NOTE - THE FOLLOWING TEXT IS INFORMATIONAL AND NOT\nVALIDATED FOR AUTOPRICING...", "code": "50" }, { "name": "ELIGIBILITY", "text": "NO ELIGIBILITY REQUIREMENTS APPLY.", "code": "01" } ], "QNCOW": [ { "name": "RULE APPLICATION AND OTHER CONDITIONS", "text": "NOTE - THE FOLLOWING TEXT IS INFORMATIONAL AND NOT\nVALIDATED FOR AUTOPRICING...", "code": "50" }, { "name": "ELIGIBILITY", "text": "NO ELIGIBILITY REQUIREMENTS APPLY.", "code": "01" } ] }, "createOrderLink": "/create__order?flightId=767910178" } } }
Параметр | Описание | Тип | Значения |
---|---|---|---|
isAvail | Флаг доступности перелёта | boolean | логический тип |
priceStatus | Информация о статусе цены | {} | ... |
|
Флаг, показывающий, была ли изменена цена | boolean | логический тип |
|
Старое значение цены | {} | ... |
|
Сумма | string | Вещественное число |
|
Код валюты | string | Строка в формате ISO 4217(трёхбуквенный алфавитный код) |
|
Новое значение цены | {} | аналогичен oldValue |
tariffRules | Информация о тарифных правилах | {} | ... |
|
Название правила | string | Строка |
|
Описание правила | string | Строка |
|
Код правила | string | Строка |
createOrderLink | Ссылка на создание заказа | string | Строка |
Вспомогательные функции (utils)
Получение данных по солнечной стороне (sunInfo)
flights.utils.sunInfo =
{ "info": { "sunPercentLeft": 0, "sunPercentRight": 0 }, "message": "Солнце не будет мешать во время полета" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
sunPercentLeft | Процент времени от общей длительности перелета нахождения солнца с левой стороны борта самолета | number | Целое положительно число не большее 100 |
sunPercentRight | Процент времени от общей длительности перелета нахождения солнца с правой стороны борта самолета | number | Целое положительно число не большее 100 |
message | Сообщение с информацией о проценте времени нахождения солнца с определенной стороны | string | Строка |
Отели (hotels)
Поиск (search)
Данные формы поиска (formData)
hotels.search.formData =
{ "citySuggestions": [ 58165, 15777 ], "maxLimits": { "guestsCountInRoom": { "ADT": 4, "CLD": 4, "total": 6 }, "roomsCount": 4, "childrenAge": 17 }, "dateOptions": { "minOffset": 0, "maxOffset": 3695, "maxStayDays": 21 }, "roomsSelectionTemplates": { "useExtendedSelect": true, "fastSelect": [ { "ADT": 1, "CLD": 0, "childAges": [], "label": "singleAdult" }, { "ADT": 2, "CLD": 0, "childAges": [], "label": "twoAdults" } ] }, "id": 49825, "uri": "/api/hotels/search/formData/49825" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
citySuggestions | Массив идентификаторов городов, которые выводятся для примера на форме поиска | [] | ... |
maxLimits | Ограничения на максимальные значения параметров | {} | ... |
|
Ограничения на максимальные значения кол-ва человек в комнате | {} | ... |
|
Максимальное количество взрослых | number | Целое положительное число |
|
Максимальное количество детей | number | Целое положительное число |
|
Максимальное количество человек в комнате | number | Целое положительное число |
|
Количество комнат | number | Целое положительное число |
|
Максимальный возраст, при котором гость считается ребенком | number | Целое положительное число |
dateOptions | Ограничения на разрешенные даты для поиска отелей | {} | ... |
|
Ближайшая разрешенная дата для поиска отеля (дней от текущего числа) | number | Целое положительное число |
|
Самая дальняя разрешенная дата для поиска отеля (дней от текущего числа) | number | Целое положительное число |
|
Максимальное количество ночей, проведенных в отеле | number | Целое положительное число |
roomsSelectionTemplates | Настройки выбора гостей | {} | ... |
|
Включить расширенный поиск пассажиров | boolean | Логический тип |
|
Комбинации для быстрого поиска | [] | ... |
|
Максимальное количество взрослых | number | Целое положительное число |
|
Максимальное количество детей | number | Целое положительное число |
|
массив возрастов детей | number | Целое положительное число |
|
Название комбинации | String | Строка |
id | Идентификатор поиска | number | Целое положительное число |
uri | URI поиска | String | Строка вида "/api/hotels/search/formData/id" |
Данные запроса поиска (request)
hotels.search.request =
{ "cityId": 63052, "hotelId": 50778, "checkInDate": "2015-12-16T00:00:00", "checkOutDate": "2015-12-23T00:00:00", "isDelayed": false, "rooms": [ { "ADT": 1, "CLD": 1, "childAges": [ 10 ] } ], "id": 49825, "uri": "/api/hotels/search/request/49825" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
cityId | Идентификатор города, в котором расположен отель | int | Целое число |
hotelId | Идентификатор отеля(необязательный параметр) | int | Целое число |
checkInDate | Дата прибытия в отель | String | Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601) |
checkOutDate | Дата выселения из отеля | String | Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601) |
isDelayed | Признак отложенного поиска | boolean | Логический тип |
rooms | Информация о номерах | [] | ... |
|
Количество взрослых в номере | int | Целое число |
|
Количество детей в номере (необязательный параметр, если в номере нет детей) | int | Целое число |
|
Массив возрастов детей (необязательный параметр, если в номере нет детей) | [] | ... |
id | Идентификатор поиска | number | Целое положительное число |
uri | URI поиска | String | Строка вида "/api/hotels/search/request/id" |
Данные ответа на запрос поиска (response)
hotels.search.response =
{ "id": 20898 }
Параметр | Описание | Тип | Значения |
---|---|---|---|
id | Идентификатор поиска, полученный от поставщика | int | Целое число |
Настройки выдачи результатов (resultData)
hotels.search.resultData =
{ "showPostFilterHint": true, "defaultSort": "price", "showBlocks": { "useShowCase": true, "showFlightsOffer": true, "showMap": true, "showHotelsWatched": true }, "defaultShowVariants": 100, "showSupplier": true, "searchTimeout": { "useSearchTimeout": true, "warningBeforeSearchTimeout": 540, "searchTimeout": 600 }, "promotionalHotels": [ 50216654, 33961705 ] }
Параметр | Описание | Тип | Значения |
---|---|---|---|
showPostFilterHint | Показать подсказку к постфильтрам | boolean | Логический тип |
defaultSort | Тип выбранной по умолчанию сортировки | string | Строка, принимающая следующие значения:... |
showBlocks | Настройки отображения дополнительных блоков | {} | ... |
|
Показать витрину | boolean | Логический тип |
|
Показать блок с предложением перелетов | boolean | Логический тип |
|
Показать карту | boolean | Логический тип |
|
Показать блок с просмотренными отелями из данных результатов | boolean | Логический тип |
defaultShowVariants | Число вариантов, показанных по умолчанию | number | Целое положительное число |
showSupplier | Показывать поставщика в результатах поиска | boolean | Логический тип |
searchTimeout | Настройки устаревания результатов поиска | {} | ... |
|
Использовать таймер устаревания результатов поиска | boolean | Логический тип |
|
Время в секундах, после которого появится предупреждение, что поиск устаревает | number | Целое положительное число |
|
Время в секундах, через которое поиск устаревает | number | Целое положительное число |
promotionalHotels | Массив идентификаторов отелей, которые будут рекламироваться | [] | Массив |
Данные результатов поиска (results)
hotels.search.results =
{ "isFinished": true, "roomTypes": [ { "id": 0, "name": "Superior Double", "commonName": "Superior Double" }, { "id": 1, "name": "Superior Twin conventionalized", "commonName": "Superior Twin" }, { "id": 2, "name": "Junior Suite conventionalized", "commonName": "Junior Suite" }, { "id": 3, "name": "Economy (without windows) Single ", "commonName": "Economy Single" } ], "roomMeals": [ { "id": 0, "code": "BB", "name": "Continental Breakfast" }, { "id": 1, "code": "BB", "name": "Buffet Breakfast" }, { "id": 2, "code": "BB", "name": "Breakfast" } ], "roomRates": [ { "id": 0, "price": { "amount": 246.86, "currency": "EUR" }, "isSpecialOffer": false, "visaSupportProvided": false, "isNonRefundable": false, "bookingRemarks": "", "cancellationRules": [] }, { "id": 1, "price": { "amount": 246.86, "currency": "EUR" }, "isSpecialOffer": false, "visaSupportProvided": false, "isNonRefundable": false, "bookingRemarks": "", "cancellationRules": [] }, { "id": 2, "price": { "amount": 299.75, "currency": "EUR" }, "isSpecialOffer": false, "visaSupportProvided": false, "isNonRefundable": false, "bookingRemarks": "", "cancellationRules": [] }, { "id": 3, "price": { "amount": 170.75, "currency": "EUR" }, "isSpecialOffer": false, "visaSupportProvided": false, "isNonRefundable": false, "bookingRemarks": "", "cancellationRules": [] } ], "roomsGroup": [ { "id": 0, "typeId": 0, "mealId": 0, "rateId": 0 }, { "id": 1, "typeId": 1, "mealId": 0, "rateId": 1 }, { "id": 2, "typeId": 2, "mealId": 0, "rateId": 2 } ], "cancellationRules": [], "hotels": { "50236286": { "id": 50236286, "name": "Danilovskaya", "roomGroups": [ { "searchRoomId": 0, "roomVariants": [ 0, 1, 2 ] } ] } }, "info": { "warnings": [], "errorCode": null, "errorMessageEng": null }, "id": "167", "uri": "/api/hotels/search/results/167" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
isFinished | Признак полностью завершенного поиска | boolean | Логический тип |
roomTypes | Информация о найденных типах комнат | [] | ... |
|
Идентификатор типа комнаты в рамках данного поиска | number | Целое положительное число |
|
Название типа комнаты | string | Строка |
|
Распространенное название комнаты | string | Строка |
roomMeals | Информация о возможных типах питания | [] | ... |
|
Идентификатор типа питания в рамках этого результата поиска | number | Целое положительное число |
|
Название типа питания | string | Строка |
|
Код типа питания | string | Строка |
roomRates | Информация о стоимости комнат | [] | ... |
|
Идентификатор тарифа в рамках этого результата поиска | number | Целое положительное число |
|
Контейнер с информацией о валюте | {} | ... |
|
Сумма базовый цены | number | Дробное число |
|
Код валюты базовой цены | string | Строка |
|
является ли данный тариф специальным предложением | boolean | Логический тип |
|
Признак визовой поддержки отеля | boolean | Логический тип |
|
Признак возможности возврата | boolean | Логический тип |
|
Текст ремарок | string | Строка |
|
Набор идентификаторов правил отмены | [] | Массив целых положительных чисел |
roomsGroup | Информация о различных вариантах комнат | {} | ... |
|
Идентификатор комнаты | number | Целое положительное число |
|
Идентификатор типа комнаты | number | Целое положительное число |
|
Идентификатор типа питания | number | Целое положительное число |
|
Идентификатор тарифа | number | Целое положительное число |
cancellationRules | Информация о правилах отмены | [] | ... |
|
Идентификатор правила отмены в рамках результата данного поиска | number | Целое положительное число |
|
Время, до которого действует данное правило | string | Строка |
|
... | number | Число |
|
... | number | Число |
hotels | Информация об отелях | {} | ... |
|
Идентификатор отеля | number | Целое положительное число |
|
Название отеля | string | Строка |
|
Информация о комнатах в отеле | [] | ... |
|
Идентификатор комнаты в отеле в рамках данного поиска | number | Целое число |
|
Массив идентификаторов комнат - ссылки на roomsGroup | [] | |
info | Информация об успешности/неуспешности поиска | {} | |
|
Код ошибки | number | Число, может иметь следующие значения:
|
|
Сообщение об ошибке | string | Строка, принимающая следующие значения:
|
|
Массив предупреждений | [] |
Статика отелей (staticDataInfo)
Данные о статике отелей (staticDataInfo)
hotels.staticDataInfo =
{ "countries": [ { "id": 178, "name": "Russia", "isoCode": "RU" } ], "regions": [ { "id": 3000046, "name": "Москва", "countryId": 178 } ], "cities": [ { "id": 4754, "name": "Москва", "countryId": 178, "regionId": 3000046, "latitude": null, "longitude": null } ], "resorts": [ { "id": 1315, "name": "SHERSTON", "cityId": 4754 } ], "hotels": [ { "id": 163157, "name": "SHERSTON", "checkInTime": null, "checkOutTime": null, "starRating": 5, "category": null, "cityId": 4754, "resortId": null, "district": "", "posLatitude": null, "posLongitude": null, "description": null, "photos": [ "http://nt.natecnia.com/NT/photos/HOT/ES/best.western.dante.jumbotours/c_foto1173177694944.jpg", "http://nt.natecnia.com/NT/photos/HOT/ES/best.western.dante.jumbotours/c_foto1173177491528.jpg" ], "mainPhotoId": 0, "addresses": [ "MALLORCA 181", "MALLORCA 182" ], "features": { "CheckIn": { "typeName": "Круглосуточная регистрация", "featuresArray": [ "24h Reception", "Early check-in" ] } "Smoking": { "typeName": "Курение", "featuresArray": [ "Non Smoking Rooms" ] }, "Internet": { "typeName": "Интернет", "featuresArray": [ "Internet Corner ($)", "High- Speed Wireless Internet Access", "Wi-Fi (Public Areas)", "High Speed Internet Access" ] }, "ClimateControl": { "typeName": "Климат-контроль", "featuresArray": [ "Air Conditioning" ] }, "Safe": { "typeName": "Сейф", "featuresArray": [ "Safe" ] } }, "popularFeatures": [ "ExpressCheckIn", "WiFi", "ClimateControl" ], "distances": { "Subway Station": { "typeName": "Станция метро", "distancesArray": [ { "name": "Smolenskaya - Arbatsko-Pokrovskaya line", "isClose": false, "value": { "distance": 0.3, "measurement": "км", "transportType": null } }, { "name": "smolenskaya", "isClose": false, "value": { "distance": 0.3, "measurement": "км", "transportType": null } } ] }, "Bus Station": { "typeName": "Автобусная станция", "distancesArray": [ { "name": "", "isClose": true, "value": null } ] }, }, "customerRating": { "room": 9.1, "facilities": 7.7, "cleanness": 8.9, "food": 9.5, "staff": 8.2, "checkIn": 9.1, "valueForMoney": 9.6 }, "averageCustomerRating": { "value": 8.6, "description": "Хорошо" }, "usersOpinionInfo": { "opinionsCount": 2, "opinions": [ { "userName": "Варя", "mark": 1, "text": "Всё плохо" }, { "userName": "Бронислав", "mark": 5, "text": "Всё отлично!" } ] } } ], "popularHotelsFeatures": { "ExpressCheckIn": "Круглосуточная регистрация", "ConferenceFacilities": "услуги для проведения конференций", "Restaurant": "Ресторан", "Bar": "Бар", "Parking": "Парковка", "Children": "Услуги для клиентов с детьми", "WiFi": "WiFi", "BathroomAmenities": "Услуги для водных процедур", "Elevator": "Лифт", "ClimateControl": "Климат-контроль" } }
Параметр | Описание | Тип | Значения |
---|---|---|---|
countries | Массив стран | [] | ... |
|
Идентификатор страны в системе Немо2 | number | Целое положительное число |
|
Название страны | String | Строка |
|
ISO код страны | String | Строка из 2 букв(ISO 3166-1 alpha-2) |
regions | Массив регионов стран | [] | ... |
|
Идентификатор региона в системе Немо2 | number | Целое положительное число |
|
Название региона | String | Строка |
|
идентификатор страны в системе Немо2, которой принадлежит регион | number | Целое положительное число |
cities | Массив городов | [] | ... |
|
Идентификатор города в системе Немо2 | number | Целое положительное число |
|
Название города | String | Строка |
|
идентификатор страны в системе Немо2, которой принадлежит регион | number | Целое положительное число |
|
идентификатор региона в системе Немо2, которому принадлежит город | number | Целое положительное число |
|
Географическая широта города | number | Число |
|
Географическая долгота города | number | Число |
resorts | Информация о курортах | [] | ... |
|
Идентификатор курорта в системе Немо2 | number | Целое положительное число |
|
Название курорта | String | Строка |
|
Идентификатор города в системе Немо2, в котором находится курорт | number | Целое положительное число |
hotels | Информация об отелях | [] | ... |
|
Идентификатор отеля в системе Немо2 | number | Целое положительное число |
|
Название отеля | String | Строка |
|
Время заезда | String | Строка |
|
Время выезда | String | Строка |
|
Тип отеля | String | Строка |
|
Идентификатор города в системе Немо2, в котором находится отель | number | Целое положительное число |
|
идентификатор курорта в массиве resorts | number | Целое положительное число |
|
название района, в котором расположен отель | String | Строка |
|
Географическая широта отеля | number | Число |
|
Географическая долгота отеля | number | Число |
|
Время выезда | String | Строка |
|
Количество звезд | number | Целое число от 0 до 5 |
|
Описание отеля | String | Строка |
|
Массив фотографий отеля | [] | ... |
|
Идентификатор главного изображения | number | Целое число |
|
Информация об услугах, предоставляемых в отеле | {} | ... |
|
Идентификатор услуги(название группы услуг) | String | Строка |
|
Массив подробных описаний услуги | {} | Массив строк |
|
Список популярных услуг, предоставляемых отелем | [] | Массив |
|
Информация о расстояниях от отеля до важных объектов | {} | Объект |
|
Название типа объекта | String | Строка |
|
Массив объектов данного типа | {} | Объект |
|
Название объекта | String | Строка |
|
Признак того, что объект находится очень близко к отелю. Если имеет значение true, value=null | boolean | логический тип |
|
Информация о расстоянии/времени пути. Если она имеется, isClose=false | {} | ... |
|
Число единиц измерения | number | Число |
|
Единица измерения | String | Строка |
|
Тип способа перемещения, для которого актуальны distance и measurement | {} | ... |
|
Оценка отеля посетителями | [] | ... |
|
Оценка комнаты | number | Число |
|
Оценка бытовых удобств | number | Число |
|
Оценка чистоты | number | Число |
|
Оценка еды | number | Число |
|
Оценка обслуживающего персонала | number | Число |
|
Оценка регистрации | number | Число |
|
Оценка соотношения цены и качества | number | Число |
|
Данные о средней оценке отеля посетителями | [] | ... |
|
Оценка | number | Число |
|
Текствое описание(при оценке выше 7) | number | Число |
|
Информация об отзывах пользователей | {} | null, если нет отзывов |
|
Количество отзывов | number | Число |
|
Массив отзывов | [] | ... |
|
Имя пользователя, оставившего отзыв | string | Строка |
|
Оценка | number | Число |
|
Текст отзыва | string | Строка |
popularHotelsFeatures | Список популярных услуг, которые встречаются в данной выдаче | Объект вида "Ключ" => "Локальное название" | {} |
Полный список популярных услуг
Bar BathroomAmenities BusinessCenter ConferenceFacilities Children ClimateControl DisabledFacilities Elevator ExpressCheckIn Gym Laundry Meal Parking PetsAllowed Pool Restaurant SPA Transfer WiFi
Автокомплит отелей (autocomplete)
Автокомлит отелей (autocomplete)
hotels.autocomplete =
{ "autocomplete": { "cities": [{ "id": 4754, "name": "Москва", "country_code": "RU", "hotelsCount": 280, "country_name": "Россия" }, { "id": 14997, "name": "Моссель-Бей", "country_code": "ZA", "hotelsCount": 9, "country_name": "Южная Африка" }, { "id": 12838, "name": "Моссман", "country_code": "AU", "hotelsCount": 1, "country_name": "Австралия" }], "hotels": [{ "id": 50577298, "name": "Mosaic", "category": 4, "country_code": "TR", "cityName": "Istanbul", "country_name": "Турция" }, { "id": 50410601, "name": "Mosaic House", "category": 4, "country_code": "CZ", "cityName": "Prague", "country_name": "Чешская Республика" }, { "id": 50575348, "name": "Mosaic House", "category": 4, "country_code": "CZ", "cityName": "Prague", "country_name": "Чешская Республика" }], } } }
- id
Параметр | Описание | Тип | Значения |
---|---|---|---|
autocomplete | Блок ответа автокомлита | [] | ... |
|
Массив городов для автокомплита | [] | ... |
|
Номер города | integer | ... |
|
Название города | String | Строка |
|
Код страны | String | В формате ISO2 |
|
Количество отелей в городе | integer | ... |
|
Название страны | String | Строка |
|
Массив отелей | [] | ... |
Номер отеля | integer | ... | |
|
Название города | String | Строка |
|
Категория отеля | integer | Числа от 1 до 5, включительно |
|
Код страны | String | В формате ISO2 |
|
Название города | String | Строка |
|
Название страны | String | Строка |
Путеводитель (guide)
Страны (countries)
Данные по коду страны ISO 3166-1 alpha-2 (CODE)
guide.countries.CODE =
{ "code": "RU", "name": "Россия", "nameEn": "Russia" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
RU | Код страны | string | Строка из 2 латинских букв |
name | Название страны | string | Строка |
nameEn | Английское название страны | string | Строка |
Города(cities)
Данные по идентификатору города
guide.cities.ID =
{ "IATA": "MOW", "name": "Москва", "nameEn": "Moscow", "countryCode": "RU", "id": 58165 }
Параметр | Описание | Тип | Значения |
---|---|---|---|
IATA | Код города | string | Строка из 3 букв латинского алфавита |
name | Название города | string | Строка |
nameEn | Английское название города | string | Строка |
countryCode | Код страны | string | Строка из 2 букв(ISO 3166-1 alpha-2) |
id | Код города | number | Число |
Воздушные суда (aircrafts)
Данные по коду воздушного судна
guide.aircrafts.CODE =
{ "id": 108, "name": "Yk 42", "nameEn": "YK 42", "manufacture": "ОКБ Яковлева", "originCountries": [ "RU" ], "distanceType": "medium_range", "fuselageType": "narrowbody", "capacity": "102 - 120", "cruiseSpeed": "730", "isTurbineAirctaft": false, "isHomeAirctaft": false, "image": { "image": "/static/images/guide_aircraft/images_php154_0.jpg", "icon": "/static/images/guide_aircraft_icon/images_php154_0.jpg", "height": 500, "width": 743 }, "map_image": { "image": "/static/images/guide_aircraft/map_image_php155_0.jpg", "icon": "/static/images/guide_aircraft_icon/map_image_php155_0.jpg", "height": 200, "width": 500 } }
Параметр | Описание | Тип | Значения |
---|---|---|---|
id | Идентификатор воздушного судна | number | число |
name | Название авиакомпании | string | Строка |
nameEn | Английское название авиакомпании | string | Строка |
manufacture | Компания-производитель | string | Строка |
originCountries | Набор IATA-кодов стран-производителей | [] | ... |
distanceType | Магистральность | string | Строка, принимающая следующие значения:
|
fuselageType | Фюзеляжность | string | Строка, принимающая следующие значения:
|
capacity | Вместимость | string | Строка вида (100 - 200) |
cruiseSpeed | Крейсерская скорость (км/ч) | number | Целое положительное число |
isTurbineAirctaft | Турбовинтовой | boolean | Логический тип |
isHomeAirctaft | Отечественный | boolean | Логический тип |
image | Данные о логотипе | {} | ... |
|
Ссылка на логотип | string | Строка, указывающая относительный путь к изображению |
|
Ссылка на иконку логотипа | string | Строка, указывающая относительный путь к изображению |
|
Высота логотипа | number | Целое положительное число |
|
Ширина логотипа | number | Целое положительное число |
map_image | Данные о схеме судна | {} | ... |
Аэропорты (airports)
Данные по IATA коду аэропорта
guide.airports.CODE =
{ "IATA": "DME", "name": "Домодедово, Москва", "nameEn": "Domodedovo, Moscow", "properName": "Домодедово", "properNameEn": "Domodedovo", "cityId": 58165, "isAggregation": false, "countryCode": "RU" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
IATA | IATA код аэропорта | string | Строка из 3-х заглавных латинских букв |
name | Название аэропорта | string | Строка |
nameEn | Английское название аэропорта | string | Строка |
properName | Оригинальное название аэропорта (без города), может быть пустым | string | Строка |
properNameEn | Оригинальное название аэропорта на английском (без города), может быть пустым | string | Строка |
cityId | Код города | number | Число |
isAggregation | Является ли город агрегатом аэропортов | boolean | Логический тип |
countryCode | Код страны | string | Строка из 2 латинских букв(ISO 3166-1 alpha-2) |
Авиакомпании (airlines)
Данные по IATA коду авиакомпании
guide.airlines.CODE =
{ "IATA": "SU", "name": "Аэрофлот - Российские авиалинии", "nameEn": "Aeroflot", "rating": 6.43, "countryCode": "RU", "logo": { "image": "/static/images/guide_carrier/logotype_5_0.svg", "icon": "/static/images/guide_carrier_icon/logotype_5_0.svg", "height": null, "width": null }, "monochromeLogo": { "image": "/static/images/guide_carrier/monochrome_logotype_5_0.svg", "icon": "/static/images/guide_carrier_monochrome_icon/monochrome_logotype_5_0.svg", "height": null, "width": null }, "colors": { "companyColor": "#000080", "companyColorAdditional": "#000080" } }
Параметр | Описание | Тип | Значения |
---|---|---|---|
IATA | IATA код авиакомпании | string | Строка из 2 знаков (букв латинского алфавита и цифр) |
name | Название авиакомпании | string | Строка |
nameEn | Английское название авиакомпании | string | Строка |
rating | Рейтинг перевозчика | number | Число |
countryCode | Код страны авиакомпании | string | Строка из 2 латинских букв (ISO 3166-1 alpha-2) |
logo | Данные о логотипе авиакомпании | {} | ... |
monochromeLogo | Данные о монохромном логотипе авиакомпании | {} | ... |
|
Ссылка на логотип авиакомпании | string | Строка, указывающая относительный путь к изображению |
|
Ссылка на иконку логотипа авиакомпании | string | Строка, указывающая относительный путь к изображению |
|
Высота логотипа | number | Целое положительное число |
|
Ширина логотипа | number | Целое положительное число |
colors | Данные о фирменных цветах авиакомпании | {} | ... |
|
Фирменный цвет | string | HEX код, соответствующий регулярному выражению /^\#[\da-f]{6}$/ |
|
Дополнительный фирменный цвет | string | HEX код, соответствующий регулярному выражению /^\#[\da-f]{6}$/ |
Отели (hotels)
Данные по коду отеля
guide.hotels.ID =
{ "name": "Bridgestreet Opera Saint Lazar", "nameEn": "BRIDGESTREET OPERA SAINT LAZAR", "cityId": 15777, "id": 7 }
Параметр | Описание | Тип | Значения |
---|---|---|---|
name | Название отеля | string | Строка |
nameEn | Английское название отеля | string | Строка |
cityId | Идентификатор города, в котором расположен отель | number | Число |
id | Код отеля | number | Число |
Автокомплит (autocomplete)
IATA совместимые локации
guide.autocomplete.iata =
[ { "IATA": "MOW", "isCity": true, "cityId": 58165 } ]
Параметр | Описание | Тип | Значения |
---|---|---|---|
IATA | IATA код | string | Строка из 3 букв латинского алфавита |
isCity | Признак, что указан код города-агрегата аэропортов | boolean | Логический тип |
cityId | Идентификатор города | number | Число |
Города
guide.autocomplete.cities =
[ { "id": "58165", "name": "Москва", "country_code": "RU", "country_name": "Россия" } ]
Параметр | Описание | Тип | Значения |
---|---|---|---|
id | Идентификатор города | int | Целое число |
name | Название города | string | Строка |
country_code | Код страны | string | Строка из 2 латинских букв |
country_name | Название страны | string | Строка |
Служебная информация(system)
Служебная информация (info)
system.info =
{ "responce": { "timestamp": 1433754718.9557, "responceTime": 0.10900616645813 }, "user": { "userID": 3037, "agencyID": 3036, "status": "manager", "settings": { "currentLanguage": "ru", "currentCurrency": "USD", "agencyCurrency": "USD" "googleMapsApiKey": "null" "googleMapsClientId": "null" }, "promoCode": { "code": "22SV2ZS9S", "promoAction": { "name": "Название акции", "description": "Описание акции", "hasFullDesc": true, "fullDescURL": "index.php?go=loyalty/description&id=106" } } } }
Параметр | Описание | Тип | Значения |
---|---|---|---|
responce | Ограничения на максимальные значения параметров | {} | ... |
|
Текущая временная метка с сервера | number | Вещественное число |
|
Время ответа | number | Вещественное число |
user | Служебная информация о пользователе | {} | ... |
|
ID пользователя | number | Целое положительное число |
|
ID агентства | number | Целое положительное число |
|
Статус пользователя | string | Строка, принимающая следующие значения:
|
|
Настройки пользователя | {} | ... |
|
Текущий язык | string | Строка из 2 латинских букв |
|
Текущая валюта | string | Строка из 3 латинских букв |
|
Валюта агентства | string | Строка из 3 латинских букв |
|
Api ключ для доступа к google maps | string | Строка |
|
CliendId для доступа к google maps | string | Строка |
|
Информация о промокоде | {} | ... |
|
код | string | Строка |
|
информация о промоакции | {} | ... |
|
Название акции | string | Строка |
|
Описание акции | string | Строка |
|
Флаг наличия подробного описания | boolean | логический тип |
|
Ссылка для получения подробного описания | string | Строка |
Заказы (order)
Аутентификация (auth)
Данные запроса аутентификации(request)
order.auth.request =
{ "login": "test", "password": "test" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
login | Логин пользователя | string | строка |
password | Пароль пользователя | string | строка |
Данные результата аутентификации(response)
order.auth.response =
{ "success": true }
Параметр | Описание | Тип | Значения |
---|---|---|---|
success | Результат аутентификации | Boolean | Логический тип |
Данные запроса восстановления пароля(sendPasswordLink)
order.auth.sendPasswordLink =
{ "login": "test" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
login | Логин пользователя | string | строка |
Результат запроса восстановления пароля(sendPasswordLinkResponse)
order.auth.sendPasswordLinkResponse =
{ "success": true, "message": "Письмо со ссылкой на восстановление пароля отправлено вам на почту" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
success | Результат аутентификации | Boolean | Логический тип |
message | Сообщение | string | строка |
Данные запроса регистрации пользователя(registration)
order.auth.registration =
{ "booking_name": "tst", "booking_lastname": "tst", "registration_email": "tst@mute-lab.com", "registration_password": "tst", "booking_phone": "89271111111", "subscribe": true, "capture": "tst" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
booking_name | Имя пользователя | string | строка |
booking_lastname | Фамилия пользователя | string | строка |
registration_email | Адрес электронной почты пользователя | string | строка |
registration_password | Пароль | string | строка |
booking_phone | Телефон пользователя | string | строка |
subscribe | Признак согласия на получение информации о лучших предложениях | Boolean | Логический тип |
capture | Код проверки с контрольного изображения | string | строка |
Результат запроса регистрации пользователя(registrationResponse)
order.auth.registrationResponse =
{ "success": true, "message": "Письмо с регистрационными данными отправлено на Ваш электронный адрес. Для подтверждения регистрации перейдите, пожалуйста, по ссылке в письме.", "redirectUrl": null }
Параметр | Описание | Тип | Значения |
---|---|---|---|
success | Результат регистрации | Boolean | Логический тип |
message | Сообщение | string | строка |
redirectUrl | Ссылка для перехода | string | строка |
Данные результата запроса о параметрах капчи(captchaParamsResponse)
order.auth.captchaParamsResponse =
{ "image": "data:image/jpeg;base64,JBJ435346...." }
Параметр | Описание | Тип | Значения |
---|---|---|---|
image | Ссылка на изображение | string | строка |
Данные запроса о состоянии заказа(status)
order.auth.status =
{ "booking_id": 445469, "passenger_lastname": "Ivanov", "access_code": "8Z273L" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
booking_id | Идентификатор заказа | string | строка, может содержать цифры от 0 до 9 и дефис |
passenger_lastname | Фамилия одного из пассажиров | string | строка |
access_code | Код доступа к заказу | string | строка |
Данные результата запроса о состоянии заказа(statusResponse)
order.auth.statusResponse =
{ "success": true, "message": null, "redirectUrl": "http://nemotravel/poffice__bookinfo?booking_id=452434" }
Параметр | Описание | Тип | Значения |
---|---|---|---|
success | Признак успешности получения ответа | Boolean | Логический тип |
message | Сообщение | string | строка |
redirectUrl | Ссылка для перехода | string | строка |
Протокорзина (reminder)
Информация о заказах пользователя (orders)
order.reminder.orders =
[ { "id": 296944, "type": "oneFlight", "products": [ { "status": "completed", "type": "flight", "depAirpIATA": "VKO", "arrAirpIATA": "LED", "beginDateTime": "2015-09-29T10:00:00", "endDateTime": "2015-09-29T11:30:00", "totalPrice": { "amount": 485, "currency": "RUB" }, "description": "..." } ], "orderPrice": { "amount": 485, "currency": "RUB" } } ]
Параметр | Описание | Тип | Значения |
---|---|---|---|
id | Идентификатор заказа | number | Целое положительное число |
type | тип заказа | String | Строка |
products | Массив продуктов | [] | ... |
|
Статус | String | Строка, принимающая одно из следующих значений:
|
|
Тип продукта | String | Строка, принимающая одно из следующих значений:
|
|
Для перелёта - код аэропорта вылета | String | Строка из 2 знаков (букв латинского алфавита и цифр) |
|
Для перелёта - код аэропорта прилета | String | Строка из 2 знаков (букв латинского алфавита и цифр) |
|
Дата начала услуги | String | Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601) |
|
Дата завершения услуги | String | Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601) |
|
Цена услуги | {} | ... |
|
Сумма | number | Дробное число |
|
Код валюты | string | Строка в формате ISO 4217(трёхбуквенный алфавитный код) |
|
Описание продукта | string | Строка |
orderPrice | Цена заказа | {} | Формат аналогичен totalPrice |
Информация о системе (system)
Служебная информация (info)
Получение данных о валютах (currencyRates)
system.info.currencyRates =
{ "rates": [ { "currency": "EUR", "rate": 0.015983249554467, "title": "Евро" }, { "currency": "USD", "rate": 0.017322646415338, "title": "Американский Доллар" }, { "currency": "RUB", "rate": 1, "title": "Российский Рубль" }, { "currency": "GBP", "rate": 0.011694224105772, "title": "Британский фунт" }, { "currency": "CZK", "rate": 0.44018540609305, "title": "Чешская крона" }, { "currency": "LVL", "rate": 0.0169, "title": "Латвийский Лат" }, { "currency": "JPY", "rate": 2.0694507677662, "title": "Японская Йена" }, { "currency": "CNY", "rate": 0.10767415217373, "title": "Китайский Юань" }, { "currency": "UAH", "rate": 0.40708159136336, "title": "Гривна" } ], "conversionEnabled": true, "roundingFunction": "ceil", "backendCurrencyList": [ "RUB" ] }
Параметр | Описание | Тип | Значения |
---|---|---|---|
rates | Массив данных о валютах | [] | ... |
|
Код валюты | String | Строка в формате ISO 4217(трёхбуквенный алфавитный код) |
|
Код валюты | Numeric | Число от 0 до 1 |
|
Название валюты | String | Строка |
conversionEnabled | Флаг допустимости пересчета цен в результатах поиска | boolean | Логический тип |
roundingFunction | Тип округления | String | Строка, принимающая следующие значения:
|
backendCurrencyList | список валют, допустимых для бэкендных расчетов | [] | Массив кодов валют |
Трэвел-политики (travelPolicies)
Получение данных о трэвел-политиках (travelPolicies)
travelPolicies =
[ { "id": 184, "name": { "en": "First rule", "default": "Правило первое" }, "rules": { "isDirect": true, "arrAirports": [ "LED", "KBP" ], "depAirports": [ "MOW", "KBP" ], "arrCountries": [ "RU", "UA" ], "depCountries": [ "RU", "UA" ], "airlines": [ "SU", "PS" ], "serviceClass": [ "E", "B", "F" ], "zones": [ "EU", "AS" ], "tariffs": [ "QWE" ], "bookingClass": [ "T", "Q" ] }, "restrictions": { "priceMax": { "amount": "100000", "currency": "RUB" }, "priceDiffMax": { "amount": "20", "currency": "PCT" } } }, { "id": 185, "name": { "default": "Правило второе" }, "rules": { "isDirect": false, "arrAirports": [ "LED" ], "depAirports": [ "MOW" ], "arrCountries": [], "depCountries": [], "airlines": [], "serviceClass": [], "zones": [ "EU" ], "tariffs": [], "bookingClass": [] }, "restrictions": { "priceMax": { "amount": "90000", "currency": "RUB" }, "priceDiffMax": { "amount": "", "currency": "PCT" } } } ]
Параметр | Описание | Тип | Значения |
---|---|---|---|
id | Идентификатор правила | String | Строка |
name | Данные о названиях правила на разных языках | {} | Объект или null. Ключами являются коды языков либо default - название по умолчанию |
rules | Правила политики | {} | ... |
|
Флаг обязательного прямого перелета | boolean | Логический тип |
|
Массив IATA кодов аэропортов прибытия | [] | ... |
|
Массив IATA кодов аэропортов вылета | [] | ... |
|
Массив кодов стран прибытия | [] | ... |
|
Массив кодов стран вылета | [] | ... |
|
Массив IATA кодов авиакомпаний | [] | ... |
|
Массив однобуквенных кодов сервисных классов | [] | ... |
|
Массив кодов географических зон перелета | [] | ... |
|
Массив кодов тарифов | [] | ... |
|
Массив однобуквенных кодов допустимых классов бронирования | [] | ... |
restrictions | Ограничения по цене | {} | ... |
|
Верхняя планка цены | {} | ... |
|
Максимальная разбежка с минимальной ценой | {} | ... |
|
Сумма | number | Дробное число |
|
Код валюты | string | Строка в формате ISO 4217(трёхбуквенный алфавитный код) |