MagputAPI для субагентов
API для агентской работы с продуктом туроператора «Магазин путешествий»
Resource Group ¶
GET ¶
Дерево разделов и точек маршрута
GETGET/TopicTree
Метод предоставляет доступ к структуре разделов и точек маршрута. Разделы сгруппированы по трем уровням вложенности. Для каждого раздела указаны id родительских разделов и массив индексов точек маршрута из программ раздела. Важно: значения массива CityIdxs это индексы точек маршрута в словаре Cities, а не их id! К примеру, в разделе “Однодневные экскурсии” в массиве CityIdxs есть значение 522. Ему соответствует город, идущий под 522 порядковым номером в массиве Cities: Cities[522] = {id: 833, name: “Муром”}
Example URI
200
Body
{
"Types": [
{
"Id": 8,
"Name": "Туры по России и Ближнему зарубежью",
"TypeId": 0,
"SubTypeId": 0,
"CityIdxs": [
404,
714,
101,
1179,
1079,
1176
]
}
],
"SubTypes": [
{
"Id": 8,
"Name": "Туры по России и Ближнему зарубежью",
"TypeId": 0,
"SubTypeId": 0,
"CityIdxs": [
404,
714,
101,
1179,
1079,
1176
]
}
],
"OptTypes": [
{
"Id": 8,
"Name": "Туры по России и Ближнему зарубежью",
"TypeId": 0,
"SubTypeId": 0,
"CityIdxs": [
404,
714,
101,
1179,
1079,
1176
]
}
],
"Cities": [
{
"Id": 1234,
"Name": "Владимир"
}
]
}
Schema
{
"type": "object",
"properties": {
"Types": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Id": {
"type": "number",
"description": "id раздела"
},
"Name": {
"type": "string",
"description": "имя раздела"
},
"TypeId": {
"type": "number",
"description": "id родительского раздела 1 уровня: 0 - текущий раздел сам является разделом 1 уровня"
},
"SubTypeId": {
"type": "number",
"description": "id родительского раздела 2 уровня: 0 - текущий раздел сам является разделом 2 уровня или выше"
},
"CityIdxs": {
"type": "array",
"items": {
"type": "number"
},
"description": "массив индексов городов: значение является порядковым номером в словаре городов Cities"
}
}
}
},
"SubTypes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Id": {
"type": "number",
"description": "id раздела"
},
"Name": {
"type": "string",
"description": "имя раздела"
},
"TypeId": {
"type": "number",
"description": "id родительского раздела 1 уровня: 0 - текущий раздел сам является разделом 1 уровня"
},
"SubTypeId": {
"type": "number",
"description": "id родительского раздела 2 уровня: 0 - текущий раздел сам является разделом 2 уровня или выше"
},
"CityIdxs": {
"type": "array",
"items": {
"type": "number"
},
"description": "массив индексов городов: значение является порядковым номером в словаре городов Cities"
}
}
}
},
"OptTypes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Id": {
"type": "number",
"description": "id раздела"
},
"Name": {
"type": "string",
"description": "имя раздела"
},
"TypeId": {
"type": "number",
"description": "id родительского раздела 1 уровня: 0 - текущий раздел сам является разделом 1 уровня"
},
"SubTypeId": {
"type": "number",
"description": "id родительского раздела 2 уровня: 0 - текущий раздел сам является разделом 2 уровня или выше"
},
"CityIdxs": {
"type": "array",
"items": {
"type": "number"
},
"description": "массив индексов городов: значение является порядковым номером в словаре городов Cities"
}
}
}
},
"Cities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Id": {
"type": "number",
"description": "id элемента"
},
"Name": {
"type": "string",
"description": "имя элемента"
}
}
}
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}
POST ¶
Поиск программ
POSTPOST/SearchPrograms?token=xxxyyyzzz
В место xxxyyyzzz следует подставлять свой приватный токен доступа к api (для получения обратитесь по email: agent@magput.ru). Метод предоставляет доступ к базе описаний программ. Ввиду большого объема предоставляемых данных выдача ограничена 50 элементами на запрос. Управление страницами выдачи осуществляется через параметры CurrentPage и ItemsPerPage. Атрибуты, фильтрация по которым не требуется, можно не передавать либо передавать в них null или пустой массив для массивов.
Example URI
Headers
Content-Type: application/json
Body
{
"CountOnly": false,
"ItemsPerPage": 5,
"CurrentPage": 0,
"Type": 10,
"SubType": -1,
"OptType": -1,
"CityName": "Владимир",
"ByCheckin": false,
"Checkin": "Hello, world!",
"ByRange": false,
"Range": 1,
"FilterDates": false,
"OnlyHits": false,
"OnlyNew": false,
"ProgramIds": [
1
],
"ProgramTypes": [
1
],
"ProgramTypesAndLogic": false,
"ExcludeTopics": [
1
],
"WithContentFull": true,
"UpdatedFromDate": "Hello, world!"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"CountOnly": {
"type": "boolean",
"description": "true - вывести только количество, без детализации"
},
"ItemsPerPage": {
"type": "number",
"description": "количество программ на страницу: максимум 500"
},
"CurrentPage": {
"type": "number",
"description": "текущая страница: нумерация с нуля"
},
"Type": {
"type": "number",
"description": "id раздела 1 уровня"
},
"SubType": {
"type": "number",
"description": "id раздела 2 уровня: -1 для всех"
},
"OptType": {
"type": "number",
"description": "id раздела 3 уровня: -1 для всех"
},
"CityName": {
"type": "string",
"description": "название точки маршрута"
},
"ByCheckin": {
"type": "boolean",
"description": "true для поиска по дате начала"
},
"Checkin": {
"type": [
"string",
"null"
],
"description": "дата начала для поиска по дате начала в формате \"дд.мм.гггг\""
},
"ByRange": {
"type": "boolean",
"description": "true для поиска по диапазону дат относительно даты начала"
},
"Range": {
"type": [
"number",
"null"
],
"description": "число дней \"плюс-минус\" от даты в поле Checkin"
},
"FilterDates": {
"type": "boolean",
"description": "true - оставить в описаниях только даты, попадающие в диапазон поиска"
},
"OnlyHits": {
"type": "boolean",
"description": "true - только \"хиты\""
},
"OnlyNew": {
"type": "boolean",
"description": "true - только \"новинки\""
},
"ProgramIds": {
"type": "array",
"description": "только программы с указанными id"
},
"ProgramTypes": {
"type": "array",
"description": "только программы с указанными тегами"
},
"ProgramTypesAndLogic": {
"type": "boolean",
"description": "true - у программы должны быть все теги, false - хотя бы один из тегов"
},
"ExcludeTopics": {
"type": "array",
"description": "исключить из поиска разделы с указанными id"
},
"WithContentFull": {
"type": "boolean",
"description": "true - передавать полное описание программы в поле Content.Full: значительно увеличивает объем ответа"
},
"UpdatedFromDate": {
"type": [
"string",
"null"
],
"description": "дата в формате \"дд.мм.гггг\": если указана, будут отданы только программы, созданные или обновленные позже нее"
}
},
"required": [
"CountOnly",
"ItemsPerPage",
"CurrentPage",
"Type",
"SubType",
"OptType"
]
}
200
Headers
Content-Type: application/json
Body
{
"Count": 4,
"CurrentPage": 0,
"ItemsPerPage": 5,
"Programs": [
{
"Id": 43,
"Name": "Красоты Владимира и Боголюбово",
"TopicId": 10,
"TopicIds": [
10,
2358
],
"TopicParentId": 8,
"Content": {
"Short": "Всемирно признанные белокаменные шедевры Владимира и сокровища великокняжеской резиденции Боголюбово",
"Full": "На этой экскурсии мы с вами посетим...",
"Duration": {
"Days": 1,
"Hours": 3,
"Minutes": 30
},
"CheckinAbout": "Заезд возможен в любые даты помимо указанных",
"PriceInc": "транспортное обслуживание, путевая информация",
"PriceAdd": "обед 350 руб",
"ProgramList": "<ul><li>Путевая информация.</li><li>Владимир: Осмотр и посещение памятников архитектуры XII века – Успенского и Дмитриевского соборов, Золотых ворот.</li></ul>",
"RequiredDocs": "Паспорт или свидетельство о рождении",
"Expenses": "Покупка входных билетов"
},
"Route": [
{
"Id": 829,
"Name": "Владимир",
"Order": 0
}
],
"Dates": [
{
"Date": "25.03.2018",
"IsStopSale": false
}
],
"PriceMin": {
"Brutto": 1870,
"BruttoSale": 0,
"Currency": "руб",
"BruttoInRoubles": 1870,
"BruttoSaleInRoubles": 0
},
"Prices": [
{
"HotelId": 123,
"HotelName": "Отель \"Атлантик\"",
"Date": "25.03.2018 07:45:00",
"EndDate": "25.03.2018",
"BruttoAdult": 1870,
"BruttoChild": 1870,
"Places": 7,
"StartPointId": 5,
"StartPoint": "ст.м.Шоссе Энтузиастов",
"GroupTypeId": 0,
"GroupType": "Hello, world!",
"AdditServs": [
{
"Name": "доплата за иностранного гражданина",
"Cost": 150
}
]
}
],
"MainPhoto": {
"Id": 7081,
"Url": "7081.JPG",
"Large": "/pics/large/7081.JPG",
"Thumb": "/pics/small/7081.JPG",
"Alt": "Золотые ворота Владимир",
"IsMain": true,
"Order": 0
},
"Photos": [
{
"Id": 7081,
"Url": "7081.JPG",
"Large": "/pics/large/7081.JPG",
"Thumb": "/pics/small/7081.JPG",
"Alt": "Золотые ворота Владимир",
"IsMain": true,
"Order": 0
}
],
"IsNew": false,
"IsHit": false
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"Count": {
"type": "number",
"description": "количество подходящих программ"
},
"CurrentPage": {
"type": "number",
"description": "текущая страница: нумерация с нуля"
},
"ItemsPerPage": {
"type": "number",
"description": "количество программ на страницу: максимум 500"
},
"Programs": {
"type": "array",
"description": "массив найденных программ"
}
}
}