Шлюз поиска туров (json)
Содержание
- 1 Описание сервиса
- 2 Подключение к сервису
- 3 Логика работы с сервисом
- 4 Методы
- 4.1 Методы получения справочников
- 4.1.1 GetDepartCities — Города вылета
- 4.1.2 GetCountries — Направления
- 4.1.3 GetCities — Курорты
- 4.1.4 GetHotels — Отели
- 4.1.5 GetHotelStars — Категории отелей
- 4.1.6 GetMeals — Типы питания
- 4.1.7 GetTourOperators — Туроператоры
- 4.1.8 GetTourDates — Доступные даты тура
- 4.1.9 GetSourseAssurances — Фингарантии операторов
- 4.2 Методы загрузки туров
- 4.3 Методы работы с заказом
- 4.1 Методы получения справочников
Описание сервиса
API поиска туров позволит вам создать собственную туристическую поисковую систему. Используя методы этого сервиса, вы сможете:
- Загружать справочники городов вылета, стран, курортов, отелей, категорий отелей, видов питания, туроператоров;
- Искать продукты более чем 130 крупнейших туроператоров России.
- Настроить автоматическое SMS- и email-оповещение менеджеров о заказах.
Внимание! На момент написания настоящего руководства функция онлайн бронирования сервисом не предусмотрена. |
Внимание! Доступ к данным отдельных операторов может быть ограничен лицензией. По всем вопросам, пожалуйста, обращайтесь в Службу технической поддержки Слетать.ру по тел. 8(800)700-33-09 или по электронной почте support@sletat.ru. |
Работа сервиса не требует сессий, и методы не зависят друг от друга с точки зрения очередности вызова. Таким образом, очередность вызова методов диктуется реализуемым алгоритмом работы с поисковым сервисом.
Подключение к сервису
Все методы веб-сервиса располагаются по адресу:
http://module.sletat.ru/Main.svc
Вызов любого метода должен иметь следующий синтаксис:
http://module.sletat.ru/Main.svc/{ИмяМетода}?{параметр1}={значение1}&{параметр2}={значение2}...
Пример вызова:
http://module.sletat.ru/Main.svc/GetHotels?countryId=40
Внимание! Для работы с сервисом требуется авторизация. Если запросы к сервису выполняются из Javascript на стороне клиента (из браузера), то авторизация производится автоматически по содержимому HTTP-заголовка REFERER, в котором все браузеры по умолчанию передают адрес страницы сайта, с которой делается запрос (лицензия на сервис в обязательном порядке привязана к домену вашего сайта). |
Если же вы планируете делать запросы напрямую с ваших серверов, то схема с HTTP REFERER неприменима. Каждый запрос должен содержать пару параметров login и password с учетными данными на сайте sletat.ru.
Внимание! Работа с поисковым запросом (создание, запрос состояния и загрузка туров) должна выполняться с одного IP-адреса. При выполнении этого условия взаимодействие с сервисом возможно с нескольких IP адресов. |
Передавать все параметры при вызове не обязательно. Обязательные параметры отмечены звёздочкой (*).
Логика работы с сервисом
Метод поиска туров GetTours использует идентификаторы городов вылета, стран, отелей и т.д., поэтому сначала нужно загрузить все соответствующие справочники, используя соответствующие методы:
- GetCountries – список доступных стран;
- GetDepartCities – список городов вылета;
- GetCities – список курортов;
- GetHotelStars – список категорий отелей;
- GetMeals – список типов питания;
- GetHotels – список отелей;
- GetTourOperators – список туроператоров.
- GetTourDates – список дат вылета для выбранного города.
После того как все справочники загружены и отображены пользователю, можно приступать к поиску туров. Для этого используются следующие методы:
- GetTours – создание поискового запроса;
- GetLoadState – получение данных о статусе загрузки туров для каждого туроператора;
- GetTours (с указанием параметра requestId и параметра updateResult со значением "1") – возвращает результаты поиска;
Сервис производит асинхронный поиск туров. После получения ответа от метода GetTours (обычно не более секунды) нужно отслеживать состояние поискового запроса, поскольку туроператоры отдают данные за разное время – от 1 секунды до 2 минут.
В ответе первого обращения к GetTours приходит идентификатор созданного поискового запроса, который в дальнейшем используется для отслеживания состояния поискового запроса методом GetLoadState и получения результатов поиска повторным обращением к методу GetTours с указанием requestId и параметра updateResult=1.
Логика работы с сервисом зависит от того, нужно ли вам получать данные до полного завершения поискового запроса. Возможны два варианта – единовременное получение полной поисковой выдачи и получение данных о турах по мере их поступления.
Получение полного набора туров
- Создаётся поисковый запрос методом GetTours. Сохраняется идентификатор запроса, полученный в ответе.
- Создаётся цикл для получения статуса поискового запроса. В цикле вызывается метод GetLoadState с использованием идентификатора запроса. В итерации цикла обязательно должна быть пауза (рекомендованное минимальное значение – 1,5 секунды). В результате вызова GetLoadState проверяется, все ли туроператоры обработали запрос (т.е. для всех туроператоров поле IsProcessed принимает значение "true"). На ос-нове проверки принимается решение о продолжении цикла или (если все туропера-торы обработали запрос) о переходе к методу получения туров.
- Снова вызывается метод GetTours, но уже с использованием полученного ранее идентификатора и параметра updateResult=1. Метод вернет все найденные туры в рамках поискового запроса.
Внимание! Сервер не хранит результаты поискового запроса продолжительное время. Данные должны быть получены и сохранены локально. |
Внимание! В цикле получения статуса поискового запроса должен быть внутренний таймаут, чтобы ни при каких обстоятельствах не могли возникнуть бесконечные циклы. |
Внимание! Несмотря на то, что метод GetTours возвращает данные о состоянии обработки поискового запроса туроператорами (структура LoadState), для получения этой информации в процессе поиска обращение к методу GetTours не допускается – необходимо использовать метод GetLoadState (см. «Логика работы сервиса», «GetLoadState – Статус обработки запроса»). За обращение к методу GetTours для отслеживания состояния поискового запроса Слетать.ру имеет право отозвать лицензию на использование шлюза без возмещения стоимости недооказанных услуг. |
Получение данных по мере их поступления
- Создаётся поисковый запрос методом GetTours. Сохраняется полученный идентифи-катор.
- Создаётся цикл для получения статуса поискового запроса. В цикле вызывается метод GetLoadState с использованием идентификатора запроса. В итерации цикла обяза-тельно должна быть пауза (рекомендованное минимальное значение – 1,5 секунды). В результате вызова GetLoadState проверяется, есть ли найденные туры по поисково-му запросу (т.е. как минимум один туроператор имеет значение поля RowsCount бо-лее нуля). Если найденных туров нет и не все туроператоры обработали запрос, цикл повторяется; если хотя бы один туроператор сообщил о наличии туров, можно перей-ти к методу получения данных о турах.
- Снова вызывается метод GetTours, но уже с использованием идентификатора запро-са и параметра updateResult=1. Метод вернет все данные о турах, найденных на момент вызова, а также состоя-ние обработки поискового запроса (аналогично методу GetLoadState). Состояние об-работки поискового запроса сохраняется, а найденные туры отображаются пользова-телю.
- Создаётся новый цикл, который работает до тех пор, пока все туроператоры не обра-ботают запрос. В цикле вызывается метод GetLoadState с использованием идентифи-катора запроса. В итерации цикла обязательно должна быть пауза (рекомендованное минимальное значение – 1,5 секунды). Результат вызова GetLoadState сравнивается с сохранённым состоянием обработки запроса. Если результат сравнения показывает наличие новых туров, пользователь уведомляется о новых найденных турах. Если для всех туроператоров значение поля IsProcessed = “true”, цикл завершается, и пользова-тель получает уведомление об окончании поиска. Если пользователь хочет обновить поисковую выдачу, необходимо повторить действия, описанные в п. 3.
Внимание! Сервер не хранит результаты поискового запроса продолжительное время. Данные должны быть получены и сохранены локально. |
Внимание! В цикле получения статуса поискового запроса должен быть внутренний таймаут, чтобы ни при каких обстоятельствах не могли возникнуть бесконечные циклы. |
Внимание! Несмотря на то, что метод GetTours возвращает данные о состоянии обработки поискового запроса туроператорами (структура LoadState), для получения этой информации в процессе поиска обращение к методу GetTours не допускается – необходимо использовать метод GetLoadState (см. «Логика работы сервиса», «GetLoadState – Статус обработки запроса»). За обращение к методу GetTours для отслеживания состояния поискового запроса Слетать.ру имеет право отозвать лицензию на использование шлюза без возмещения стоимости недооказанных услуг. |
Актуализация и сохранение данных
После того, как пользователь выбрал понравившийся тур, необходимо актуализировать данные с помощью метода ActualizePrice. Метод возвращает не только наиболее актуальную информацию по туру, но и его подробное описание (на момент написания настоящего руководства функция реализована не для всех туроператоров).
Последний шаг – вызов метода SaveTourOrder, который сохраняет информацию о заказе в системе sletat.ru и позволяет использовать средства оповещения для информирования ваших менеджеров о новом заказе. На момент написания настоящего руководства в личном кабинете на сайте sletat.ru можно настроить оповещения по электронной почте и SMS. Также доступна утилита SletatRu Agent для Windows, которая уведомляет обо всех новых заказах.
Методы
В этом разделе описаны все методы поискового сервиса. В соответствии с логикой работы сервиса (см. соответствующий раздел) они разделены на три группы:
- Методы получения справочников. При помощи методов этой группы вы можете загрузить списки стран, курортов, городов вылета, отелей, туроператоров и т. д. Обращение к этим методам необходимо на этапе подготовки к формированию поискового запроса.
- Методы загрузки туров. Методы этой группы позволяют провести весь цикл работ с поисковым запросом – от формирования до получения поисковой выдачи.
- Методы работы с заказом. Эти методы позволяют актуализировать данные о туре, получив информацию о перелётах, размерах топливных сборов и других доплат, а также оформить заказ и передать его на сайт sletat.ru для последующего оповещения менеджеров или статистического анализа.
Запрос каждого метода может содержать технический параметр debug, запускающий режим отладки, если передано значение “1”. По умолчанию передаётся значение “0”. Для удобства чтения параметр исключён из примеров запросов.
Ответ каждого из методов содержит поле Data – массив данных, запрашиваемых методов, а также следующие технические поля:
Поле | Тип | Описание |
ErrorMessage | Str | Текст сообщения об ошибке. Поле принимает значение “null”, если значение поля IsError = “false”. |
ExecutionTimeMs | Int | Время обработки запроса в миллисекундах. |
IsError | Bool | Сообщение об ошибке. Если при обработке запроса произошла ошибка, поле принимает значение “true”; в прот |
Для удобства чтения из примеров, приводимых в настоящем руководстве, эти поля изъяты.
Методы получения справочников
GetDepartCities — Города вылета
Метод GetDepartCities возвращает список всех городов вылета, который вы можете отредактировать в личном кабинете на сайте sletat.ru.
Пример запроса:
http://module.sletat.ru/Main.svc/GetDepartCities?
Параметры отсутствуют.
Пример ответа (для удобства чтения данные представлены только по трём городам):
{ "GetDepartCitiesResult": { "Data": [ { "Id":832, "Name":"Москва", "Default":true, "DescriptionUrl":null, "IsPopular":false, "ParentId":null }, { "Id":1264, "Name":"Санкт-Петербург", "Default":false, "DescriptionUrl":null, "IsPopular":false, "ParentId":null }, ... { "Id":1327, "Name":"Ялта", "Default":false, "DescriptionUrl":null, "IsPopular":false, "ParentId":null } ], ... } }
В ответ возвращается структура GetDepartCitiesResult.Data – массив данных о городах вылета. Поля структуры GetDepartCitiesResult.Data:
Поле | Тип | Описание |
Id | Int | Идентификатор города вылета. |
Name | Str | Город вылета.. |
Default | Bool | |
DescriptionUrl | Str | Ссылка на описание города. |
IsPopular | Bool | Популярность города вылета. Если город вылета был признан популярным на основе статистики поисковых запросов, сделанных на сайте sletat.ru и сайтах партнёров, поле принимает значение “true”; в противном случае — “false”. |
ParentId | Int | Идентификатор родительского города (см. поле ParentId в описании ответа метода GetCities). Поле может иметь значение “null”, если город вылета не имеет родительского города. |
GetCountries — Направления
Метод GetCountries возвращает список доступных направлений для любого данного города вылета. В личном кабинете на сайте sletat.ru вы можете поставить на этот список различные фильтры, чтобы в ответ возвращались данные только о тех странах, с которыми вы работаете. Список городов вылета получается методом GetDepartCities.
Пример запроса:
http://module.sletat.ru/Main.svc/GetCountries?townFromId=1264
Запрашивается справочник направлений, доступных для вылета из Санкт-Петербурга.
Запрос имеет единственный параметр townFromId* - целочисленный идентификатор города вылета.
Пример ответа (для удобства чтения представлены только три направления):
{ "GetCountriesResult": { "Data": [ { "Id":1, "Name":"Абхазия", "Alias":"NIL", "HasTickets":true, "HotelIsNotInStop":true, "Rank":2, "TicketsIncluded":false }, { "Id":2, "Name":"Австралия", "Alias":"NIL", "HasTickets":true, "HotelIsNotInStop":true, "Rank":2, "TicketsIncluded":false }, ... { "Id":139, "Name":"Япония", "Alias":"NIL", "HasTickets":true, "HotelIsNotInStop":true, "Rank":2, "TicketsIncluded":false } ], ... } }
В ответ возвращается структура GetCountriesResult.Data – массив данных о направлениях, доступных для указанного города вылета.
Поля структуры GetCountriesResult.Data:
Поле | Тип | Описание |
Id | Int | Идентификатор направления. |
Name | Str | Направление. |
Alias | Str | Текстовый код направления. |
HasTickets | Bool | Наличие билетов. Если билеты есть в наличии, параметр принимает значение “true”; в противном случае — “false”. |
HotelIsNotInStop | Bool | Наличие мест в отеле. Если в отеле есть места, параметр принимает значение “true”; в противном случае — “false”. |
Rank | Int | Ранг страны (0 — самый высокий). |
TicketsIncluded | Bool | Объём турпакета. Если перелёт включён в стоимость тура, параметр принимает значение “true”; в противном случае — “false”. |
GetCities — Курорты
Метод GetCities возвращает список курортов для выбранного направления. Список направлений получается методом GetCountries.
Пример запроса:
http://module.sletat.ru/Main.svc/GetCities?countryId=40
Запрашивается справочник курортов Египта.
Запрос имеет единственный параметр countryId * - целочисленный идентификатор направления.
Пример ответа (для удобства чтения представлены только три курорта):
{ "GetCitiesResult": { "Data": [ { "Id":3769, "Name":"Адабия", "Default":false, "DescriptionUrl":"", "IsPopular":false, "ParentId":null }, ... { "Id":37, "Name":"Александрия", "Default":false, "DescriptionUrl":"http:\/\/tonkosti.ru\/Александрия", "IsPopular":false, "ParentId":null }, ... { "Id":1662, "Name":"Эль Гуна", "Default":false, "DescriptionUrl":"http:\/\/tonkosti.ru\/Эль-Гуна", "IsPopular":true, “ParentId”:null } ], … } }
В ответ возвращается структура GetCitiesResult.Data, имеющая следующие поля:
Поле | Тип | Описание |
Id | Int | Идентификатор курорта. |
Name | Str | Название курорта. |
Default | Bool | |
DescriptionUrl | Str | Ссылка на описание курорта. Поле может быть пустым, если курорт не имеет описания. |
IsPopular | Bool | Популярность курорта. Если курорт был признан популярным на основе статистики поисковых запросов, сделанных на сайте sletat.ru и сайтах партнёров, поле принимает значение “true”; в противном случае — “false”. |
ParentId | Int | Идентификатор родительского курорта. Например, для греческих курортов Ираклиона, Лассити и Ретимно идентификатором родительского курорта будет 3071 - идентификатор о. Крит. Поле может быть пустым, если курорт не имеет родительского курорта. |
GetHotels — Отели
Метод GetHotels возвращает список доступных отелей в выбранной стране. Список отелей может быть отфильтрован по массиву курортов и категорий отелей, а также по названию самого отеля.
Пример запроса:
http://module.sletat.ru/Main.svc/GetHotels?countryId=40&towns=1642&stars=404&filter=&all=-1
Запрашивается справочник по 5-звёздочным отелям Шарм-эль-Шейха (Египет).
Параметры запроса:
Параметр | Тип | Описание |
countryId * | Int | Идентификатор направления. |
towns | Int[] | Идентификаторы городов, разделённые запятыми. |
stars | Int[] | Идентификаторы категорий отелей, разделённые запятыми. |
filter | Str | Фильтрация по названию отеля. |
all | Int | Количество отелей в выдаче. Возможные значения: “-1” – в выдачу попадают все отели; любое положительное целое число – точное количество отелей. |
Пример ответа (для удобства чтения представлены данные только по трём отелям)
{ "GetHotelsResult": { "Data": [ { "Id":2153, "Name":"Amwaj Oyoun Hotel AND Resort", "CommonRate":6.21481466, "IsInBonusProgram":false, "PhotosCount":12, "Rate":3.92, "StarId":404, "StarName":"5*", "TownId":1642 }, { "Id":4806, "Name":"Baron Palms Resort", "CommonRate":7.5333333, "IsInBonusProgram":false, "PhotosCount":15, "Rate":4.53, "StarId":404, "StarName":"5*", "TownId":1642 }, ... { "Id":67349, "Name":"Xperience Sea Breeze Resort", "CommonRate":8.333333, "IsInBonusProgram":false, "PhotosCount":14, "Rate":4.65, "StarId":404, "StarName":"5*", "TownId":1642 } ], ... "Count":94 } }
В ответ возвращается структура GetHotelsResult, состоящая из структуры Data – массива данных об отелях, а также поля Count - общего количества отелей в возвращённом справочнике.
Поля структуры Data:
Поле | Тип | Описание |
Id | Int | Идентификатор отеля. |
Name | Str | Название отеля. |
CommonRate | Float | Рейтинг отеля. На момент написания настоящего руководства параметр не используется, и данные не обновляются. |
IsInBonusProgram | Bool | Бонусная программа Слетать.ру. Если отель предлагает турагентам бонусы за туристов, поле принимает значение “true”; в противном случае – “false”. |
PhotosCount | Int | Общее количество фотографий отеля. |
Rate | Float | Ранг отеля. |
StarId | Int | Идентификатор категории отеля. |
StarName | Str | Категория отеля |
TownId | Int | Идентификатор курорта. |
GetHotelStars — Категории отелей
Метод GetHotelStars возвращает список доступных категорий отелей в выбранных курортах.
Пример запроса:
http://module.sletat.ru/Main.svc/GetHotelStars?countryId=40&towns=372,1592,1642
Запрашиваются справочники категорий отелей для Шарм-эль-Шейха, Хургады и Дахаба (Егиипет).
Параметры запроса:
Параметр | Тип | Описание |
countryId * | Int | Идентификатор страны. |
towns * | Int[] | Идентификаторы курортов, разделённые запятой. |
Пример ответа (для удобства чтения представлены только три категории):
{ "GetHotelStarsResult": { "Data": [ { "Id":401, "Name":"2*" }, { "Id":402, "Name":"3*" }, ... { "Id":410, "Name":"HV-1" } ], ... } }
Поле | Тип | Описание |
Id | Int | Идентификатор категории отеля. |
Name | Str | Категория отеля. |
GetMeals — Типы питания
Метод GetMeals возвращает список типов питания.
Пример запроса:
http://module.sletat.ru/Main.svc/GetMeals?
Параметры отсутствуют.
Пример ответа:
{ "GetMealsResult": { "Data": [ { "Id":115, "Name":"AI" }, { "Id":114, "Name":"BB" }, ... { "Id":116, "Name":"UAI" } ], ... } }
В ответ возвращается структура GetMealsResult.Data, состоящая из следующих полей:
Поле | Тип | Описание |
Id | Int | Идентификатор типа питания. |
Name | Str | Тип питания. |
GetTourOperators — Туроператоры
Метод GetTourOperators возвращает список доступных туроператоров. Последний может быть ограничен лицензией. Кроме того, вы можете настроить фильтрацию туроператоров в личном кабинете на сайте sletat.ru.
Метод всегда возвращает полный список туроператоров, отмечая тех, которые работают по указанной паре «город вылета – направление». Пример запроса:
http://module.sletat.ru/Main.svc/GetTourOperators?townFromId=1264&countryId=40
Запрашивается справочник туроператоров, предлагающих туры из Санкт-Петербурга в Египет.
Параметры запроса:
Параметр | Тип | Описание |
townFromId * | Int | Идентификатор города вылета. См. параметр Enabled в описании ответа. |
countryId * | Int | Идентификатор направления. См. параметр Enabled в описании ответа. |
login | Str | Логин пользователя Слетать.ру |
password | Str | Пароль пользователя Слетать.ру |
userId | Int | Идентификатор пользователя. Используется в сервисах Слетать.ру для передачи параметров, установленных пользователем в личном кабинете. |
Пример ответа (для удобства чтения представлены данные только по трём туроператорам):
{ "GetTourOperatorsResult": { "Data": [ { "Id":19, "Name":"Anex", "Enabled":true }, { "Id":7, "Name":"Biblio Globus", "Enabled":true }, ... { "Id":17, "Name":"Южный крест", "Enabled":false } ], ... } }
В ответ возвращается структура GetTourOperatorsResult.Data, состоящая из следующих полей:
Поле | Тип | Описание |
Id | Int | Идентификатор туроператора. |
Name | Str | Наименование туроператора. |
Enabled | Bool | Работа по указанной паре townFromId-countryId. Если туропера-тор предлагает туры, поле принимает значение “true”; в против-ном случае – “false”. |
GetTourDates — Доступные даты тура
Метод GetTourDates возвращает список доступных дат вылета для выбранных города вылета, страны и курорта, используя внутреннюю статистику, собранную по ранее найденным турам.
Пример запроса:
http://module.sletat.ru/Main.svc/GetTourDates?dptCityId=1264&countryId=40&resorts=372,1592,1642
Запрашиваются доступные даты туров из Санкт-Петербурга в Шарм-эль-Шейх, Хургаду и Дахаб (Египет).
Параметры запроса:
Параметр | Тип | Описание |
dptCityId * | Int | Идентификатор города вылета. |
countryId * | Int | Идентификатор страны |
resorts | String | Список идентификаторов курортов, разделённых запятой. |
sources | String | Список идентификаторов туроператоро, разделенных запятой. |
login | String | Логин пользователя Слетать.ру |
password | String | Пароль пользователя Слетать.ру |
target | String | Используется для внутренних сервисов Слетать.ру |
Пример ответа (для удобства чтения представлены только три даты):
{ "GetTourDatesResult": { "Data": { "dates": [ "13.05.2014", "14.05.2014", ... "15.05.2014" ] } ... } }
В ответ возвращается структура GetTourDatesResult.Data, имеющая единственное поле dates – массив доступных дат вылета в строковом отображении.
GetSourseAssurances — Фингарантии операторов
Метод GetSourseAssurances возвращают массивы юрлиц по идентификатору туроператора в справочнике Слетать.ру
Параметры запроса:
Параметр | Тип | Описание |
Number | string | Номер туроператора в реестре. |
Name | string | Полное наименование туроператора |
Site | string | Ссылка на сайт туроператора |
NameShort | string | Сокращенное наименование |
PhysicalAddress | string | Юридический адрес |
PostAddress | string | Почтовый адрес |
SourceFinSecurityDocument[]
FinSecurityDocuments - массив документов о предоставлении финансовых гарантий данному оператору
Каждый элемент массива FinSecurityDocuments имеет следующие поля:
Параметр | Тип | Описание |
FinSecurityAmount | int | Размер финансового обеспечения |
WayToFinSecurity | string | Тип документа |
DocumentNumber | string | Номер документа в реестре |
DocumentDate | DateTime | Дата размещения документа |
DateOfFinSecurityFrom | DateTime | Дата начала действия документа |
DateOfFinSecurityTo | DateTime | Дата окончания действия документа |
OrgName | string | Название организации, предоставившей ТО финансовые гарантии |
OrgAddress | string | Юридический адрес организации, предоставившей ТО финансовые гарантии |
OrgPostAddress | string | Почтовый адрес организации, предоставившей ТО финансовые гарантии |
Методы загрузки туров
GetTours — Список туров по заданным параметрам
Метод GetTours используется для создания поискового запроса, а также – если в запросе передаётся параметр requestId и параметр updateResult=1 – для получения результатов поиска по запросу.
Обратите внимание: указание параметров requestId=***&updateResult=1 обязательно для получения результатов поиска. В некоторых случаях повторное обращение к методу GetTours без указания этих параметров также вернет результаты, но их корректность не гарантируется.
Пример запроса (для краткости оставлены только обязательные параметры):
http://module.sletat.ru/Main.svc/GetTours?login=sletat&password=pass&cityFromId=832&countryId=35&cities=724&meals=114&stars=401&hotels=&s_adults=2&s_kids=0&s_kids_ages=&s_nightsMin=6&s_nightsMax=11&s_priceMin=0&s_priceMax=¤cyAlias=RUB&s_departFrom=15%2F07%2F2015&s_departTo=18%2F07%2F2015&visibleOperators=&s_hotelIsNotInStop=true&s_hasTickets=true&s_ticketsIncluded=true&filter=0&f_to_id=&fake=0&requestId=0&pageSize=10&pageNumber=1&updateResult=0&includeDescriptions=1
Запрашиваются туры:
- из Москвы в Лутраки (Греция);
- в двухзвёздочные отели;
- с типом питания BB;
- на двоих;
- без детей;
- продолжительностью от 6 до 11 ночей;
- с интервалом дат вылета 15.07.15–18.07.15;
- с включённым перелётом, гарантированным наличием билетов и мест в отеле;
- на странице выдачи должно располагаться 10 результатов;
- описание отеля должно выводиться в ленте выдачи;
- дополнительно запрашиваются данные о визовых и топливных сборах.
Параметры запроса:
Параметр | Тип | Описание | |
login | Int | (обязательный параметр) Логин пользователя Слетать.ру | |
password | Int | (обязательный параметр) Пароль пользователя Слетать.ру | |
cityFromId | Int | (обязательный параметр) Идентификатор города вылета. | |
countryId | Int | (обязательный параметр) Идентификатор направления перелета . | |
cities | Int[] | Список идентификаторов курортов, разделённых запятыми. По умолчанию: не задан.
| |
meals | Int[] | Список идентификаторов типов питания, разделённых запятыми. По умолчанию: не задан. | |
stars | Int[] | Список идентификаторов категорий отеля, разделённых запятыми. По умолчанию: не задан. | |
hotels | Int[] |
Список идентификаторов отелей, разделённых запятыми, по которым должен быть произведён поиск. Не более 10 идентификаторов отелей в одном запросе. По умолчанию: не задан.
| |
s_adults | Int | Количество туристов (взрослых). По умолчанию: 2. | |
s_kids | Int | Количество туристов (детей). По умолчанию: 0. | |
s_kids_ages | Int[] | Список возрастов детей, разделённых запятыми. Количество значению соответствует значению параметра s_kids. По умолчанию: не задан. | |
s_nightsMin | Int | Минимальная продолжительность тура, ночей. По умолчанию: 3. | |
s_nightsMax | Int | Максимальная продолжительность тура, ночей. По умолчанию: 15. | |
s_priceMin | Int | Минимальная цена. По умолчанию: не задан. | |
s_priceMax | Int | Максимальная цена. По умолчанию: не задан. | |
currencyAlias | Str | Валюта параметров s_priceMin и s_PriceMax. Допустимые значения: USD, EUR, RUR, UAH, BYR. По умолчанию: RUB. | |
s_departFrom | Str | Начальная дата диапазона дат вылета в формате DD/MM/YYYY. По умолчанию: не текущая дата. | |
s_departTo | Str | Конечная дата диапазона дат вылета в формате DD/MM/YYYY. По умолчанию: не текущая дата + 7 дней. | |
visibleOperators | Str[] | Список видимых туроператоров, разделение запятой. По умолчанию: не задан. | |
hiddenOperators | Str[] | Список скрытых туроператоров, разделение запятой. По умолчанию: не задан. | |
s_hotelIsNotInStop | Bool | Наличие мест в отеле. Если в ответе нужны только отели с местами, параметр передаёт значение “true”; в противном случае – “false”. По умолчанию: 1. | |
s_hasTickets | Bool | Наличие билетов. Если в ответе нужны только туры с билетами, параметр передаёт значение “true”; если допускаются туры без билетов – “false”. По умолчанию: 1. | |
s_ticketsIncluded | Bool | Объём турпакета. Если в ответе нужны только туры с включённым перелётом, параметр передаёт значение “true”; если допускаются туры без перелёта – “false”. По умолчанию: 1. | |
filter | Int | Фильтрация данных ответа по туроператорам. Возможные значения: “0” — выключено; “1” — включено. Если фильтр включён, используются идентификаторы из параметра f_to_id. По умолчанию: не задан. Параметр работает только при покупке расширенной версии сервиса (по всем вопросам обращайтесь в Службу технической поддержки Слетать.ру по тел. 8(800)700-33-09 или по электронной почте support@sletat.ru). | |
f_to_id | Int[] | Идентификаторы туроператоров, подлежащих фильтрации. По умолчанию: не задан. Параметр работает только при покупке расширенной версии сервиса (по всем вопросам обращайтесь в Службу технической поддержки Слетать.ру по тел. 8(800)700-33-09 или по электронной почте support@sletat.ru). | |
fake | Int | Демо-выдача. По умолчанию: не задан. | |
extend | Int | Используется для сайта Слетать.ру | |
requestId | Int | Идентификатор запроса для получения результатов поиска. По умолчанию: не задан. Обязателен для получения результатов запроса. | |
pageSize | Int | Количество туров в ленте выдачи на одной странице, строк. По умолчанию: не задан. | |
pageNumber | Int | Номер страницы в ленте выдачи. По умолчанию: не задан. | |
updateResult | Bool | Получить свежие цены. Требует обязательной передачи параметра requestId. Требует значения "1" при повторном обращении к GetTours для получения результатов поиска. | |
includeDescriptions | Bool | Включить в выдачу описания отеля, типов размещения и питания. Если в ответе нужны описания, параметр передаёт значение “true”; если описания не нужны – “false”. | |
economOnly | Bool | Показывать туры с перелетом в экономическом классе. Варианты значений: 1 и 0. По умолчанию: не задан. | |
userId | Int | Используется для сайта Слетать.ру | |
includeOilTaxesAndVisa | Bool | Топливные и визовые сборы. Если данные нужны в ответе, параметр передаёт значение “true”; если не нужны – “false”. По умолчанию: не задан. | |
groupBy | Str | Группировка выдачи. Возможные значения:
Если параметр не передан, используется сортировка по цене, а максимальное количество туров в выдаче ограничивается тысячей (см. также параметр PageSize). | |
minHotelRating | Str | Минимальный рейтинг отелей, которые попадают в выдачу с погрешностью в 0,5 единицы. По умолчанию: не задан. | |
beachLines | Str | Пляжная линия. Варианты значений: 1, 2, 3 (первая, вторая или третья пляжная линия соответственно). |
Пример ответа (для удобства чтения представлены данные по одному туру, двум топливным сборам, диапазонам визовых сборов для двух туроператоров и состоянию обработки поискового запроса для одного туроператора):
{ "GetToursResult": { "Data": { "aaData": [ ... [ "1603158943", 1918691396, "http:\/\/hotels.sletat.ru\/?id=85319", 85319, "", 724, "2014.МСК.Лутраки 30.05.14-21.09.14 ч\/з Каламата", "Poseidonion", "2*", "Standard", "BB", "DBL", "18.07.2014", "25.07.2014", 7, "36441 RUB", 2, 0, "", "Лутраки", [ "" ], "2", "1", "1", "1", "0", "0", "Пт.", "25.07", "http:\/\/hotels.sletat.ru\/i\/p\/85319_0.jpg", 35, "Греция", 832, "Москва", "", "0", "только завтрак", "двухместный номер", "Отель Possidonion расположен на центральной площади города Лутраки. В 10 минутах ходьбы от отеля находится центр бальнеологиче...", 13103, false, 114, 36441, "RUB", 5283, 401, 3, "", "Poseidonion", "2*", "Лутраки", "Завтрак", "DBL room 2 ADL", "Standard", "", "", "", "", "", 0, "Poseidonion", "2*", "Лутраки", "Завтрак", "DBL room 2 ADL", "Standard", 401, 0, "0YPSsquq10gSaOUAff6b9g==", "", "", "", "", "", "", "", "", "", "", "GQjxGDsG6ajTU36I6cXXtw==", 0, null, -1, false ] ], "cacheIsEmpty":false, "countryCurrencyId":"3", "hotelsCount":8, "iTotalDisplayRecords":105, "iTotalRecords":105, "isInTheBasket":0, "loadState": [ ... { "Id":1918691363, "Name":"Туроператор #1918691363", "ErrorMessage":null, "ExecutionTimeMs":0, "IsCached":true, "IsError":false, "IsPersistentCacheUsed":false, "IsProcessed":true, "IsSkipped":false, "IsTimeout":false, "MaxPrice":0, "MinPrice":0, "RowsCount":0 } ], "oilTaxes": [ [ "1918691396", "01.11.2013", "31.10.2014", 0, null, null, null, null, null, null, null, 832 ], ... [ "1918691371", "20.04.2014", "30.11.2014", 30, "EUR", null, null, "о. Крит-Ханья", null, 4389, null, 832 ] ], "requestId":574187440, "visa":null, "visaRange": [ "EUR", [ [ 1918691371, 0, 100 ], ... [ 1918691391, 10, 85 ] ] ] }, ... } }
В ответ возвращается структура GetToursResult.Data, состоящая из структур:
- aaData – массив записей о турах, каждый элемент которого является массивом данных о туре,
- LoadState (см. описание в «GetLoadState – Статус обработки запроса»);
- oilTaxes – массив записей о топливных сборах, каждый элемент которого является массивом данных о топливном сборе (поле принимает значение “null”, если параметр запроса includeOilTaxesAndVisa равен “0”, или если визовые сборы полностью отсутствуют);
- visa – массив записей о визовых сборах, применимых к выбранным турам, каждый элемент которого является массивом данных о визовом сборе (поле принимает значение “null”, если параметр запроса includeOilTaxesAndVisa равен “0”, или если визовые сборы полностью отсутствуют);
- visaRange, включающей в себя единственный параметр visaRange[1] – валюту визового сбора, а также массив записей о диапазоне визовых сборов, каждый элемент которого является массивом данных о минимальном и максимальном визовом сборе, включаемом в стоимость отдельным туроператором.
Внимание! Несмотря на то, что метод GetTours возвращает данные о состоянии обработки поискового запроса туроператорами (структура LoadState), для получения этой информации в процессе поиска обращение к методу GetTours не допускается – необходимо использовать метод GetLoadState (см. «Логика работы сервиса», «GetLoadState – Статус обработки запроса»). За обращение к методу GetTours для отслеживания состояния поискового запроса Слетать.ру имеет право отозвать лицензию на использование шлюза без возмещения стоимости недооказанных услуг. |
Кроме того, структура GetToursResult.Data содержит следующие поля:
Поле | Тип | Описание |
cacheIsEmpty | bool | Состояние кеша. Принимает значение true, если кеш пуст |
countryCurrencyId | str | Идентификатор валюты, используемой в стране |
hotelsCount" | int | Количество отелей в выдаче |
iTotalDisplayRecords | int | Количество туров в выдаче; Если >2500 возвращаем 2500; |
iTotalRecords" | int | iTotalRecords идентично iTotalDisplayRecords |
isInTheBasket | int | Технический параметр. Используется только на сайте sletat.ru |
requestId | Int | Идентификатор поискового запроса. |
Поля структуры aaData:
Поле | Тип | Описание |
aaData[0] | Int | Идентификатор цены. |
aaData[1] | Int | Шифрованный идентификатор туроператора. |
aaData[2] | Str | Ссылка на описание отеля. |
aaData[3] | Int | Идентификатор отеля. |
aaData[4] | Str | Ссылка на описание курорта. |
aaData[5] | Int | Идентификатор курорта. |
aaData[6] | Str | Название тура. |
aaData[7] | Str | Название отеля. |
aaData[8] | Str | Категория отеля. |
aaData[9] | Str | Тип комнаты (не размещение). |
aaData[10] | Str | Тип питания. |
aaData[11] | Str | Тип размещения. |
aaData[12] | Str | Дата вылета в формате DD.MM.YYYY. |
aaData[13] | Str | Дата прибытия в формате DD.MM.YYYY. |
aaData[14] | Int | Продолжительность тура, ночей. |
aaData[15] | Str | Стоимость тура с указанием валюты. |
aaData[16] | Int | Количество туристов (взрослых). |
aaData[17] | Int | Количество туристов (детей). |
aaData[18] | Str | Технический параметры, используемый сайтом sletat.ru. |
aaData[19] | Str | Название курорта. |
aaData[20][0] | Str | Технический параметры, используемый сайтом sletat.ru. |
aaData[21] | Bool | Наличие мест в отеле. |
aaData[22] | Bool | Объём турпакета. |
aaData[23] | Int | Наличие билетов эконом-класса (туда). Возможные значения: “0” — нет; “1” — есть, “2” — по запросу. |
aaData[24] | Int | Наличие билетов эконом-класса (обратно). Возможные значения: “0” — нет; “1” — есть, “2” — по запросу. |
aaData[25] | Int | Наличие билетов бизнес-класса (туда). Возможные значения: “0” — нет; “1” — есть, “2” — по запросу. |
aaData[26] | Int | Наличие билетов бизнес-класса (обратно). Возможные значения: “0” — нет; “1” — есть, “2” — по запросу. |
aaData[27] | Str | Дата заезда в отель. Используется только в текстовом представлении. |
aaData[28] | Str | Дата выезда из отеля. Используется только в текстовом представлении. |
aaData[29] | Str | Ссылка на миниатюрную фотографию отеля. |
aaData[30] | Int | Идентификатор направления. |
aaData[31] | Str | Название страны. |
aaData[32] | Int | Идентификатор города вылета. |
aaData[33] | Str | Название города вылета. |
aaData[34] | Str | Ссылка на логотип туроператора. |
aaData[35] | Float | Рейтинг отеля от 0 до 10. |
aaData[36] | Str | Описание типа питания (выдаётся, если параметр запроса includeDescriptions = “true”). |
aaData[37] | Str | Описание типа размещения (выдаётся, если параметр запроса includeDescriptions = “true”). |
aaData[38] | Str | Описание отеля (выдаётся если параметр запроса includeDescriptions = “true”). |
aaData[39] | Int | Системный идентификатор типа размещения (поле может быть пустым, если данные не слинкованы). |
aaData[40] | Bool | Флаг демо-режима. Если шлюз работает в демо-режиме, поле принимает значение “true”; в противном случае – “false”. |
aaData[41] | Int | Системный идентификатор питания (поле может быть пустым, если данные не слинкованы). |
aaData[42] | Int | Цена тура в виде числа (без прибавления к строке валюты). |
aaData[43] | Int | Валюта полня aaData[42]. |
aaData[44] | Int | Системный идентификатор типа номера в отеле (поле может быть пустым, если данные не слинкованы). |
aaData[45] | Int | Системный идентификатор категории отеля (поле может быть пустым, если данные не слинкованы). |
aaData[46] | Int | Количество фотографий отеля (поле может быть пустым, если данные не слинкованы). |
aaData[47] | Str | Ссылка на личный кабинет туроператора. |
aaData[48] | Str | Оригинальное название тура. |
aaData[49] | Str | Оригинальное название категории. |
aaData[50] | Str | Оригинальное название курорта. |
aaData[51] | Str | Оригинальное название питания. |
aaData[52] | Str | Оригинальное название размещения. |
aaData[53] | Str | Оригинальное название типа номера. |
aaData[54] | Str | Количество мест в отеле. Возможные значения: “-1” – нет данных; целое число, меньшее или равное нулю – точное количество мест. |
aaData[55] | Int | Количество билетов эконом-класса (туда).
Возможные значения: «-1» — нет данных; целое число, меньшее или равное нулю — точное количество билетов; пустое значение — билетов много. |
aaData[56] | Int | Количество билетов эконом-класса (обратно).
Возможные значения: «-1» — нет данных; целое число, меньшее или равное нулю — точное количество билетов; пустое значение — билетов много. |
aaData[57] | Int | Количество билетов бизнес-класса (туда).
Возможные значения: «-1» — нет данных; целое число, меньшее или равное нулю — точное количество билетов; пустое значение — билетов много. |
aaData[58] | Int | Количество билетов бизнес-класса (обратно).
Возможные значения: «-1» — нет данных; целое число, меньшее или равное нулю — точное количество билетов; пустое значение — билетов много. |
aaData[59] | Int | Флаг тура с обязательствами; «0» – обычный тур; «1» – тур с обязательствами. |
aaData[60] | Наименование отеля | |
aaData[61] | Описание категории отеля | |
aaData[62] | Наименование тура | |
aaData[63] | Тип питания | |
aaData[64] | Тип размещения | |
aaData[65] | Тип нормера в отеле | |
aaData[66] | Идентификатор категории отеля | |
aaData[67] | Тип цены | |
aaData[68] | Хеш идентификатор тура в архиве | |
aaData[69] | Флаги тура (сумма возможных свойств тура таких как: шоп-тур, лучшее предложение, скидка и т.д.) | |
aaData[70] | (устарело) — CreditMonths | |
aaData[71] | (устарело) — CreditMonthlyPay | |
aaData[72] | (устарело) — Описание тура | |
aaData[73] | (устарело) — Скидка | |
aaData[74] | (устарело) — Срок действия скидки | |
aaData[75] | (устарело) — Описание скидки | |
aaData[76] | (устарело) — ReceivingParty | |
aaData[77] | (устарело) — GiftCaption | |
aaData[78] | (устарело) — EarlyBookingValidTill | |
aaData[79] | Хеш идентификатор тура в кеше | |
aaData[80] | (устарело) | |
aaData[80] | (устарело) | |
aaData[81] | Дата первого обнаружения тура в системе | |
aaData[82] | (используется для сайта Слетать.ру) | |
aaData[83] | (используется для сайта Слетать.ру) | |
aaData[84] | (используется для сайта Слетать.ру) | |
aaData[85] | (используется для сайта Слетать.ру) | |
aaData[86] | «Чистая» стоимость тура без скидок и наценок | |
aaData[87] | Пляжная линия отеля | |
aaData[88] |
Поля структуры visa (передаются, если параметр запроса includeOilTaxesAndVisa = 1:
Поле | Тип | Описание |
visa[0] | Int | Размер сбора. |
visa[1] | Str | Валюта поля x[0]. |
Поля структуры oilTaxes (передаются, если параметр запроса includeOilTaxesAndVisa = 1:
Поле | Тип | Описание |
oilTaxes[0] | Int | Идентификатор туроператора. |
oilTaxes[1] | Str | Дата начала действия топливного сбора. |
oilTaxes[2] | Str | Дата окончания действия топливного сбора. |
oilTaxes[3] | Int | Размер топливного сбора. |
oilTaxes[4] | Str | Валюта поля oilTaxes[3]. |
oilTaxes[5] | Str | Наименование авиакомпании. |
oilTaxes[6] | Str | Наименование принимающей стороны. |
oilTaxes[7] | Str | Название курорта. |
oilTaxes[8] | Str | Название аэропорта прибытия. |
oilTaxes [9] | Int? | Идентификатор курорта. |
oilTaxes[10] | Int? | Номер рейса. |
Для получения результатов выдачи методом GetTours используется идентификатор запроса requestId.
GetLoadState — Статус обработки запроса
Метод GetLoadState возвращает статус обработки запроса для каждого туроператора.
Внимание! Варианты взаимодействия методов GetTours и GetLoadState описаны в разделе «Логика работы с сервисом». |
Пример запроса:
http://module.sletat.ru/Main.svc/GetLoadState?requestId=574187440&userId=
Запрашивается состояние обработки поискового запроса с идентификатором 574187440.
Запрос имеет единственный параметр requestId * - идентификатор поискового запроса, полученный в ответе метода GetTours.
Пример ответа:
{ "GetLoadStateResult": { "Data": [ { "Id":1919263563, "Name":"Туроператор #1919263563", "ErrorMessage":null, "ExecutionTimeMs":15, "IsCached":false, "IsError":false, "IsPersistentCacheUsed":false, "IsProcessed":true, "IsSkipped":false, "IsTimeout":false, "MaxPrice":0, "MinPrice":0, "RowsCount":0 }, ... { "Id":1919263596, "Name":"Туроператор #1919263596", "ErrorMessage":null, "ExecutionTimeMs":719, "IsCached":false, "IsError":false, "IsPersistentCacheUsed":false, "IsProcessed":true, "IsSkipped":false, "IsTimeout":false, "MaxPrice":0, "MinPrice":0, "RowsCount":0 } ], ... } }
В ответ возвращается структура GetLoadStateResult.Data, состоящая из следующих полей:
Поле | Тип | Описание |
Id | Int | Шифрованный идентификатор туроператора. |
Name | Str | Наименование туроператора. |
ErrorMessage | Str | Текст сообщения об ошибке. Выводится, если поле IsError принимает значение “true”. |
ExecutionTime Ms | Int | Время обработки запроса туроператором в миллисекундах. |
IsCached | Bool | Использование кэша. Если данные получены из кэша, поле принимает значение “true”; в противном случае – “false”. |
IsError | Bool | Ошибка в поиске. Если при обработке запроса была допущена ошибка, поле принимает значение “true”; в противном случае – “false”. |
IsPersistentCacheUsed | Bool | |
IsProcessed | Bool | Завершение поиска. Если туроператор завершил обработку запроса, поле принимает значение “true”; в противном случае – “false”. |
IsSkipped | Bool | |
IsTimeout | Bool | Таймаут. Если обработка запроса завершена по таймауту, поле принимает значение “true”; в противном случае – “false”. |
RowsCount | Int | Количество результатов поиска. |
Методы работы с заказом
ActualizePrice — Актуализация цены
Метод ActualizePrice необходим для актуализации предложений туроператоров. Он проверяет наличие билетов и мест в отеле, топливных и визовых сборов, а также других обязательных доплат и, при наличии, прибавляет их к стоимости тура.
Пример запроса:
http://module.sletat.ru/Main.svc/ActualizePrice?sourceId=1919379077&offerId=1096144458¤cyAlias=RUB&showcase=0&countryId=35&requestId=574442855&userId=
Запрашиваются актуальные данные по туру в Грецию с идентификатором 1096144458 от туроператора #1919379077, найденному по запросу 574442855; результат возвращается в рублях.
Параметры запроса:
Параметр | Тип | Описание |
sourceId * | Int | Шифрованный идентификатор туроператора. |
offerId * | Str | Идентификатор ценового предложения (тура). |
currencyAlias | Int | Валюта. Возможные значения: USD, EUR, RUB, UAH, BYR |
showcase * | Int | Включение режима выдачи для горящих туров. |
countryId | Int | Идентификатор направления. |
requestId * | Int | Идентификатор поискового запроса. |
userId |
Пример ответа (для удобства чтения представлены только два типа визовых сборов):
{ "ActualizePriceResult": { "Data": { "actualizationSessionId":"nVcZ\/o82XkCdPrfWAN67xw==", "data": [ "Greece", "Moscow", "Loutraki", "Афины 1776Афины", "17.05.2014", "7", "Mitzithras Hotel \/ Loutraki", "574442855", "** и менее", "Double Room Not defined", "", "BB", "True", "2", "1", "1", "0", "0", "33510", "33510", "", "RUB", "2Ad", "RUB", "", "", "35", "Греция", "832", "Москва", "724", "Лутраки", "27606", "Mitzithras", "401", "2*", "", "Double Room Not defined", "114", "BB", "13103", "DBL", "", "http:\/\/hotels.sletat.ru\/?id=27606", "http:\/\/hotels.sletat.ru\/i\/p\/27606_0.jpg", 10, "", "5", "7.64", "только завтрак", "двухместный номер", "Расположенный в центре, отель Mitzithras Hotel находится рядом с большинством туристических достопримечательностей и деловых организаций города Лутраки. Для комфорта постояльцев во всех номерах отеля предоставлены удобства, ожидаемые от отеля этого класса. В каждом номере есть следующие удобства: кондиционер, фен, телевизор, душ, отдельный душ и ванная, мини-бар, балкон. Гости могут ощутить высокие стандарты комфорта, пребывая в этом роскошном отеле города Лутраки, в котором есть все, что нужно, например круглосуточное обслуживание, лифт, бар, услуги прачечной, обслуживание, сейф, няня, бизнес-центр. Благодаря элегантным удобствам и гостеприимности гости отеля, безусловно, запомнят пребывание.", "1096144458", "2", "0", "5FADEA7736815E08850DF41E61EEEA9D", "D06457A0A5DA0802B93B4D2EF155F4E2" ], "errorMessage":null, "isCompleted":true, "isError":false, "isFound":true, "nextPossibleCommands":null, "oilTaxes": [ [ 40, "EUR", "S7 Airlines", "", "Лутраки", "26.03.2014", "31.12.2014", null, null, null, 832 ] ], "randomNumber":3445, "resourceData": [ ], "resources": [ ], "visa":null, "visaExtendedInfo": [ { "AgeFrom":null, "AgeTo":12, "CitizenshipName":"Россия", "CurrencyName":"EUR", "HostName":"", "IsExpress":false, "IssueDaysFrom":null, "IssueDaysTo":null, "IssueOnArrival":false, "IssueTownName":"Москва", "PassportType":true, "Price":25, "SourceId":null }, ... { "AgeFrom":12, "AgeTo":null, "CitizenshipName":"Россия", "CurrencyName":"EUR", "HostName":"", "IsExpress":false, "IssueDaysFrom":null, "IssueDaysTo":null, "IssueOnArrival":false, "IssueTownName":"Москва", "PassportType":false, "Price":75, "SourceId":null } ] }, ... } }
В ответ возвращается структура ActualizePriceResult.Data, состоящая из структур:
- data – массив данных о туре;
- oilTaxes – массив записей о топливных сборах, каждый элемент которого является массивом данных о топливном сборе;
- resourceData;
- recources;
- visa – массив записей о визовых сборах, каждый элемент которого является массивом данных о визовом сборе;
- visaExtendedInfo – масссив расширенных записей о визовых сборах, каждый элемент которого является массивом данных о визовом сборе.
Кроме того, структура ActualizePriceResult.Data содержит следующие поля:
Поле | Тип | Описание |
actualizationSessionId | ||
errorMessage | Str | Текст ошибки. Выводится, если поле isError принимает значение “true”. |
isCompleted | ||
isError | Сообщение об ошибке. Если в процессе обработки запроса произошла ошибка, поле принимает значение “true”, в противном случае – “false”. | |
isFound | ||
nextPossibleCommands | ||
randomNumber | Int | «Быстрый» номер тура в рамках запроса. |
Поля структуры data:
Поле | Тип | Описание |
aaData[0] | Str | Направление. |
aaData[1] | Str | Город вылета. |
aaData[2] | Str | Курорт. |
aaData[3] | Str | Название программы. |
aaData[4] | Str | Дата вылета в формате DD.MM.YYYY. |
aaData[5] | Int | Продолжительность тура, ночей. |
aaData[6] | Str | Название отеля. |
aaData[7] | Str | Не используется. |
aaData[8] | Str | Категория отеля. |
aaData[9] | Str | Тип номера. |
aaData[10] | Str | Зарезервировано. |
aaData[11] | Str | Тип питания. |
aaData[12] | Bool | Объём турпакета. Если перелёт включён в стоимость тура, поле принимает значение “true”, в противном случае – “false”. |
aaData[13] | Bool | Наличие мест в отеле. Если отель находится в стопе, поле принимает значение “true”, в противном случае – “false”. |
aaData[14] | Int | Билеты эконом-класса (туда). Возможные значения: “-1” – нет данных; целое число, меньшее или равное нулю – точное количество билетов. |
aaData[15] | Int | Билеты эконом-класса (обратно). Возможные значения: “-1” – нет данных; целое число, меньшее или равное нулю – точное количество билетов. |
aaData[16] | Int | Билеты бизнес-класса (туда). Возможные значения: “-1” – нет данных; целое число, меньшее или равное нулю – точное количество билетов. |
aaData[17] | Int | Билеты бизнес-класса (обратно). Возможные значения: “-1” – нет данных; целое число, меньшее или равное нулю – точное количество билетов. |
aaData[18] | Int | Оригинальная цена. |
aaData[19] | Int | Цена в запрошенной валюте. |
aaData[20] | Str | Дополнительное описание тура. |
aaData[21] | Str | Валюта полей aaData[18] и aaData[19]. |
aaData[22] | Str | Тип размещения. |
aaData[23] | Str | Системное название валюты. |
aaData[24] | Int | Идентификатор туроператора. Получение значения этого поля может быть ограничено лицензией (по всем вопросам обращайтесь в Службу технической поддержки Слетать.ру по телефону 8(800)700-33-09 или по e-mail support@sletat.ru). |
aaData[25] | Str | Наименование туроператора. Поле может быть пустым, если передача данных ограничена лицензией (по всем вопросам обращайтесь в Службу технической поддержки Слетать.ру по телефону 8(800)700-33-09 или по e-mail support@sletat.ru). |
aaData[26] | Int | Идентификатор направления. Поле может быть пустым, если данные не слинкованы. |
aaData[27] | Str | Направление. Поле может быть пустым, если данные не слинкованы. |
aaData[28] | Int | Идентификатор города вылета. Поле может быть пустым, если данные не слинкованы. |
aaData[29] | Str | Название города вылета. Поле может быть пустым, если данные не слинкованы. |
aaData[30] | Int | Идентификатор курорта. Поле может быть пустым, если данные не слинкованы. |
aaData[31] | Str | Название курорта. Поле может быть пустым, если данные не слинкованы. |
aaData[32] | Int | Идентификатор отеля. Поле может быть пустым, если данные не слинкованы. |
aaData[33] | Str | Название отеля. Поле может быть пустым, если данные не слинкованы. |
aaData[34] | Int | Идентификатор категории отеля. |
aaData[35] | Str | Категория отеля. Поле может быть пустым, если данные не слинкованы. |
aaData[36] | Идентификатор типа номера. Поле может быть пустым, если данные не слинкованы. | |
aaData[37] | Str | Тип номера. Поле может быть пустым, если данные не слинкованы. |
aaData[38] | Int | Идентификатор типа питания. Поле может быть пустым, если данные не слинкованы. |
aaData[39] | Str | Тип питания. Поле может быть пустым, если данные не слинкованы. |
aaData[40] | Int | Идентификатор типа размещения. Поле может быть пустым, если данные не слинкованы. |
aaData[41] | Str | Тип размещения. Поле может быть пустым, если данные не слинкованы. |
aaData[42] | Str | Ссылка на туроператора. Поле может быть пустым, если передача данных ограничена лицензией (по всем вопросам обращайтесь в Службу технической поддержки Слетать.ру по телефону 8(800)700-33-09 или по e-mail support@sletat.ru). |
aaData[43] | Str | Ссылка на сайт отеля. |
aaData[44] | Str | Ссылка на первую фотографию отеля. |
aaData[45] | Int | Количество доступных фотографий отеля. |
Данные о топливных сборах
Поле | Тип | Описание |
x[0] | Int | Размер топливного сбора. |
x[1] | Str | Валюта поля x[0]. |
x[2] | Str | Наименование авиакомпании. |
x[3] | Int | Идентификатор туроператора. |
x[4] | Str | Курорт. |
x[5] | Str | Дата начала действия топливного сбора. |
x[6] | Str | Дата окончания действия топливного сбора. |
x[7] | Str | Наименование принимающей стороны. |
x[8] | Str | Аэропорт прибытия |
x[9] | Int? | Номер рейса. |
SaveTourOrder — Заказ тура
Метод SaveTourOrder добавляет заказ тура в систему Слетать.ру. В вашем личном кабинете на сайте sletat.ru вы можете настроить SMS- и email-уведомления о новых заказах. Приложение SletatRu Agent для Windows также отслеживает новые заказы и присылает вам оповещения.
Пример запроса:
http://module.sletat.ru/Main.svc/SaveTourOrder?searchRequestId=575366173&offerId=12242442&sourceId=1922198339&user=%D0%98%D0%B2%D0%B0%D0%BD+%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%87+%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9&email=test%40mail.ru&phone=%2B71111111111&info=%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9+%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B9.+%D0%98%D0%B7%D0%B2%D0%B8%D0%BD%D0%B8%D1%82%D0%B5.&countryName=undefined&cityFromName=undefined¤cyAlias=RUB&userId=
Передаются данные о заказе тура #12242442 от туроператора #1922198339, найденного по запросу #575366173: ФИО, телефон, e-mail, комментарий к заказу, город вылета и направление, валюта цены тура (рубли).
Параметры запроса:
Параметр | Тип | Описание |
searchRequestId * | Int | Идентификатор поискового запроса. |
sourceId * | Int | Шифрованный идентификатор туроператора. |
offerId * | Int | Идентификатор ценового предложения (тура). |
user * | Str | Имя заказчика. |
email * | Str | Электронная почта заказчика. |
phone * | Str | Телефон заказчика. |
info | Str | Комментарий заказчика. |
countryName * | Str | Направление. |
cityFromName * | Str | Город вылета. |
currencyAlias * | Str | Валюта. Допустимые значения: USD, EUR, RUR, BYR. |
userId |
Пример ответа:
{ "SaveTourOrderResult": { "Data":0, "ErrorMessage":null, "ExecutionTimeMs":117, "IsError":false } }
В ответ передаётся структура SaveTourOrderRequest, с пустым массивом Data и полями, возвращающими данными об ошибки (см. описание в разделе «Методы»).