|
|
| (не показаны 2 промежуточные версии этого же участника) |
| Строка 1: |
Строка 1: |
| − | [[Category:Расширения и дополнения]]
| |
| − | == Описание сервиса ==
| |
| | | | |
| − | Сервис предназначен для выгрузки кеша туров проекта Слетать.ру в базу данных клиента. Раз в час система подготавливает сжатые алгоритмом GZIP XML-пакеты с новыми турами, по одному пакету на каждое направление ото всех туроператоров. Веб-сервис предоставляет метод для получения списка подготовленных пакетов. API выгрузки кеша – это стандартный веб-сервис, предоставляющий WSDL-документ с описанием всех методов и типов данных. Версия, выпущенная на момент написания настоящего документа, работает только по протоколу HTTPS. Для большей совместимости с различными клиентами сервис основан на SOAP версии 1.1. Взаимодействие с сервисом возможно одним из двух способов:
| |
| − | * Как с обычным веб-сервисом посредством SOAP запросов, WSDL доступен.
| |
| − | * Как с сервисом WCF (Windows Communication Foundation) — самый простой способ, если клиент под .NET Framework 3.5 или выше. Логика обработки запросов не зависит от способа работы с сервисом. При передаче строк и XML-пакетов используется кодировка UTF-8. Сервис не требует сессий при работе с ним, и все методы не зависят друг от друга с точки зрения очередности вызова. Таким образом, очередность вызова методов диктуется реализуемым алгоритмом для работы с поисковым сервисом.
| |
| − |
| |
| − | {| class="standard"
| |
| − | | style="background-color:silver" |Внимание! Сервис требует авторизации. Для работы используйте логин и пароль от личного кабинета на сайте sletat.ru.
| |
| − | |}
| |
| − |
| |
| − | {| class="standard"
| |
| − | | style="background-color:silver" |Все описанные ниже методы возвращают информацию только при наличии дополнительной лицензии для доступа к Отельной базе. По всем вопросам обращайтесь в службу поддержки по тел. 8(800)700-33-09 (звонок бесплатный для всех регионов России) или по электронной почте info@sletat.ru.
| |
| − | |}
| |
| − |
| |
| − | == Подключение к сервису ==
| |
| − |
| |
| − | Чтобы начать работу с сервисом, зарегистрируйтесь на сайте sletat.ru и получите тестовую лицензию в Службе технической поддержки Слетать.ру по электронному адресу info@sletat.ru. После получения лицензии можно начинать работать с API. Для работы с сервисом вам нужно использовать WSDL документ, который расположен по адресу:
| |
| − | https://bulk.sletat.ru/main.svc?singleWSDL
| |
| − |
| |
| − | Современные среды разработки позволяют автоматически создавать все необходимые классы, используя WSDL-документ. Это избавляет разработчика от необходимости работать вручную с SOAP-конвертами.Ниже мы подробно опишем алгоритмы работы с сервисом для клиентов, использующих .NET Framework.
| |
| − |
| |
| − | === Клиент на .NET ===
| |
| − |
| |
| − | Добавьте в проект ссылку на WSDL-документ используя Service Reference (или Web Reference для проектов на .NET 2.0). Теперь ваш проект готов к работе с сервисом. Ниже приведен пример вызова метода для получения списка городов вылета:
| |
| − |
| |
| − | <source lang="xml">
| |
| − |
| |
| − | using System; using WcfClient.Gate;namespace WcfClient
| |
| − | {
| |
| − | class Program
| |
| − | {
| |
| − | static void Main()
| |
| − | {
| |
| − | // создаём экземпляр обёртки для работы с поисковым сервисом
| |
| − | using (var gate = new Soap11GateClient())
| |
| − | {
| |
| − | // указываем данные для авторизации на сервисе
| |
| − | var authInfo = new AuthData() { Login = "********", Password = "********" };
| |
| − | // далее нам доступен вызов любых методов сервиса
| |
| − | var result = gate.GetFuelSurcharges(authInfo);
| |
| − | }
| |
| − | }
| |
| − | }
| |
| − | }
| |
| − |
| |
| − | </source>
| |
| − |
| |
| − | Не забудьте указать логин и пароль вашей учетной записи на сайте SLETAT.RU. Данные авторизации передаются первым параметром для всех методов сервиса.
| |
| − |
| |
| − | == Логика работы с сервисом ==
| |
| − |
| |
| − | Сервис предоставляет метод '''GetPacketList''' для получения списка всех доступных для выгрузки пакетов с турами. Каждый пакет имеет указание на город вылета, страну и туроператора, а также на временной интервал, за который пакет включает туры. Используя список, вы можете загрузить либо все туры, либо туры по интересующим направлениям и туроператорам. Каждый пакет имеет уникальный идентификатор, используя который можно загрузить содержимое пакета. Сервис также предоставляет методы для выгрузки топливных и визовых сборов '''GetFuelSurcharges''' и '''GetVisaSurcharges'''.
| |
| − |
| |
| − | == Методы ==
| |
| − |
| |
| − | В этом разделе описаны все методы поискового сервиса. К методам приведены примеры запросов и ответов в SOAP. Все методы требуют авторизации. Информация для авторизации (логин и пароль) передаётся в заголовке SOAP:
| |
| − |
| |
| − | <source lang="xml">
| |
| − |
| |
| − | <soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/
| |
| − | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
| |
| − | <soap:Header>
| |
| − | <AuthInfo xmlns="urn:SletatRu:DataTypes:AuthData:v1">
| |
| − | <Login>********</Login>
| |
| − | <Password>********</Password>
| |
| − | </AuthInfo>
| |
| − | </soap:Header>
| |
| − | <soap:Body>
| |
| − | ...
| |
| − | </soap:Body>
| |
| − | </soap:Envelope>
| |
| − |
| |
| − | </source>
| |
| − |
| |
| − | В примерах SOAP-запросов и ответов, которые приводятся ниже для каждого метода, элемент soap:Header убран для лучшей читаемости документа.
| |
| − |
| |
| − | === GetPacketList ===
| |
| − |
| |
| − | Метод '''GetPacketList''' возвращает список всех пакетов, доступных для загрузки. Сигнатура:
| |
| − |
| |
| − | PacketInfo[] GetPacketList(DateTime? createDatePoint)
| |
| − |
| |
| − | '''CreateDatePoint''' – опциональный параметр; если передан, то будут возвращены пакеты, подготовленные после указанной даты. Каждый пакет ответа имеет следующие поля (знаком * здесь и далее отмечены обязательные поля):
| |
| − |
| |
| − | {| class="wikitable"
| |
| − | |-
| |
| − | |
| |
| − | Название поля
| |
| − | |
| |
| − | Тип
| |
| − | |
| |
| − | Описание
| |
| − | |-
| |
| − | |
| |
| − | Id *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор пакета.
| |
| − | |-
| |
| − | |
| |
| − | DptCityId *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор города вылета.
| |
| − | |-
| |
| − | |
| |
| − | CountryId *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор страны.
| |
| − | |-
| |
| − | |
| |
| − | SourceId *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор туроператора.
| |
| − | |-
| |
| − | |
| |
| − | DateTimeFrom *
| |
| − | |
| |
| − | DateTime
| |
| − | |
| |
| − | Начало временного интервала, за который были собраны обновлённые туры (московское время).
| |
| − | |-
| |
| − | |
| |
| − | DateTimeTo *
| |
| − | |
| |
| − | DateTime
| |
| − | |
| |
| − | Окончание временного интервала, за который были собраны обновлённые туры (московское время).
| |
| − | |-
| |
| − | |
| |
| − | CreateDate *
| |
| − | |
| |
| − | DateTime
| |
| − | |
| |
| − | Дата и время подготовки пакета (московское время).
| |
| − | |}
| |
| − |
| |
| − | === BulkCacheDownload ===
| |
| − |
| |
| − | '''BulkCacheDownload''' в интерфейсе сервиса выгрузки кеша является не методом, а отдельным инструментом для загрузки содержимого пакетов по их идентификаторам. Для работы с методом используются HTTP GET-запросы. Использование:
| |
| − |
| |
| − | https://bulk.sletat.ru/BulkCacheDownload?packetId=[packetId]
| |
| − |
| |
| − | Параметр '''packetId''' – идентификатор пакета.Ответом является сжатый алгоритмом GZIP XML-пакет, MIME-тип устанавливается application/x-gzip. XML-пакет имеет кодировку UTF-8 и несложную структуру в виде корневого элемента '''tours''' и элементов '''tour''', каждый из которых в атрибутах содержит описание одного тура. Ниже в таблице описаны все атрибуты для элементов '''tour''':
| |
| − |
| |
| − | {| class="wikitable"
| |
| − | |-
| |
| − | |
| |
| − | Название атрибута
| |
| − | |
| |
| − | Тип
| |
| − | |
| |
| − | Описание
| |
| − | |-
| |
| − | |
| |
| − | adults *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Количество туристов (взрослых).
| |
| − | |-
| |
| − | |
| |
| − | hasBusinessTicketsDpt
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Наличие
| |
| − | билетов бизнес-класса (туда). Возможные значения: 0 (нет билетов), 1 (есть
| |
| − | билеты), 2 (под запрос). Если атрибут отсутствует, то этой информации.
| |
| − | |-
| |
| − | |
| |
| − | hasBusinessTicketsRtn
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Наличие
| |
| − | билетов бизнес-класса (обратно). Возможные значения: 0 (нет билетов), 1 (есть билеты), 2 (под запрос). Если атрибут отсутствует, то этой информации нет.
| |
| − | |-
| |
| − | |
| |
| − | ticketsIncluded *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Включает
| |
| − | ли тур в стоимость перелёт: 0 (не включает) и 1 (включает). Если атрибут отсутствует, то нет такой информации о туре.
| |
| − | |-
| |
| − | |
| |
| − | checkIn *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Дата вылета в формате dd.MM.yyyy.
| |
| − | |-
| |
| − | |
| |
| − | hasEconomTicketsDpt
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Наличие билетов эконом-класса (туда). Возможные значения: 0 (нет билетов), 1 (есть билеты), 2 (под запрос).
| |
| − | |-
| |
| − | |
| |
| − | hasEconomTicketsRtn
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Наличие билетов эконом-класса (обратно), возможные значения: 0 (нет билетов), 1 (есть билеты), 2 (под запрос). Если атрибут отсутствует, то этой информации нет.
| |
| − | |-
| |
| − | |
| |
| − | hotelId
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор отеля. Может отсутствовать, если отель не слинкован.
| |
| − | |-
| |
| − | |
| |
| − | hotelIsInStop
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Наличие мест в отеле. Возможные значения: 1 (нет мест), 0 (есть места), 2 (под запрос). Если атрибут отсутствует, то этой информации нет.
| |
| − | |-
| |
| − | |
| |
| − | hotelName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Название отеля.
| |
| − | |-
| |
| − | |
| |
| − | htPlaceId
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор размещения. Атрибут может отсутствовать, если размещение не слинковано.
| |
| − | |-
| |
| − | |
| |
| − | htplaceName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Тип размещения.
| |
| − | |-
| |
| − | |
| |
| − | kids *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Количество туристов (детей).
| |
| − | |-
| |
| − | |
| |
| − | kid1age
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Возраст первого ребенка. Атрибут необязательный.
| |
| − | |-
| |
| − | |
| |
| − | kid2age
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Возраст второго ребенка. Атрибут необязательный.
| |
| − | |-
| |
| − | |
| |
| − | kid3age
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Возраст третьего ребенка. Атрибут необязательный.
| |
| − | |-
| |
| − | |
| |
| − | mealId
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор типа питания. Может отсутствовать, если тип питания не слинкован.
| |
| − | |-
| |
| − | |
| |
| − | mealName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Тип
| |
| − | питания.
| |
| − | |-
| |
| − | |
| |
| − | nights *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Продолжительность тура, ночей.
| |
| − | |-
| |
| − | |
| |
| − | offerId *
| |
| − | |
| |
| − | Int64
| |
| − | |
| |
| − | Идентификатор ценового предложения. Используется вместе с sourceId и requestId для актуализации тура и для оформления заказа.
| |
| − | |-
| |
| − | |
| |
| − | price *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Цена тура в запрошенной валюте.
| |
| − | |-
| |
| − | |
| |
| − | currencyId *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор валюты к атрибуту price (2 – USD, 3 – EUR, 5 – RUR).
| |
| − | |-
| |
| − | |
| |
| − | requestId
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор поискового запроса. Используется вместе с sourceId и requestId для актуализации тура и для оформления заказа.
| |
| − | |-
| |
| − | |
| |
| − | townId
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор курорта. Может отсутствовать, если курорт не слинкован.
| |
| − | |-
| |
| − | |
| |
| − | townName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Название курорта.
| |
| − | |-
| |
| − | |
| |
| − | roomId
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор типа номера. Может отсутствовать, если тип номера не слинкован.
| |
| − | |-
| |
| − | |
| |
| − | roomName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Тип номера.
| |
| − | |-
| |
| − | |
| |
| − | sourceId *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор туроператора. Значение используется вместе с offerId и requestId для заказа и оформления туров.
| |
| − | |-
| |
| − | |
| |
| − | starId
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор категории отеля. Может отсутствовать, если категория отеля не слинкована.
| |
| − | |-
| |
| − | |
| |
| − | starName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Категория отеля.
| |
| − | |-
| |
| − | |
| |
| − | tourName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Название тура. Может быть пустым, если туроператор не предоставляет таких данных.
| |
| − | |-
| |
| − | |
| |
| − | tourUrl
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Ссылка на описание / бронирование тура на сайте туроператора.
| |
| − | |-
| |
| − | |
| |
| − | originalHotelName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Оригинальное название отеля (данные туроператора).
| |
| − | |-
| |
| − | |
| |
| − | originalStarName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Оригинальная категория отеля (данные туроператора).
| |
| − | |-
| |
| − | |
| |
| − | originalTownName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Оригинальное название курорта (данные туроператора).
| |
| − | |-
| |
| − | |
| |
| − | originalMealName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Оригинальный тип питания (данные туроператора).
| |
| − | |-
| |
| − | |
| |
| − | originalHtPlaceName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Оригинальный тип размещения (данные туроператора).
| |
| − | |-
| |
| − | |
| |
| − | originalRoomName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Оригинальный тип номера (данные туроператора).
| |
| − | |-
| |
| − | |
| |
| − | originalCountryName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Оригинальное название страны (данные туроператора).
| |
| − | |-
| |
| − | |
| |
| − | originalDptCityName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Оригинальное название города вылета (данные туроператора).
| |
| − | |-
| |
| − | |
| |
| − | originalPrice *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Цена тура у туроператора (может отличаться от цены в атрибуте price, если туроператор предоставляет такую информацию).
| |
| − | |-
| |
| − | |
| |
| − | originalCurrencyId *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор валюты к атрибуту originalPrice (2 – USD, 3 – EUR, 5 – RUR).
| |
| − | |-
| |
| − | |
| |
| − | originalCurrencyName *
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Оригинальное название валюты у туроператора.
| |
| − | |-
| |
| − | |
| |
| − | fewPlacesInHotel''' '''
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Если есть места в отеле (hotelIsInStop = 0) и данное значение отлично от нуля, то мест в
| |
| − | отеле МАЛО.
| |
| − | Значение
| |
| − | -1 передаётся, если туроператор сообщает, что мест МАЛО, но не информирует о
| |
| − | точном количестве в остатке.
| |
| − | Если передано любое иное число, отличное от нуля, то это точное количество оставшихся мест.
| |
| − | |-
| |
| − | |
| |
| − | fewEconomTicketsDpt''' '''
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Если есть места на перелёт эконом-классом (туда) (economTicketsDpt = 1) и
| |
| − | данное значение отлично от нуля, то билетов МАЛО.
| |
| − | Значение
| |
| − | -1 передаётся, если туроператор сообщает, что билетов МАЛО, но не информирует о точном количестве в остатке.
| |
| − | Если передано любое иное число отличное от нуля, то это точное количество оставшихся билетов.
| |
| − | |-
| |
| − | |
| |
| − | fewEconomTicketsRtn''' '''
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Если есть места на перелёт эконом-классом (обратно) (economTicketsRtn = 1) и данное значение отлично от нуля, то билетов МАЛО. Значение -1 передаётся, если туроператор сообщает, что билетов МАЛО, но не информирует о точном количестве в остатке. Если передано любое иное число отличное от нуля, то это точное количество оставшихся билетов.
| |
| − | |-
| |
| − | |
| |
| − | fewBusinessTicketsDpt''' '''
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Если есть места на перелёт бизнес-классом (туда) (businessTicketsDpt = 1) и
| |
| − | данное значение отлично от нуля, то билетов МАЛО. Значение -1 передаётся, если туроператор сообщает, что билетов МАЛО, но не информирует о точном количестве в остатке.
| |
| − | Если передано любое иное число отличное от нуля, то это точное количество оставшихся билетов.
| |
| − | |-
| |
| − | |
| |
| − | fewBusinessTicketsRtn''' '''
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Если есть места на перелёт бизнес-классом (обратно) (businessTicketsRtn = 1) и
| |
| − | данное значение отлично от нуля, то билетов МАЛО.
| |
| − | Значение
| |
| − | -1 передаётся, если туроператор сообщает, что билетов МАЛО, но не информирует
| |
| − | о точном количестве в остатке. Если передано любое иное число отличное от нуля, то это точное количество оставшихся билетов.
| |
| − | |-
| |
| − | |
| |
| − | priceType *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Тип
| |
| − | цены у туроператора (0 – на номер, 1- на человека). Независимо от типа цены стоимость тура выдаётся конечной.
| |
| − | |-
| |
| − | |
| |
| − | flags''' '''
| |
| − | |
| |
| − | UInt64
| |
| − | |
| |
| − | Набор битовых флагов тура. Тур может иметь несколько установленных флагов одновременно, данное значение является их суммой.
| |
| − | Возможные флаги тура:
| |
| − | * 1 – туроператор рекомендует данный тур;
| |
| − | * 2 – доступно мгновенное подтверждение;
| |
| − | * 4 – туроператор считает данный тур лучшим предложением;
| |
| − | * 8 – тур раннего бронирования;
| |
| − | * 16 – тур позднего бронирования;
| |
| − | * 32 – туроператор предоставляет скидку на данный тур;
| |
| − | * 64 – VIP предложение;
| |
| − | * 128 – тур доступен в кредит;
| |
| − | * 256 – тур является эксклюзивным предложением туроператора;
| |
| − | * 512 – при покупке тура турист получает подарок;
| |
| − | * 1024 – тур является комбинированным.
| |
| − | |-
| |
| − | |
| |
| − | creditMonths''' '''
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Если
| |
| − | тур доступен для покупки в кредит, то в данном поле указывается срок кредита
| |
| − | в месяцах, иначе атрибут будет отсутствовать.
| |
| − | |-
| |
| − | |
| |
| − | creditMonthlyPay''' '''
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Если
| |
| − | тур доступен для покупки в кредит, то в данном поле указывается размер
| |
| − | ежемесячных выплат, иначе атрибут будет отсутствовать.
| |
| − | |-
| |
| − | |
| |
| − | description''' '''
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Дополнительная
| |
| − | информация по туру. Например, для комбинированных туров может содержать информацию
| |
| − | о проживании в отелях.
| |
| − | |-
| |
| − | |
| |
| − | discountPercent''' '''
| |
| − | |
| |
| − | Single?
| |
| − | |
| |
| − | Если
| |
| − | туроператор предоставляет скидку, то в данном поле выводится размер скидки,
| |
| − | иначе атрибут будет отсутствовать.
| |
| − | |-
| |
| − | |
| |
| − | discountExpires''' '''
| |
| − | |
| |
| − | DateTime ?
| |
| − | |
| |
| − | Если
| |
| − | туроператор предоставляет скидку и указывает срок её действия, то в данном
| |
| − | поле выводится дата окончания акции, иначе атрибут будет отсутствовать.
| |
| − | |-
| |
| − | |
| |
| − | discountCaption''' '''
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Описание
| |
| − | скидки/акции.
| |
| − | |-
| |
| − | |
| |
| − | receivingParty''' '''
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Принимающая
| |
| − | сторона (если информация предоставляется туроператором).
| |
| − | |-
| |
| − | |
| |
| − | giftCaption''' '''
| |
| − | |
| |
| − | String
| |
| − | |
| |
| − | Если по
| |
| − | акции туроператор предоставляет подарки, то в данном поле выводится их описание.
| |
| − | |-
| |
| − | |
| |
| − | earlyBookingValidTill''' '''
| |
| − | |
| |
| − | DateTime
| |
| − | ?
| |
| − | |
| |
| − | Если
| |
| − | тур является туром раннего бронирования и туроператор предоставляет последнюю дату ранней брони, то в данном поле выводится это значение, иначе атрибут будет отсутствовать.
| |
| − | |-
| |
| − | |
| |
| − | updateDate *
| |
| − | |
| |
| − | DateTme
| |
| − | |
| |
| − | Дата и время (UTC) последнего обновления информации о туре.
| |
| − | |-
| |
| − | |
| |
| − | |
| |
| − | |
| |
| − | |
| |
| − | |
| |
| − | |}
| |
| − |
| |
| − | Пример запроса направлений для Санкт-Петербурга:
| |
| − |
| |
| − | https://bulk.sletat.ru/BulkCacheDownload?packetId=922AC42F-9927-4B8C-A1EB-0020C35C4F22
| |
| − |
| |
| − | После загрузки и распаковки данных получаем следующий пакет (для читаемости оставлены только два элемента '''tour'''):
| |
| − |
| |
| − | <source lang="xml">
| |
| − |
| |
| − | <tours>
| |
| − | <tour offerId="200626003" requestId="116002036" sourceId="3" updateDate="2013-04-28 14:31:00" price="35382" currencyId="5" checkin="2013-05-26" nights="13" adults="1" kids="0" mealId="113" roomId="5283" htplaceId="13094" hotelIsInStop="0" ticketsIncluded="1" hasEconomTicketsDpt="1" hasEconomTicketsRtn="1" hasBusinessTicketsDpt="0" hasBusinessTicketsRtn="0" tourName="PALMA DE MALLORCA (KEMEROVO)" hotelName="HOTEL BLUE SEA DON JAIME" townName="PALMA DE MALLORCA" starName="3*" mealName="HB" roomName="Standard" htplaceName="SGL" originalHotelName="HOTEL BLUE SEA DON JAIME" originalTownName="PALMA DE MALLORCA" originalStarName="3*" originalMealName="HB" originalRoomName="Standard Room" originalHtplaceName="Single" originalCountryName="SPAIN" originalDptCityName="Кемерово" originalCurencyId="3" originalCurrencyName="EUR" originalPrice="853" tourUrl="https://agency.pegast.ru/samo5/bron?CLAIM=1717245082&TOWNFROMINC=75&STATEINC=58&SPOINC=397842" priceType="0" flags="128" creditMonths="6" creditMonthlyPay="5897" />
| |
| − | <tour offerId="200626009" requestId="116002036" sourceId="3" updateDate="2013-04-28 14:31:00" price="39282" currencyId="5" checkin="2013-05-26" nights="13" adults="1" kids="0" mealId="113" htplaceId="13094" hotelIsInStop="0" ticketsIncluded="1" hasEconomTicketsDpt="1" hasEconomTicketsRtn="1" hasBusinessTicketsDpt="0" hasBusinessTicketsRtn="0" tourName="PALMA DE MALLORCA (KEMEROVO)" hotelName="APARTHOTEL BLUE SEA CALA GUYA MAR" townName="PALMA DE MALLORCA" starName="3*" mealName="HB" roomName="One Bedroom Apartment" htplaceName="SGL" originalHotelName="APARTHOTEL BLUE SEA CALA GUYA MAR" originalTownName="PALMA DE MALLORCA" originalStarName="3*" originalMealName="HB" originalRoomName="One Bedroom Apartment" originalHtplaceName="Single" originalCountryName="SPAIN" originalDptCityName="Кемерово" originalCurencyId="3" originalCurrencyName="EUR" originalPrice="947" tourUrl="https://agency.pegast.ru/samo5/bron?CLAIM=1717245104&TOWNFROMINC=75&STATEINC=58&SPO INC=397842" priceType="0" flags="128" creditMonths="6" creditMonthlyPay="6547" />
| |
| − | </tours>
| |
| − |
| |
| − | </source>
| |
| − |
| |
| − | === GetFuelSurcharges ===
| |
| − |
| |
| − | Метод '''GetFuelSurcharges''' позволяет получить список всех топливных сборов.Сигнатура:
| |
| − | FuelSurchargeInfo[] GetFuelSurcharges()
| |
| − |
| |
| − | Параметры отсутствуют.
| |
| − | В ответ возвращает массив описаний топливных сборов '''FuelSurchargeInfo'''. Каждый элемент содержит следующие поля:
| |
| − |
| |
| − | {| class="wikitable"
| |
| − | |-
| |
| − | |
| |
| − | Название поля
| |
| − | |
| |
| − | Тип
| |
| − | |
| |
| − | Описание
| |
| − | |-
| |
| − | |
| |
| − | SourceId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор туроператора. Если null, значит сбор применяется вне зависимости от туроператора
| |
| − | |-
| |
| − | |
| |
| − | TownFromId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор города вылета. Если null, значит сбор применяется вне зависимости от города вылета.
| |
| − | |-
| |
| − | |
| |
| − | CountryId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор направления. Если null, значит сбор применяется вне зависимости от направления.
| |
| − | |-
| |
| − | |
| |
| − | ResortId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор курорта, если null, значит сбор применяется вне зависимости от курорта.
| |
| − | |-
| |
| − | |
| |
| − | AirportId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор аэропорта назначения. Если null, значит сбор применяется вне зависимости от аэропорта назначения.
| |
| − | |-
| |
| − | |
| |
| − | AircompanyId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор авиакомпании. Если null, значит сбор применяется вне зависимости от авиакомпании.
| |
| − | |-
| |
| − | |
| |
| − | FlightNumber
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Номер рейса. Если null, значит сбор применяется вне зависимости от номера рейса.
| |
| − | |-
| |
| − | |
| |
| − | HostId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор туроператора принимающей стороны. Если null, значит сбор применяется вне зависимости от туроператора принимающей стороны.
| |
| − | |-
| |
| − | |
| |
| − | PeriodStartDate
| |
| − | |
| |
| − | DateTime
| |
| − | |
| |
| − | Дата начала действия сбора.
| |
| − | |-
| |
| − | |
| |
| − | PeriodEndDate
| |
| − | |
| |
| − | DateTime
| |
| − | |
| |
| − | Дата окончания действия сбора.
| |
| − | |-
| |
| − | |
| |
| − | Price
| |
| − | |
| |
| − | Decimal ?
| |
| − | |
| |
| − | Сумма сбора. Если пусто, значит по данному фильтру сбор не взимается.
| |
| − | |-
| |
| − | |
| |
| − | CurrencyId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор валюты сбора. Пусто при отсутствии сбора
| |
| − | |}
| |
| − |
| |
| − | Топливный сбор применяется по наибольшему совпадению параметров тура с параметрами сбора.Фильтровать сборы для тура нужно следующим образом:
| |
| − |
| |
| − | # Выбрать сборы по туроператору и те, для которых поле SourceId = null;
| |
| − | # Из выбранных сборов взять те, чьи периоды действия включают даты начала и окончания тура;
| |
| − | # Из выбранных сборов взять те, для которых поле TownFromId = городу вылета или null;
| |
| − | # Из выбранных сборов взять те, для которых поле CountryId = стране или null;
| |
| − | # Из выбранных сборов взять те, для которых поле ResortId = курорту или null;
| |
| − | # Из выбранных удалить сборы с «широким фильтром» (среди параметров TownFromId, CountryId, ResortId, SourceId все или несколько равны null), у которых остальные параметры совпадают с параметрами сборов в выборке с более «узким фильтром» (среди параметров TownFromId, CountryId, ResortId, SourceId все или несколько равны параметрам тура соответственно).
| |
| − |
| |
| − | === GetVisaSurcharges ===
| |
| − |
| |
| − | Метод '''GetVisaSurcharges''' позволяет получить список всех визовых сборов. Сигнатура:
| |
| − |
| |
| − | VisaSurchargeInfo[] GetVisaSurcharges()
| |
| − |
| |
| − | Параметры отсутствуют.В ответ возвращает массив описаний визовых сборов VisaSurchargeInfo. Каждый элемент содержит следующие поля:
| |
| − |
| |
| − | {| class="wikitable"
| |
| − | |-
| |
| − | |
| |
| − | Название поля
| |
| − | |
| |
| − | Тип
| |
| − | |
| |
| − | Описание
| |
| − | |-
| |
| − | |
| |
| − | SourceId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор туроператора. Если null, значит сбор применяется вне зависимости от туроператора.
| |
| − | |-
| |
| − | |
| |
| − | TownFromId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор города оформления. Возможные исключения:
| |
| − | # Если null, значит сбор применяется вне зависимости от города вылета.
| |
| − | # Если 1, значит виза оформляется по прибытии.
| |
| − | |-
| |
| − | |
| |
| − | CountryId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор страны назначения. Если null, значит сбор применяется вне зависимости от страны назначения
| |
| − | |-
| |
| − | |
| |
| − | Citizenship
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор страны, гражданином которой является турист. Если null, значит сбор применяется вне зависимости от гражданства.
| |
| − | |-
| |
| − | |
| |
| − | IsExpress
| |
| − | |
| |
| − | bool?
| |
| − | |
| |
| − | True – сбор указан для экспресс-оформления. False – сбор указан для обычного оформления, null – сбор для любого типа оформления.
| |
| − | |-
| |
| − | |
| |
| − | AgeFrom
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Нижняя возрастная граница оформления визы.
| |
| − | |-
| |
| − | |
| |
| − | AgeTo
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Верхняя возрастная граница оформления визы.
| |
| − | |-
| |
| − | |
| |
| − | PasportType
| |
| − | |
| |
| − | bool?
| |
| − | |
| |
| − | Тип паспорта: true – свой, false – вписан, null – сбор применяется вне зависимости от типа паспорта.
| |
| − | |-
| |
| − | |
| |
| − | IssueDaysFrom
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Минимальный срок оформления, дней.
| |
| − | |-
| |
| − | |
| |
| − | IssueDaysTo
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Максимальный срок оформления, дней.
| |
| − | |-
| |
| − | |
| |
| − | Price
| |
| − | |
| |
| − | Decimal
| |
| − | ?
| |
| − | |
| |
| − | Сумма сбора. Если пусто, значит по данному фильтру сбор не взимается.
| |
| − | |-
| |
| − | |
| |
| − | CurrencyId
| |
| − | |
| |
| − | Int32?
| |
| − | |
| |
| − | Идентификатор валюты сбора. Пусто при отсутствии сбора.
| |
| − | |}
| |
| − |
| |
| − | === GetRequestInfo ===
| |
| − |
| |
| − | Вспомогательный метод '''GetRequestInfo''' предназначен для получения данных о поисковом запросе по его идентификатору. Идентификаторы поисковых запросов присутствуют в выгрузке для всех туров. Сигнатура:
| |
| − |
| |
| − | RequestInfo GetRequestInfo(Int32 requestId)
| |
| − |
| |
| − | Параметр '''requestId''' – идентификатор поискового запроса. Если запрос был найден, то в ответ будет возвращена структура со следующими полями:
| |
| − |
| |
| − | {| class="wikitable"
| |
| − | |-
| |
| − | |
| |
| − | Название поля
| |
| − | |
| |
| − | Тип
| |
| − | |
| |
| − | Описание
| |
| − | |-
| |
| − | |
| |
| − | CurrencyAlias *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Валюта поиска (RUB, USD, EUR, UAH и BYR).
| |
| − | |-
| |
| − | |
| |
| − | DptCityId *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор города вылета.
| |
| − | |-
| |
| − | |
| |
| − | CountryId *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Идентификатор страны.
| |
| − | |-
| |
| − | |
| |
| − | Adults *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Количество туристов (взрослых).
| |
| − | |-
| |
| − | |
| |
| − | Kids *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Количество туристов (детей).
| |
| − | |-
| |
| − | |
| |
| − | KidsAges
| |
| − | |
| |
| − | Int32[]
| |
| − | |
| |
| − | Возрасты детей (если были указаны).
| |
| − | |-
| |
| − | |
| |
| − | NightsMin *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Минимальная продолжительность тура, ночей.
| |
| − | |-
| |
| − | |
| |
| − | NightsMax *
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Максимальная продолжительность тура, ночей.
| |
| − | |-
| |
| − | |
| |
| − | PriceMin
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Минимальная цена.
| |
| − | |-
| |
| − | |
| |
| − | PriceMax
| |
| − | |
| |
| − | Int32
| |
| − | |
| |
| − | Максимальная цена.
| |
| − | |-
| |
| − | |
| |
| − | Date1 *
| |
| − | |
| |
| − | DateTime
| |
| − | |
| |
| − | Диапазон дат вылета, первая дата.
| |
| − | |-
| |
| − | |
| |
| − | Date2 *
| |
| − | |
| |
| − | DateTime
| |
| − | |
| |
| − | Диапазон дат вылета, вторая дата.
| |
| − | |-
| |
| − | |
| |
| − | HotelIsNotInStop *
| |
| − | |
| |
| − | Boolean
| |
| − | |
| |
| − | Отмечен флажок «Есть места в отеле».
| |
| − | |-
| |
| − | |
| |
| − | TicketsIncluded *
| |
| − | |
| |
| − | Boolean
| |
| − | |
| |
| − | Отмечен флажок «Перелет включен».
| |
| − | |-
| |
| − | |
| |
| − | HasTickets *
| |
| − | |
| |
| − | Boolean
| |
| − | |
| |
| − | Отмечен флажок «Есть билеты».
| |
| − | |-
| |
| − | |
| |
| − | HotelIds
| |
| − | |
| |
| − | Int32[]
| |
| − | |
| |
| − | Выбранные отели (если были указаны).
| |
| − | |-
| |
| − | |
| |
| − | StarIds
| |
| − | |
| |
| − | Int32[]
| |
| − | |
| |
| − | Выбранные категории отелей (если были указаны).
| |
| − | |-
| |
| − | |
| |
| − | MealIds
| |
| − | |
| |
| − | Int32[]
| |
| − | |
| |
| − | Выбранные типы питания (если были указаны).
| |
| − | |-
| |
| − | |
| |
| − | TownIds
| |
| − | |
| |
| − | Int32[]
| |
| − | |
| |
| − | Выбранные курорты (если были указаны).
| |
| − | |}
| |