Back to top

MagputAPI для субагентов

API для агентской работы с продуктом туроператора «Магазин путешествий»

Resource Group

GET

Дерево разделов и точек маршрута

GET
GET/TopicTree

Метод предоставляет доступ к структуре разделов и точек маршрута. Разделы сгруппированы по трем уровням вложенности. Для каждого раздела указаны id родительских разделов и массив индексов точек маршрута из программ раздела. Важно: значения массива CityIdxs это индексы точек маршрута в словаре Cities, а не их id! К примеру, в разделе “Однодневные экскурсии” в массиве CityIdxs есть значение 522. Ему соответствует город, идущий под 522 порядковым номером в массиве Cities: Cities[522] = {id: 833, name: “Муром”}

Example URI

GET https://magput.ru/api/agents/TopicTree
Response  200
HideShow
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

Поиск программ

POST
POST/SearchPrograms?token=xxxyyyzzz

В место xxxyyyzzz следует подставлять свой приватный токен доступа к api (для получения обратитесь по email: agent@magput.ru). Метод предоставляет доступ к базе описаний программ. Ввиду большого объема предоставляемых данных выдача ограничена 50 элементами на запрос. Управление страницами выдачи осуществляется через параметры CurrentPage и ItemsPerPage. Атрибуты, фильтрация по которым не требуется, можно не передавать либо передавать в них null или пустой массив для массивов.

Example URI

POST https://magput.ru/api/agents/SearchPrograms?token=xxxyyyzzz
Request
HideShow
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"
  ]
}
Response  200
HideShow
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 века &ndash; Успенского и Дмитриевского соборов, Золотых ворот.</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": "массив найденных программ"
    }
  }
}

Generated by aglio on 26 Apr 2022