Открыть главное меню

Изменения

Frontend API

10 838 байт добавлено, 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
= Описание запросов =
*Request
** URI /api/flights/utils/sunInfo/{dep_airport}/{depDateTimeLocal}/{arr_airport}/{arrDateTimeLocal}
*** Пример: /api/flights/utils/sunInfo/RTW/2016-06-29T0828T15:00:00/DME/2016-06-28T0828T20:30:00
*Response:
* 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
|-
|}
</div>
== Отели (hotels) == === Поиск Вспомогательные функции (searchutils) ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Получение данных по солнечной стороне (sunInfo) ====<pre id="flights.utils.sunInfo">flights.utils.sunInfo = </pre><div class="mw-collapsible-content"><pre>{ "info": { "sunPercentLeft": 0, "sunPercentRight": 0 }, "message": "Солнце не будет мешать во время полета"}</pre>{| border="1" cellpadding="10" cellspacing="0"!Параметр!Описание!Тип!Значения|-|sunPercentLeft|Процент времени от общей длительности перелета нахождения солнца с левой стороны борта самолета|number|Целое положительно число не большее 100|-|sunPercentRight|Процент времени от общей длительности перелета нахождения солнца с правой стороны борта самолета|number|Целое положительно число не большее 100|-|message|Сообщение с информацией о проценте времени нахождения солнца с определенной стороны|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">
== Заказы (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>
[ { "idlogin": 296944"test", "typepassword": "oneFlighttest", "products": [}</pre> { | border="status1": cellpadding="completed10", cellspacing="type0": "flight", "depAirpIATA": "VKO",!Параметр!Описание!Тип!Значения|-|login|Логин пользователя|string "arrAirpIATA": "LED",|строка "beginDateTime": "2015|-09|password|Пароль пользователя|string|строка|-29T10:00:00", |}</div></div> <div class="endDateTime": "2015toccolours mw-09collapsible mw-29T11:30:00", collapsed"totalPricestyle="width: { "amount"800px; margin-bottom: 485, "currency": "RUB10px;"> },==== Данные результата аутентификации(response) ==== <pre id="description": order.auth.response">order.auth..response = </pre><div class="mw-collapsible-content"> } ],<pre> "orderPrice": { "amountsuccess": 485,true "currency": "RUB" } }]
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Значения
|-
|idsuccess|Идентификатор заказаРезультат аутентификации|numberBoolean|Целое положительное числоЛогический тип
|-
|}</div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">==== Данные запроса восстановления пароля(sendPasswordLink) ====<pre id="order.auth.sendPasswordLink">order.auth.sendPasswordLink = </pre><div class="mw-collapsible-content"> <pre>{ "login": "test"}</pre>{| border="1" cellpadding="10" cellspacing="0"!Параметр!Описание!Тип!Значения|-|login|Логин пользователя|string|строка|-|}</div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">==== Результат запроса восстановления пароля(sendPasswordLinkResponse) ====<pre id="order.auth.sendPasswordLinkResponse">order.auth.sendPasswordLinkResponse = </pre><div class="mw-collapsible-content"> <pre>{ "success": true, "message": "Письмо со ссылкой на восстановление пароля отправлено вам на почту"}</pre>{| border="1" cellpadding="10" cellspacing="0"!Параметр!Описание!Тип!Значения|-|success|Результат аутентификации|Boolean|Логический тип|-|message|Сообщение|string|строка|-|}</div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">==== Данные запроса регистрации пользователя(registration) ====<pre id="order.auth.registration">order.auth.registration = </pre><div class="mw-collapsible-content"> <pre>{ "booking_name": "tst", "booking_lastname": "tst", "registration_email": "tst@mute-lab.com", "registration_password": "tst", "booking_phone": "89271111111", "subscribe": true, "capture": "tst"}</pre>{| border="1" cellpadding="10" cellspacing="0"!Параметр!Описание!Тип!Значения|-|booking_name|Имя пользователя|string|строка|-|booking_lastname|Фамилия пользователя|string|строка|-|registration_email|Адрес электронной почты пользователя|string|строка|-|registration_password|Пароль|string|строка|-|booking_phone|Телефон пользователя|string|строка|-|subscribe|Признак согласия на получение информации о лучших предложениях|Boolean|Логический тип|-|capture|Код проверки с контрольного изображения|string|строка|-|}</div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">==== Результат запроса регистрации пользователя(registrationResponse) ====<pre id="order.auth.registrationResponse">order.auth.registrationResponse = </pre><div class="mw-collapsible-content"> <pre>{ "success": true, "message": "Письмо с регистрационными данными отправлено на Ваш электронный адрес. Для подтверждения регистрации перейдите, пожалуйста, по ссылке в письме.", "redirectUrl": null}</pre>{| border="1" cellpadding="10" cellspacing="0"!Параметр!Описание!Тип!Значения|-|success|Результат регистрации|Boolean|Логический тип|-|message|Сообщение|string|строка|-|redirectUrl|Ссылка для перехода|string|строка|-|}</div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">==== Данные результата запроса о параметрах капчи(captchaParamsResponse) ====<pre id="order.auth.captchaParamsResponse">order.auth.captchaParamsResponse = </pre><div class="mw-collapsible-content"> <pre>{ "image": "data:image/jpeg;base64,JBJ435346...."}</pre>{| border="1" cellpadding="10" cellspacing="0"!Параметр!Описание!Тип!Значения|-|image|Ссылка на изображение|string|строка|-|}</div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">==== Данные запроса о состоянии заказа(status) ====<pre id="order.auth.status">order.auth.status = </pre><div class="mw-collapsible-content"> <pre>{ "booking_id": 445469, "passenger_lastname": "Ivanov", "access_code": "8Z273L"}</pre>{| border="1" cellpadding="10" cellspacing="0"!Параметр!Описание!Тип!Значения|-|booking_id|Идентификатор заказа|string|строка, может содержать цифры от 0 до 9 и дефис|-|passenger_lastname|Фамилия одного из пассажиров|string|строка|-|access_code|Код доступа к заказу|string|строка|-|}</div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">==== Данные результата запроса о состоянии заказа(statusResponse) ====<pre id="order.auth.statusResponse">order.auth.statusResponse = </pre><div class="mw-collapsible-content"> <pre>{ "success": true, "message": null, "redirectUrl": "http://nemotravel/poffice__bookinfo?booking_id=452434"}</pre>{| border="1" cellpadding="10" cellspacing="0"!Параметр!Описание!Тип!Значения|-|success|Признак успешности получения ответа|Boolean|Логический тип|-|message|Сообщение|string|строка|-|redirectUrl|Ссылка для перехода|string|строка|-|}</div></div> === Протокорзина (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
|Строка, принимающая одно из следующих значений:
</div>
</div>
 
== Информация о системе (system) ==
</div>
</div>
 
 
== Вспомогательные функции (utils) ==
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px; margin-bottom:10px;">
==== Получение данных по солнечной стороне (sunInfo) ====
<pre id="flights.utils.sunInfo">flights.utils.sunInfo = </pre>
<div class="mw-collapsible-content">
<pre>
{
"info": {
"sunPercentLeft": 0,
"sunPercentRight": 0
},
"message": "Солнце не будет мешать во время полета"
}
</pre>
{| border="1" cellpadding="10" cellspacing="0"
!Параметр
!Описание
!Тип
!Значения
|-
|sunPercentLeft
|Процент времени от общей длительности перелета нахождения солнца с левой стороны борта самолета
|number
|Целое положительно число не большее 100
|-
|sunPercentRight
|Процент времени от общей длительности перелета нахождения солнца с правой стороны борта самолета
|number
|Целое положительно число не большее 100
|-
|message
|Сообщение с информацией о проценте времени нахождения солнца с определенной стороны
|string
|Целое положительно число не большее 100
'