Подключение туроператоров — различия между версиями

Материал из wiki.Sletat.ru
Перейти к: навигация, поиск
(Поиск туров)
(Поиск туров)
Строка 199: Строка 199:
  
 
{| class="wikitable"
 
{| class="wikitable"
|Параметр; '''обязательный''')
+
|Параметр; '''обязательный'''
 
|Тип данных
 
|Тип данных
 
|Описание
 
|Описание

Версия 14:10, 20 января 2016

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

Для интеграции со Слетать.ру нужно создать веб-сервис, который будет выполнять следующие задачи:

  • Выгружать справочники: города вылета, страны, курорты, отели и т.д.
  • Осуществлять параметризованный поиск цен
  • Актуализировать выбранный тур по его идентификатору

Для упрощения, сервис можно представить веб-страничкой, которая принимает GET или POST параметры и выдаёт ответ в формате XML (не SOAP).

Для всех методов сервиса должен использоваться один адрес. Например, если вы реализуете сервис по адресу: http://mysite.com/services/sletatru.xml , то этот адрес должен быть общим для всех запросов.

Примеры:

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

Для корневого элемента в результате должен быть указан атрибут version с указанием версии протокола. Атрибут нужен для определения версии провайдера туров сервисом Слетать.ру.

Пример:

<getCountriesResult version="1.0">
...
</getCountriesResult> 

Данный документ описывает версию прокола 1.0.

Все методы должны возвращать XML в кодировке UTF-8.

Все параметры запросов, не помеченные как обязательные, являются необязательными только для стороны, формирующей запрос. Для серверной стороны обработка всех полученных параметров запроса обязательна.

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

Пул IP адресов, с которых сервис Слетать.ру будет обращаться к реализуемому провайдеру туров уточняется отдельно. Для его уточнения необходимо написать на support@sletat.ru

Дополнительные требования к сервису

Максимально допустимое время при работе с любым методом сервиса не должно превышать 30 секунд. Рекомендуемая скорость ответов (в том числе для метода выдачи туров) до 5 секунд. Если какой-либо метод вернёт результат за период более 30 секунд, то сервис Слетать.ру не обработает эти данные.

Любой метод реализуемого сервиса может быть вызван одновременно различными потоками. Поэтому в реализации методов не должно быть блокировок, синхронизирующих доступ к методам. Метод выдачи туров должен поддерживать параллельное выполнение нескольких поисковых запросов.

Количество запросов в сутки к реализуемому сервису уточняется отдельно и зависит от следующих параметров:

  • количества и популярности направлений туроператора
  • количества городов вылета
  • количества поисковых запросов в сервисе Слетать.ру

Реализуемые методы

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

В методах используются следующие типы данных:

  • Int32 – целое число (32 бита со знаком) от 2, 147, 483, 648 до 2, 147, 483, 647
  • Int64 – целое число (64 бита со знаком)
  • UInt64 – целое число (64 бита без знака)
  • String - строка

Выгрузка списка стран

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

Формат запроса: ?action=GetCountries

Параметры:

  • id – идентификатор страны (опциональный; если указан, то запрашивается только одна запись)

Формат выдачи:

<getCountriesResult version="1.0">
 <country id="{Int32}" name="{String}" />
 ...
</getCountriesResult>

Корневой элемент getCountriesResult содержит произвольное количество элементов country, каждый из которых описывает направление атрибутами id (идентификатор страны) и name (название страны, язык рус/анг).

Выгрузка списка городов вылета

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

Формат запроса: ?action=GetDepartCities

Параметры:

  • id – идентификатор города вылета (опциональный; если указан, то запрашивается только одна запись)

Формат выдачи:

<getDepartCitiesResult version="1.0">
 <city id="{Int32}" name="{String}">
 <countryTo id="{Int32}" />
 ...
 </city>...
</getDepartCitiesResult>

Корневой элемент getDepartCitiesResult содержит произвольное количество элементов city, каждый из которых описывает город вылета атрибутами id (идентификатор города) и name (название города, язык рус/анг). Каждый элемент city также должен содержать набор элементов countryTo, каждый из которых описывает доступное направление из города вылета. Для элемента countryTo указывается атрибут id с идентификатором страны.

Выгрузка списка курортов

Метод возвращает список всех доступных курортов.

Формат запроса: ?action=GetResorts

Параметры:

  • id – идентификатор курорта (опциональный; если указан, то запрашивается только одна запись)

Формат выдачи:

<getResortsResult version="1.0">
 <resort id="{Int32}" name="{String}" countryId="{Int32}" />
 ...
</getResortsResult>

Корневой элемент getResortsResult содержит произвольное количество элементов resort, каждый из которых описывает курорт атрибутами id (идентификатор курорта), name (название курорта, язык рус/анг) и countryId (идентификатор страны в котором расположен курорт).

Выгрузка списка категорий отелей

Метод возвращает список категорий отелей (примеры: 3*, 4*, Apts и т.д.).

Формат запроса: ?action=GetHotelCategories

Параметры:

  • id – идентификатор категории отеля (опциональный; если указан, то запрашивается только одна запись)

Формат выдачи:

<getHotelCategoriesResult version="1.0">
 <hotelCategory id="{Int32}" name="{String}" />
 ...
</getHotelCategoriesResult>

Корневой элемент getHotelCategoriesResult содержит произвольное количество элементов hotelCategory, каждый из которых описывает категорию отеля атрибутами id (идентификар) и name (название).

Выгрузка списка отелей

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

Формат запроса: ?action=GetHotels

Параметры:

  • id – идентификатор отеля (опциональный; если указан, то запрашивается только одна запись)

Формат выдачи:

<getHotelsResult version="1.0">
 <hotel id="{Int32}" name="{String}" hotelCategoryId="{Int32}" resortId="{Int32}" />
 ...
</getHotelsResult> 

Корневой элемент getHotelsResult содержит произвольное количество элементов hotel, каждый из которых описывает отель атрибутами id (идентификатор), name (название отеля), hotelCategoryId (идентификатор категории отеля) и resortId (идентификатор курорта в котором расположен отель).

Выгрузка видов питания

Метод возвращает список видов питания (примеры: HB, BB, без питания и т.д.).

Формат запроса: ?action=GetMeals

Параметры:

  • id – идентификатор вида питания (опциональный; если указан, то запрашивается только одна запись)

Формат выдачи:

<getMealsResult version="1.0">
 <meal id="{Int32}" name="{String}" />
 ...
</getMealsResult>  

Корневой элемент getMealsResult содержит произвольное количество элементов meal, каждый из которых описывает вид питания атрибутами id (идентификатор) и name (название).

Выгрузка списка валют

Метод возвращает список используемых валют. Список обязательно должен содержать рубли, доллары и евро.

Формат запроса: ?action=GetCurrencies

Параметры:

  • id – идентификатор валюты (опциональный; если указан, то запрашивается только одна запись)

Формат выдачи:

<getCurrenciesResult version="1.0">
 <currency id="{Int32}" name="{String}" />
 ...
</getCurrenciesResult>

Корневой элемент getCurrenciesResult содержит произвольное количество элементов currency, каждый из которых описывает валюту атрибутами id (идентификатор) и name (название).

Поиск туров

Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод лишь должен возвращать наиболее дешевые предложения, найденные по предоставленным параметрам. Количество туров в выдаче регулируется параметром count.

Формат запроса: ?action=GetTours

Параметры:

Параметр; обязательный Тип данных Описание
offerId Int64 Уникальный идентификатор ранее найденного предложения. В случае, если данный параметр задан, все остальные параметры не обязательны и не должны приниматься в расчет. Метод должен возвращать одну запись.
count* Int32 Максимальное количество предложений в выдаче.