|
|
| (не показаны 34 промежуточные версии 1 участника) |
| Строка 1: |
Строка 1: |
| | [[Category:Подключение_туроператоров]] | | [[Category:Подключение_туроператоров]] |
| − | == Описание сервиса == | + | == SletatRu Provider API == |
| − | | + | Актуальная версия документации доступна по ссылке: https://static.sletat.ru/Files/api/SletatRu_Provider_API.pdf |
| − | Для интеграции со Слетать.ру нужно создать веб-сервис, который будет выполнять следующие задачи:
| + | |
| − | * Выгружать справочники: города вылета, страны, курорты, отели и т.д.
| + | |
| − | * Осуществлять параметризованный поиск цен
| + | |
| − | * Актуализировать выбранный тур по его идентификатору
| + | |
| − | | + | |
| − | '''Для упрощения, сервис можно представить веб-страничкой, которая принимает 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''' (название).
| + | |