Подключение туроператоров — различия между версиями
Vm (обсуждение | вклад) (→Поиск туров) |
Vm (обсуждение | вклад) (→Поиск туров) |
||
| Строка 199: | Строка 199: | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | |Параметр; '''обязательный''' | + | |Параметр; '''обязательный''' |
|Тип данных | |Тип данных | ||
|Описание | |Описание | ||
Версия 14:10, 20 января 2016
Описание сервиса
Для интеграции со Слетать.ру нужно создать веб-сервис, который будет выполнять следующие задачи:
- Выгружать справочники: города вылета, страны, курорты, отели и т.д.
- Осуществлять параметризованный поиск цен
- Актуализировать выбранный тур по его идентификатору
Для упрощения, сервис можно представить веб-страничкой, которая принимает GET или POST параметры и выдаёт ответ в формате XML (не SOAP).
Для всех методов сервиса должен использоваться один адрес. Например, если вы реализуете сервис по адресу: http://mysite.com/services/sletatru.xml , то этот адрес должен быть общим для всех запросов.
Примеры:
- http://mysite.com/services/sletatru.xml?action=GetCountries – запрос списка стран
- http://mysite.com/services/sletatru.xml?action=GetDepartCities – запрос списка городов вылета
Выдача результатов должна быть в формате 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 | Максимальное количество предложений в выдаче. |