8. Фильтрация экскурсий / туров
Для фильтрации экскурсий используйте метод
https://experience.tripster.ru/api/partners/<partner_name>/search/experiences/
Параметры запроса для фильтрации
Фильтры
type фильтр по типу, private,group,tour,ticket (значения через запятую)
ids фильтр по ID экспириенса (числа через запятую)
exclude_ids исключить экспириенсы с заданными ID (числа через запятую)
city фильтр по ID города
city__slug фильтр по строковому идентификатору города
country фильтр по ID страны
country__slug фильтр по строковому идентификатору страны
region фильтр по ID региона
region__slug фильтр по slug региона
citytag фильтр по ID рубрики
guide фильтр по ID гида
exp_format фильтр по типу экскурсии (exp_format=9 – онлайн-экскурсии)
type фильтр по типу экспириенса (private/group/tour)
movement_type фильтр по типу передвижения (foot/car/bicycle/watership/etc.)
tags фильтр по по одному или нескольким ID рубрик (через запятую)
tag__slugs фильтр по по одному или нескольким slug рубрик (через запятую)
persons_count количество человек
children_allowed признак “можно с детьми“ (true/false)
start_price минимальная стоимость
end_price максимальная стоимость
start_date дата "от" включительно в формате YYYY-MM-DD
end_date дата "по" включительно в формате YYYY-MM-DD
Сортировка
по дефолту - как на сайте
sorting=popularity по популярности экскурсии в городе (sorting=-popularity по убыванию, sorting=popularity по возрастанию)
sorting=price по цене
Набор данных
detailed=false сокращенный набор полей. Используйте для загрузки списка экскурсий и отображения его у себя в реальном времени.
detailed=true расширенный набор полей. Используйте для загрузки полных данных по экскурсиям к себе в БД, а также для отображения одной экскурсии в реальном времени. По умолчанию включен при запросе конкретной экскурсии по ID
Запрос обновленных данных
updated_after=YYYY-MM-DD или YYYY-MM-DD HH:MM:SS будут возвращены экскурсии, которые изменились с указанного времени
schedule_updated_after=YYYY-MM-DD или YYYY-MM-DD HH:MM:SS будут возвращены экскурсии, в расписании которых появились изменения с указанного времени
Стандартные параметры format и page/per_page, прочитайте про постраничную загрузку данных
Доп. параметры
need_results - отдавать результаты поиска. По умолчанию true
need_aggregations - отдавать агрегированные данные по умолчанию false
need_upcoming_events - отдавать список ближайших свободных слотов. По умолчанию false
Структура ответа
Пример ответа API
results [
{
"count": 216,
"next": "https://experience.tripster.ru/api/partner/partner_name/search/experiences/?city=3&page=2",
"previous": null,
"results": [
{
"id": 13530,
"title": "Монастырь на Казбеке — «высоко над семьею гор»",
"tagline": "Побывать в месте, воспетом Пушкиным и ставшим одним из символов Грузии",
"url": " ",
"is_new": false,
"type": "group",
"format": "experience",
"grade": "other",
"movement_type": "foot",
"schedule_type": "weekly_slots",
"instant_booking": true,
"status": "active",
"child_friendly": true,
"max_persons": 20,
"duration": 10.0,
"meeting_point": {
"text": "в районе площади Мейдан"
},
"finish_point": {
"text": ""
}
"price": {
"value": 25.0,
"currency": "EUR",
"currency_rate": 60.0,
"price_from": false,
"unit_string": "за человека",
"value_string": "€25 за человека",
"discount": {
"value": 0.4,
"expiration_date": "2019-07-07",
"expiration_text": "",
"original_price": 41.0
}
},
"review_count": 463,
"rating": 4.78,
"popularity": 103170,
"city": {
"id": 60,
"name_ru": "Тбилиси",
"name_en": "Tbilisi",
"iata": "TBS",
"country": {
"id": 136,
"name_ru": "Грузия",
"name_en": "Georgia",
"currency": "EUR",
"in_obj_phrase": "в Грузии",
"across_obj_phrase": "по Грузии",
"experience_count": 362,
"tours_count": 10,
"url": " ",
"region": "CIS"
},
"experience_count": 270,
"in_obj_phrase": "в Тбилиси",
"from_obj_phrase": "из Тбилиси",
"name_prepositional": "Тбилиси",
"url": "https://experience-feature-exp-8526-xe16xd.staging.k8s-dev.tripster.ru/experience/Tbilisi/",
"image": {
"thumbnail": "https://554a875a-71dc-4f5f-b6bf-ae8967f137d5.selcdn.net/photos/e82d4032-68a7-4e2a-8644-35017cc40326.jpg",
"cover": "https://554a875a-71dc-4f5f-b6bf-ae8967f137d5.selcdn.net/photos/a2998b43-5585-4347-9fa4-88d9d646b011.jpg"
},
"utc_offset": 14400.0,
"guides_count": 115,
"slug": "Tbilisi"
},
"guide": {
"id": 136254,
"first_name": "Давид",
"url": " ",
"avatar": {
"small": "https://experience-ireland.s3.amazonaws.com/avatar/65484e1c-7312-11e8-b3c5-6e714efd800d.31x31.jpg",
"medium": "https://experience-ireland.s3.amazonaws.com/avatar/653e91d8-7312-11e8-b3c5-6e714efd800d.150x150.jpg"
},
"rating": 4.68,
"review_count": 772,
"avg_reaction_delay": 17,
"links": {
"reviews": "https://experience.tripster.ru/api/guides/136254/reviews/"
},
"guide_type": "agency",
"is_guide_since": "2018-07-11T20:08:33+03:00",
"date_joined": "2018-06-18T16:47:29+03:00",
"number_of_persons_paid": 10457,
"orders_count_guide": 7794
},
"photos": [
{
"thumbnail": "https://experience-ireland.s3.amazonaws.com/thumbs2/07ac3232-852d-11e8-9de2-0ac55974a77a.384x289.jpg",
"medium": "https://experience-ireland.s3.amazonaws.com/thumbs2/bd68c2fa-852c-11e8-9de2-0ac55974a77a.800x600.jpg"
}
],
"links": {
"reviews": "https://experience.tripster.ru/api/partner/partner_name/experiences/13530/reviews/",
"schedule": "https://experience.tripster.ru/api/partner/partner_name/experiences/13530/schedule/"
},
"status": "active"
},
"tags": [
{
"id": 7016,
"name": "Кахетия",
"slug": "ekslkursii-v-kahetiyu",
"url": "https://experience-feature-exp-8526-xe16xd.staging.k8s-dev.tripster.ru/experience/Tbilisi/7016-ekslkursii-v-kahetiyu/",
"is_hidden": false,
"experience_count": 46,
"review_count": 2753,
"tag": {
"id": 55,
"name": "Кахетия",
"slug": "ekslkursii-v-kahetiyu",
"is_common": false,
"is_attraction": true,
"is_auto": false,
"is_hidden": false
},
"image": {
"thumbnail": "https://554a875a-71dc-4f5f-b6bf-ae8967f137d5.selcdn.net/thumbs2/a102d664-2f37-11eb-82f5-e6903622bc3f.384x289.jpg",
"medium": "https://554a875a-71dc-4f5f-b6bf-ae8967f137d5.selcdn.net/thumbs2/a1417aa4-2f37-11eb-82f5-e6903622bc3f.800x600.jpg"
}
}
],
"links": {
"reviews": "https://experience.tripster.ru/api/partner/partner_name/experiences/14201/reviews/",
"schedule": "https://experience.tripster.ru/api/partner/partner_name/experiences/14201/schedule/"
},
"geo": {
"country": [
{
"id": 136,
"slug": "georgia",
"name": "Грузия",
"in_obj_phrase": "в Грузии",
"from_obj_phrase": "из Грузии",
"across_obj_phrase": "по Грузии"
}
],
"city": [
{
"id": 60,
"slug": "Tbilisi",
"name": "Тбилиси",
"in_obj_phrase": "в Тбилиси",
"from_obj_phrase": "из Тбилиси",
"across_obj_phrase": "по Тбилиси"
}
]
},
"exp_format": 1,
"schedule": {
"upcoming_events": [
"2022-09-02T09:00:00",
"2022-09-02T09:30:00",
"2022-09-03T09:00:00",
"2022-09-03T09:30:00",
"2022-09-04T09:00:00",
"2022-09-04T09:30:00",
"2022-09-05T09:00:00",
"2022-09-05T09:30:00",
"2022-09-06T09:00:00",
"2022-09-06T09:30:00"
]
},
"tag_slugs": [
"alazanskaya-dolina",
"all",
"ekslkursii-v-kahetiyu",
"group",
"monastyr-bodbe",
"na-avtomobile",
"osenyu",
"sightseeing",
"signahi",
"special_offers",
"vinnye",
"vinodelni",
"weekend",
"zimoj"
]
}
...
],
"aggregations": {
"date": [
"2019-04-22T17:30:00",
"2019-10-19T00:00:00"
],
"price": {
"histogram_interval": 0.164,
"range": [
20.0,
720.0
],
"histogram": {
"20": 3,
"23": 2,
"27": 7,
"32": 7,
"37": 2,
"44": 11,
"52": 7,
"61": 10,
"72": 13,
"84": 17,
"99": 14,
"117": 38,
"138": 27,
"162": 18,
"191": 8,
"225": 16,
"265": 7,
"312": 4,
"367": 1,
"432": 1,
"509": 0,
"600": 2,
"707": 1
},
"persons_count": 1
},
"availability": {
"1": 216,
"2": 215,
"3": 213,
"4": 196,
"5": 173,
"6": 145,
"7": 98,
"8": 89,
"9": 59,
"10": 55
},
"tags": {
"all": 216,
"25": 61,
"193": 58,
"23": 40,
"310": 37,
"group": 30,
"194": 24,
"16": 20,
"18": 14,
"7641": 12,
"19": 10,
"special_offers": 10,
"7326": 9,
"21": 7,
"324": 7,
"6522": 7,
"3249": 2,
"311": 1,
"3248": 1
}
}
}
Описание ответа
Основные параметры
Параметр | Описание | Тип |
id | ID экскурсии в Трипстере | Число |
title | Название экскурсии | Строка |
tagline | Пояснение к названию для вывода в списке экскурсии | Строка |
url | Ссылка на страницу экскурсии на Трипстере (прочитайте про правила формирования ссылок) | Строка |
type | Тип экскурсии: private – индивидуальная, group – групповая | Строка |
instant_booking | Возможно ли моментальное бронирование экскурсии: true или false | Boolean |
schedule_type |
|
|
movement_type |
|
|
child_friendly | Подходит ли экскурсия детям: true или false | Boolean |
max_persons | Максимальное число участников экскурсии | Число |
duration | Продолжительность экскурсии в часах | Float |
meeting_point | Объект с данными о месте встречи | Объект |
meeting_point.text | Строка с описанием места встречи. Может быть пустой строкой "" | Строка |
finish_point |
|
|
finish_point.text |
|
|
price | Объект с данными о цене экскурсии (посмотрите на картинку с объяснением параметров) | Объект |
price.value | Цена экскурсии | Float |
price.currency | Валюта экскурсии, совпадает с валютой страны | Строка |
price.currency_rate |
|
|
price.price_from | Точная ли цена или это "цена от": false – точная, true – цена "от" | Boolean |
price.unit_string | Тип цены "за человека" или "за экскурсию" | Строка |
price.value_string | Сформированная строка с описанием цены экскурсии, по которой можно проверить понимание остальных параметров | Строка |
price.discount | Объект со скидкой на экскурсию, или null, если скидки нет | Объект |
price.discount.value | Размер скидки, "0.3" значит скидку 30% | Float |
price.discount.expiration_date | Дата окончания действия скидки, скидка предоставляется для всех заказов, сделанных до этой даты | Дата в формате YYYY-MM-DD |
price.discount.expiration_text | Подсказка о скором завершении действии скидки. Например, "еще 3 дня" | Строка |
price.discount.original_price | Оригинальная цена до скидки, чтобы показать ее зачеркнутой | Float |
review_count | Количество отзывов | Число |
rating | Рейтинг экскурсий от 0 до 5 | Float |
popularity | Индекс популярности, его можно использовать для самостоятельной сортировке экскурсий по популярности | Число |
city | Объект с данными о городе | Объект |
guide | Объект с данными о гиде | Объект |
tags | Список рубрик, к которым привязана экскурсия | Список |
schedule | Объект расписания экскурсии. Отображается, если передать параметр detailed=true | Объект |
schedule.text | Расписание экскурсии "ежедневно в 10:00". Отображается, если передать параметр detailed=true | Строка |
schedule.upcoming_events | Ближайшие свободные слоты на экскурсию. Отображается, если передать параметр neep_upcoming_events=true. | Список |
photos | Список фотографий экскурсии, первая в списке фотография – для использования в листинге экскурсий. Если передать параметр detailed=true, отобразятся все фотографии. Если detailed=false – только первая. | Список |
photos.thumbnail | Ссылка на картинку-превьюшку города размером 384x289px | Строка |
photos.medium | Ссылка на картинку-превьюшку города размером 800x600px | Строка |
links.reviews | Ссылка на api отзывов для данной экскурсии | Строка |
links.schedule | Ссылка на API расписания этой экскурсии | Строка |
geo |
|
|
geo.country | Список объектов стран, к которым привязана экскурсия | Список |
geo.city | Список объектов городов, к которым привязана экскурсия | Список |
tag_slugs | Список строковых идентификаторов рубрик, к которым привязана экскурсия | Список |
Дополнительные параметры
Aggregations, если передан need_aggregations=true, отдаёт дополнительные данные, которые можно использовать в фильтрах по дате, цене, количеству человек, рубрикам.
Параметр | Описание | Тип |
date | Массив из двух дат, в пределах которых возможен поиск экскурсий. Например, "date": [ "2019-04-22T17:30:00", "2019-10-19T00:00:00" ], | Массив дат в формате YYYY-MM-DDTHH:MM:SS |
price | Объект, содержащий информацию о цене | Объект |
price.range | Массив из двух дат, в пределах которых возможен поиск по ценам. | Массив Float |
price.histogram | Позволяет построить график цен на экскурсии в логарифмической шкале. Объект, содержащий пары ключ-значение (например, {"20": 3, "23": 2}). | Массив ключ (строка) значение (Float) |
price.histogram_interval | Вычисленный интервал для гистограммы | Float |
price.persons_count | Количество людей, для которых произведён подсчёт цен | Число |
availability | Позволяет узнать количество экскурсий в выдаче, если изменить количество человек в поиске. Объект, содержащий пары ключ-значение (например, {"1": 216, "2": 180}). | Массив ключ (строка) значение (Float) |
tags | Позволяет узнать количество экскурсий в выдаче при выборе другой рубрики. Объект, содержащий пары ключ-значение (например, {"all": 216, "25": 61, "group": 30}) | Массив ключ (строка) значение (Число) |
movement_type | Позволяет узнать количество экскурсий в рубрике по типу передвижения. Объект, содержащий пары ключ-значение (например, {"car": 173, "foot": 61, "other": 3}) | Массив ключ (строка) значение (Число) |
type | Количество экскурсий разного типа в рубрике. Объект, содержащий пары ключ-значение (например, {"private": 213, "group": 50, "tour": 6}) | Массив ключ (строка) значение (Число) |