Изменения

Перейти к навигации Перейти к поиску

Frontend API

8350 байт добавлено, 14:14, 27 февраля 2019
Нет описания правки
Формат запросов имеет вид
<pre>http(s)://host/api/{component}/{module}/{action} + /{parameter1}/{parameter2}... (где параметры необязательны)</pre>
Пример:
http://demo.nemo.travel/api/flights/search/formData
 
Примечание: для изменения языка в ответах запросов нужно использовать GET параметр <syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">apilang=xx</syntaxhighlight>, где <syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">xx</syntaxhighlight> это 2-х буквенный код языка.
 
Пример: http://demo.nemo.travel/api/flights/utils/sunInfo/RTW/2016-06-28T15:00:00/DME/2016-06-28T20:30:00?apilang=en
= Описание запросов =
*Response:
** [[#flights.utils.sunInfo|flights.utils.sunInfo]] (Информация о солнечной стороне)
** [[#utils.system.info|system.info]] (Служебная информация)
== Модуль Отели (hotels) ==
* Request
** URI /api/hotels/search/request/{searchId?} (получение данных запроса поиска с идентификатором {searchId}или создание нового запроса на поиск)
** POST request="[[#hotels.search.request|hotels.search.request]]" (Параметры запроса поиска)
* Response:
== Модуль Заказов (order) ==
 
=== Модуль аутентификации ===
 
Внимание, для сохранения статуса авторизованного пользователя запросы должны быть отправлены с поддержкой cookie
 
(Параметр withCredentials = true у объекта XmlHttpRequest в случае использования JS)
 
==== Запрос аутентификации пользователя====
 
* Request
** URI /api/order/auth/request
** POST request="[[#order.auth.request|order.auth.request]]" (Параметры запроса аутентификации)
* Response:
** [[#order.auth.response|order.auth.response]] (Результат аутентификации)
** [[#system.info|system.info]] (Служебная информация)
 
==== Запрос восстановления пароля====
 
* Request
** URI /api/order/auth/sendPasswordLink
** POST request="[[#order.auth.sendPasswordLink|order.auth.sendPasswordLink]]" (Параметры запроса восстановления пароля)
* Response:
** [[#order.auth.sendPasswordLinkResponse|order.auth.sendPasswordLinkResponse]] (Информация о результате операции)
** [[#system.info|system.info]] (Служебная информация)
 
==== Запрос регистрации====
 
* Request
** URI /api/order/auth/registration
** POST request="[[#order.auth.registration|order.auth.registration]]" (Параметры запроса регистрации)
* Response:
** [[#order.auth.registrationResponse|order.auth.registrationResponse]] (Информация о результате регистрации)
** [[#system.info|system.info]] (Служебная информация)
 
==== Запрос на получение параметров капчи====
 
* Request
** URI /api/order/auth/captchaParams
* Response:
** [[#order.auth.captchaParamsResponse|order.auth.captchaParamsResponse]] (Информация о параметрах капчи)
** [[#system.info|system.info]] (Служебная информация)
 
==== Запрос проверки состояния заказа====
 
* Request
** URI /api/order/auth/status
** POST request="[[#order.auth.status|order.auth.status]]" (Параметры запроса проверки состояния заказа)
* Response:
** [[#order.auth.statusResponse|order.auth.statusResponse]] (Информация о состоянии заказа)
** [[#system.info|system.info]] (Служебная информация)
=== Модуль Протокорзина (reminder) ===
"aroundDates": 0,
"serviceClass": "All",
"airlines": [ { "IATA": "UT" } ],
"delayed": false
"priceRefundType": null
}
}
|Предпочитаемые авиакомпании
|[]
|...|-|:: Массив IATA|IATA код кодов авиакомпании|string|Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
|boolean
|Логический тип
|-
|
: priceRefundType
|Признак возвратности тарифа, где
: AnyLowest - наименьшие цены (по умолчанию)
: Refundable - наименьшие цены с возможностью безвозмездного возврата
: Both - совокупность поисковых выдач поиска для минимальных и минимальных возвратных цен
|string
|Строка, принимающая одно из значений:
: AnyLowest
: Refundable
: Both
: Null
|-
|}
== Заказы (order) ==
=== Протокорзина Аутентификация (reminderauth) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Информация о заказах пользователя Данные запроса аутентификации(ordersrequest) ====<pre id="order.reminderauth.ordersrequest">order.reminderauth.orders request = </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, "currencylogin": "RUBtest" }, "descriptionpassword": "...test" } ], "orderPrice": { "amount": 485, "currency": "RUB" } }]
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Значения
|-
|idlogin|Идентификатор заказаЛогин пользователя|numberstring|Целое положительное числострока
|-
|typepassword|тип заказаПароль пользователя|Stringstring|Строка строка
|-
|products}|Массив продуктов</div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">|[]==== Данные результата аутентификации(response) ====|<pre id="order.auth.response">order.auth.response = </pre>|<div class="mw-collapsible-content">|<pre>{ "success": statustrue|Статус}</pre>{|Stringborder="1" cellpadding="10" cellspacing="0"|Строка, принимающая одно из следующих значений:!Параметр: pending - ожидает бронирования,!Описание: booked - забронирован, ожидает оплаты,!Тип: completed - оплаченный!Значения
|-
|: typesuccess|Тип продуктаРезультат аутентификации|StringBoolean|Строка, принимающая одно из следующих значений:: flight - перелет,: hotel - отель,: train - поездка на поездеЛогический тип
|-
|}: depAirpIATA</div>|Для перелёта - код аэропорта вылета</div>|String|Строка из 2 знаков (букв латинского алфавита и цифр)|<div class="toccolours mw-collapsible mw-|collapsed" style="width: arrAirpIATA|Для перелёта 800px; margin- код аэропорта прилетаbottom:10px;">|String|Строка из 2 знаков ==== Данные запроса восстановления пароля(букв латинского алфавита и цифрsendPasswordLink)====|<pre id="order.auth.sendPasswordLink">order.auth.sendPasswordLink = </pre><div class="mw-collapsible-content">|: beginDateTime|Дата начала услуги<pre>|String{|Строка в формате yyyy-MM-ddTHH "login":mm:ss (ISO 8601)"test"}|-</pre>{|border="1" cellpadding="10" cellspacing="0": endDateTime!Параметр|Дата завершения услуги!Описание|String!Тип|Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)!Значения
|-
|: totalPrice|Цена услуги|{}|...|-|:: amount|Сумма |number|Дробное число|-|:: currencylogin|Код валютыЛогин пользователя
|string
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)|-|: description|Описание продукта|string|Строка|-|orderPrice|Цена заказа|{}|Формат аналогичен totalPriceстрока
|-
|}
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Результат запроса восстановления пароля(sendPasswordLinkResponse) ====
<pre id="order.auth.sendPasswordLinkResponse">order.auth.sendPasswordLinkResponse = </pre>
<div class="mw-collapsible-content">
<pre>{ "success": true, "message": "Письмо со ссылкой на восстановление пароля отправлено вам на почту"}</pre>{| border="1" cellpadding= Информация о системе (system) ="10" cellspacing="0"!Параметр!Описание!Тип!Значения|-|success|Результат аутентификации|Boolean|Логический тип|-|message|Сообщение|string|строка|-|}</div>=== Служебная информация (info) ===</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Получение данных о валютах Данные запроса регистрации пользователя(currencyRatesregistration) ====<pre id="systemorder.infoauth.currencyRatesregistration">systemorder.infoauth.currencyRates registration = </pre>
<div class="mw-collapsible-content">
<pre>
{
"ratesbooking_name": ["tst", { "currencybooking_lastname": "EURtst", "rateregistration_email": 0"tst@mute-lab.015983249554467com", "titleregistration_password": "Евроtst" }, { "currencybooking_phone": "USD89271111111", "ratesubscribe": 0.017322646415338true, "titlecapture": "Американский Долларtst" }, </pre>{ | border="currency1": cellpadding="RUB10", cellspacing="rate0": 1, "title": "Российский Рубль"!Параметр!Описание!Тип!Значения|-|booking_name|Имя пользователя|string|строка|-|booking_lastname|Фамилия пользователя|string|строка|-|registration_email|Адрес электронной почты пользователя|string|строка|-|registration_password|Пароль|string|строка|-|booking_phone|Телефон пользователя|string|строка|-|subscribe|Признак согласия на получение информации о лучших предложениях|Boolean|Логический тип|-|capture|Код проверки с контрольного изображения|string|строка|- |}, {</div></div>  <div class="currencytoccolours mw-collapsible mw-collapsed"style="width: 800px; margin-bottom:10px;"GBP",>==== Результат запроса регистрации пользователя(registrationResponse) ==== <pre id="rateorder.auth.registrationResponse": 0>order.auth.011694224105772,registrationResponse = </pre> <div class="title": "Британский фунтmw-collapsible-content">  },<pre> { "currencysuccess": "CZK"true, "ratemessage": 0"Письмо с регистрационными данными отправлено на Ваш электронный адрес. Для подтверждения регистрации перейдите, пожалуйста, по ссылке в письме.44018540609305", "titleredirectUrl": "Чешская крона"null }, </pre>{ | border="currency1": cellpadding="LVL10", cellspacing="rate0": 0.0169, "title": "Латвийский Лат"!Параметр!Описание!Тип!Значения|-|success|Результат регистрации|Boolean|Логический тип|- },|message {|Сообщение "currency": "JPY",|string "rate": 2.0694507677662,|строка "title": "Японская Йена"|- },|redirectUrl {|Ссылка для перехода "currency": "CNY",|string "rate": 0.10767415217373,|строка "title": "Китайский Юань"|- |}, {</div></div>  <div class="currencytoccolours mw-collapsible mw-collapsed"style="width:800px; margin-bottom: 10px;"UAH",>==== Данные результата запроса о параметрах капчи(captchaParamsResponse) ==== <pre id="rateorder.auth.captchaParamsResponse": 0>order.auth.40708159136336,captchaParamsResponse = </pre> <div class="title": "Гривнаmw-collapsible-content">  }<pre> ],{ "conversionEnabledimage": true, "roundingFunction"data: "ceil"image/jpeg;base64, JBJ435346...."backendCurrencyList": [ "RUB" ]
}
</pre>
!Значения
|-
|ratesimage|Массив данных о валютахСсылка на изображение|[]string|...строка
|-
|: 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;">
==== Получение данных Данные запроса о трэвел-политиках состоянии заказа(travelPoliciesstatus) ====<pre id="travelPoliciesorder.auth.status">travelPolicies order.auth.status = </pre>
<div class="mw-collapsible-content">
<pre>
[ { "idbooking_id": 184445469, "name": { "enpassenger_lastname": "First ruleIvanov", "defaultaccess_code": "Правило первое8Z273L" }, </pre>{| border="rules1": { cellpadding="isDirect10": true, cellspacing="arrAirports0": [ "LED"!Параметр!Описание!Тип!Значения|-|booking_id|Идентификатор заказа|string|строка,может содержать цифры от 0 до 9 и дефис|-|passenger_lastname|Фамилия одного из пассажиров|string|строка|-|access_code|Код доступа к заказу|string|строка|- "KBP"|}</div></div> ], <div class="toccolours mw-collapsible mw-collapsed"depAirportsstyle="width: [800px; margin-bottom:10px;">==== Данные результата запроса о состоянии заказа(statusResponse) ==== <pre id="MOWorder.auth.statusResponse",>order.auth.statusResponse = </pre> <div class="KBPmw-collapsible-content">  ],<pre>{ "arrCountriessuccess": [ "RU"true, "UAmessage" ]: null, "depCountriesredirectUrl": [ "RUhttp://nemotravel/poffice__bookinfo?booking_id=452434", "UA"} ],</pre> {| border="airlines1": [ cellpadding="SU10", cellspacing="PS0" ],!Параметр!Описание!Тип!Значения "serviceClass": [|- "E",|success "B",|Признак успешности получения ответа "F"|Boolean ],|Логический тип "zones": [|- "EU",|message "AS"|Сообщение ],|string "tariffs": [|строка "QWE"|- ],|redirectUrl "bookingClass": [|Ссылка для перехода "T",|string "Q"|строка ]|- |}, "restrictions": {</div> "priceMax": {</div> "amount": "100000", "currency": "RUB"=== Протокорзина (reminder) === }, <div class="toccolours mw-collapsible mw-collapsed"priceDiffMaxstyle="width: { "amount"800px; margin-bottom: 10px;"20",>==== Информация о заказах пользователя (orders) ==== <pre id="currencyorder.reminder.orders": >order.reminder.orders = </pre><div class="PCTmw-collapsible-content"> } }<pre> },[ { "id": 185296944, "nametype": { "defaultoneFlight": "Правило второе" }, "rulesproducts": [ { "isDirectstatus": false"completed", "arrAirportstype": [ "LEDflight" ], "depAirportsdepAirpIATA": [ "MOWVKO" ], "arrCountriesarrAirpIATA": [], "depCountriesLED": [], "airlinesbeginDateTime": [], "serviceClass2015-09-29T10:00:00": [], "zonesendDateTime": [ "EU2015-09-29T11:30:00" ], "tariffstotalPrice": [],{ "bookingClassamount": [] }485, "restrictionscurrency": { "priceMaxRUB": { "amount": "90000"}, "currencydescription": "RUB..." } ], "priceDiffMaxorderPrice": { "amount": ""485, "currency": "PCTRUB" } } } ]
</pre>
{| border="1" cellpadding="10" cellspacing="0"
|-
|id
|Идентификатор правилазаказа|number|Целое положительное число|-|type|тип заказа
|String
|Строка
|-
|nameproducts|Данные о названиях правила на разных языкахМассив продуктов|{}|Объект или null. Ключами являются коды языков либо default - название по умолчанию|-|rules|Правила политики|{}[]
|...
|-
|
: isDirectstatus|Флаг обязательного прямого перелетаСтатус|booleanString|Логический тип Строка, принимающая одно из следующих значений:: pending - ожидает бронирования,: booked - забронирован, ожидает оплаты,: completed - оплаченный
|-
|
: arrAirportstype|Массив IATA кодов аэропортов прибытияТип продукта|[]String|...Строка, принимающая одно из следующих значений:: flight - перелет,: hotel - отель,: train - поездка на поезде
|-
|
: depAirportsdepAirpIATA|Массив IATA кодов аэропортов Для перелёта - код аэропорта вылета|[]String|...Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
: arrCountriesarrAirpIATA|Массив кодов стран прибытияДля перелёта - код аэропорта прилета|[]String|...Строка из 2 знаков (букв латинского алфавита и цифр)
|-
|
: depCountriesbeginDateTime|Массив кодов стран вылетаДата начала услуги|[]String|...Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
: airlinesendDateTime|Массив IATA кодов авиакомпанийДата завершения услуги|[]String|...Строка в формате yyyy-MM-ddTHH:mm:ss (ISO 8601)
|-
|
: serviceClasstotalPrice|Массив однобуквенных кодов сервисных классов|[]|... |-|: zones|Массив кодов географических зон перелета|[]|... |-|: tariffs|Массив кодов тарифов|[]|... |-|: bookingClass|Массив однобуквенных кодов допустимых классов бронирования|[]|... |-|restrictions|Ограничения по ценеЦена услуги
|{}
|...
|-
|
: priceMax
|Верхняя планка цены
|{}
|...
|-
|
: priceDiffMax
| Максимальная разбежка с минимальной ценой
|{}
|...
|-
|
|Строка в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|: description|Описание продукта|string|Строка|-|orderPrice|Цена заказа|{}|Формат аналогичен totalPrice|-|}</div>
</div>
== Информация о системе (system) ==
=== Служебная информация(systeminfo) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
=== Служебная информация = Получение данных о валютах (infocurrencyRates) ====<pre id="utils.system.info.currencyRates">system.info .currencyRates = </pre>
<div class="mw-collapsible-content">
<pre>
{
"responcerates": [ { "timestampcurrency": 1433754718"EUR", "rate": 0.9557015983249554467, "responceTimetitle": "Евро" }, { "currency": "USD", "rate": 0.10900616645813017322646415338, "title": "Американский Доллар" }, { "currency": "RUB", "userrate": 1, "title": "Российский Рубль" }, { "userIDcurrency": 3599"GBP", "agencyIDrate": 35980.011694224105772, "statustitle": "managerБританский фунт" }, { "currency": "CZK"isB2B, "rate": true0.44018540609305, "settingstitle": "Чешская крона" }, { "currency": "LVL", "currentLanguagerate": 0.0169, "rutitle": "Латвийский Лат" }, { "currentCurrencycurrency": "USDJPY", "agencyCurrencyrate": 2.0694507677662, "USDtitle": "Японская Йена" }, { "googleMapsApiKeycurrency": "nullCNY", "rate": 0.10767415217373, "googleMapsClientIdtitle": "nullКитайский Юань" }, { "currency": "UAH", "rate": 0.40708159136336, "title": "Гривна" } ], "conversionEnabled": true, "roundingFunction": "ceil", "backendCurrencyList": [ "RUB" ]}</pre>{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Значения
|-
|responcerates|Ограничения на максимальные значения параметровМассив данных о валютах|{}[]
|...
|-
|
:timestampcurrency|Текущая временная метка с сервераКод валюты|numberString|Вещественное числоСтрока в формате ISO 4217(трёхбуквенный алфавитный код)
|-
|
:responceTimerate|Время ответаКод валюты|numberNumeric|Вещественное число|-|user|Служебная информация о пользователе|{}|...Число от 0 до 1
|-
|
:userIDtitle|ID пользователяНазвание валюты|numberString|Целое положительное числоСтрока
|-
|:agencyIDconversionEnabled|ID агентстваФлаг допустимости пересчета цен в результатах поиска|numberboolean|Целое положительное числоЛогический тип
|-
|:statusroundingFunction|Статус пользователяТип округления|stringString
|Строка, принимающая следующие значения:
: guest'ceil' - всегда вверх;: admin'floor' - всегда вниз;: user'round' - математическое|-|backendCurrencyList|список валют, допустимых для бэкендных расчетов|[]|Массив кодов валют|-|}</div></div>   == Трэвел-политики (travelPolicies) == <div class="toccolours mw-collapsible mw-collapsed" style="width: expert800px; margin-bottom:10px;">==== Получение данных о трэвел-политиках (travelPolicies) ====<pre id="travelPolicies">travelPolicies = </pre><div class="mw-collapsible-content"> <pre>[ { "id": manager184, "name": company_user{ "en": company_expert"First rule", "default": company_manager"Правило первое"|- }, "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":isB2B"PCT" }| Признак типа B2B }| boolean },| логический тип {|- "id": 185,| "name": { "default":settings"Правило второе"| Настройки пользователя },| "rules": { "isDirect": false, "arrAirports": [ "LED" ], "depAirports": [ "MOW" ], "arrCountries": [], "depCountries": [], "airlines": [], "serviceClass": [], "zones": [ "EU" ], "tariffs": [], "bookingClass": [] }, "restrictions": { "priceMax": { "amount": "90000",|... "currency": "RUB"|- },| "priceDiffMax": { "amount":"", "currency":currentLanguage"PCT" } } } ]</pre>{| Текущий языкborder="1" cellpadding="10" cellspacing="0"!Параметр!Описание|string!Тип|Строка из 2 латинских букв!Значения|-|::currentCurrencyid| Текущая валютаИдентификатор правила|stringString|Строка из 3 латинских букв|-|::agencyCurrencyname| Валюта агентстваДанные о названиях правила на разных языках|string{}|Строка из 3 латинских буквОбъект или null. Ключами являются коды языков либо default - название по умолчанию|-|::googleMapsApiKeyrules| Api ключ для доступа к google mapsПравила политики|string{}|Строка...
|-
|
: isDirect|Флаг обязательного прямого перелета|boolean|Логический тип |-|: arrAirports|Массив IATA кодов аэропортов прибытия|[]|...|-|: depAirports|Массив IATA кодов аэропортов вылета|[]|...|-|: arrCountries|Массив кодов стран прибытия|[]|...|-|: depCountries|Массив кодов стран вылета|[]|...|-|: airlines|Массив IATA кодов авиакомпаний|[]|...|-|: serviceClass|Массив однобуквенных кодов сервисных классов|[]|... |-|: zones|Массив кодов географических зон перелета|[]|... |-|: tariffs|Массив кодов тарифов|[]|... |-|: bookingClass|Массив однобуквенных кодов допустимых классов бронирования|[]|... |-|restrictions|Ограничения по цене|{}|...|-|: priceMax|Верхняя планка цены|{}|... |-|: priceDiffMax| Максимальная разбежка с минимальной ценой|{}|... |-|:: amount|Сумма |number|Дробное число|-|::googleMapsClientIdcurrency| CliendId для доступа к google mapsКод валюты
|string
|Строкав формате ISO 4217(трёхбуквенный алфавитный код)
|-
|}
</div>
</div>

Навигация

'