4253
правки
Изменения
Новая страница: «Категория:Немо 1.х = Общее описание = JSON сервис, доступный по адресу HOST/api/... Предоставл…»
[[Категория:Немо 1.х]]
= Общее описание =
JSON сервис, доступный по адресу HOST/api/...
Предоставляет унифицированный формат для разработки фронтэнд приложения на основе системы nemo.travel
Данные доступны как кроссдоменные запросы XMLHTTPRequest
Формат запросов имеет вид
http(s)://host/api/{component}/{module}/{action} + /{parameter1}/{parameter2}... (где параметры необязательны)
Пример:
http://demo.nemo.travel/api/flights/search/formData
= Описание запросов =
== Модуль Авиабилеты (flights) ==
=== Модуль Поиск (search) ===
==== Получение параметров поиска "по умолчанию" ====
* Request
** URI [http://demo.nemo.travel/api/flights/search/formData /api/flights/search/formData] :
* Response:
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#flights.search.formData|flights.search.formData]] (Параметры формы поиска)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#system.info|system.info]] (Служебная информация)
==== Получение параметров поиска с идентификатором Х ====
* Request
** URI /api/flights/search/formData/{searchId} (получение параметров поиска с идентификатором {searchId})
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#flights.search.formData|flights.search.formData]] (Параметры формы поиска)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#system.info|system.info]] (Служебная информация)
==== Запрос поиска авиабилетов (request) ====
* Request
** URI /api/flights/search/request/{searchId} (получение данных запроса поиска с идентификатором {searchId})
** POST request="[[#flights.search.request|flights.search.request]]" (Параметры запроса поиска)
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#guide.airlines.CODE|guide.airlines.CODE]] (Информация об авиакомпаниях, если выбраны предпочитаемые)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#system.info|system.info]] (Служебная информация)
примечание: [http://demo.nemo.travel/api/flights/search/request?test /api/flights/search/request?test] : тестовый скрипт
==== Запрос поиска расписания авиаперелетов (scheduleRequest) ====
* Request
** URI /api/flights/search/scheduleRequest?test (получение данных запроса поиска с идентификатором {searchId})
** POST request="[[#flights.search.scheduleRequest|flights.search.scheduleRequest]]" (Параметры запроса поиска)
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#guide.airlines.CODE|guide.airlines.CODE]] (Информация об авиакомпаниях, если выбраны предпочитаемые)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#flights.search.scheduleRequest|flights.search.scheduleRequest]] (Параметры запроса поиска расписания перелетов)
** [[#flights.search.formData|flights.search.formData]] (Параметры формы поиска)
** [[#flights.search.scheduleResults|flights.search.scheduleResults]] (Результаты поиска расписания перелетов)
** [[#system.info|system.info]] (Служебная информация)
примечание: [http://demo.nemo.travel/api/flights/search/scheduleRequest?test /api/flights/search/scheduleRequest?test] : тестовый скрипт
==== Запрос получения результатов поиска ====
* Request
** URI /api/flights/search/results/{searchId} (получение результатов поиска с идентификатором {searchId})
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#guide.airlines.CODE|guide.airlines.CODE]] (Информация об авиакомпаниях)
** [[#guide.aircrafts.CODE|guide.aircrafts.CODE]] (Информация о воздушных судах)
** [[#flights.search.resultData|flights.search.resultData]] (Параметры результатов поиска)
** [[#flights.search.results|flights.search.results]] (Результаты поиска)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#flights.search.formData|flights.search.formData]] (Параметры формы поиска)
** [[#flights.search.resultMatrix|flights.search.resultMatrix]] (Данные для отображения матрицы перелетов, если выбран поиск по окружным датам)
** [[#travelPolicies|travelPolicies]] (Трэвел-политики и их описание)
** [[#system.info|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
* Response:
** [[#flights.search.resultData|flights.search.resultData]] (Параметры результатов поиска)
** [[#flights.search.results|flights.search.results]] (Результаты поиска)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#flights.search.formData|flights.search.formData]] (Параметры формы поиска)
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#guide.airlines.CODE|guide.airlines.CODE]] (Информация об авиакомпаниях)
** [[#guide.aircrafts.CODE|guide.aircrafts.CODE]] (Информация о воздушных судах)
** [[#system.info|system.info]] (Служебная информация)
==== Запрос получения истории поиска по текущему пользователю ====
* Request
** URI /api/flights/search/history
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#flights.search.history|flights.search.history]] (Информация об истории поиска поиска)
** [[#system.info|system.info]] (Служебная информация)
==== Запрос получения информации о перелёте ====
* Request
** URI /api/flights/search/flightInfo/{flightId}
* Response:
** [[#flights.search.flightInfo|flights.search.flightInfo]] (Информация о перелёте)
** [[#system.info|system.info]] (Служебная информация)
== Модуль Отели (hotels) ==
=== Модуль Поиск (search) ===
==== Получение параметров поиска "по умолчанию" ====
* Request
** URI /api/hotels/search/formData :
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.hotels.ID|guide.hotels.ID]] (Информация об отелях)
** [[#hotels.search.formData|hotels.search.formData]] (Параметры формы поиска)
** [[#hotels.search.request|hotels.search.request]] (Параметры запроса поиска)
** [[#system.info|system.info]] (Служебная информация)
==== Получение параметров поиска с идентификатором Х ====
* Request
** URI /api/hotels/search/formData/{searchId} (получение параметров поиска с идентификатором {searchId})
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.hotels.ID|guide.hotels.ID]] (Информация об отелях)
** [[#hotels.search.formData|hotels.search.formData]] (Параметры формы поиска)
** [[#hotels.search.request|hotels.search.request]] (Параметры запроса поиска)
** [[#system.info|system.info]] (Служебная информация)
==== Запрос поиска отелей (request) ====
* Request
** URI /api/hotels/search/request/{searchId} (получение данных запроса поиска с идентификатором {searchId})
** POST request="[[#hotels.search.request|hotels.search.request]]" (Параметры запроса поиска)
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.hotels.ID|guide.hotels.ID]] (Информация об отелях)
** [[#hotels.search.request|hotels.search.request]] (Параметры запроса поиска)
** [[#hotels.search.response|hotels.search.response]] (Параметры ответа поиска)
** [[#system.info|system.info]] (Служебная информация
примечание: [https://hotels.tst.nemo.travel/api/hotels/search/request?test /api/hotels/search/request?test] : тестовый скрипт
==== Запрос получения результатов поиска(results) ====
* Request
** URI /api/hotels/search/results/{sroId} (получение результатов поиска с идентификатором {sroId})
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.hotels.ID|guide.hotels.ID]] (Информация об отелях)
** [[#hotels.search.request|hotels.search.request]] (Параметры запроса поиска)
** [[#hotels.search.formData|hotels.search.formData]] (Параметры формы поиска)
** [[#hotels.search.resultData|hotels.search.resultData]] (Параметры результатов поиска)
** [[#hotels.search.results|hotels.search.results]] (Результаты поиска)
** [[#hotels.staticDataInfo|hotels.staticDataInfo]] (Информация о статике отелей)
** [[#system.info|system.info]] (Служебная информация)
=== Модуль Автокомплит (autocomplete) ===
==== Автокомплит отелей и городов ====
* Request
** URI api/hotels/autocomplete/request/{query} :
* Response:
** [[#hotels.autocomplete|hotels.autocomplete]] (Данные автокомплита)
** [[#system.info|system.info]] (Служебная информация)
примеры:
# [http://hotels.tst.nemo.travel/api/hotels/autocomplete/request/mos /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:
** [[#guide.autocomplete.iata|guide.autocomplete.iata]]
** [[#system.info|system.info]]
примеры:
# [http://demo.nemo.travel/api/guide/autocomplete/iata/mo /api/guide/autocomplete/iata/mo] : поиск "mo.."
# [http://demo.nemo.travel/api/guide/autocomplete/iata/le/noAltLayout /api/guide/autocomplete/iata/le/noAltLayout] : поиск "le.." без исправления раскладки
==== Автокомплит по городам ====
* Request
** URI /api/guide/autocomplete/cities/title/{countryCode}
* Response:
** [[#guide.autocomplete.cities|guide.autocomplete.cities]]
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.cities.ID|guide.cities.ID]]
** [[#system.info|system.info]]
примеры:
# [http://demo.nemo.travel/api/guide/autocomplete/cities/мос /api/guide/autocomplete/cities/мос] : поиск "мос.."
# [http://demo.nemo.travel/api/guide/autocomplete/cities/мос/RU /api/guide/autocomplete/cities/мос/RU] : поиск "мос.." в стране с кодом countryCode
=== Получение информации о воздушном судне(aircraft) ===
* Request
** URI /api/guide/aircrafts/{code}
* Response:
** [[#guide.aircrafts.CODE|guide.aircrafts.CODE]]
** [[#system.info|system.info]]
=== Получение информации о авиакомпании(airline) ===
* Request
** URI /api/guide/airlines/{codeIATA}
** URI api/guide/airlines/all (информация обо всех авикомпаниях)
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.airlines.CODE|guide.airlines.CODE]]
** [[#system.info|system.info]]
=== Получение информации об аэропорте(airport) ===
* Request
** URI /api/guide/airports/{codeIATA}
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.cities.ID|guide.cities.ID]]
** [[#guide.airports.CODE|guide.airports.CODE]]
** [[#system.info|system.info]]
=== Получение информации о городе(city) ===
* Request
** URI /api/guide/cities/{id}
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.cities.ID|guide.cities.ID]]
** [[#system.info|system.info]]
=== Получение информации о стране(country) ===
* Request
** URI /api/guide/countries/{code}
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#system.info|system.info]]
=== Получение информации об отеле(hotel) ===
* Request
** URI /api/guide/hotels/{id}
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.cities.ID|guide.cities.ID]]
** [[#guide.hotels.ID|guide.hotels.ID]]
** [[#system.info|system.info]]
=== Получение информации об отелях в выбранном городе ===
* Request
** URI /api/guide/hotels/{id}/getByCityId
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.cities.ID|guide.cities.ID]]
** [[#guide.hotels.ID|guide.hotels.ID]]
** [[#system.info|system.info]]
== Модуль Заказов (order) ==
=== Модуль Протокорзина (reminder) ===
==== Получение истории заказов пользователя====
* Request
** URI /api/order/reminder/orders
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#order.reminder.orders|order.reminder.orders]] (Информация о заказах)
** [[#system.info|system.info]] (Служебная информация)
== Модуль информации о системе (system) ==
=== Модуль служебной информации (info) ===
==== Получение данных о валютах====
* Request
** URI /system/info/currencyRates
* Response:
** [[#system.info.currencyRates|system.info.currencyRates]] (Служебная информация)
= Объединение запросов =
Есть возможность добавить в один запрос контент от дополнительных запросов, чтобы сэкономить время загрузки фротэнд-приложения.
Для этого нужно отправлять в запросе POST-параметр "resources", содержащий объект данных по дополнительным запросам в формате JSON:
* POST resources="JSON",
где JSON имеет формат:
<pre>
{
"guide/airports/LON": {},
"guide/airports/PAR": {}
}
</pre>
пример: [http://demo.nemo.travel/api/flights/search/formData?test /api/flights/search/formData?test] (тестовый скрипт)
= Структуры данных =
== Авиабилеты (flights) ==
=== Поиск (search) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные формы поиска (formData) ====
<pre id="flights.search.formData">flights.search.formData = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|maxLimits
|Ограничения на максимальные значения параметров
|{}
|...
|-
|
: passengerCount
|Ограничения на максимальные значения кол-ва пассажиров по параметрам
|{}
|...
|-
|
:: ADT
|Максимальное количество взрослых (больше 12 лет) пассажиров
|number
|Целое положительное число
|-
|
:: SRC
|Максимальное количество пожилых пассажиров
|number
|Целое положительное число
|-
|
:: YTH
|Максимальное количество молодых пассажиров
|number
|Целое положительное число
|-
|
:: CLD
|Максимальное количество детей (младше 10 лет)
|number
|Целое положительное число
|-
|
:: INF
|Максимальное количество младенцев
|number
|Целое положительное число
|-
|
:: INS
|Максимальное количество младенцев с местом
|number
|Целое положительное число
|-
|
: totalPassengers
|Максимальное количество пассажиров
|number
|Целое положительное число
|-
|
: flightSegments
|Максимальное количество плеч сложного перелета
|number
|Целое положительное число
|-
|dateOptions
|Ограничения на разрешенные даты для поиска билетов
|{}
|...
|-
|
: minOffset
|Ближайшая разрешенная дата для поиска билетов (дней от текущего числа)
|number
|Целое положительное число
|-
|
: maxOffset
|Самая дальняя разрешенная дата для поиска билетов (дней от текущего числа)
|number
|Целое положительное число
|-
|
: incorrectDatesBlock
|Включить блокировку некорректных дат
|boolean
|Логический тип
|-
|
: aroundDatesValues
|Допустимые значения радиусов для поиска по окружным датам
|[]
|Массив
|-
| useURLParams
| Использовать параметры из URL, записанные в «чистом виде»
|boolean
|Логический тип
|-
| showCitySwapBtn
|Отображение кнопки, меняющей местами города вылета и прилета
|boolean
|Логический тип
|-
| passengersSelect
|Настройки выбора пассажиров
|{}
|...
|-
|
: extendedPassengersSelect
| Включить расширенный поиск пассажиров
|boolean
|Логический тип
|-
|
: fastPassengersSelect
| Комбинации пассажиров для быстрого поиска
|[]
|...
|-
|
:: label
|Название комбинации
|String
|Строка
|-
|
:: set
|Набор пар "тип пассажира":количество
|{}
|Тип пассажира имеет одно из следующих значений:
: ADT - взрослый,
: SRC - пожилой,
: YTH - молодой,
: CLD - ребёнок,
: INF - младенец без места в самолёте,
: INS - младенец с местом в самолёте
Количество - неотрицательное целое число
|-
|id
|Идентификатор поиска
|number
|Целое положительное число
|-
|uri
|URI поиска
|String
|Строка вида "/api/flights/search/formData/id"
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные запроса поиска (request) ====
<pre id="flights.search.request">flights.search.request = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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": [
{
"IATA": "UT"
}
],
"delayed": false
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|segments
|Информация о сегментах перелета
|[]
|...
|-
|
: departure
|Информация об аэропорте отправления
|{}
|...
|-
|
: arrival
|Информация об аэропорте назначения
|{}
|...
|-
|
:: IATA
|IATA код аэропорта
|string
|Строка из 3-х заглавных латинских букв
|-
|
:: isCity
|Признак, что в качестве точки отправления указан код города-агрегатора аэропортов
|boolean
|Логический тип
|-
|
: departureDate
|Дата отправления
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|passengers
|Информация о пассажирах, для которых требуется найти перелёт
|[]
|...
|-
|
: type
|Тип пассажира
|string
|Одно из следующих значений:
: ADT - взрослый,
: SRC - пожилой,
: YTH - молодой,
: CLD - ребёнок,
: INF - младенец без места в самолёте,
: INS - младенец с местом в самолёте
|-
|
: count
|Число пассажиров данного типа
|number
|Целое положительное число
|-
|parameters
|Параметры поиска
|{}
|...
|-
|
: searchType
|Тип поиска
|string
|Строка, принимающая одно из значений:
: OW (One-Way)
: RT (RoundTrip)
: CR (Complex Route)
|-
|
: direct
|Признак поиска только прямых перелетов
|boolean
|Логический тип
|-
|
: aroundDates
|Поиск по окружным датам – ±X дней к выбранной дате вылета
|number
|Положительное число
|-
|
: serviceClass
|Тип предпочитаемого класса обслуживания
|string
|Строка, принимающая одно из значений:
: Economy
: PremiumEconomy
: Business
: First
: All
|-
|
: airlines
|Предпочитаемые авиакомпании
|[]
|...
|-
|
:: IATA
|IATA код авиакомпании
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
: delayed
|Признак отложенного поиска. Если delayed=true,
то поиск не запускается, а сохраняется в базу.
Поиск запустится при отправке запроса на получение его результатов.
|boolean
|Логический тип
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные запроса поиска перелетов по расписанию (scheduleRequest) ====
<pre id="flights.search.scheduleRequest">flights.search.scheduleRequest = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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
},
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|scheduleRequest
|Информация о параметрах запроса поиска расписания перелетов
|{}
|...
|-
|
: id
|Номер поиска
|number
|...
|-
|
: uri
|Адрес на получение результатов поиска
|string
|...
|-
|
: departure
|Информация об аэропорте отправления
|{}
|...
|-
|
: arrival
|Информация об аэропорте назначения
|{}
|...
|-
|
:: IATA
|IATA код аэропорта
|string
|Строка из 3-х заглавных латинских букв
|-
|
:: isCity
|Признак, что в качестве точки отправления указан код города-агрегатора аэропортов
|boolean
|Логический тип
|-
|
:: cityId
|Номер города из путеводителя
|number
|...
|-
|
: datePeriodBegin
|Дата начиная с которой будет расписание перелетов
|string
|Дата в формате ГГГГ-ММ-дд
|-
|
: datePeriodBegin
|Дата по которую будет найдено расписание
|string
|Дата в формате ГГГГ-ММ-дд
|-
|
:direct
|Признак поиска только прямых перелетов
|boolean
|Логический тип
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные результатов поиска (results) ====
<pre id="flights.search.results">flights.search.results =</pre>
<div class="mw-collapsible-content">
<pre>
"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",
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|flightGroups
|Группа перелетов
|[]
|Массив пуст, если
: нет результатов поиска
: поиск не найден
: поиск был сделан по окружным датам
|-
|
: segments
|Сегмент перелета
|[]
|Массив пуст, если поиск был сделан по окружным датам
|-
|
: flights
|Массив перелетов
|[]
|..
|-
|
:: id
|Идентификатор перелета
|number
|Число
|-
|
:: price
|Код цены
|string
|Строка
|-
|groupsData
|Информация о группах перелетов
|{}
|...
|-
|
: prices
|Информация о ценах
|{} или []
|Пуст, если
: нет результатов поиска
: поиск не найден
: поиск был сделан по окружным датам
|-
|
:: flightPrice
|Цена перелета по тарифу
|{}
|...
|-
|
::: amount
|Сумма
|number
|Дробное число
|-
|
::: currency
|Код валюты
|string
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|
:: agencyCharge
|Агентский сбор
|{}
|...
|-
|
:: totalPrice
|Итоговая цена
|{}
|...
|-
|
::priceWithoutPromocode
|Цена без промокода
|{}
|Если промокод не введен, null
|-
|
:: validatingCompany
|Код валидирующего перевозчика, предоставляющего данную цену
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: refundable
|Тип возвратности билета по перелёту с данной ценой
|boolean
|логический тип
|-
|
:: privateFareInd
|Признак наличия приватных тарифов в данной цене
|boolean
|логический тип
|-
|
:: ticketTimeLimit
|Тайм-лимит данной цены (цена действительная до)
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
:: avlSeatsMin
|Минимальное кол-во доступных мест
|number
|Целое положительное число
|-
|
:: pricingDebug
|Данные о ссылке на ценообразование
|{}
|...
|-
|
::: link
|Ссылка на ценообразование для данного перелета
|string
|Строка вида "index.php?go=debug/pricing&flight_id={id}"
|-
|
::: text
|Текст ссылки
|string
|Строка может иметь вид:
: Комиссия: нет
: Комиссия: validatingCompany(XagencyCurrency), если комиссия задана в валюте
: Комиссия: validatingCompany(X%), если комиссия задана в процентах
|-
|
:: service
|Тип ГДС
|string
|Строка
|-
|
:: warnings
|Массив предупреждений
|{}
|Объект
|-
|
:: passengerFares
|Массив ценовых составляющих по типам пассажиров
|[]
|...
|-
|
::: type
|Тип пассажира
|string
|Одно из следующих значений:
: ADT - взрослый,
: SRC - пожилой,
: YTH - молодой,
: CLD - ребёнок,
: INF - младенец без места в самолёте,
: INS - младенец с местом в самолёте
|-
|
::: count
|Количество пассажиров данного типа
|number
|Целое положительное число
|-
|
::: baseFare
|Базовая цена (только тарифы без такс) для 1 пассажира данного типа
|{}
|...
|-
|
::: equivFare
|Базовая цена в эквивалентной валюте для 1 пассажира данного типа.
|{}
| Формат элемента аналогичен элементу BaseFare
|-
|
::: totalFare
|Полная цена (тарифы + таксы) для 1 пассажира данного типа в эквивалентной валюте.
|{}
| Формат элемента аналогичен элементу BaseFare.
|-
|
::: taxes
|Контейнер для такс для данной ценовой составляющей
|[]
|...
|-
|
::: tariffs
|Контейнер для тарифов данной ценовой составляющей
|[]
|...
|-
|
:::: code
|Код тарифа
|string
|Строка
|-
|
:::: segNum
|Номер сегмента, для которого применяется данный тариф
|number
|Целое число
|-
|
:::: routeNumber
|Соответствие сегментам из SRO(номер плеча)
|number
|Целое число
|-
|
:::: freeBaggage
|Допустимая мера бесплатного провоза багажа
|[]
|...
|-
|
::::: passtype
|Тип пассажира, для которого определена мера
|string
|Аналогично type
|-
|
::::: value
|Количественно значение для допустимого количества багаж
|number
|Целое число
|-
|
::::: measurement
|Мера количества багажа
|string
|Строка
|-
|
:: segmentInfo
|Информация о сегментах
|[]
|...
|-
|
::: segNum
|Номер сегмента
|number
|Целое число
|-
|
::: bookingClass
|Класс бронирования
|string
|Строка, состоящая из 1 латинской буквы
|-
|
::: serviceClass
|Класс обслуживания
|string
|Строка, принимающая одно из значений:
: Economy
: PremiumEconomy
: Business
: First
: All
|-
|
::: avlSeats
|Число доступных мест на сегменте
|number
|Целое положительное число
|-
|
:: id
|Идентификатор цены
|string
|Строка
|-
|
: segments
|Подробное описание сегментов перелетов
|{} или [], если нет результатов поиска или поиск не найден
|...
|-
|
:: id
|Идентификатор сегмента
|string
|Строка
|-
|
:: depAirp
|IATA код аэропорта отправления
|string
|Строка из 3 букв латинского алфавита
|-
|
:: arrAirp
|IATA код аэропорта прибытия
|string
|Строка из 3 букв латинского алфавита
|-
|
:: routeNumber
|Соответствие сегментам из SRO(номер плеча)
|number
|Целое число
|-
|
:: operatingCompany
|(IATA)Код оперирующего перевозчика
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: marketingCompany
|Код маркетингого перевозчика
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: flightNumber
|Номер рейса для данного сегмента перелёта
|number
|Целое число
|-
|
:: flightTime
|Время перелета на сегменте
|number/null
|Целое число или null
|-
|
:: aircraftType
|Код типа самолёта
|string
|Строка
|-
|
:: depDateTime
|Дата и время отправления
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
:: arrDateTime
|Дата и время прибытия
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
:: depTerminal
|Код терминала отправления
|string
|Строка
|-
|
:: arrTerminal
|Код терминала прибытия
|string
|Строка
|-
|
:: flightTime
|Время в пути в минутах
|number
|Целое положительное число
|-
|
:: eTicket
|Признак возможности выписки электронного билета на данном сегменте
|boolean
|логический тип
|-
|
:: stopPoints
|Информация о технических остановках
|[]
|Массив объектов или null, если остановок нет
|-
|
::: airportCode
|IATA код аэропорта точки остановки
|string
|Строка из 3 букв латинского алфавита
|-
|
::: cityCode
|Код города точки остановки
|string
|Строка из 3 букв латинского алфавита
|-
|
::: utc
|Часовой пояс точки остановки
|string
|логический тип
|-
|
::: terminal
|Терминал в аэропорте
|string
|логический тип
|-
|
::: depDateTime
|Признак возможности выписки электронного билета на данном сегменте
|string
|логический тип
|-
|
::: arrDateTime
|Признак возможности выписки электронного билета на данном сегменте
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
::: passengerLanding
|Флаг ожидания в самолете
|boolean или null
|Логический тип, есть только у брони, у результатов поиска нет, на данный момент парсится только для Галилео
|-
|
: info
|Информация об успешности/неуспешности поиска
|{}
|
|-
|
:: errorCode
|Код ошибки
|number
|Число, может иметь следующие значения:
: 404 ('No results')
: 410 ('Invalid SearchId')
: 500 ('System Error')
: null
|-
|
:: errorMessageEng
|Сообщение об ошибке
|string
|Строка, принимающая следующие значения:
: 'No results'
: 'Invalid SearchId'
: 'System Error'
: null
|-
|id
|Идентификатор поиска
|number
|Число
|-
|uri
|URI поиска
|string
|Строка вида /api/flights/search/results/id
|-
|matrixUri
|URI поиска c матрицей окружных дат(параметр присутствует только если поиск сделан из матрицы)
|string
|Строка вида /api/flights/search/results/matrixSearchId
|-
|}
'''Формирование перелета из сгруппированных данных'''
'''Структура перелета'''
<pre>
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
}
},
...
]
}
]
}
]
}
</pre>
Из 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
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные результатов поиска расписания перелетов (scheduleResults) ====
<pre id="flights.search.scheduleResults">flights.search.scheduleResults =</pre>
<div class="mw-collapsible-content">
<pre>
"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"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|scheduleResults
|Информация о результатах поиска
|{}
|...
|-
|
: flights
|Массив найденных перелетов
|[]
|...
|-
|
:: id
|Идентификатор перелета
|number
|Число
|-
|
::depAirp
|Код аэропорта вылета
|string
|Трех-буквенный код аэропорта
|-
|
:: arrAirp
|Код аэропорта прилета
|string
|Трех-буквенный код аэропорта
|-
|
:: routeNumber
|Соответствие сегментам из SRO(номер плеча)
|number
|Целое число
|-
|
:: operatingCompany
|(IATA)Код оперирующего перевозчика
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: marketingCompany
|Код маркетингого перевозчика
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: aircraftType
|Код типа самолёта
|string
|Строка
|-
|
:: flightNumber
|Номер рейса для данного сегмента перелёта
|number
|Целое число
|-
|
:: depTerminal
|Код терминала отправления
|string
|Строка
|-
|
:: arrTerminal
|Код терминала прибытия
|string
|Строка
|-
|
:: flightTime
|Время перелета на сегменте
|number/null
|Целое число или null
|-
|
:: eTicket
|Признак возможности выписки электронного билета на данном сегменте
|boolean
|логический тип
|-
|
:: depTime
|Время отправки
|string
|Время в формате чч:мм
|-
|
:: arrTime
|Время прибытия
|string
|Время в формате чч:мм
|-
|
:: depDateShift
|Смещение дня вылета относительно даты вылета первого сегмента всего перелёта
|number
|целое число
|-
|
:: arrDateShift
|Смещение дня прибытия относительно даты вылета первого сегмента всего перелёта
|number
|целое число
|-
|
:: serviceClasses
|Массив доступных классов перелетов
|[]
|Возможные типы классы (Business, Economy, First)
|-
|
:: schedulePeriod
|Расписание, по которому совершается перелет
|{}
|...
|-
|
::: startDate
|Дата с которой совершается полет
|string
|Дата в формате гггг-ММ-дд
|-
|
::: endDate
|Дата после которой данные перелеты прекратятся
|string
|Дата в формате гггг-ММ-дд
|-
|
::: daysOfWeek
|Дни недели по которым совершается перелет
|[]
|Цифровые обозначения дней недели (1 - понедельник, ..., 6 - суббота, 0 - воскресение)
|-
|
: dates
|Расписание перелетов по дням
|{}
| Каждой дате соответствует список перелетов, который совершаются в этот день
|-
|
: info
|Информация об успешности/неуспешности поиска
|{}
|
|-
|
:: errorCode
|Код ошибки
|number
|Число, может иметь следующие значения:
: 404 ('No results')
: 410 ('Invalid SearchId')
: 500 ('System Error')
: null
|-
|
:: errorMessageEng
|Сообщение об ошибке
|string
|Строка, принимающая следующие значения:
: 'No results'
: 'Invalid SearchId'
: 'System Error'
: null
|-
|
: id
|Номер поиска
|number
|...
|-
|
: uri
|Адрес для получения результатов
|string
|Ссылка вида /api/flights/search/scheduleResults/{$id}
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Настройки выдачи результатов (resultData) ====
<pre id="flights.search.resultData">flights.search.resultData = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|postFilters
|Настройки постфильтров
|{}
|...
|-
|
: postFiltersSort
|Порядок постфильтров
|[]
|Упорядоченные названия постфильтров. Возможные названия:
: transfersCount (Количество пересадок)
: departureTime (Время вылета)
: arrivalTime (Время прилёта)
: departureAirport (Аэропорт вылета)
: arrivalAirport (Аэропорт прилёта)
: price (Цена перелёта)
: carrier (Авиакомпании)
: transfersDuration (Длительность пересадки)
: timeEnRoute (Время перелёта)
|-
|
: showPostFilterHint
|Показать подсказку к постфильтрам
|boolean
|Логический тип
|-
|defaultSort
|Тип выбранной по умолчанию сортировки
|string
|Строка, принимающая следующие значения:
: price - цена
: durationOnLeg - время перелета
: rating - рейтинг
: carrierRating - рейтинг перевозчика
|-
|defaultShowVariants
|Количество показанных изначально вариантов в блоке “Все варианты”
|number
|Целое положительное число
|-
|useHintOverlay
|Показать оверлей “подсказки”
|boolean
|Логический тип
|-
|showBlocks
|Настройки отображения дополнительных блоков
|{}
|...
|-
|
: useShowCase
|Показать витрину
|boolean
|Логический тип
|-
|
: showBestOffers
|Показать блок с предложениями от лучших авиакомпаний
|boolean
|Логический тип
|-
|
: showHotelOffer
|Показать блок с предложением отелей
|boolean
|Логический тип
|-
|
: useFlightCompareTable
|Использовать сравнительную таблицу перелетов
|boolean
|Логический тип
|-
|searchTimeout
|Настройки устаревания результатов поиска
|{}
|...
|-
|
: useSearchTimeout
|Использовать таймер устаревания результатов поиска
|boolean
|Логический тип
|-
|
: warningBeforeSearchTimeout
|Время в секундах, после которого появится предупреждение, что поиск устаревает
|number
|Целое положительное число
|-
|
: searchTimeout
|Время в секундах, через которое поиск устаревает
|number
|Целое положительное число
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Матрица окружных дат (resultMatrix) ====
<pre id="flights.search.resultMatrix">flights.search.resultMatrix = </pre>
<div class="mw-collapsible-content">
Например, если опция поиска по окружным датам предполагает поиск при ±3 дня, то пользователю отображается матрица дат размером 7x1 ячеек для маршрута «В одну сторону» или 7x7 ячеек для маршрута «Туда и обратно». В каждой ячейке матрицы указана минимальная стоимость перевозки, ячейки с наиболее дешевыми вариантами выделены другим цветом. При нажатии на стоимость в таблице пользователь переходит на страницу результатов поиска на выбранную дату для выбора конкретного варианта перелета.
<pre>
{
"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"
}
]
}
}
]
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|rangeData
|Массив данных о каждой ячейке матрицы
|[]
|...
|-
|
: uri
|Cсылка получения результатов на один день
|string
|Строка вида /api/flights/search/results/matrixSearchId/flightDate/flightDateBack
|-
|
: flightDate
|Дата перелета
|string
|Строка в формате yyyy-MM-dd
|-
|
: flightDateBack
|Дата обратного перелета
|string
|Строка в формате yyyy-MM-dd для RT, null для OW
|-
|
: minPriceFlight
|Информация о самом дешевом перелете для выбранных дат
|{}
|...
|-
|
:: minPrice
|Информация о минимальной цене
|{}
|...
|-
|
::: amount
|Сумма
|string
|Вещественное число
|-
|
::: currency
|Код валюты
|string
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|
:: carrier
|IATA код перевозчика
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: segments
|Массив сегментов самого дешевого перелета
|[]
|...
|-
|
::: routeNumber
|Соответствие сегментам из SRO
|number
|Целое число
|-
|
::: serviceClass
|Класс обслуживания
|string
|Строка, принимающая одно из значений:
: economy
: premiumEconomy
: business
: first
: all
|-
|
::: depDateTime
|Дата и время отправления
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
::: arrDateTime
|Дата и время прибытия
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
::: depAirp
|IATA код аэропорта отправления
|string
|Строка из 3 букв латинского алфавита
|-
|
::: arrAirp
|IATA код аэропорта прибытия
|string
|Строка из 3 букв латинского алфавита
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Выдача истории поиска по текущему пользователю (history) ====
<pre id="flights.search.history">flights.search.history = </pre>
<div class="mw-collapsible-content">
<pre>
[
{
"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
}
]
</pre>
Названия и значения полей аналогичны [[#flights.search.request|flights.search.request]] (параметры запроса поиска) и [[#flights.search.formData|flights.search.formData]] (параметры формы поиска)
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Получение информации о перелёте(flightInfo) ====
<pre id="flights.search.flightInfo">flights.search.flightInfo = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|isAvail
|Флаг доступности перелёта
|boolean
|логический тип
|-
|priceStatus
|Информация о статусе цены
|{}
|...
|-
|
: changed
|Флаг, показывающий, была ли изменена цена
|boolean
|логический тип
|-
|
: oldValue
|Старое значение цены
|{}
|...
|-
|
:: amount
|Сумма
|string
|Вещественное число
|-
|
:: currency
|Код валюты
|string
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|
: newValue
|Новое значение цены
|{}
|аналогичен oldValue
|-
|tariffRules
|Информация о тарифных правилах
|{}
|...
|-
|
: name
|Название правила
|string
|Строка
|-
|
: text
|Описание правила
|string
|Строка
|-
|
: code
|Код правила
|string
|Строка
|-
|createOrderLink
|Ссылка на создание заказа
|string
|Строка
|-
|}
</div>
</div>
== Отели (hotels) ==
=== Поиск (search) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные формы поиска (formData) ====
<pre id="hotels.search.formData">hotels.search.formData = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|citySuggestions
|Массив идентификаторов городов, которые выводятся для примера на форме поиска
|[]
|...
|-
|maxLimits
|Ограничения на максимальные значения параметров
|{}
|...
|-
|
: guestsCountInRoom
|Ограничения на максимальные значения кол-ва человек в комнате
|{}
|...
|-
|
:: ADT
|Максимальное количество взрослых
|number
|Целое положительное число
|-
|
:: CLD
|Максимальное количество детей
|number
|Целое положительное число
|-
|
:: total
|Максимальное количество человек в комнате
|number
|Целое положительное число
|-
|
: roomsCount
|Количество комнат
|number
|Целое положительное число
|-
|
: childrenAge
|Максимальный возраст, при котором гость считается ребенком
|number
|Целое положительное число
|-
|dateOptions
|Ограничения на разрешенные даты для поиска отелей
|{}
|...
|-
|
: minOffset
|Ближайшая разрешенная дата для поиска отеля (дней от текущего числа)
|number
|Целое положительное число
|-
|
: maxOffset
|Самая дальняя разрешенная дата для поиска отеля (дней от текущего числа)
|number
|Целое положительное число
|-
|
: maxStayDays
|Максимальное количество ночей, проведенных в отеле
|number
|Целое положительное число
|-
|roomsSelectionTemplates
|Настройки выбора гостей
|{}
|...
|-
|
: useExtendedSelect
| Включить расширенный поиск пассажиров
|boolean
|Логический тип
|-
|
: fastSelect
| Комбинации для быстрого поиска
|[]
|...
|-
|
:: ADT
|Максимальное количество взрослых
|number
|Целое положительное число
|-
|
:: CLD
|Максимальное количество детей
|number
|Целое положительное число
|-
|
:: childAges
|массив возрастов детей
|number
|Целое положительное число
|-
|
:: label
|Название комбинации
|String
|Строка
|-
|id
|Идентификатор поиска
|number
|Целое положительное число
|-
|uri
|URI поиска
|String
|Строка вида "/api/hotels/search/formData/id"
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные запроса поиска (request) ====
<pre id="hotels.search.request">hotels.search.request = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|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
|Информация о номерах
|[]
|...
|-
|
: ADT
|Количество взрослых в номере
|int
|Целое число
|-
|
: CLD
|Количество детей в номере (необязательный параметр, если в номере нет детей)
|int
|Целое число
|-
|
: childAges
|Массив возрастов детей (необязательный параметр, если в номере нет детей)
|[]
|...
|-
|id
|Идентификатор поиска
|number
|Целое положительное число
|-
|uri
|URI поиска
|String
|Строка вида "/api/hotels/search/request/id"
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные ответа на запрос поиска (response) ====
<pre id="hotels.search.response">hotels.search.response = </pre>
<div class="mw-collapsible-content">
<pre>
{
"id": 20898
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|id
|Идентификатор поиска, полученный от поставщика
|int
|Целое число
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Настройки выдачи результатов (resultData) ====
<pre id="hotels.search.resultData">hotels.search.resultData = </pre>
<div class="mw-collapsible-content">
<pre>
{
"showPostFilterHint": true,
"defaultSort": "price",
"showBlocks": {
"useShowCase": true,
"showFlightsOffer": true,
"showMap": true,
"showHotelsWatched": true
},
"defaultShowVariants": 100,
"showSupplier": true,
"searchTimeout": {
"useSearchTimeout": true,
"warningBeforeSearchTimeout": 540,
"searchTimeout": 600
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|showPostFilterHint
|Показать подсказку к постфильтрам
|boolean
|Логический тип
|-
|defaultSort
|Тип выбранной по умолчанию сортировки
|string
|Строка, принимающая следующие значения:...
|-
|showBlocks
|Настройки отображения дополнительных блоков
|{}
|...
|-
|
: useShowCase
|Показать витрину
|boolean
|Логический тип
|-
|
: showFlightsOffer
|Показать блок с предложением перелетов
|boolean
|Логический тип
|-
|
: showMap
|Показать карту
|boolean
|Логический тип
|-
|
: showHotelsWatched
|Показать блок с просмотренными отелями из данных результатов
|boolean
|Логический тип
|-
|defaultShowVariants
|Число вариантов, показанных по умолчанию
|number
|Целое положительное число
|-
|showSupplier
|Показывать поставщика в результатах поиска
|boolean
|Логический тип
|-
|searchTimeout
|Настройки устаревания результатов поиска
|{}
|...
|-
|
: useSearchTimeout
|Использовать таймер устаревания результатов поиска
|boolean
|Логический тип
|-
|
: warningBeforeSearchTimeout
|Время в секундах, после которого появится предупреждение, что поиск устаревает
|number
|Целое положительное число
|-
|
: searchTimeout
|Время в секундах, через которое поиск устаревает
|number
|Целое положительное число
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные результатов поиска (results) ====
<pre id="hotels.search.results">hotels.search.results = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|isFinished
|Признак полностью завершенного поиска
|boolean
|Логический тип
|-
|roomTypes
|Информация о найденных типах комнат
|[]
|...
|-
|
: id
|Идентификатор типа комнаты в рамках данного поиска
|number
|Целое положительное число
|-
|
: name
|Название типа комнаты
|string
|Строка
|-
|
: commonName
|Распространенное название комнаты
|string
|Строка
|-
|roomMeals
|Информация о возможных типах питания
|[]
|...
|-
|
: id
|Идентификатор типа питания в рамках этого результата поиска
|number
|Целое положительное число
|-
|
: name
|Название типа питания
|string
|Строка
|-
|
: code
|Код типа питания
|string
|Строка
|-
|roomRates
|Информация о стоимости комнат
|[]
|...
|-
|
: id
|Идентификатор тарифа в рамках этого результата поиска
|number
|Целое положительное число
|-
|
: price
|Контейнер с информацией о валюте
|{}
|...
|-
|
:: amount
|Сумма базовый цены
|number
|Дробное число
|-
|
:: currency
|Код валюты базовой цены
|string
|Строка
|-
|
: isSpecialOffer
|является ли данный тариф специальным предложением
|boolean
|Логический тип
|-
|
: visaSupportProvided
|Признак визовой поддержки отеля
|boolean
|Логический тип
|-
|
: isNonRefundable
|Признак возможности возврата
|boolean
|Логический тип
|-
|
: bookingRemarks
|Текст ремарок
|string
|Строка
|-
|
: cancellationRules
|Набор идентификаторов правил отмены
|[]
|Массив целых положительных чисел
|-
|roomsGroup
|Информация о различных вариантах комнат
|{}
|...
|-
|
: id
|Идентификатор комнаты
|number
|Целое положительное число
|-
|
: typeId
|Идентификатор типа комнаты
|number
|Целое положительное число
|-
|
: mealId
|Идентификатор типа питания
|number
|Целое положительное число
|-
|
: rateId
|Идентификатор тарифа
|number
|Целое положительное число
|-
|cancellationRules
|Информация о правилах отмены
|[]
|...
|-
|
: id
|Идентификатор правила отмены в рамках результата данного поиска
|number
|Целое положительное число
|-
|
: deadLine
|Время, до которого действует данное правило
|string
|Строка
|-
|
: percentValue
|...
|number
|Число
|-
|
: absoluteValue
|...
|number
|Число
|-
|hotels
|Информация об отелях
|{}
|...
|-
|
: id
|Идентификатор отеля
|number
|Целое положительное число
|-
|
: name
|Название отеля
|string
|Строка
|-
|
: roomGroups
|Информация о комнатах в отеле
|[]
|...
|-
|
:: searchRoomId
|Идентификатор комнаты в отеле в рамках данного поиска
|number
|Целое число
|-
|
:: roomVariants
| Массив идентификаторов комнат - ссылки на roomsGroup
|[]
|
|-
|info
|Информация об успешности/неуспешности поиска
|{}
|
|-
|
: errorCode
|Код ошибки
|number
|Число, может иметь следующие значения:
: 404 ('No results')
: 410 ('Invalid SearchId')
: 500 ('System Error')
: null
|-
|
: errorMessageEng
|Сообщение об ошибке
|string
|Строка, принимающая следующие значения:
: 'No results'
: 'Invalid SearchId'
: 'System Error'
: null
|-
|
: warnings
|Массив предупреждений
|[]
|
|-
|}
</div>
</div>
=== Статика отелей (staticDataInfo) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные о статике отелей (staticDataInfo) ====
<pre id="hotels.staticDataInfo">hotels.staticDataInfo = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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,
"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": {
"Smoking": {
"typeName": "Smoking",
"featuresArray": [
"Non Smoking Rooms"
]
},
"Service": {
"typeName": "Service",
"featuresArray": [
"Room Service",
"Dry Cleaning Service"
]
},
},
"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": "Всё отлично!"
}
]
}
}
]
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|countries
|Массив стран
|[]
|...
|-
|
: id
|Идентификатор страны в системе Немо2
|number
|Целое положительное число
|-
|
: name
|Название страны
|String
|Строка
|-
|
: isoCode
|ISO код страны
|String
|Строка из 2 букв(ISO 3166-1 alpha-2)
|-
|regions
|Массив регионов стран
|[]
|...
|-
|
: id
|Идентификатор региона в системе Немо2
|number
|Целое положительное число
|-
|
: name
|Название региона
|String
|Строка
|-
|
: countryId
|идентификатор страны в системе Немо2, которой принадлежит регион
|number
|Целое положительное число
|-
|cities
|Массив городов
|[]
|...
|-
|
: id
|Идентификатор города в системе Немо2
|number
|Целое положительное число
|-
|
: name
|Название города
|String
|Строка
|-
|
: countryId
|идентификатор страны в системе Немо2, которой принадлежит регион
|number
|Целое положительное число
|-
|
: regionId
|идентификатор региона в системе Немо2, которому принадлежит город
|number
|Целое положительное число
|-
|
: latitude
|Географическая широта города
|number
|Число
|-
|
: longitude
|Географическая долгота города
|number
|Число
|-
|resorts
|Информация о курортах
|[]
|...
|-
|
: id
|Идентификатор курорта в системе Немо2
|number
|Целое положительное число
|-
|
: name
|Название курорта
|String
|Строка
|-
|
: cityId
|Идентификатор города в системе Немо2, в котором находится курорт
|number
|Целое положительное число
|-
|hotels
|Информация об отелях
|[]
|...
|-
|
: id
|Идентификатор отеля в системе Немо2
|number
|Целое положительное число
|-
|
: name
|Название отеля
|String
|Строка
|-
|
: checkInTime
|Время заезда
|String
|Строка
|-
|
: checkOutTime
|Время выезда
|String
|Строка
|-
|
: category
|Тип отеля
|String
|Строка
|-
|
: cityId
|Идентификатор города в системе Немо2, в котором находится отель
|number
|Целое положительное число
|-
|
: resortId
|...
|number
|Целое положительное число
|-
|
: posLatitude
|Географическая широта отеля
|number
|Число
|-
|
: posLongitude
|Географическая долгота отеля
|number
|Число
|-
|
: checkOutTime
|Время выезда
|String
|Строка
|-
|
: starRating
|Количество звезд
|number
|Целое число от 0 до 5
|-
|
: description
|Описание отеля
|String
|Строка
|-
|
: photos
|Массив фотографий отеля
|[]
|...
|-
|
: mainPhotoId
|Идентификатор главного изображения
|number
|Целое число
|-
|
: features
|Информация об услугах, предоставляемых в отеле
|{}
|...
|-
|
:: typeName
|Идентификатор услуги(название группы услуг)
|String
|Строка
|-
|
:: featuresArray
|Массив подробных описаний услуги
|{}
|Массив строк
|-
|
: distances
|Информация о расстояниях от отеля до важных объектов
|{}
|Объект
|-
|
:: typeName
|Название типа объекта
|String
|Строка
|-
|
:: distancesArray
|Массив объектов данного типа
|{}
|Объект
|-
|
::: name
|Название объекта
|String
|Строка
|-
|
::: isClose
|Признак того, что объект находится очень близко к отелю. Если имеет значение true, value=null
|boolean
|логический тип
|-
|
::: value
|Информация о расстоянии/времени пути. Если она имеется, isClose=false
|{}
|...
|-
|
:::: distance
|Число единиц измерения
|number
|Число
|-
|
:::: measurement
|Единица измерения
|String
|Строка
|-
|
:::: transportType
|Тип способа перемещения, для которого актуальны distance и measurement
|{}
|...
|-
|
: customerRating
|Оценка отеля посетителями
|[]
|...
|-
|
:: room
|Оценка комнаты
|number
|Число
|-
|
:: facilities
|Оценка бытовых удобств
|number
|Число
|-
|
:: cleanness
|Оценка чистоты
|number
|Число
|-
|
:: food
|Оценка еды
|number
|Число
|-
|
:: staff
|Оценка обслуживающего персонала
|number
|Число
|-
|
:: checkIn
|Оценка регистрации
|number
|Число
|-
|
:: valueForMoney
|Оценка соотношения цены и качества
|number
|Число
|-
|
: averageCustomerRating
|Данные о средней оценке отеля посетителями
|[]
|...
|-
|
:: value
|Оценка
|number
|Число
|-
|
:: description
|Текствое описание(при оценке выше 7)
|number
|Число
|-
|
: usersOpinionInfo
|Информация об отзывах пользователей
|{}
|null, если нет отзывов
|-
|
:: opinionsCount
|Количество отзывов
|number
|Число
|-
|
:: opinions
|Массив отзывов
|[]
|...
|-
|
::: userName
|Имя пользователя, оставившего отзыв
|string
|Строка
|-
|
::: mark
|Оценка
|number
|Число
|-
|
::: text
|Текст отзыва
|string
|Строка
|-
|}
</div>
</div>
=== Автокомплит отелей (autocomplete) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Автокомлит отелей (autocomplete) ====
<pre id="hotels.autocomplete">hotels.autocomplete = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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": "Чешская Республика"
}],
}
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|autocomplete
|Блок ответа автокомлита
|[]
|...
|-
|
: cities
|Массив городов для автокомплита
|[]
|...
|-
|
:: id
|Номер города
|integer
|...
|-
|
:: name
|Название города
|String
|Строка
|-
|
:: country_сode
|Код страны
|String
|В формате ISO2
|-
|
:: hotelsCount
|Количество отелей в городе
|integer
|...
|-
|
:: country_name
|Название страны
|String
|Строка
|-
|
: hotels
|Массив отелей
|[]
|...
|-
:: id
|Номер отеля
|integer
|...
|-
|
:: name
|Название города
|String
|Строка
|-
|
:: category
|Категория отеля
|integer
|Числа от 1 до 5, включительно
|-
|
:: country_code
|Код страны
|String
|В формате ISO2
|-
|
:: cityName
|Название города
|String
|Строка
|-
|
:: country_name
|Название страны
|String
|Строка
|-
|}
</div>
</div>
== Путеводитель (guide) ==
=== Страны (countries) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по коду страны ISO 3166-1 alpha-2 (CODE) ====
<pre id="guide.countries.CODE">guide.countries.CODE = </pre>
<div class="mw-collapsible-content">
<pre>
{
"code": "RU",
"name": "Россия",
"nameEn": "Russia"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|RU
|Код страны
|string
|Строка из 2 латинских букв
|-
|name
|Название страны
|string
|Строка
|-
|nameEn
|Английское название страны
|string
|Строка
|}
</div>
</div>
=== Города(cities) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по идентификатору города ====
<pre id="guide.cities.ID">guide.cities.ID = </pre>
<div class="mw-collapsible-content">
<pre>
{
"IATA": "MOW",
"name": "Москва",
"nameEn": "Moscow",
"countryCode": "RU",
"id": 58165
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|IATA
|Код города
|string
|Строка из 3 букв латинского алфавита
|-
|name
|Название города
|string
|Строка
|-
|nameEn
|Английское название города
|string
|Строка
|-
|countryCode
|Код страны
|string
|Строка из 2 букв(ISO 3166-1 alpha-2)
|-
|id
|Код города
|number
|Число
|}
</div>
</div>
=== Воздушные суда (aircrafts) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по коду воздушного судна====
<pre id="guide.aircrafts.CODE">guide.aircrafts.CODE = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|id
|Идентификатор воздушного судна
|number
|число
|-
|name
|Название авиакомпании
|string
|Строка
|-
|nameEn
|Английское название авиакомпании
|string
|Строка
|-
|manufacture
|Компания-производитель
|string
|Строка
|-
|originCountries
|Набор IATA-кодов стран-производителей
|[]
|...
|-
|distanceType
|Магистральность
|string
|Строка, принимающая следующие значения:
: short_range(Ближнемагистральный)
: medium_range(Среднемагистральный)
: long_range(Дальнемагистральный)
|-
|fuselageType
|Фюзеляжность
|string
|Строка, принимающая следующие значения:
: narrowbody(Узкофюзеляжный)
: widebody(Широкофюзеляжный)
|-
|capacity
|Вместимость
|string
|Строка вида (100 - 200)
|-
|cruiseSpeed
|Крейсерская скорость (км/ч)
|number
|Целое положительное число
|-
|isTurbineAirctaft
|Турбовинтовой
|boolean
|Логический тип
|-
|isHomeAirctaft
|Отечественный
|boolean
|Логический тип
|-
|image
|Данные о логотипе
|{}
|...
|-
|
: image
|Ссылка на логотип
|string
|Строка, указывающая относительный путь к изображению
|-
|
: icon
|Ссылка на иконку логотипа
|string
|Строка, указывающая относительный путь к изображению
|-
|
: height
|Высота логотипа
|number
|Целое положительное число
|-
|
: width
|Ширина логотипа
|number
|Целое положительное число
|-
|map_image
|Данные о схеме судна
|{}
|...
|-
|}
</div>
</div>
=== Аэропорты (airports) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по IATA коду аэропорта ====
<pre id="guide.airports.CODE">guide.airports.CODE = </pre>
<div class="mw-collapsible-content">
<pre>
{
"IATA": "DME",
"name": "Домодедово, Москва",
"nameEn": "Domodedovo, Moscow",
"properName": "Домодедово",
"properNameEn": "Domodedovo",
"cityId": 58165,
"isAggregation": false,
"countryCode": "RU"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|IATA
|IATA код аэропорта
|string
|Строка из 3-х заглавных латинских букв
|-
|name
|Название аэропорта
|string
|Строка
|-
|nameEn
|Английское название аэропорта
|string
|Строка
|-
|properName
|Оригинальное название аэропорта (без города), может быть пустым
|string
|Строка
|-
|properNameEn
|Оригинальное название аэропорта на английском (без города), может быть пустым
|string
|Строка
|-
|cityId
|Код города
|number
|Число
|-
|isAggregation
|Является ли город агрегатом аэропортов
|boolean
|Логический тип
|-
|countryCode
|Код страны
|string
|Строка из 2 латинских букв(ISO 3166-1 alpha-2)
|}
</div>
</div>
=== Авиакомпании (airlines) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по IATA коду авиакомпании ====
<pre id="guide.airlines.CODE">guide.airlines.CODE = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|IATA
|IATA код авиакомпании
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|name
|Название авиакомпании
|string
|Строка
|-
|nameEn
|Английское название авиакомпании
|string
|Строка
|-
|rating
|Рейтинг перевозчика
|number
|Число
|-
|countryCode
|Код страны авиакомпании
|string
|Строка из 2 латинских букв (ISO 3166-1 alpha-2)
|-
|logo
|Данные о логотипе авиакомпании
|{}
|...
|-
|monochromeLogo
|Данные о монохромном логотипе авиакомпании
|{}
|...
|-
|
: image
|Ссылка на логотип авиакомпании
|string
|Строка, указывающая относительный путь к изображению
|-
|
: icon
|Ссылка на иконку логотипа авиакомпании
|string
|Строка, указывающая относительный путь к изображению
|-
|
: height
|Высота логотипа
|number
|Целое положительное число
|-
|
: width
|Ширина логотипа
|number
|Целое положительное число
|-
|colors
|Данные о фирменных цветах авиакомпании
|{}
|...
|-
|
: companyColor
|Фирменный цвет
|string
|HEX код, соответствующий регулярному выражению /^\#[\da-f]{6}$/
|-
|
: companyColorAdditional
|Дополнительный фирменный цвет
|string
|HEX код, соответствующий регулярному выражению /^\#[\da-f]{6}$/
|-
|}
</div>
</div>
=== Отели (hotels) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по коду отеля ====
<pre id="guide.hotels.ID">guide.hotels.ID = </pre>
<div class="mw-collapsible-content">
<pre>
{
"name": "Bridgestreet Opera Saint Lazar",
"nameEn": "BRIDGESTREET OPERA SAINT LAZAR",
"cityId": 15777,
"id": 7
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|name
|Название отеля
|string
|Строка
|-
|nameEn
|Английское название отеля
|string
|Строка
|-
|cityId
|Идентификатор города, в котором расположен отель
|number
|Число
|-
|id
|Код отеля
|number
|Число
|-
|}
</div>
</div>
=== Автокомплит (autocomplete) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== IATA совместимые локации ====
<pre id="guide.autocomplete.iata">guide.autocomplete.iata = </pre>
<div class="mw-collapsible-content">
<pre>
[
{
"IATA": "MOW",
"isCity": true,
"cityId": 58165
}
]
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|IATA
|IATA код
|string
|Строка из 3 букв латинского алфавита
|-
|isCity
|Признак, что указан код города-агрегата аэропортов
|boolean
|Логический тип
|-
|cityId
|Идентификатор города
|number
|Число
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Города ====
<pre id="guide.autocomplete.cities">guide.autocomplete.cities = </pre>
<div class="mw-collapsible-content">
<pre>
[
{
"id": "58165",
"name": "Москва",
"country_code": "RU",
"country_name": "Россия"
}
]
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|id
|Идентификатор города
|int
|Целое число
|-
|name
|Название города
|string
|Строка
|-
|country_code
|Код страны
|string
|Строка из 2 латинских букв
|-
|country_name
|Название страны
|string
|Строка
|-
|}
</div>
</div>
== Служебная информация(system) ==
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
=== Служебная информация (info) ===
<pre id="system.info">system.info = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
}
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|responce
|Ограничения на максимальные значения параметров
|{}
|...
|-
|
: timestamp
|Текущая временная метка с сервера
|number
|Вещественное число
|-
|
: responceTime
|Время ответа
|number
|Вещественное число
|-
|user
|Служебная информация о пользователе
|{}
|...
|-
|
: userID
|ID пользователя
|number
|Целое положительное число
|-
|
: agencyID
|ID агентства
|number
|Целое положительное число
|-
|
: status
|Статус пользователя
|string
|Строка, принимающая следующие значения:
: guest
: admin
: user
: expert
: manager
: company_user
: company_expert
: company_manager
|-
|
: settings
| Настройки пользователя
|{}
|...
|-
|
:: currentLanguage
| Текущий язык
|string
|Строка из 2 латинских букв
|-
|
:: currentCurrency
| Текущая валюта
|string
|Строка из 3 латинских букв
|-
|
:: agencyCurrency
| Валюта агентства
|string
|Строка из 3 латинских букв
|-
|
:: googleMapsApiKey
| Api ключ для доступа к google maps
|string
|Строка
|-
|
:: googleMapsClientId
| CliendId для доступа к google maps
|string
|Строка
|-
|
: promoCode
| Информация о промокоде
|{}
|...
|-
|
:: code
| код
|string
|Строка
|-
|
:: promoAction
| информация о промоакции
|{}
|...
|-
|
::: name
| Название акции
|string
|Строка
|-
|
::: description
| Описание акции
|string
|Строка
|-
|
::: hasFullDesc
| Флаг наличия подробного описания
|boolean
|логический тип
|-
|
::: fullDescURL
| Ссылка для получения подробного описания
|string
|Строка
|-
|}
</div>
</div>
== Заказы (order) ==
=== Протокорзина (reminder) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Информация о заказах пользователя (orders) ====
<pre id="order.reminder.orders">order.reminder.orders = </pre>
<div class="mw-collapsible-content">
<pre>
[
{
"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"
}
}
]
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|id
|Идентификатор заказа
|number
|Целое положительное число
|-
|type
|тип заказа
|String
|Строка
|-
|products
|Массив продуктов
|[]
|...
|-
|
: status
|Статус
|String
|Строка, принимающая одно из следующих значений:
: pending - ожидает бронирования,
: booked - забронирован, ожидает оплаты,
: completed - оплаченный
|-
|
: type
|Тип продукта
|String
|Строка, принимающая одно из следующих значений:
: flight - перелет,
: hotel - отель,
: train - поездка на поезде
|-
|
: depAirpIATA
|Для перелёта - код аэропорта вылета
|String
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
: arrAirpIATA
|Для перелёта - код аэропорта прилета
|String
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
: beginDateTime
|Дата начала услуги
|String
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
: endDateTime
|Дата завершения услуги
|String
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
: totalPrice
|Цена услуги
|{}
|...
|-
|
:: amount
|Сумма
|number
|Дробное число
|-
|
:: currency
|Код валюты
|string
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|
: description
|Описание продукта
|string
|Строка
|-
|orderPrice
|Цена заказа
|{}
|Формат аналогичен totalPrice
|-
|}
</div>
</div>
== Информация о системе (system) ==
=== Служебная информация (info) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Получение данных о валютах (currencyRates) ====
<pre id="system.info.currencyRates">system.info.currencyRates = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
]
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|rates
|Массив данных о валютах
|[]
|...
|-
|
: currency
|Код валюты
|String
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|
: rate
|Код валюты
|Numeric
|Число от 0 до 1
|-
|
: title
|Название валюты
|String
|Строка
|-
|conversionEnabled
|Флаг допустимости пересчета цен в результатах поиска
|boolean
|Логический тип
|-
|roundingFunction
|Тип округления
|String
|Строка, принимающая следующие значения:
: 'ceil' - всегда вверх;
: 'floor' - всегда вниз;
: 'round' - математическое
|-
|backendCurrencyList
|список валют, допустимых для бэкендных расчетов
|[]
|Массив кодов валют
|-
|}
</div>
</div>
== Трэвел-политики (travelPolicies) ==
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Получение данных о трэвел-политиках (travelPolicies) ====
<pre id="travelPolicies">travelPolicies = </pre>
<div class="mw-collapsible-content">
<pre>
[
{
"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"
}
}
}
]
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|id
|Идентификатор правила
|String
|Строка
|-
|name
|Данные о названиях правила на разных языках
|{}
|Объект или null. Ключами являются коды языков либо default - название по умолчанию
|-
|rules
|Правила политики
|{}
|...
|-
|
: isDirect
|Флаг обязательного прямого перелета
|boolean
|Логический тип
|-
|
: arrAirports
|Массив IATA кодов аэропортов прибытия
|[]
|...
|-
|
: depAirports
|Массив IATA кодов аэропортов вылета
|[]
|...
|-
|
: arrCountries
|Массив кодов стран прибытия
|[]
|...
|-
|
: depCountries
|Массив кодов стран вылета
|[]
|...
|-
|
: airlines
|Массив IATA кодов авиакомпаний
|[]
|...
|-
|
: serviceClass
|Массив однобуквенных кодов сервисных классов
|[]
|...
|-
|
: zones
|Массив кодов географических зон перелета
|[]
|...
|-
|
: tariffs
|Массив кодов тарифов
|[]
|...
|-
|
: bookingClass
|Массив однобуквенных кодов допустимых классов бронирования
|[]
|...
|-
|restrictions
|Ограничения по цене
|{}
|...
|-
|
: priceMax
|Верхняя планка цены
|{}
|...
|-
|
: priceDiffMax
| Максимальная разбежка с минимальной ценой
|{}
|...
|-
|
:: amount
|Сумма
|number
|Дробное число
|-
|
:: currency
|Код валюты
|string
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|}
</div>
</div>
= Общее описание =
JSON сервис, доступный по адресу HOST/api/...
Предоставляет унифицированный формат для разработки фронтэнд приложения на основе системы nemo.travel
Данные доступны как кроссдоменные запросы XMLHTTPRequest
Формат запросов имеет вид
http(s)://host/api/{component}/{module}/{action} + /{parameter1}/{parameter2}... (где параметры необязательны)
Пример:
http://demo.nemo.travel/api/flights/search/formData
= Описание запросов =
== Модуль Авиабилеты (flights) ==
=== Модуль Поиск (search) ===
==== Получение параметров поиска "по умолчанию" ====
* Request
** URI [http://demo.nemo.travel/api/flights/search/formData /api/flights/search/formData] :
* Response:
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#flights.search.formData|flights.search.formData]] (Параметры формы поиска)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#system.info|system.info]] (Служебная информация)
==== Получение параметров поиска с идентификатором Х ====
* Request
** URI /api/flights/search/formData/{searchId} (получение параметров поиска с идентификатором {searchId})
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#flights.search.formData|flights.search.formData]] (Параметры формы поиска)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#system.info|system.info]] (Служебная информация)
==== Запрос поиска авиабилетов (request) ====
* Request
** URI /api/flights/search/request/{searchId} (получение данных запроса поиска с идентификатором {searchId})
** POST request="[[#flights.search.request|flights.search.request]]" (Параметры запроса поиска)
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#guide.airlines.CODE|guide.airlines.CODE]] (Информация об авиакомпаниях, если выбраны предпочитаемые)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#system.info|system.info]] (Служебная информация)
примечание: [http://demo.nemo.travel/api/flights/search/request?test /api/flights/search/request?test] : тестовый скрипт
==== Запрос поиска расписания авиаперелетов (scheduleRequest) ====
* Request
** URI /api/flights/search/scheduleRequest?test (получение данных запроса поиска с идентификатором {searchId})
** POST request="[[#flights.search.scheduleRequest|flights.search.scheduleRequest]]" (Параметры запроса поиска)
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#guide.airlines.CODE|guide.airlines.CODE]] (Информация об авиакомпаниях, если выбраны предпочитаемые)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#flights.search.scheduleRequest|flights.search.scheduleRequest]] (Параметры запроса поиска расписания перелетов)
** [[#flights.search.formData|flights.search.formData]] (Параметры формы поиска)
** [[#flights.search.scheduleResults|flights.search.scheduleResults]] (Результаты поиска расписания перелетов)
** [[#system.info|system.info]] (Служебная информация)
примечание: [http://demo.nemo.travel/api/flights/search/scheduleRequest?test /api/flights/search/scheduleRequest?test] : тестовый скрипт
==== Запрос получения результатов поиска ====
* Request
** URI /api/flights/search/results/{searchId} (получение результатов поиска с идентификатором {searchId})
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#guide.airlines.CODE|guide.airlines.CODE]] (Информация об авиакомпаниях)
** [[#guide.aircrafts.CODE|guide.aircrafts.CODE]] (Информация о воздушных судах)
** [[#flights.search.resultData|flights.search.resultData]] (Параметры результатов поиска)
** [[#flights.search.results|flights.search.results]] (Результаты поиска)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#flights.search.formData|flights.search.formData]] (Параметры формы поиска)
** [[#flights.search.resultMatrix|flights.search.resultMatrix]] (Данные для отображения матрицы перелетов, если выбран поиск по окружным датам)
** [[#travelPolicies|travelPolicies]] (Трэвел-политики и их описание)
** [[#system.info|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
* Response:
** [[#flights.search.resultData|flights.search.resultData]] (Параметры результатов поиска)
** [[#flights.search.results|flights.search.results]] (Результаты поиска)
** [[#flights.search.request|flights.search.request]] (Параметры запроса поиска)
** [[#flights.search.formData|flights.search.formData]] (Параметры формы поиска)
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#guide.airlines.CODE|guide.airlines.CODE]] (Информация об авиакомпаниях)
** [[#guide.aircrafts.CODE|guide.aircrafts.CODE]] (Информация о воздушных судах)
** [[#system.info|system.info]] (Служебная информация)
==== Запрос получения истории поиска по текущему пользователю ====
* Request
** URI /api/flights/search/history
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#flights.search.history|flights.search.history]] (Информация об истории поиска поиска)
** [[#system.info|system.info]] (Служебная информация)
==== Запрос получения информации о перелёте ====
* Request
** URI /api/flights/search/flightInfo/{flightId}
* Response:
** [[#flights.search.flightInfo|flights.search.flightInfo]] (Информация о перелёте)
** [[#system.info|system.info]] (Служебная информация)
== Модуль Отели (hotels) ==
=== Модуль Поиск (search) ===
==== Получение параметров поиска "по умолчанию" ====
* Request
** URI /api/hotels/search/formData :
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.hotels.ID|guide.hotels.ID]] (Информация об отелях)
** [[#hotels.search.formData|hotels.search.formData]] (Параметры формы поиска)
** [[#hotels.search.request|hotels.search.request]] (Параметры запроса поиска)
** [[#system.info|system.info]] (Служебная информация)
==== Получение параметров поиска с идентификатором Х ====
* Request
** URI /api/hotels/search/formData/{searchId} (получение параметров поиска с идентификатором {searchId})
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.hotels.ID|guide.hotels.ID]] (Информация об отелях)
** [[#hotels.search.formData|hotels.search.formData]] (Параметры формы поиска)
** [[#hotels.search.request|hotels.search.request]] (Параметры запроса поиска)
** [[#system.info|system.info]] (Служебная информация)
==== Запрос поиска отелей (request) ====
* Request
** URI /api/hotels/search/request/{searchId} (получение данных запроса поиска с идентификатором {searchId})
** POST request="[[#hotels.search.request|hotels.search.request]]" (Параметры запроса поиска)
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.hotels.ID|guide.hotels.ID]] (Информация об отелях)
** [[#hotels.search.request|hotels.search.request]] (Параметры запроса поиска)
** [[#hotels.search.response|hotels.search.response]] (Параметры ответа поиска)
** [[#system.info|system.info]] (Служебная информация
примечание: [https://hotels.tst.nemo.travel/api/hotels/search/request?test /api/hotels/search/request?test] : тестовый скрипт
==== Запрос получения результатов поиска(results) ====
* Request
** URI /api/hotels/search/results/{sroId} (получение результатов поиска с идентификатором {sroId})
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.hotels.ID|guide.hotels.ID]] (Информация об отелях)
** [[#hotels.search.request|hotels.search.request]] (Параметры запроса поиска)
** [[#hotels.search.formData|hotels.search.formData]] (Параметры формы поиска)
** [[#hotels.search.resultData|hotels.search.resultData]] (Параметры результатов поиска)
** [[#hotels.search.results|hotels.search.results]] (Результаты поиска)
** [[#hotels.staticDataInfo|hotels.staticDataInfo]] (Информация о статике отелей)
** [[#system.info|system.info]] (Служебная информация)
=== Модуль Автокомплит (autocomplete) ===
==== Автокомплит отелей и городов ====
* Request
** URI api/hotels/autocomplete/request/{query} :
* Response:
** [[#hotels.autocomplete|hotels.autocomplete]] (Данные автокомплита)
** [[#system.info|system.info]] (Служебная информация)
примеры:
# [http://hotels.tst.nemo.travel/api/hotels/autocomplete/request/mos /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:
** [[#guide.autocomplete.iata|guide.autocomplete.iata]]
** [[#system.info|system.info]]
примеры:
# [http://demo.nemo.travel/api/guide/autocomplete/iata/mo /api/guide/autocomplete/iata/mo] : поиск "mo.."
# [http://demo.nemo.travel/api/guide/autocomplete/iata/le/noAltLayout /api/guide/autocomplete/iata/le/noAltLayout] : поиск "le.." без исправления раскладки
==== Автокомплит по городам ====
* Request
** URI /api/guide/autocomplete/cities/title/{countryCode}
* Response:
** [[#guide.autocomplete.cities|guide.autocomplete.cities]]
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.cities.ID|guide.cities.ID]]
** [[#system.info|system.info]]
примеры:
# [http://demo.nemo.travel/api/guide/autocomplete/cities/мос /api/guide/autocomplete/cities/мос] : поиск "мос.."
# [http://demo.nemo.travel/api/guide/autocomplete/cities/мос/RU /api/guide/autocomplete/cities/мос/RU] : поиск "мос.." в стране с кодом countryCode
=== Получение информации о воздушном судне(aircraft) ===
* Request
** URI /api/guide/aircrafts/{code}
* Response:
** [[#guide.aircrafts.CODE|guide.aircrafts.CODE]]
** [[#system.info|system.info]]
=== Получение информации о авиакомпании(airline) ===
* Request
** URI /api/guide/airlines/{codeIATA}
** URI api/guide/airlines/all (информация обо всех авикомпаниях)
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.airlines.CODE|guide.airlines.CODE]]
** [[#system.info|system.info]]
=== Получение информации об аэропорте(airport) ===
* Request
** URI /api/guide/airports/{codeIATA}
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.cities.ID|guide.cities.ID]]
** [[#guide.airports.CODE|guide.airports.CODE]]
** [[#system.info|system.info]]
=== Получение информации о городе(city) ===
* Request
** URI /api/guide/cities/{id}
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.cities.ID|guide.cities.ID]]
** [[#system.info|system.info]]
=== Получение информации о стране(country) ===
* Request
** URI /api/guide/countries/{code}
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#system.info|system.info]]
=== Получение информации об отеле(hotel) ===
* Request
** URI /api/guide/hotels/{id}
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.cities.ID|guide.cities.ID]]
** [[#guide.hotels.ID|guide.hotels.ID]]
** [[#system.info|system.info]]
=== Получение информации об отелях в выбранном городе ===
* Request
** URI /api/guide/hotels/{id}/getByCityId
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]]
** [[#guide.cities.ID|guide.cities.ID]]
** [[#guide.hotels.ID|guide.hotels.ID]]
** [[#system.info|system.info]]
== Модуль Заказов (order) ==
=== Модуль Протокорзина (reminder) ===
==== Получение истории заказов пользователя====
* Request
** URI /api/order/reminder/orders
* Response:
** [[#guide.countries.CODE|guide.countries.CODE]] (Информация о странах)
** [[#guide.cities.ID|guide.cities.ID]] (Информация о городах)
** [[#guide.airports.CODE|guide.airports.CODE]] (Информация об аэропортах)
** [[#order.reminder.orders|order.reminder.orders]] (Информация о заказах)
** [[#system.info|system.info]] (Служебная информация)
== Модуль информации о системе (system) ==
=== Модуль служебной информации (info) ===
==== Получение данных о валютах====
* Request
** URI /system/info/currencyRates
* Response:
** [[#system.info.currencyRates|system.info.currencyRates]] (Служебная информация)
= Объединение запросов =
Есть возможность добавить в один запрос контент от дополнительных запросов, чтобы сэкономить время загрузки фротэнд-приложения.
Для этого нужно отправлять в запросе POST-параметр "resources", содержащий объект данных по дополнительным запросам в формате JSON:
* POST resources="JSON",
где JSON имеет формат:
<pre>
{
"guide/airports/LON": {},
"guide/airports/PAR": {}
}
</pre>
пример: [http://demo.nemo.travel/api/flights/search/formData?test /api/flights/search/formData?test] (тестовый скрипт)
= Структуры данных =
== Авиабилеты (flights) ==
=== Поиск (search) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные формы поиска (formData) ====
<pre id="flights.search.formData">flights.search.formData = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|maxLimits
|Ограничения на максимальные значения параметров
|{}
|...
|-
|
: passengerCount
|Ограничения на максимальные значения кол-ва пассажиров по параметрам
|{}
|...
|-
|
:: ADT
|Максимальное количество взрослых (больше 12 лет) пассажиров
|number
|Целое положительное число
|-
|
:: SRC
|Максимальное количество пожилых пассажиров
|number
|Целое положительное число
|-
|
:: YTH
|Максимальное количество молодых пассажиров
|number
|Целое положительное число
|-
|
:: CLD
|Максимальное количество детей (младше 10 лет)
|number
|Целое положительное число
|-
|
:: INF
|Максимальное количество младенцев
|number
|Целое положительное число
|-
|
:: INS
|Максимальное количество младенцев с местом
|number
|Целое положительное число
|-
|
: totalPassengers
|Максимальное количество пассажиров
|number
|Целое положительное число
|-
|
: flightSegments
|Максимальное количество плеч сложного перелета
|number
|Целое положительное число
|-
|dateOptions
|Ограничения на разрешенные даты для поиска билетов
|{}
|...
|-
|
: minOffset
|Ближайшая разрешенная дата для поиска билетов (дней от текущего числа)
|number
|Целое положительное число
|-
|
: maxOffset
|Самая дальняя разрешенная дата для поиска билетов (дней от текущего числа)
|number
|Целое положительное число
|-
|
: incorrectDatesBlock
|Включить блокировку некорректных дат
|boolean
|Логический тип
|-
|
: aroundDatesValues
|Допустимые значения радиусов для поиска по окружным датам
|[]
|Массив
|-
| useURLParams
| Использовать параметры из URL, записанные в «чистом виде»
|boolean
|Логический тип
|-
| showCitySwapBtn
|Отображение кнопки, меняющей местами города вылета и прилета
|boolean
|Логический тип
|-
| passengersSelect
|Настройки выбора пассажиров
|{}
|...
|-
|
: extendedPassengersSelect
| Включить расширенный поиск пассажиров
|boolean
|Логический тип
|-
|
: fastPassengersSelect
| Комбинации пассажиров для быстрого поиска
|[]
|...
|-
|
:: label
|Название комбинации
|String
|Строка
|-
|
:: set
|Набор пар "тип пассажира":количество
|{}
|Тип пассажира имеет одно из следующих значений:
: ADT - взрослый,
: SRC - пожилой,
: YTH - молодой,
: CLD - ребёнок,
: INF - младенец без места в самолёте,
: INS - младенец с местом в самолёте
Количество - неотрицательное целое число
|-
|id
|Идентификатор поиска
|number
|Целое положительное число
|-
|uri
|URI поиска
|String
|Строка вида "/api/flights/search/formData/id"
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные запроса поиска (request) ====
<pre id="flights.search.request">flights.search.request = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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": [
{
"IATA": "UT"
}
],
"delayed": false
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|segments
|Информация о сегментах перелета
|[]
|...
|-
|
: departure
|Информация об аэропорте отправления
|{}
|...
|-
|
: arrival
|Информация об аэропорте назначения
|{}
|...
|-
|
:: IATA
|IATA код аэропорта
|string
|Строка из 3-х заглавных латинских букв
|-
|
:: isCity
|Признак, что в качестве точки отправления указан код города-агрегатора аэропортов
|boolean
|Логический тип
|-
|
: departureDate
|Дата отправления
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|passengers
|Информация о пассажирах, для которых требуется найти перелёт
|[]
|...
|-
|
: type
|Тип пассажира
|string
|Одно из следующих значений:
: ADT - взрослый,
: SRC - пожилой,
: YTH - молодой,
: CLD - ребёнок,
: INF - младенец без места в самолёте,
: INS - младенец с местом в самолёте
|-
|
: count
|Число пассажиров данного типа
|number
|Целое положительное число
|-
|parameters
|Параметры поиска
|{}
|...
|-
|
: searchType
|Тип поиска
|string
|Строка, принимающая одно из значений:
: OW (One-Way)
: RT (RoundTrip)
: CR (Complex Route)
|-
|
: direct
|Признак поиска только прямых перелетов
|boolean
|Логический тип
|-
|
: aroundDates
|Поиск по окружным датам – ±X дней к выбранной дате вылета
|number
|Положительное число
|-
|
: serviceClass
|Тип предпочитаемого класса обслуживания
|string
|Строка, принимающая одно из значений:
: Economy
: PremiumEconomy
: Business
: First
: All
|-
|
: airlines
|Предпочитаемые авиакомпании
|[]
|...
|-
|
:: IATA
|IATA код авиакомпании
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
: delayed
|Признак отложенного поиска. Если delayed=true,
то поиск не запускается, а сохраняется в базу.
Поиск запустится при отправке запроса на получение его результатов.
|boolean
|Логический тип
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные запроса поиска перелетов по расписанию (scheduleRequest) ====
<pre id="flights.search.scheduleRequest">flights.search.scheduleRequest = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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
},
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|scheduleRequest
|Информация о параметрах запроса поиска расписания перелетов
|{}
|...
|-
|
: id
|Номер поиска
|number
|...
|-
|
: uri
|Адрес на получение результатов поиска
|string
|...
|-
|
: departure
|Информация об аэропорте отправления
|{}
|...
|-
|
: arrival
|Информация об аэропорте назначения
|{}
|...
|-
|
:: IATA
|IATA код аэропорта
|string
|Строка из 3-х заглавных латинских букв
|-
|
:: isCity
|Признак, что в качестве точки отправления указан код города-агрегатора аэропортов
|boolean
|Логический тип
|-
|
:: cityId
|Номер города из путеводителя
|number
|...
|-
|
: datePeriodBegin
|Дата начиная с которой будет расписание перелетов
|string
|Дата в формате ГГГГ-ММ-дд
|-
|
: datePeriodBegin
|Дата по которую будет найдено расписание
|string
|Дата в формате ГГГГ-ММ-дд
|-
|
:direct
|Признак поиска только прямых перелетов
|boolean
|Логический тип
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные результатов поиска (results) ====
<pre id="flights.search.results">flights.search.results =</pre>
<div class="mw-collapsible-content">
<pre>
"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",
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|flightGroups
|Группа перелетов
|[]
|Массив пуст, если
: нет результатов поиска
: поиск не найден
: поиск был сделан по окружным датам
|-
|
: segments
|Сегмент перелета
|[]
|Массив пуст, если поиск был сделан по окружным датам
|-
|
: flights
|Массив перелетов
|[]
|..
|-
|
:: id
|Идентификатор перелета
|number
|Число
|-
|
:: price
|Код цены
|string
|Строка
|-
|groupsData
|Информация о группах перелетов
|{}
|...
|-
|
: prices
|Информация о ценах
|{} или []
|Пуст, если
: нет результатов поиска
: поиск не найден
: поиск был сделан по окружным датам
|-
|
:: flightPrice
|Цена перелета по тарифу
|{}
|...
|-
|
::: amount
|Сумма
|number
|Дробное число
|-
|
::: currency
|Код валюты
|string
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|
:: agencyCharge
|Агентский сбор
|{}
|...
|-
|
:: totalPrice
|Итоговая цена
|{}
|...
|-
|
::priceWithoutPromocode
|Цена без промокода
|{}
|Если промокод не введен, null
|-
|
:: validatingCompany
|Код валидирующего перевозчика, предоставляющего данную цену
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: refundable
|Тип возвратности билета по перелёту с данной ценой
|boolean
|логический тип
|-
|
:: privateFareInd
|Признак наличия приватных тарифов в данной цене
|boolean
|логический тип
|-
|
:: ticketTimeLimit
|Тайм-лимит данной цены (цена действительная до)
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
:: avlSeatsMin
|Минимальное кол-во доступных мест
|number
|Целое положительное число
|-
|
:: pricingDebug
|Данные о ссылке на ценообразование
|{}
|...
|-
|
::: link
|Ссылка на ценообразование для данного перелета
|string
|Строка вида "index.php?go=debug/pricing&flight_id={id}"
|-
|
::: text
|Текст ссылки
|string
|Строка может иметь вид:
: Комиссия: нет
: Комиссия: validatingCompany(XagencyCurrency), если комиссия задана в валюте
: Комиссия: validatingCompany(X%), если комиссия задана в процентах
|-
|
:: service
|Тип ГДС
|string
|Строка
|-
|
:: warnings
|Массив предупреждений
|{}
|Объект
|-
|
:: passengerFares
|Массив ценовых составляющих по типам пассажиров
|[]
|...
|-
|
::: type
|Тип пассажира
|string
|Одно из следующих значений:
: ADT - взрослый,
: SRC - пожилой,
: YTH - молодой,
: CLD - ребёнок,
: INF - младенец без места в самолёте,
: INS - младенец с местом в самолёте
|-
|
::: count
|Количество пассажиров данного типа
|number
|Целое положительное число
|-
|
::: baseFare
|Базовая цена (только тарифы без такс) для 1 пассажира данного типа
|{}
|...
|-
|
::: equivFare
|Базовая цена в эквивалентной валюте для 1 пассажира данного типа.
|{}
| Формат элемента аналогичен элементу BaseFare
|-
|
::: totalFare
|Полная цена (тарифы + таксы) для 1 пассажира данного типа в эквивалентной валюте.
|{}
| Формат элемента аналогичен элементу BaseFare.
|-
|
::: taxes
|Контейнер для такс для данной ценовой составляющей
|[]
|...
|-
|
::: tariffs
|Контейнер для тарифов данной ценовой составляющей
|[]
|...
|-
|
:::: code
|Код тарифа
|string
|Строка
|-
|
:::: segNum
|Номер сегмента, для которого применяется данный тариф
|number
|Целое число
|-
|
:::: routeNumber
|Соответствие сегментам из SRO(номер плеча)
|number
|Целое число
|-
|
:::: freeBaggage
|Допустимая мера бесплатного провоза багажа
|[]
|...
|-
|
::::: passtype
|Тип пассажира, для которого определена мера
|string
|Аналогично type
|-
|
::::: value
|Количественно значение для допустимого количества багаж
|number
|Целое число
|-
|
::::: measurement
|Мера количества багажа
|string
|Строка
|-
|
:: segmentInfo
|Информация о сегментах
|[]
|...
|-
|
::: segNum
|Номер сегмента
|number
|Целое число
|-
|
::: bookingClass
|Класс бронирования
|string
|Строка, состоящая из 1 латинской буквы
|-
|
::: serviceClass
|Класс обслуживания
|string
|Строка, принимающая одно из значений:
: Economy
: PremiumEconomy
: Business
: First
: All
|-
|
::: avlSeats
|Число доступных мест на сегменте
|number
|Целое положительное число
|-
|
:: id
|Идентификатор цены
|string
|Строка
|-
|
: segments
|Подробное описание сегментов перелетов
|{} или [], если нет результатов поиска или поиск не найден
|...
|-
|
:: id
|Идентификатор сегмента
|string
|Строка
|-
|
:: depAirp
|IATA код аэропорта отправления
|string
|Строка из 3 букв латинского алфавита
|-
|
:: arrAirp
|IATA код аэропорта прибытия
|string
|Строка из 3 букв латинского алфавита
|-
|
:: routeNumber
|Соответствие сегментам из SRO(номер плеча)
|number
|Целое число
|-
|
:: operatingCompany
|(IATA)Код оперирующего перевозчика
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: marketingCompany
|Код маркетингого перевозчика
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: flightNumber
|Номер рейса для данного сегмента перелёта
|number
|Целое число
|-
|
:: flightTime
|Время перелета на сегменте
|number/null
|Целое число или null
|-
|
:: aircraftType
|Код типа самолёта
|string
|Строка
|-
|
:: depDateTime
|Дата и время отправления
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
:: arrDateTime
|Дата и время прибытия
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
:: depTerminal
|Код терминала отправления
|string
|Строка
|-
|
:: arrTerminal
|Код терминала прибытия
|string
|Строка
|-
|
:: flightTime
|Время в пути в минутах
|number
|Целое положительное число
|-
|
:: eTicket
|Признак возможности выписки электронного билета на данном сегменте
|boolean
|логический тип
|-
|
:: stopPoints
|Информация о технических остановках
|[]
|Массив объектов или null, если остановок нет
|-
|
::: airportCode
|IATA код аэропорта точки остановки
|string
|Строка из 3 букв латинского алфавита
|-
|
::: cityCode
|Код города точки остановки
|string
|Строка из 3 букв латинского алфавита
|-
|
::: utc
|Часовой пояс точки остановки
|string
|логический тип
|-
|
::: terminal
|Терминал в аэропорте
|string
|логический тип
|-
|
::: depDateTime
|Признак возможности выписки электронного билета на данном сегменте
|string
|логический тип
|-
|
::: arrDateTime
|Признак возможности выписки электронного билета на данном сегменте
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
::: passengerLanding
|Флаг ожидания в самолете
|boolean или null
|Логический тип, есть только у брони, у результатов поиска нет, на данный момент парсится только для Галилео
|-
|
: info
|Информация об успешности/неуспешности поиска
|{}
|
|-
|
:: errorCode
|Код ошибки
|number
|Число, может иметь следующие значения:
: 404 ('No results')
: 410 ('Invalid SearchId')
: 500 ('System Error')
: null
|-
|
:: errorMessageEng
|Сообщение об ошибке
|string
|Строка, принимающая следующие значения:
: 'No results'
: 'Invalid SearchId'
: 'System Error'
: null
|-
|id
|Идентификатор поиска
|number
|Число
|-
|uri
|URI поиска
|string
|Строка вида /api/flights/search/results/id
|-
|matrixUri
|URI поиска c матрицей окружных дат(параметр присутствует только если поиск сделан из матрицы)
|string
|Строка вида /api/flights/search/results/matrixSearchId
|-
|}
'''Формирование перелета из сгруппированных данных'''
'''Структура перелета'''
<pre>
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
}
},
...
]
}
]
}
]
}
</pre>
Из 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
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные результатов поиска расписания перелетов (scheduleResults) ====
<pre id="flights.search.scheduleResults">flights.search.scheduleResults =</pre>
<div class="mw-collapsible-content">
<pre>
"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"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|scheduleResults
|Информация о результатах поиска
|{}
|...
|-
|
: flights
|Массив найденных перелетов
|[]
|...
|-
|
:: id
|Идентификатор перелета
|number
|Число
|-
|
::depAirp
|Код аэропорта вылета
|string
|Трех-буквенный код аэропорта
|-
|
:: arrAirp
|Код аэропорта прилета
|string
|Трех-буквенный код аэропорта
|-
|
:: routeNumber
|Соответствие сегментам из SRO(номер плеча)
|number
|Целое число
|-
|
:: operatingCompany
|(IATA)Код оперирующего перевозчика
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: marketingCompany
|Код маркетингого перевозчика
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: aircraftType
|Код типа самолёта
|string
|Строка
|-
|
:: flightNumber
|Номер рейса для данного сегмента перелёта
|number
|Целое число
|-
|
:: depTerminal
|Код терминала отправления
|string
|Строка
|-
|
:: arrTerminal
|Код терминала прибытия
|string
|Строка
|-
|
:: flightTime
|Время перелета на сегменте
|number/null
|Целое число или null
|-
|
:: eTicket
|Признак возможности выписки электронного билета на данном сегменте
|boolean
|логический тип
|-
|
:: depTime
|Время отправки
|string
|Время в формате чч:мм
|-
|
:: arrTime
|Время прибытия
|string
|Время в формате чч:мм
|-
|
:: depDateShift
|Смещение дня вылета относительно даты вылета первого сегмента всего перелёта
|number
|целое число
|-
|
:: arrDateShift
|Смещение дня прибытия относительно даты вылета первого сегмента всего перелёта
|number
|целое число
|-
|
:: serviceClasses
|Массив доступных классов перелетов
|[]
|Возможные типы классы (Business, Economy, First)
|-
|
:: schedulePeriod
|Расписание, по которому совершается перелет
|{}
|...
|-
|
::: startDate
|Дата с которой совершается полет
|string
|Дата в формате гггг-ММ-дд
|-
|
::: endDate
|Дата после которой данные перелеты прекратятся
|string
|Дата в формате гггг-ММ-дд
|-
|
::: daysOfWeek
|Дни недели по которым совершается перелет
|[]
|Цифровые обозначения дней недели (1 - понедельник, ..., 6 - суббота, 0 - воскресение)
|-
|
: dates
|Расписание перелетов по дням
|{}
| Каждой дате соответствует список перелетов, который совершаются в этот день
|-
|
: info
|Информация об успешности/неуспешности поиска
|{}
|
|-
|
:: errorCode
|Код ошибки
|number
|Число, может иметь следующие значения:
: 404 ('No results')
: 410 ('Invalid SearchId')
: 500 ('System Error')
: null
|-
|
:: errorMessageEng
|Сообщение об ошибке
|string
|Строка, принимающая следующие значения:
: 'No results'
: 'Invalid SearchId'
: 'System Error'
: null
|-
|
: id
|Номер поиска
|number
|...
|-
|
: uri
|Адрес для получения результатов
|string
|Ссылка вида /api/flights/search/scheduleResults/{$id}
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Настройки выдачи результатов (resultData) ====
<pre id="flights.search.resultData">flights.search.resultData = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|postFilters
|Настройки постфильтров
|{}
|...
|-
|
: postFiltersSort
|Порядок постфильтров
|[]
|Упорядоченные названия постфильтров. Возможные названия:
: transfersCount (Количество пересадок)
: departureTime (Время вылета)
: arrivalTime (Время прилёта)
: departureAirport (Аэропорт вылета)
: arrivalAirport (Аэропорт прилёта)
: price (Цена перелёта)
: carrier (Авиакомпании)
: transfersDuration (Длительность пересадки)
: timeEnRoute (Время перелёта)
|-
|
: showPostFilterHint
|Показать подсказку к постфильтрам
|boolean
|Логический тип
|-
|defaultSort
|Тип выбранной по умолчанию сортировки
|string
|Строка, принимающая следующие значения:
: price - цена
: durationOnLeg - время перелета
: rating - рейтинг
: carrierRating - рейтинг перевозчика
|-
|defaultShowVariants
|Количество показанных изначально вариантов в блоке “Все варианты”
|number
|Целое положительное число
|-
|useHintOverlay
|Показать оверлей “подсказки”
|boolean
|Логический тип
|-
|showBlocks
|Настройки отображения дополнительных блоков
|{}
|...
|-
|
: useShowCase
|Показать витрину
|boolean
|Логический тип
|-
|
: showBestOffers
|Показать блок с предложениями от лучших авиакомпаний
|boolean
|Логический тип
|-
|
: showHotelOffer
|Показать блок с предложением отелей
|boolean
|Логический тип
|-
|
: useFlightCompareTable
|Использовать сравнительную таблицу перелетов
|boolean
|Логический тип
|-
|searchTimeout
|Настройки устаревания результатов поиска
|{}
|...
|-
|
: useSearchTimeout
|Использовать таймер устаревания результатов поиска
|boolean
|Логический тип
|-
|
: warningBeforeSearchTimeout
|Время в секундах, после которого появится предупреждение, что поиск устаревает
|number
|Целое положительное число
|-
|
: searchTimeout
|Время в секундах, через которое поиск устаревает
|number
|Целое положительное число
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Матрица окружных дат (resultMatrix) ====
<pre id="flights.search.resultMatrix">flights.search.resultMatrix = </pre>
<div class="mw-collapsible-content">
Например, если опция поиска по окружным датам предполагает поиск при ±3 дня, то пользователю отображается матрица дат размером 7x1 ячеек для маршрута «В одну сторону» или 7x7 ячеек для маршрута «Туда и обратно». В каждой ячейке матрицы указана минимальная стоимость перевозки, ячейки с наиболее дешевыми вариантами выделены другим цветом. При нажатии на стоимость в таблице пользователь переходит на страницу результатов поиска на выбранную дату для выбора конкретного варианта перелета.
<pre>
{
"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"
}
]
}
}
]
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|rangeData
|Массив данных о каждой ячейке матрицы
|[]
|...
|-
|
: uri
|Cсылка получения результатов на один день
|string
|Строка вида /api/flights/search/results/matrixSearchId/flightDate/flightDateBack
|-
|
: flightDate
|Дата перелета
|string
|Строка в формате yyyy-MM-dd
|-
|
: flightDateBack
|Дата обратного перелета
|string
|Строка в формате yyyy-MM-dd для RT, null для OW
|-
|
: minPriceFlight
|Информация о самом дешевом перелете для выбранных дат
|{}
|...
|-
|
:: minPrice
|Информация о минимальной цене
|{}
|...
|-
|
::: amount
|Сумма
|string
|Вещественное число
|-
|
::: currency
|Код валюты
|string
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|
:: carrier
|IATA код перевозчика
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
:: segments
|Массив сегментов самого дешевого перелета
|[]
|...
|-
|
::: routeNumber
|Соответствие сегментам из SRO
|number
|Целое число
|-
|
::: serviceClass
|Класс обслуживания
|string
|Строка, принимающая одно из значений:
: economy
: premiumEconomy
: business
: first
: all
|-
|
::: depDateTime
|Дата и время отправления
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
::: arrDateTime
|Дата и время прибытия
|string
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
::: depAirp
|IATA код аэропорта отправления
|string
|Строка из 3 букв латинского алфавита
|-
|
::: arrAirp
|IATA код аэропорта прибытия
|string
|Строка из 3 букв латинского алфавита
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Выдача истории поиска по текущему пользователю (history) ====
<pre id="flights.search.history">flights.search.history = </pre>
<div class="mw-collapsible-content">
<pre>
[
{
"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
}
]
</pre>
Названия и значения полей аналогичны [[#flights.search.request|flights.search.request]] (параметры запроса поиска) и [[#flights.search.formData|flights.search.formData]] (параметры формы поиска)
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Получение информации о перелёте(flightInfo) ====
<pre id="flights.search.flightInfo">flights.search.flightInfo = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|isAvail
|Флаг доступности перелёта
|boolean
|логический тип
|-
|priceStatus
|Информация о статусе цены
|{}
|...
|-
|
: changed
|Флаг, показывающий, была ли изменена цена
|boolean
|логический тип
|-
|
: oldValue
|Старое значение цены
|{}
|...
|-
|
:: amount
|Сумма
|string
|Вещественное число
|-
|
:: currency
|Код валюты
|string
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|
: newValue
|Новое значение цены
|{}
|аналогичен oldValue
|-
|tariffRules
|Информация о тарифных правилах
|{}
|...
|-
|
: name
|Название правила
|string
|Строка
|-
|
: text
|Описание правила
|string
|Строка
|-
|
: code
|Код правила
|string
|Строка
|-
|createOrderLink
|Ссылка на создание заказа
|string
|Строка
|-
|}
</div>
</div>
== Отели (hotels) ==
=== Поиск (search) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные формы поиска (formData) ====
<pre id="hotels.search.formData">hotels.search.formData = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|citySuggestions
|Массив идентификаторов городов, которые выводятся для примера на форме поиска
|[]
|...
|-
|maxLimits
|Ограничения на максимальные значения параметров
|{}
|...
|-
|
: guestsCountInRoom
|Ограничения на максимальные значения кол-ва человек в комнате
|{}
|...
|-
|
:: ADT
|Максимальное количество взрослых
|number
|Целое положительное число
|-
|
:: CLD
|Максимальное количество детей
|number
|Целое положительное число
|-
|
:: total
|Максимальное количество человек в комнате
|number
|Целое положительное число
|-
|
: roomsCount
|Количество комнат
|number
|Целое положительное число
|-
|
: childrenAge
|Максимальный возраст, при котором гость считается ребенком
|number
|Целое положительное число
|-
|dateOptions
|Ограничения на разрешенные даты для поиска отелей
|{}
|...
|-
|
: minOffset
|Ближайшая разрешенная дата для поиска отеля (дней от текущего числа)
|number
|Целое положительное число
|-
|
: maxOffset
|Самая дальняя разрешенная дата для поиска отеля (дней от текущего числа)
|number
|Целое положительное число
|-
|
: maxStayDays
|Максимальное количество ночей, проведенных в отеле
|number
|Целое положительное число
|-
|roomsSelectionTemplates
|Настройки выбора гостей
|{}
|...
|-
|
: useExtendedSelect
| Включить расширенный поиск пассажиров
|boolean
|Логический тип
|-
|
: fastSelect
| Комбинации для быстрого поиска
|[]
|...
|-
|
:: ADT
|Максимальное количество взрослых
|number
|Целое положительное число
|-
|
:: CLD
|Максимальное количество детей
|number
|Целое положительное число
|-
|
:: childAges
|массив возрастов детей
|number
|Целое положительное число
|-
|
:: label
|Название комбинации
|String
|Строка
|-
|id
|Идентификатор поиска
|number
|Целое положительное число
|-
|uri
|URI поиска
|String
|Строка вида "/api/hotels/search/formData/id"
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные запроса поиска (request) ====
<pre id="hotels.search.request">hotels.search.request = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|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
|Информация о номерах
|[]
|...
|-
|
: ADT
|Количество взрослых в номере
|int
|Целое число
|-
|
: CLD
|Количество детей в номере (необязательный параметр, если в номере нет детей)
|int
|Целое число
|-
|
: childAges
|Массив возрастов детей (необязательный параметр, если в номере нет детей)
|[]
|...
|-
|id
|Идентификатор поиска
|number
|Целое положительное число
|-
|uri
|URI поиска
|String
|Строка вида "/api/hotels/search/request/id"
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные ответа на запрос поиска (response) ====
<pre id="hotels.search.response">hotels.search.response = </pre>
<div class="mw-collapsible-content">
<pre>
{
"id": 20898
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|id
|Идентификатор поиска, полученный от поставщика
|int
|Целое число
|-
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Настройки выдачи результатов (resultData) ====
<pre id="hotels.search.resultData">hotels.search.resultData = </pre>
<div class="mw-collapsible-content">
<pre>
{
"showPostFilterHint": true,
"defaultSort": "price",
"showBlocks": {
"useShowCase": true,
"showFlightsOffer": true,
"showMap": true,
"showHotelsWatched": true
},
"defaultShowVariants": 100,
"showSupplier": true,
"searchTimeout": {
"useSearchTimeout": true,
"warningBeforeSearchTimeout": 540,
"searchTimeout": 600
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|showPostFilterHint
|Показать подсказку к постфильтрам
|boolean
|Логический тип
|-
|defaultSort
|Тип выбранной по умолчанию сортировки
|string
|Строка, принимающая следующие значения:...
|-
|showBlocks
|Настройки отображения дополнительных блоков
|{}
|...
|-
|
: useShowCase
|Показать витрину
|boolean
|Логический тип
|-
|
: showFlightsOffer
|Показать блок с предложением перелетов
|boolean
|Логический тип
|-
|
: showMap
|Показать карту
|boolean
|Логический тип
|-
|
: showHotelsWatched
|Показать блок с просмотренными отелями из данных результатов
|boolean
|Логический тип
|-
|defaultShowVariants
|Число вариантов, показанных по умолчанию
|number
|Целое положительное число
|-
|showSupplier
|Показывать поставщика в результатах поиска
|boolean
|Логический тип
|-
|searchTimeout
|Настройки устаревания результатов поиска
|{}
|...
|-
|
: useSearchTimeout
|Использовать таймер устаревания результатов поиска
|boolean
|Логический тип
|-
|
: warningBeforeSearchTimeout
|Время в секундах, после которого появится предупреждение, что поиск устаревает
|number
|Целое положительное число
|-
|
: searchTimeout
|Время в секундах, через которое поиск устаревает
|number
|Целое положительное число
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные результатов поиска (results) ====
<pre id="hotels.search.results">hotels.search.results = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|isFinished
|Признак полностью завершенного поиска
|boolean
|Логический тип
|-
|roomTypes
|Информация о найденных типах комнат
|[]
|...
|-
|
: id
|Идентификатор типа комнаты в рамках данного поиска
|number
|Целое положительное число
|-
|
: name
|Название типа комнаты
|string
|Строка
|-
|
: commonName
|Распространенное название комнаты
|string
|Строка
|-
|roomMeals
|Информация о возможных типах питания
|[]
|...
|-
|
: id
|Идентификатор типа питания в рамках этого результата поиска
|number
|Целое положительное число
|-
|
: name
|Название типа питания
|string
|Строка
|-
|
: code
|Код типа питания
|string
|Строка
|-
|roomRates
|Информация о стоимости комнат
|[]
|...
|-
|
: id
|Идентификатор тарифа в рамках этого результата поиска
|number
|Целое положительное число
|-
|
: price
|Контейнер с информацией о валюте
|{}
|...
|-
|
:: amount
|Сумма базовый цены
|number
|Дробное число
|-
|
:: currency
|Код валюты базовой цены
|string
|Строка
|-
|
: isSpecialOffer
|является ли данный тариф специальным предложением
|boolean
|Логический тип
|-
|
: visaSupportProvided
|Признак визовой поддержки отеля
|boolean
|Логический тип
|-
|
: isNonRefundable
|Признак возможности возврата
|boolean
|Логический тип
|-
|
: bookingRemarks
|Текст ремарок
|string
|Строка
|-
|
: cancellationRules
|Набор идентификаторов правил отмены
|[]
|Массив целых положительных чисел
|-
|roomsGroup
|Информация о различных вариантах комнат
|{}
|...
|-
|
: id
|Идентификатор комнаты
|number
|Целое положительное число
|-
|
: typeId
|Идентификатор типа комнаты
|number
|Целое положительное число
|-
|
: mealId
|Идентификатор типа питания
|number
|Целое положительное число
|-
|
: rateId
|Идентификатор тарифа
|number
|Целое положительное число
|-
|cancellationRules
|Информация о правилах отмены
|[]
|...
|-
|
: id
|Идентификатор правила отмены в рамках результата данного поиска
|number
|Целое положительное число
|-
|
: deadLine
|Время, до которого действует данное правило
|string
|Строка
|-
|
: percentValue
|...
|number
|Число
|-
|
: absoluteValue
|...
|number
|Число
|-
|hotels
|Информация об отелях
|{}
|...
|-
|
: id
|Идентификатор отеля
|number
|Целое положительное число
|-
|
: name
|Название отеля
|string
|Строка
|-
|
: roomGroups
|Информация о комнатах в отеле
|[]
|...
|-
|
:: searchRoomId
|Идентификатор комнаты в отеле в рамках данного поиска
|number
|Целое число
|-
|
:: roomVariants
| Массив идентификаторов комнат - ссылки на roomsGroup
|[]
|
|-
|info
|Информация об успешности/неуспешности поиска
|{}
|
|-
|
: errorCode
|Код ошибки
|number
|Число, может иметь следующие значения:
: 404 ('No results')
: 410 ('Invalid SearchId')
: 500 ('System Error')
: null
|-
|
: errorMessageEng
|Сообщение об ошибке
|string
|Строка, принимающая следующие значения:
: 'No results'
: 'Invalid SearchId'
: 'System Error'
: null
|-
|
: warnings
|Массив предупреждений
|[]
|
|-
|}
</div>
</div>
=== Статика отелей (staticDataInfo) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Данные о статике отелей (staticDataInfo) ====
<pre id="hotels.staticDataInfo">hotels.staticDataInfo = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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,
"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": {
"Smoking": {
"typeName": "Smoking",
"featuresArray": [
"Non Smoking Rooms"
]
},
"Service": {
"typeName": "Service",
"featuresArray": [
"Room Service",
"Dry Cleaning Service"
]
},
},
"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": "Всё отлично!"
}
]
}
}
]
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|countries
|Массив стран
|[]
|...
|-
|
: id
|Идентификатор страны в системе Немо2
|number
|Целое положительное число
|-
|
: name
|Название страны
|String
|Строка
|-
|
: isoCode
|ISO код страны
|String
|Строка из 2 букв(ISO 3166-1 alpha-2)
|-
|regions
|Массив регионов стран
|[]
|...
|-
|
: id
|Идентификатор региона в системе Немо2
|number
|Целое положительное число
|-
|
: name
|Название региона
|String
|Строка
|-
|
: countryId
|идентификатор страны в системе Немо2, которой принадлежит регион
|number
|Целое положительное число
|-
|cities
|Массив городов
|[]
|...
|-
|
: id
|Идентификатор города в системе Немо2
|number
|Целое положительное число
|-
|
: name
|Название города
|String
|Строка
|-
|
: countryId
|идентификатор страны в системе Немо2, которой принадлежит регион
|number
|Целое положительное число
|-
|
: regionId
|идентификатор региона в системе Немо2, которому принадлежит город
|number
|Целое положительное число
|-
|
: latitude
|Географическая широта города
|number
|Число
|-
|
: longitude
|Географическая долгота города
|number
|Число
|-
|resorts
|Информация о курортах
|[]
|...
|-
|
: id
|Идентификатор курорта в системе Немо2
|number
|Целое положительное число
|-
|
: name
|Название курорта
|String
|Строка
|-
|
: cityId
|Идентификатор города в системе Немо2, в котором находится курорт
|number
|Целое положительное число
|-
|hotels
|Информация об отелях
|[]
|...
|-
|
: id
|Идентификатор отеля в системе Немо2
|number
|Целое положительное число
|-
|
: name
|Название отеля
|String
|Строка
|-
|
: checkInTime
|Время заезда
|String
|Строка
|-
|
: checkOutTime
|Время выезда
|String
|Строка
|-
|
: category
|Тип отеля
|String
|Строка
|-
|
: cityId
|Идентификатор города в системе Немо2, в котором находится отель
|number
|Целое положительное число
|-
|
: resortId
|...
|number
|Целое положительное число
|-
|
: posLatitude
|Географическая широта отеля
|number
|Число
|-
|
: posLongitude
|Географическая долгота отеля
|number
|Число
|-
|
: checkOutTime
|Время выезда
|String
|Строка
|-
|
: starRating
|Количество звезд
|number
|Целое число от 0 до 5
|-
|
: description
|Описание отеля
|String
|Строка
|-
|
: photos
|Массив фотографий отеля
|[]
|...
|-
|
: mainPhotoId
|Идентификатор главного изображения
|number
|Целое число
|-
|
: features
|Информация об услугах, предоставляемых в отеле
|{}
|...
|-
|
:: typeName
|Идентификатор услуги(название группы услуг)
|String
|Строка
|-
|
:: featuresArray
|Массив подробных описаний услуги
|{}
|Массив строк
|-
|
: distances
|Информация о расстояниях от отеля до важных объектов
|{}
|Объект
|-
|
:: typeName
|Название типа объекта
|String
|Строка
|-
|
:: distancesArray
|Массив объектов данного типа
|{}
|Объект
|-
|
::: name
|Название объекта
|String
|Строка
|-
|
::: isClose
|Признак того, что объект находится очень близко к отелю. Если имеет значение true, value=null
|boolean
|логический тип
|-
|
::: value
|Информация о расстоянии/времени пути. Если она имеется, isClose=false
|{}
|...
|-
|
:::: distance
|Число единиц измерения
|number
|Число
|-
|
:::: measurement
|Единица измерения
|String
|Строка
|-
|
:::: transportType
|Тип способа перемещения, для которого актуальны distance и measurement
|{}
|...
|-
|
: customerRating
|Оценка отеля посетителями
|[]
|...
|-
|
:: room
|Оценка комнаты
|number
|Число
|-
|
:: facilities
|Оценка бытовых удобств
|number
|Число
|-
|
:: cleanness
|Оценка чистоты
|number
|Число
|-
|
:: food
|Оценка еды
|number
|Число
|-
|
:: staff
|Оценка обслуживающего персонала
|number
|Число
|-
|
:: checkIn
|Оценка регистрации
|number
|Число
|-
|
:: valueForMoney
|Оценка соотношения цены и качества
|number
|Число
|-
|
: averageCustomerRating
|Данные о средней оценке отеля посетителями
|[]
|...
|-
|
:: value
|Оценка
|number
|Число
|-
|
:: description
|Текствое описание(при оценке выше 7)
|number
|Число
|-
|
: usersOpinionInfo
|Информация об отзывах пользователей
|{}
|null, если нет отзывов
|-
|
:: opinionsCount
|Количество отзывов
|number
|Число
|-
|
:: opinions
|Массив отзывов
|[]
|...
|-
|
::: userName
|Имя пользователя, оставившего отзыв
|string
|Строка
|-
|
::: mark
|Оценка
|number
|Число
|-
|
::: text
|Текст отзыва
|string
|Строка
|-
|}
</div>
</div>
=== Автокомплит отелей (autocomplete) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Автокомлит отелей (autocomplete) ====
<pre id="hotels.autocomplete">hotels.autocomplete = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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": "Чешская Республика"
}],
}
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|autocomplete
|Блок ответа автокомлита
|[]
|...
|-
|
: cities
|Массив городов для автокомплита
|[]
|...
|-
|
:: id
|Номер города
|integer
|...
|-
|
:: name
|Название города
|String
|Строка
|-
|
:: country_сode
|Код страны
|String
|В формате ISO2
|-
|
:: hotelsCount
|Количество отелей в городе
|integer
|...
|-
|
:: country_name
|Название страны
|String
|Строка
|-
|
: hotels
|Массив отелей
|[]
|...
|-
:: id
|Номер отеля
|integer
|...
|-
|
:: name
|Название города
|String
|Строка
|-
|
:: category
|Категория отеля
|integer
|Числа от 1 до 5, включительно
|-
|
:: country_code
|Код страны
|String
|В формате ISO2
|-
|
:: cityName
|Название города
|String
|Строка
|-
|
:: country_name
|Название страны
|String
|Строка
|-
|}
</div>
</div>
== Путеводитель (guide) ==
=== Страны (countries) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по коду страны ISO 3166-1 alpha-2 (CODE) ====
<pre id="guide.countries.CODE">guide.countries.CODE = </pre>
<div class="mw-collapsible-content">
<pre>
{
"code": "RU",
"name": "Россия",
"nameEn": "Russia"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|RU
|Код страны
|string
|Строка из 2 латинских букв
|-
|name
|Название страны
|string
|Строка
|-
|nameEn
|Английское название страны
|string
|Строка
|}
</div>
</div>
=== Города(cities) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по идентификатору города ====
<pre id="guide.cities.ID">guide.cities.ID = </pre>
<div class="mw-collapsible-content">
<pre>
{
"IATA": "MOW",
"name": "Москва",
"nameEn": "Moscow",
"countryCode": "RU",
"id": 58165
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|IATA
|Код города
|string
|Строка из 3 букв латинского алфавита
|-
|name
|Название города
|string
|Строка
|-
|nameEn
|Английское название города
|string
|Строка
|-
|countryCode
|Код страны
|string
|Строка из 2 букв(ISO 3166-1 alpha-2)
|-
|id
|Код города
|number
|Число
|}
</div>
</div>
=== Воздушные суда (aircrafts) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по коду воздушного судна====
<pre id="guide.aircrafts.CODE">guide.aircrafts.CODE = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|id
|Идентификатор воздушного судна
|number
|число
|-
|name
|Название авиакомпании
|string
|Строка
|-
|nameEn
|Английское название авиакомпании
|string
|Строка
|-
|manufacture
|Компания-производитель
|string
|Строка
|-
|originCountries
|Набор IATA-кодов стран-производителей
|[]
|...
|-
|distanceType
|Магистральность
|string
|Строка, принимающая следующие значения:
: short_range(Ближнемагистральный)
: medium_range(Среднемагистральный)
: long_range(Дальнемагистральный)
|-
|fuselageType
|Фюзеляжность
|string
|Строка, принимающая следующие значения:
: narrowbody(Узкофюзеляжный)
: widebody(Широкофюзеляжный)
|-
|capacity
|Вместимость
|string
|Строка вида (100 - 200)
|-
|cruiseSpeed
|Крейсерская скорость (км/ч)
|number
|Целое положительное число
|-
|isTurbineAirctaft
|Турбовинтовой
|boolean
|Логический тип
|-
|isHomeAirctaft
|Отечественный
|boolean
|Логический тип
|-
|image
|Данные о логотипе
|{}
|...
|-
|
: image
|Ссылка на логотип
|string
|Строка, указывающая относительный путь к изображению
|-
|
: icon
|Ссылка на иконку логотипа
|string
|Строка, указывающая относительный путь к изображению
|-
|
: height
|Высота логотипа
|number
|Целое положительное число
|-
|
: width
|Ширина логотипа
|number
|Целое положительное число
|-
|map_image
|Данные о схеме судна
|{}
|...
|-
|}
</div>
</div>
=== Аэропорты (airports) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по IATA коду аэропорта ====
<pre id="guide.airports.CODE">guide.airports.CODE = </pre>
<div class="mw-collapsible-content">
<pre>
{
"IATA": "DME",
"name": "Домодедово, Москва",
"nameEn": "Domodedovo, Moscow",
"properName": "Домодедово",
"properNameEn": "Domodedovo",
"cityId": 58165,
"isAggregation": false,
"countryCode": "RU"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|IATA
|IATA код аэропорта
|string
|Строка из 3-х заглавных латинских букв
|-
|name
|Название аэропорта
|string
|Строка
|-
|nameEn
|Английское название аэропорта
|string
|Строка
|-
|properName
|Оригинальное название аэропорта (без города), может быть пустым
|string
|Строка
|-
|properNameEn
|Оригинальное название аэропорта на английском (без города), может быть пустым
|string
|Строка
|-
|cityId
|Код города
|number
|Число
|-
|isAggregation
|Является ли город агрегатом аэропортов
|boolean
|Логический тип
|-
|countryCode
|Код страны
|string
|Строка из 2 латинских букв(ISO 3166-1 alpha-2)
|}
</div>
</div>
=== Авиакомпании (airlines) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по IATA коду авиакомпании ====
<pre id="guide.airlines.CODE">guide.airlines.CODE = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|IATA
|IATA код авиакомпании
|string
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|name
|Название авиакомпании
|string
|Строка
|-
|nameEn
|Английское название авиакомпании
|string
|Строка
|-
|rating
|Рейтинг перевозчика
|number
|Число
|-
|countryCode
|Код страны авиакомпании
|string
|Строка из 2 латинских букв (ISO 3166-1 alpha-2)
|-
|logo
|Данные о логотипе авиакомпании
|{}
|...
|-
|monochromeLogo
|Данные о монохромном логотипе авиакомпании
|{}
|...
|-
|
: image
|Ссылка на логотип авиакомпании
|string
|Строка, указывающая относительный путь к изображению
|-
|
: icon
|Ссылка на иконку логотипа авиакомпании
|string
|Строка, указывающая относительный путь к изображению
|-
|
: height
|Высота логотипа
|number
|Целое положительное число
|-
|
: width
|Ширина логотипа
|number
|Целое положительное число
|-
|colors
|Данные о фирменных цветах авиакомпании
|{}
|...
|-
|
: companyColor
|Фирменный цвет
|string
|HEX код, соответствующий регулярному выражению /^\#[\da-f]{6}$/
|-
|
: companyColorAdditional
|Дополнительный фирменный цвет
|string
|HEX код, соответствующий регулярному выражению /^\#[\da-f]{6}$/
|-
|}
</div>
</div>
=== Отели (hotels) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Данные по коду отеля ====
<pre id="guide.hotels.ID">guide.hotels.ID = </pre>
<div class="mw-collapsible-content">
<pre>
{
"name": "Bridgestreet Opera Saint Lazar",
"nameEn": "BRIDGESTREET OPERA SAINT LAZAR",
"cityId": 15777,
"id": 7
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|name
|Название отеля
|string
|Строка
|-
|nameEn
|Английское название отеля
|string
|Строка
|-
|cityId
|Идентификатор города, в котором расположен отель
|number
|Число
|-
|id
|Код отеля
|number
|Число
|-
|}
</div>
</div>
=== Автокомплит (autocomplete) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== IATA совместимые локации ====
<pre id="guide.autocomplete.iata">guide.autocomplete.iata = </pre>
<div class="mw-collapsible-content">
<pre>
[
{
"IATA": "MOW",
"isCity": true,
"cityId": 58165
}
]
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|IATA
|IATA код
|string
|Строка из 3 букв латинского алфавита
|-
|isCity
|Признак, что указан код города-агрегата аэропортов
|boolean
|Логический тип
|-
|cityId
|Идентификатор города
|number
|Число
|}
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
==== Города ====
<pre id="guide.autocomplete.cities">guide.autocomplete.cities = </pre>
<div class="mw-collapsible-content">
<pre>
[
{
"id": "58165",
"name": "Москва",
"country_code": "RU",
"country_name": "Россия"
}
]
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|id
|Идентификатор города
|int
|Целое число
|-
|name
|Название города
|string
|Строка
|-
|country_code
|Код страны
|string
|Строка из 2 латинских букв
|-
|country_name
|Название страны
|string
|Строка
|-
|}
</div>
</div>
== Служебная информация(system) ==
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
=== Служебная информация (info) ===
<pre id="system.info">system.info = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
}
}
}
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|responce
|Ограничения на максимальные значения параметров
|{}
|...
|-
|
: timestamp
|Текущая временная метка с сервера
|number
|Вещественное число
|-
|
: responceTime
|Время ответа
|number
|Вещественное число
|-
|user
|Служебная информация о пользователе
|{}
|...
|-
|
: userID
|ID пользователя
|number
|Целое положительное число
|-
|
: agencyID
|ID агентства
|number
|Целое положительное число
|-
|
: status
|Статус пользователя
|string
|Строка, принимающая следующие значения:
: guest
: admin
: user
: expert
: manager
: company_user
: company_expert
: company_manager
|-
|
: settings
| Настройки пользователя
|{}
|...
|-
|
:: currentLanguage
| Текущий язык
|string
|Строка из 2 латинских букв
|-
|
:: currentCurrency
| Текущая валюта
|string
|Строка из 3 латинских букв
|-
|
:: agencyCurrency
| Валюта агентства
|string
|Строка из 3 латинских букв
|-
|
:: googleMapsApiKey
| Api ключ для доступа к google maps
|string
|Строка
|-
|
:: googleMapsClientId
| CliendId для доступа к google maps
|string
|Строка
|-
|
: promoCode
| Информация о промокоде
|{}
|...
|-
|
:: code
| код
|string
|Строка
|-
|
:: promoAction
| информация о промоакции
|{}
|...
|-
|
::: name
| Название акции
|string
|Строка
|-
|
::: description
| Описание акции
|string
|Строка
|-
|
::: hasFullDesc
| Флаг наличия подробного описания
|boolean
|логический тип
|-
|
::: fullDescURL
| Ссылка для получения подробного описания
|string
|Строка
|-
|}
</div>
</div>
== Заказы (order) ==
=== Протокорзина (reminder) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Информация о заказах пользователя (orders) ====
<pre id="order.reminder.orders">order.reminder.orders = </pre>
<div class="mw-collapsible-content">
<pre>
[
{
"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"
}
}
]
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|id
|Идентификатор заказа
|number
|Целое положительное число
|-
|type
|тип заказа
|String
|Строка
|-
|products
|Массив продуктов
|[]
|...
|-
|
: status
|Статус
|String
|Строка, принимающая одно из следующих значений:
: pending - ожидает бронирования,
: booked - забронирован, ожидает оплаты,
: completed - оплаченный
|-
|
: type
|Тип продукта
|String
|Строка, принимающая одно из следующих значений:
: flight - перелет,
: hotel - отель,
: train - поездка на поезде
|-
|
: depAirpIATA
|Для перелёта - код аэропорта вылета
|String
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
: arrAirpIATA
|Для перелёта - код аэропорта прилета
|String
|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
: beginDateTime
|Дата начала услуги
|String
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
: endDateTime
|Дата завершения услуги
|String
|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
: totalPrice
|Цена услуги
|{}
|...
|-
|
:: amount
|Сумма
|number
|Дробное число
|-
|
:: currency
|Код валюты
|string
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|
: description
|Описание продукта
|string
|Строка
|-
|orderPrice
|Цена заказа
|{}
|Формат аналогичен totalPrice
|-
|}
</div>
</div>
== Информация о системе (system) ==
=== Служебная информация (info) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Получение данных о валютах (currencyRates) ====
<pre id="system.info.currencyRates">system.info.currencyRates = </pre>
<div class="mw-collapsible-content">
<pre>
{
"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"
]
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|rates
|Массив данных о валютах
|[]
|...
|-
|
: currency
|Код валюты
|String
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|
: rate
|Код валюты
|Numeric
|Число от 0 до 1
|-
|
: title
|Название валюты
|String
|Строка
|-
|conversionEnabled
|Флаг допустимости пересчета цен в результатах поиска
|boolean
|Логический тип
|-
|roundingFunction
|Тип округления
|String
|Строка, принимающая следующие значения:
: 'ceil' - всегда вверх;
: 'floor' - всегда вниз;
: 'round' - математическое
|-
|backendCurrencyList
|список валют, допустимых для бэкендных расчетов
|[]
|Массив кодов валют
|-
|}
</div>
</div>
== Трэвел-политики (travelPolicies) ==
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Получение данных о трэвел-политиках (travelPolicies) ====
<pre id="travelPolicies">travelPolicies = </pre>
<div class="mw-collapsible-content">
<pre>
[
{
"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"
}
}
}
]
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|id
|Идентификатор правила
|String
|Строка
|-
|name
|Данные о названиях правила на разных языках
|{}
|Объект или null. Ключами являются коды языков либо default - название по умолчанию
|-
|rules
|Правила политики
|{}
|...
|-
|
: isDirect
|Флаг обязательного прямого перелета
|boolean
|Логический тип
|-
|
: arrAirports
|Массив IATA кодов аэропортов прибытия
|[]
|...
|-
|
: depAirports
|Массив IATA кодов аэропортов вылета
|[]
|...
|-
|
: arrCountries
|Массив кодов стран прибытия
|[]
|...
|-
|
: depCountries
|Массив кодов стран вылета
|[]
|...
|-
|
: airlines
|Массив IATA кодов авиакомпаний
|[]
|...
|-
|
: serviceClass
|Массив однобуквенных кодов сервисных классов
|[]
|...
|-
|
: zones
|Массив кодов географических зон перелета
|[]
|...
|-
|
: tariffs
|Массив кодов тарифов
|[]
|...
|-
|
: bookingClass
|Массив однобуквенных кодов допустимых классов бронирования
|[]
|...
|-
|restrictions
|Ограничения по цене
|{}
|...
|-
|
: priceMax
|Верхняя планка цены
|{}
|...
|-
|
: priceDiffMax
| Максимальная разбежка с минимальной ценой
|{}
|...
|-
|
:: amount
|Сумма
|number
|Дробное число
|-
|
:: currency
|Код валюты
|string
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|}
</div>
</div>