Шлюз поиска туров (json)

Материал из wiki.Sletat.ru
Версия от 12:30, 19 сентября 2019; Kdadmin (обсуждение | вклад) (GetTours — Список туров по заданным параметрам)

Перейти к: навигация, поиск

Описание сервиса

API поиска туров позволит вам создать собственную туристическую поисковую систему. Используя методы этого сервиса, вы сможете:

  • Загружать справочники городов вылета, стран, курортов, отелей, категорий отелей, видов питания, туроператоров;
  • Искать продукты более чем 130 крупнейших туроператоров России.
  • Настроить автоматическое SMS- и email-оповещение менеджеров о заказах.
Внимание! На момент написания настоящего руководства функция онлайн бронирования сервисом не предусмотрена.
Внимание! Доступ к данным отдельных операторов может быть ограничен лицензией. По всем вопросам, пожалуйста, обращайтесь в Службу технической поддержки Слетать.ру по тел. 8(800)700-33-09 или по электронной почте support@sletat.ru.

Работа сервиса не требует сессий, и методы не зависят друг от друга с точки зрения очередности вызова. Таким образом, очередность вызова методов диктуется реализуемым алгоритмом работы с поисковым сервисом.

Подключение к сервису

Все методы веб-сервиса располагаются по адресу:

https://module.sletat.ru/Main.svc

Вызов любого метода должен иметь следующий синтаксис:

https://module.sletat.ru/Main.svc/{ИмяМетода}?{параметр1}={значение1}&{параметр2}={значение2}...

Пример вызова:

https://module.sletat.ru/Main.svc/GetHotels?countryId=40
Внимание! Для работы с сервисом требуется авторизация. На момент написания документации для авторизации используется логин и пароль от личного кабинета 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.

Логика работы с сервисом зависит от того, нужно ли вам получать данные до полного завершения поискового запроса. Возможны два варианта – единовременное получение полной поисковой выдачи и получение данных о турах по мере их поступления.

Получение полного набора туров

  1. Создаётся поисковый запрос методом GetTours. Сохраняется идентификатор запроса, полученный в ответе.
  2. Создаётся цикл для получения статуса поискового запроса. В цикле вызывается метод GetLoadState с использованием идентификатора запроса. В итерации цикла обязательно должна быть пауза (рекомендованное минимальное значение – 1,5 секунды). В результате вызова GetLoadState проверяется, все ли туроператоры обработали запрос (т.е. для всех туроператоров поле IsProcessed принимает значение "true"). На ос-нове проверки принимается решение о продолжении цикла или (если все туропера-торы обработали запрос) о переходе к методу получения туров.
  3. Снова вызывается метод GetTours, но уже с использованием полученного ранее идентификатора и параметра updateResult=1. Метод вернет все найденные туры в рамках поискового запроса.

Внимание! Сервер не хранит результаты поискового запроса продолжительное время. Данные должны быть получены и сохранены локально.

Внимание! В цикле получения статуса поискового запроса должен быть внутренний таймаут, чтобы ни при каких обстоятельствах не могли возникнуть бесконечные циклы.

Внимание! Несмотря на то, что метод GetTours возвращает данные о состоянии обработки поискового запроса туроператорами (структура LoadState), для получения этой информации в процессе поиска обращение к методу GetTours не допускается – необходимо использовать метод GetLoadState (см. «Логика работы сервиса», «GetLoadState – Статус обработки запроса»). За обращение к методу GetTours для отслеживания состояния поискового запроса Слетать.ру имеет право отозвать лицензию на использование шлюза без возмещения стоимости недооказанных услуг.

Получение данных по мере их поступления

  1. Создаётся поисковый запрос методом GetTours. Сохраняется полученный идентифи-катор.
  2. Создаётся цикл для получения статуса поискового запроса. В цикле вызывается метод GetLoadState с использованием идентификатора запроса. В итерации цикла обяза-тельно должна быть пауза (рекомендованное минимальное значение – 1,5 секунды). В результате вызова GetLoadState проверяется, есть ли найденные туры по поисково-му запросу (т.е. как минимум один туроператор имеет значение поля RowsCount бо-лее нуля). Если найденных туров нет и не все туроператоры обработали запрос, цикл повторяется; если хотя бы один туроператор сообщил о наличии туров, можно перей-ти к методу получения данных о турах.
  3. Снова вызывается метод GetTours, но уже с использованием идентификатора запро-са и параметра updateResult=1. Метод вернет все данные о турах, найденных на момент вызова, а также состоя-ние обработки поискового запроса (аналогично методу GetLoadState). Состояние об-работки поискового запроса сохраняется, а найденные туры отображаются пользова-телю.
  4. Создаётся новый цикл, который работает до тех пор, пока все туроператоры не обра-ботают запрос. В цикле вызывается метод 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”; в прот

Для удобства чтения из примеров, приводимых в настоящем руководстве, эти поля изъяты.

Методы получения справочников

Наиболее полный справочник доступен по ссылке:

https://module.sletat.ru/Dictionaries.xml

GetDepartCities — Города вылета

Метод GetDepartCities возвращает список всех городов вылета, который вы можете отредактировать в личном кабинете на сайте sletat.ru.

Пример запроса:

https://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.

Пример запроса:

https://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.

Пример запроса:

https://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 возвращает список доступных отелей в выбранной стране. Список отелей может быть отфильтрован по массиву курортов и категорий отелей, а также по названию самого отеля.

Пример запроса:

https://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":
    [{
    "GetHotelsResult": {
        "ErrorMessage": null,
        "ExecutionTimeMs": 0,
        "IsError": false,
        "Data": [
            {
                "Id": 104202,
                "Name": "Acalam Country Club",
                "CommonRate": 0,
                "IsInBonusProgram": false,
                "PhotosCount": 15,
                "PopularityLevel": 0,
                "Rate": 9.8,
                "SearchCount": 53,
                "StarId": 400,
                "StarName": "1*",
                "TownId": 1099
            },
            {
                "Id": 103114,
                "Name": "Akua Resort Hotel",
                "CommonRate": 0,
                "IsInBonusProgram": false,
                "PhotosCount": 20,
                "PopularityLevel": 0,
                "Rate": 8.5,
                "SearchCount": 181,
                "StarId": 402,
                "StarName": "3*",
                "TownId": 6571
            },
            {
                "Id": 104198,
                "Name": "Al Mare",
                "CommonRate": 0,
                "IsInBonusProgram": false,
                "PhotosCount": 11,
                "PopularityLevel": 0,
                "Rate": 0,
                "SearchCount": 25,
                "StarId": 400,
                "StarName": "1*",
                "TownId": 1099
            }
    ],
    ...
    "Count":94
  }
}

В ответ возвращается структура GetHotelsResult, состоящая из структуры Data – массива данных об отелях, а также поля Count - общего количества отелей в возвращённом справочнике.

Поля структуры Data:

Поле Тип Описание
Id Int Идентификатор отеля.
Name Str Название отеля.
CommonRate Float Рейтинг отеля. На момент написания настоящего руководства параметр не используется, и данные не обновляются.
IsInBonusProgram Bool Бонусная программа Слетать.ру. Если отель предлагает турагентам бонусы за туристов, поле принимает значение “true”; в противном случае – “false”.
PopularityLevel Int На момент написания документации не используется.
PhotosCount Int Общее количество фотографий отеля.
SearchCount int Кол-во поисков по отелю за период.
Rate Float Ранг отеля.
StarId Int Идентификатор категории отеля.
StarName Str Категория отеля
TownId Int Идентификатор курорта.

GetHotelStars — Категории отелей

Метод GetHotelStars возвращает список доступных категорий отелей в выбранных курортах.

Пример запроса:

https://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 возвращает список типов питания.

Пример запроса:

https://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.

Метод всегда возвращает полный список туроператоров, отмечая тех, которые работают по указанной паре «город вылета – направление».   Пример запроса:

https://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 возвращает список доступных дат вылета для выбранных города вылета, страны и курорта, используя внутреннюю статистику, собранную по ранее найденным турам.

Пример запроса:

https://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 без указания этих параметров также вернет результаты, но их корректность не гарантируется. 

Пример запроса (для краткости оставлены только обязательные параметры):

https://module.sletat.ru/Main.svc/GetTours?login=xxx&password=xxx&s_hasTickets=true&currencyAlias=RUB&s_ticketsIncluded=true&includeOilTaxesAndVisa=1&cityFromId=832&countryId=119&s_adults=2&s_nightsMin=3&s_nightsMax=10&s_departFrom=19/09/2019&s_departTo=25/09/2019&requestId=0&pageSize=10&pageNumber=1&updateResult=0&includeDescriptions=1&s_hotelIsNotInStop=true&showHotelFacilities=1


Запрашиваются туры:

  • из Москвы в Турцию;
  • по всем отеля;
  • на двоих;
  • без детей;
  • продолжительностью от 3 до 10 ночей;
  • с интервалом дат вылета 19.09.19 – 25.09.19;
  • с включённым перелётом, гарантированным наличием билетов и мест в отеле;
  • на странице выдачи должно располагаться 10 результатов;
  • описание отеля должно выводиться в ленте выдачи;
  • дополнительно запрашиваются данные о визовых и топливных сборах;
  • услуги предоставляемые в отеле;

Параметры запроса:

Параметр Тип Описание
login Int (обязательный параметр) Логин пользователя Слетать.ру
password Int (обязательный параметр) Пароль пользователя Слетать.ру
cityFromId Int (обязательный параметр) Идентификатор города вылета.
countryId Int (обязательный параметр) Идентификатор направления перелета .
cities Int[] Список идентификаторов курортов, разделённых запятыми. По умолчанию: не задан.
Внимание! Из-за технических ограничений со стороны оператора «Натали Турс», он принимает в одном запросе не больше 5 идентификаторов курортов. При передаче в запросе более 5 идентификаторов курортов к оператору уходят только первые 5, из-за этого в результаты поиска по этому ТО могут попадать не самые дешевые туры.
meals Int[] Список идентификаторов типов питания, разделённых запятыми. По умолчанию: не задан.
stars Int[] Список идентификаторов категорий отеля, разделённых запятыми. По умолчанию: не задан.
hotels Int[]

Список идентификаторов отелей, разделённых запятыми, по которым должен быть произведён поиск. Не более 10 идентификаторов отелей в одном запросе. По умолчанию: не задан.

Внимание! Из-за технических ограничений со стороны оператора «Натали Турс», он принимает в одном запросе не больше 5 идентификаторов отелей. При передаче в запросе более 5 идентификаторов отелей к оператору уходят только первые 5, из-за этого в результаты поиска по этому ТО могут попадать не самые дешевые туры.
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, BYN. По умолчанию: RUB.
s_departFrom Str Начальная дата диапазона дат вылета в формате DD/MM/YYYY. По умолчанию: не текущая дата.
s_departTo Str Конечная дата диапазона дат вылета в формате DD/MM/YYYY. По умолчанию: не текущая дата + 7 дней. Допустимый интервал между начальной и конечной датой диапазона — 45 дней.
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 Включить в выдачу описания отеля, типов размещения и питания. Если в ответе нужны описания, параметр передаёт значение “1”; если описания не нужны – “0”.
economOnly Bool Показывать туры с перелетом в экономическом классе. Варианты значений: 1 и 0. По умолчанию: не задан.
userId Int Используется для сайта Слетать.ру
includeOilTaxesAndVisa Bool Топливные и визовые сборы. Если данные нужны в ответе, параметр передаёт значение “true”; если не нужны – “false”. По умолчанию: не задан. Передавать как 1 или 0.
groupBy Str Группировка выдачи. Возможные значения:
  • hotel – группировка по цене, начиная с минимальной; при одинаковой цене группировка по названию отеля; только слинкованные отели;
  • sortedHotels - группировка по названию отеля; туры в каждый отель отсортированы по цене, начиная с минимальной; только слинкованные отели;
  • so_price – сортировка по цене, начиная с минимальной.

Если параметр не передан, используется сортировка по цене, а максимальное количество туров в выдаче ограничивается тысячей (см. также параметр PageSize).

Пример ответа (для удобства чтения представлены данные по одному туру, двум топливным сборам, диапазонам визовых сборов для двух туроператоров и состоянию обработки поискового запроса для одного туроператора):

{
  "GetToursResult":
  {
    "Data":
    {
      "aaData":
      [
        ...
        [
                    "1792097464",
                    4,
                    "https://hotels.sletat.ru/?id=120282",
                    120282,
                    "",
                    1334,
                    "ANTALYA, SIDE TWINGS RESIDENCE HOME (3 ноч.)",
                    "Twings Residence Home",
                    "3*",
                    "Studio Apartment",
                    "RO",
                    "DBL",
                    "22.09.2019",
                    "25.09.2019",
                    3,
                    "30233 RUB",
                    2,
                    0,
                    "TEZ TOUR",
                    "Сиде",
                    [
                        "http://www.tez-tour.com/ru/spb/search.html"
                    ],
                    "0",
                    "1",
                    "1",
                    "1",
                    "1",
                    "1",
                    "Вс.",
                    "25.09",
                    "",
                    119,
                    "Турция",
                    832,
                    "Москва",
                    "//static.sletat.ru/images/to/4.png",
                    "0",
                    "",
                    "",
                    "",
                    13103,
                    false,
                    117,
                    30233,
                    "RUB",
                    5753,
                    402,
                    0,
                    "https://sletat.ru/book/TEZ TOUR/NHwxNzkyMDk3NDY0fDgzMnw1OTIwMDY3MDJ8",
                    "SIDE TWINGS RESIDENCE HOME",
                    "3 *",
                    "Сиде",
                    "RO",
                    "2ADL",
                    "Studio Apartment",
                    "",
                    "7",
                    "",
                    "2",
                    "-1",
                    0,
                    "SIDE TWINGS RESIDENCE HOME",
                    "3 *",
                    "Сиде",
                    "RO",
                    "2ADL",
                    "Studio Apartment",
                    402,
                    0,
                    "+j0faDzJV6UBHpT16oUO9A==",
                    "65536",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "",
                    "Y4I6oFV4RRG6pnjmHab8Pw==",
                    0,
                    null,
                    -1,
                    false,
                    "",
                    "",
                    30233,
                    0,
                    0,
                    null,
                    null,
                    [
                        17
                    ],
                    36.7794571,
                    31.398035,
                    "",
                    [
                        7
                    ],
                    0.00105993031
                ]
      ],
      "cacheIsEmpty":false,
      "countryCurrencyId":"3",
      "hotelDetailedTypes": null,
            "hotelFacilitiesData": {
                "facilities": [
                    {
                        "id": 2,
                        "name": "Чистка обуви"
                    },
                    {
                        "id": 3,
                        "name": "Экскурсии"
                    },
                    {
                        "id": 6,
                        "name": "Частная"
                    },
                    {
                        "id": 8,
                        "name": "Глажка одежды"
                    },
                    {
                        "id": 9,
                        "name": "Пункт обмена валюты"
                    },
      "hotelsCount":8,
      "iTotalDisplayRecords":105,
      "iTotalRecords":105,
      "isInTheBasket":0,
      "loadState": [
                {
                    "Id": 51,
                    "Name": "Ambotis Holidays",
                    "ErrorMessage": null,
                    "ExecutionTimeMs": 2491,
                    "IsCached": false,
                    "IsError": false,
                    "IsPersistentCacheUsed": false,
                    "IsProcessed": true,
                    "IsSkipped": false,
                    "IsTimeout": false,
                    "MaxFullPrice": 0,
                    "MaxPrice": 53086,
                    "MinFullPrice": 0,
                    "MinPrice": 46492,
                    "OnlineErrorMessage": null,
                    "RowsCount": 74
                },
                {
                    "Id": 171,
                    "Name": "Amigo S",
                    "ErrorMessage": null,
                    "ExecutionTimeMs": 4708,
                    "IsCached": false,
                    "IsError": false,
                    "IsPersistentCacheUsed": false,
                    "IsProcessed": true,
                    "IsSkipped": false,
                    "IsTimeout": false,
                    "MaxFullPrice": 0,
                    "MaxPrice": 50726,
                    "MinFullPrice": 0,
                    "MinPrice": 44120,
                    "OnlineErrorMessage": null,
                    "RowsCount": 50
                }
            ],
            "oilTaxes": [
                [
                    "81",
                    "19.04.2019",
                    "30.04.2020",
                    35,
                    "EUR",
                    null,
                    null,
                    "Аланья",
                    null,
                    34,
                    null,
                    832,
                    null,
                    null
                ],
                [
                    "81",
                    "19.04.2019",
                    "30.04.2020",
                    35,
                    "EUR",
                    null,
                    null,
                    "Анталья",
                    null,
                    72,
                    null,
                    832,
                    null,
                    null
                ],
                [
                    "81",
                    "19.04.2019",
                    "30.04.2020",
                    35,
                    "EUR",
                    null,
                    null,
                    "Белек",
                    null,
                    149,
                    null,
                    832,
                    null,
                    null
                ]
    },
    ...
  }
}

В ответ возвращается структура 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 Наличие мест в отеле. Возможные значения: “0” — есть; “1” — нет, “2” — по запросу.
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 Признак чартера и регулярного перелета. Поле представляет из себя целочисленное беззнаковое число (ulong). Для регулярного перелета - 32768, для чартерного - 65536.

Все возможные признаки на данный момент следующие:

  • None = 0,
  • Recommended = 1,
  • Instant = 2,
  • BestOfffer = 4,
  • EarlyBook = 8,
  • LateBook = 16,
  • Discount = 32,
  • VipOffer = 64,
  • CreditAvailable = 128,
  • Exclusive = 256,
  • GoesWithGifts = 512,
  • IsCombined = 1024,
  • ShopTour = 2048,
  • CountryMismatch = 4096,
  • ExcursionTour = 8192,
  • PROMO = 16384,
  • FlightRegular = 32768,
  • FlightCharter = 65536
aaData[60] Наименование отеля
aaData[61] Описание категории отеля
aaData[62] Наименование тура
aaData[63] Тип питания
aaData[64] Тип размещения
aaData[65] Тип нормера в отеле
aaData[66] Идентификатор категории отеля
aaData[67] Тип цены
aaData[68] Хеш идентификатор тура в архиве
aaData[69] Набор битовых флагов тура. Тур может иметь несколько установленных флагов одновременно, данное значение является их суммой. Возможные флаги тура:

1 – туроператор рекомендует данный тур;

2 – доступно мгновенное подтверждение;

4 – туроператор считает данный тур лучшим предложением;

8 – тур раннего бронирования;

16 – тур позднего бронирования;

32 – туроператор предоставляет скидку на данный тур;

64 – VIP предложение;

128 – тур доступен в кредит;

256 – тур является эксклюзивным предложением туроператора;

512 – при покупке тура туристу подарок;

1024 – тур является комбинированным;

2048 – тур с обязательством (шоп-тур);

4096 – зарезервировано для использования системой;

8192 – экскурсионный тур;

16384 - Промо цена на тур

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] Цена тура без скидок и наценок, задаваемых в личном кабинете sletat.ru
aaData[87]

Поля структуры hotelFacilitiesData (передаются, если параметр запроса showHotelFacilities = 1)

Поле Описание
"facilities" Словарь услуг в отеле.
"groups" Словарь групп услуг.
"hotelFacilities" Массив структур, содержащих id отеля и массив услуг этого отеля c указанием группы, к которой принадлежит услуга.

Поля структуры 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 Номер рейса.
oilTaxes[11] Int Идентификатор города отбытия
oilTaxes[12] Int Возраст туриста, от которого включается топливный сбор.
oilTaxes[13] Int Возраст туриста, до которого включается топливный сбор.

Для получения результатов выдачи методом GetTours используется идентификатор запроса requestId.

GetLoadState — Статус обработки запроса

Метод GetLoadState возвращает статус обработки запроса для каждого туроператора.

Внимание! Варианты взаимодействия методов GetTours и GetLoadState описаны в разделе «Логика работы с сервисом».

Пример запроса:

https://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 необходим для актуализации предложений туроператоров. Он проверяет наличие билетов и мест в отеле, топливных и визовых сборов, а также других обязательных доплат и, при наличии, прибавляет их к стоимости тура.

Пример запроса:

https://module.sletat.ru/Main.svc/ActualizePrice?sourceId=1919379077&offerId=1096144458&currencyAlias=RUB&showcase=0&countryId=35&requestId=574442855&userId=

Запрашиваются актуальные данные по туру в Грецию с идентификатором 1096144458 от туроператора #1919379077, найденному по запросу 574442855; результат возвращается в рублях.

Параметры запроса:

Параметр Тип Описание
sourceId * Int Шифрованный идентификатор туроператора.
offerId * Str Идентификатор ценового предложения (тура).
currencyAlias Int Валюта. Возможные значения: USD, EUR, RUB, UAH, BYN
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 также отслеживает новые заказы и присылает вам оповещения.

Пример запроса:

https://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&currencyAlias=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, BYN.
userId

Пример ответа:

{
  "SaveTourOrderResult":
  {
    "Data":0,
    "ErrorMessage":null,
    "ExecutionTimeMs":117,
    "IsError":false
  }
}

В ответ передаётся структура SaveTourOrderRequest, с пустым массивом Data и полями, возвращающими данными об ошибки (см. описание в разделе «Методы»).