Аналитика (json)
Содержание
Введение
XML-шлюз аналитики Слетать.ру содержит набор методов для ценового анализа данных о турах. Анализ может быть как динамическим (отслеживание изменений стоимости данного тура с момента выпуска), так и сравнительным (сопоставление разных туров по стоимости). На страницах настоящего руководства описаны следующие группы методов:
- «Минимальные цены по параметрам поиска». Этот метод позволяет получать информацию о самых дешёвых турах, соответствующих введённым параметрам поиска, на каждую дату заданного диапазона. На Рис. 0.1. представлен пример реализации графика минимальных цен. По заданному поисковому запросу (тур из Москвы в Египет на двоих, продолжительностью от 6 до 16 ночей, без ограничений по курорту, туроператору, категории отеля, типу размещения или типу питания), выводятся минимальные цены на туры в диапазоне «дата поиска + 45 дней»; цены на туры представлены в виде гистограммы; диапазон дат вылета, выбранный при поиске (5 апреля – 13 апреля) выделен затенением; при наведении курсора мыши на столбец гистограммы выводится точная цена тура, название туроператора, тип питания, тип номера, название курорта, название отеля и количество звёзд.
- «Минимальные цены тура на другие даты». Метод, описанный в этом разделе, используется для построения графика изменения цены тура, соответствующего заданным параметрам поиска, в диапазоне дат. На Рис. 0.2 приведён пример реализации графика. В описании таблицы приведены параметры тура: отель (с указанием количества звёзд), курорт, город вылета, продолжительность тура (в ночах), тип питания и тип размещения; на гистограмме представлены минимальные цены на туры, соответствующие заданным параметрам, на интервал дат, ограниченный только датой поиска (анализируются данные по всем турам, представленным в системе Слетать.ру); при наведении курсора мыши на столбец гистограммы во всплывающем окне выводится информация о туроператоре, дате вылета, дате и времени поиска и цене тура (в сравнении с ценойанализируемого тура); пользователь может отфильтровать данные по туроператорам.
- «История цены тура». Эта группа методов позволяет строить график изменения цены на выбранный тур с момента его появления в системе до момента поиска. На Рис. 0.3 приведён пример реализации графика. Для выбранного тура (на двоих в Хургаду 9 апреля, с вылетом из Москвы, продолжительностью 6 ночей, отель Triton Empire Hotel 3*, тип размещения Standard, тип питания HB, оператор Pegas Touristik) выводится график изменения цены; пользователь может просмотреть динамику за неделю, за месяц или за всё время с момента появления тура в системе поиска Слетать.ру.
Минимальные цены по параметрам поиска
Метод GetToursGroupByDate позволяет получать информацию о самых дешёвых турах, соответствующих введённым параметрам поиска, на каждую дату заданного диапазона. Адрес сервиса:
https://graph.sletat.ru/main.svc/
Метод принимает поисковые параметры и возвращает массив из двух колонок для постройки графика, в первой – даты вылета в формате dd.MM.yyyy, во второй – минимальная цена тура на дату.
Параметры:
- countryId - идентификатор страны;
- cityFromId - идентификатор города вылета;
- cities - список идентификаторов курортов через запятую (по умолчанию не используется);
- meals - список идентификаторов питания через запятую (по умолчанию не используется);
- stars - список идентификаторов категорий отелей через запятую (по умолчанию не используется);
- hotels - список идентификаторов отелей через запятую (по умолчанию не используется);
- adults - количество взрослых, по умолчанию 2;
- kids - количество детей, по умолчанию 0;
- nightsMin – минимальная продолжительность тура (в ночах), по умолчанию 3;
- nightsMax - максимальная продолжительность тура (в ночах), по умолчанию 10;
- priceMin - минимальная цена тура (по умолчанию не используется);
- priceMax - максимальная цена тура (по умолчанию не используется);
- date1 - первая дата в диапазоне дат туров в формате dd.MM.yyyy, по умолчанию текущая дата + 1 день;
- date2 - вторая дата в диапазоне дат туров в формате dd.MM.yyyy, по умолчанию текущая дата + 8 дней;
- sources - список идентификаторов туроператоров через запятую (обязательный параметр);
- ticketsIncluded - при значении 1 отображаются цена на туры только с перелетом (по умолчанию 0);
- limitMin – временной интервал (от текущих даты и времени), за который нужно сделать выборку данных (60 – за последний час, 1440 – за последние сутки, и т.д.).
Пример вызова:
https://graph.sletat.ru/main.svc/GetToursGroupByDate?login=xxx&password=yyy&countryId=40&cityFromId=832&cities=1592,1642&meals=115&stars=403,404&adults=2&nightsMin=7&nightsMax=10&date1=12.09.2015&date2=27.09.2015&ticketsIncluded=1&sources=380,6
Запрашиваются данные по направлению Москва – Египет (Шарм-эль-Шейх и Хургада), в отели 4 и 5 звезд, тип питания AI, продолжительность 7-10 ночей, на диапазон дат с 12 мая по 27 июня по туроператорам TUI и Coral
Пример ответа:
{ "GetToursGroupByDateResult": { "Data": { "data": [ [ "12.05.2013", 15537, "12.05.2013", "18:25", "Sunmar", "Fortuna Fortuna Sharm el-Sheikh 4*", "4*", "Шарм-Эль-Шейх", "AI", "Standard", "DBL", 7 ], [ "13.05.2013", 15537, "12.05.2013", "18:25", "Sunmar", "Fortuna Fortuna Sharm el-Sheikh 4*", "4*", "Шарм-Эль-Шейх", "AI", "Standard", "DBL", 7 ], [ "14.05.2013", 16674, "12.05.2013", "18:25", "Pegas Touristik", "Aida Hotel Sharm", "4*", "Шарм-Эль-Шейх", "AI", "Standard Room Double", "---", 7 ] ] }, "ErrorMessage": null, "IsError": false } }
В примере ответа для читаемости оставлены данные лишь для трех дат. Массив data содержит вложенные массивы, каждый из которых содержит краткое описание самого дешевого тура для каждой даты из указанного в параметрах диапазона. Ниже описывается каждый элемент таких массивов:
Поле |
Тип |
Описание |
data[0] |
str |
Дата начала тура в формате dd.MM.yyyy. |
data[1] |
int |
Цена тура. |
data[2] |
str |
Дата последнего изменения информации о туре в базе данных в формате dd.MM.yyyy. |
data[3] |
str |
Время последнего изменения информации о туре в базе данных в формате HH:mm. |
data[4] |
str |
Название туроператора. |
data[5] |
str |
Название отеля. |
data[6] |
str |
Категория отеля. |
data[7] |
str |
Название курорта. |
data[8] |
str |
Тип питания. |
data[9] |
str |
Тип размещения. |
data[10] |
str |
Тип номера. |
data[11] |
int |
Продолжительность тура, ночей. |
Минимальные цены тура на другие даты
Метод GetTourPriceGroupByDate возвращает данные для построения графика (дата – минимальная цена) и вывода подсказок к каждой точке (дата последнего обновления информации о туре, туроператор). Адрес сервиса:
https://graph.sletat.ru/main.svc.
Хеши туров
В выдаче GetTours (JSON API) для каждого тура в массиве данных элемент с индексом 79 или параметр TourHash в ответе метода GetRequestResult (XML API) содержит уникальный хеш тура, который запрашивает данные для описываемого графика. |
Параметры:
- countryId - идентификатор страны;
- dptCityId - идентификатор города вылета;
- hash – хеш тура (поле TourHash в ответе метода GetRequestResult или элемент с индексом 79 в ответе GetTours);
- dateStart - первая дата в диапазоне дат в формате dd.MM.yyyy;
- dateEnd - вторая дата в диапазоне дат в формате dd.MM.yyyy;
- sources - список идентификаторов туроператоров (по умолчанию не используется).
Пример вызова:
https://graph.sletat.ru/Main.svc/GetTourPriceGroupByDate?&login=xxx&password=yyy&countryId=40&dptCityId=832&dateStart=13.08.2015&dateEnd=23.09.2015&hash=J7YKqhBQORktZuYWXFamDA%3D%3D
Запрашиваются данные для тура по направлению Москва – Египет для диапазона дат с 13 августа 2015 г. до 23 сентября 2015 г.Пример ответа:
GetTourPriceGroupByDateResult: { Data: { dates: [ "14.08.2015", "15.08.2015", "16.08.2015", "17.08.2015", "18.08.2015", "19.08.2015", "20.08.2015", "21.08.2015", "22.08.2015", ... ], found: [ "13.08.2015 11:31:00", "13.08.2015 10:23:00", "13.08.2015 10:23:00", "12.08.2015 13:41:00", "13.08.2015 12:36:00", "12.08.2015 13:11:00", "13.08.2015 12:36:00", "13.08.2015 01:00:00", "13.08.2015 12:30:00", "13.08.2015 12:26:00", ... ], offers: [ 268127847, 1202512476, 1202512474, 244057401, 268571106, 1177213682, 268571122, 1204447483, 267572652, 265763194, ... ], prices: [ 38335, 33153, 31734, 49263, 34565, 49278, 38855, 40635, 43535, 43535, ... ], requests: [ 1340488352, 1340309141, 1340309141, 1338385388, 1340675097, 1338304937, 1340675097, 1339574679, 1340654525, 1340641344, ... ], sources: [ 3, 148, 148, 3, 3, 148, 3, 148, 3, 3, ... ] }, ErrorMessage: null, ExecutionTimeMs: 0, IsError: false }
Возвращаются массивы данных:
- dates — даты, для которых есть цена на тур;
- found — дата и время последнего обновления информации к каждой дате из массива dates;
- offers — offerId каждого тура;
- prices — минимальные цены тура на каждую дату из массива dates;
- requests — requestId каждого тура;
- sources — идентификатор туроператора каждого тура;
История цены тура
Методы GetToursPriceLogCount, GetTourPriceLog и GetTourPriceLogBulk позволяют строить график изменения цены на выбранный тур с момента его появления в системе до момента поиска. Адрес сервиса:
https://graph.sletat.ru/main.svc.
Хеши туров
В выдаче GetTours (JSON API) для каждого тура в массиве данных элемент с индексом 68 содержит уникальный хеш тура, который используется для получения статистических данных по нему. В XML API к каждому туру хеш передается в поле TourArchiveHash. Используя данные хеши туров, можно вызывать методы сервиса graph.sletat.ru. |
GetToursPriceLogCount
Метод принимает один или несколько хешей и выдает первоначальную цену тура, по которой он был найден первый раз. Данная цена может использоваться для указания на процент изменения цены по сравнению с текущей ценой. Также метод возвращает количество зафиксированных изменений цены для каждого тура. Параметр hashes – список хешей. Хеши отделяются знаком |.Пример вызова:
https://graph.sletat.ru/main.svc/GetToursPriceLogCount?login=xxx&password=yyy&hashes=ybzzZjdSGrM5N07eDIccHQ%3D%3D%7CzjlRE0oa0a1NizaBj%2Fnmog%3D%3D%7CX1%2BF8A81B4Z8rhlFBanrZQ%3D%3D
Пример ответа:
{ "GetToursPriceLogCountResult": { "Data": { "counts" [ 10, 10, 10 ], "firstPrices" [ 52250, 52833, 53417 ] }, "ErrorMessage":null, "IsError":false } }
Массив counts содержит кол-во зафиксированных изменений цен к каждому туру (последовательность элементов в массиве соответствует каждому хешу в параметре hashes). Массив firstPrices содержит первую зафиксированную цену для каждого тура.
GetTourPriceLog
Метод возвращает зафиксированные изменения цен для указанного тура. Параметр hash — хеш тура. Пример вызова:
https://graph.sletat.ru/main.svc/GetTourPriceLog?login=xxx&password=yyy&hash=ybzzZjdSGrM5N07eDIccHQ%3D%3D
Пример ответа:
{ "GetTourPriceLogResult": { "Data": { "Dates": [ "04.02.2013", "08.02.2013", "12.02.2013", "17.02.2013", "21.02.2013", "25.02.2013", "01.03.2013", "05.03.2013", "09.03.2013", "13.03.2013" ], "Prices": [ 52250, 51999, 51623, 51498, 49443, 49202, 49202, 42554, 42554, 42554 ] }, "ErrorMessage":null, "IsError":false } }
Массив Dates содержит даты, в которые были зафиксированы изменения цены, а массив Prices содержит минимальное значение цены в этот день.
GetTourPriceLogBulk
Функционал аналогичен методу GetTourPriceLog, но с помощью этого метода можно запросить данные сразу по нескольким турам (до 100 туров за один запрос). Параметр hashes – хеши туров, разделенные знаком “|”
Пример вызова:
https://graph.sletat.ru/main.svc/GetTourPriceLogBulk?login=xxx&password=yyy&hashes=9g5NjLS2rtCYgL3I7ZpQfg%3D%3D%7COhF1RqS9dfLXHsEBeMBnkw%3D%3D
Пример ответа:
{
"GetTourPriceLogBulkResult": { "Data": { "Array": [ { "Dates": [ "17.03.2013", "21.03.2013", "25.03.2013", "29.03.2013", "02.04.2013", "06.04.2013", "10.04.2013", "14.04.2013", "18.04.2013", "19.04.2013", "23.04.2013", "24.04.2013", "28.04.2013", "02.05.2013", "07.05.2013", "11.05.2013", "12.05.2013", "15.05.2013", "16.05.2013", "17.05.2013", "18.05.2013", "21.05.2013", "22.05.2013", "23.05.2013", "27.05.2013", "28.05.2013", "31.05.2013", "04.06.2013", "08.06.2013", "10.06.2013", "14.06.2013", "18.06.2013", "22.06.2013", "26.06.2013", "27.06.2013", "28.06.2013", "29.06.2013", "30.06.2013", "07.07.2013", "08.07.2013" ], "Hash": "OhF1RqS9dfLXHsEBeMBnkw==", "Prices": [ 20406, 20336, 20352, 20224, 20307, 20829, 20733, 20662, 20989, 21103, 21030, 21030, 20738, 20719, 12466, 12467, 12467, 12447, 12409, 12355, 12355, 12321, 12298, 12343, 12397, 12389, 12535, 12683, 12897, 13072, 13150, 12921, 13265, 13149, 13149, 13107, 13072, 13072, 13109, 13109] }, { "Dates": [ "14.05.2013", "15.05.2013", "16.05.2013", "18.05.2013", "21.05.2013", "22.05.2013", "23.05.2013", "27.05.2013", "28.05.2013", "31.05.2013", "04.06.2013", "08.06.2013", "10.06.2013", "14.06.2013", "18.06.2013", "22.06.2013", "26.06.2013", "27.06.2013", "28.06.2013", "29.06.2013", "30.06.2013", "01.07.2013", "07.07.2013", "08.07.2013" ], "Hash": "9g5NjLS2rtCYgL3I7ZpQfg==", "Prices": [ 31093, 30966, 31161, 31064, 24144, 23935, 23973, 31015, 31015, 28892, 29251, 29466, 29466, 29511, 28892, 29933, 29888, 30067, 30032, 29879, 29879, 29879, 31674, 31674 ] } ] }, "ErrorMessage": null, "ExecutionTimeMs": 73, "IsError": false }
}
Массив Array содержит элементы, каждый из которых описывает данные по изменению цен для одного тура. Каждый такой элемент содержит массив Dates с датами, в которые были зафиксированы изменения цены, а массив Prices содержит минимальное значение цены в этот день. Элемент hash является уникальным идентификатором тура, для которого предоставлены данные.