Мастер-Тур(15):API для разработки онлайн поиска и бронирования — различия между версиями

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
Строка 549: Строка 549:
 
*** '''CountryId''' – ??? предположительно страна тура, но почему отображается ключ 0?
 
*** '''CountryId''' – ??? предположительно страна тура, но почему отображается ключ 0?
 
*** '''Services''' – услуги в туре
 
*** '''Services''' – услуги в туре
**** '''CityFrom''' – город отправления  
+
**** '''DepartureCity''' – город отправления  
*** '''''' –
+
***** '''Key''' – идентификатор города отправления
*** '''''' –
+
***** '''Value''' – название города отправления
 +
**** '''DepartureCountry''' –
 +
***** '''Key''' –
 +
***** '''Value''' –
 +
**** '''ArrivalCity''' –
 +
***** '''Key''' –
 +
***** '''Value''' –
 +
**** '''ArrivalCountry''' –
 +
***** '''Key''' –
 +
***** '''Value''' –
 +
**** '''DepartureAirport''' –
 +
***** '''Key''' –
 +
***** '''Value''' –
 +
**** '''ArrivalAirport''' –
 +
***** '''Key''' –
 +
***** '''Value''' –
 +
**** '''Airline''' –
 +
***** '''Key''' –
 +
***** '''Value''' –
 +
**** '''Aircraft''' –
 +
***** '''Key''' –
 +
***** '''Value''' –
 +
**** '''Flight''' –
 +
***** '''Key''' –
 +
***** '''Value''' –
 +
**** '''DepartureTime''' –
 +
**** '''ArrivalTime''' –
 +
**** '''EndDateTime''' –
 +
**** '''FlightDetails''' –
 +
***** '''Tariff''' –  
 +
****** '''Key''' –
 +
****** '''Code''' –
 +
****** '''Name''' –
 +
***** '''Cost''' –
 +
***** '''QuotaStatus''' –
 +
****** '''PlacesStatus''' –
 +
****** '''FreePlaces''' –
 +
****** '''TotalPlaces''' –
 +
***** '''PartnerId''' –
 +
***** '''ByPax''' –
 +
***** '''Partner''' –
 +
****** '''Key''' –
 +
****** '''Value''' –
 +
**** '''FlightSetting''' –
 +
***** '''ServiceId''' –
 +
***** '''PatternId''' –
 +
***** '''FlightId''' –
 +
**** '''FlightSourceMode''' –
 +
**** '''Id''' –
 +
**** '''SvKey''' –
 +
**** '''IsSubCode1''' –
 +
**** '''IsSubCode2''' –
 +
**** '''IsPartnerBasedOn''' –
 +
**** '''Day''' –
 +
**** '''DurationInNight''' –
 +
**** '''BeginDateTime''' –
 +
**** '''IsHooded''' –
 +
**** '''IsDeleted''' –
 +
**** '''IsNotCalculate''' –
 +
**** '''PacketId''' –
 +
**** '''Index''' –  
 
** '''''' –
 
** '''''' –
 
** '''''' –
 
** '''''' –
Строка 557: Строка 617:
 
** '''''' –
 
** '''''' –
  
      "CountryId": 0,
+
        "CountryId": 0,
      "Services":       [
+
        "Services":         [
                  {
+
 
            "CityFrom":             {
+
 
               "Key": 312,
+
              "BeginDateTime": "2018-02-25T10:00:00",
               "Value": "Астрахань"
+
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
               "IsNotCalculate": false,
 +
               "PacketId": 779,
 +
              "Index": 0
 
             },
 
             },
            "CountryFrom":            {
+
                        {
               "Key": 460,
+
               "Hotel":                {
               "Value": "Россия"
+
                  "Key": 709,
            },
+
                  "Value": "Am Brilliantengrund"
            "CityTo":            {
+
               },
              "Key": 275,
+
               "City":                {
              "Value": "Арльберг"
+
                   "Key": 35,
            },
+
                   "Value": "Вена"
            "CountryTo":            {
 
              "Key": 90,
 
              "Value": "Австрия"
 
            },
 
            "BusTransfer":            {
 
              "Key": 1316,
 
               "Value": "Переезд 2_"
 
            },
 
            "Days": 2,
 
            "TimeFrom": "10:30:00",
 
            "TimeTo": "18:24:00",
 
            "BusTransferDetails": [            {
 
               "Transport":                {
 
                   "Key": 39,
 
                   "Value": "Car"
 
 
               },
 
               },
               "IsShowTransportPlan": true,
+
               "Stars":                {
              "Cost": 145.56,
+
                   "Key": -1,
              "QuotaStatus":                {
+
                   "Value": null
                   "PlacesStatus": 4,
 
                  "FreePlaces": 0,
 
                   "TotalPlaces": 0
 
 
               },
 
               },
               "PartnerId": 12662,
+
               "Resort":                {
              "ByPax": true,
+
                   "Key": -1,
              "Partner":                {
 
                   "Key": 0,
 
 
                   "Value": null
 
                   "Value": null
               }
+
               },
            }],
+
              "ImageURL": "",
            "Id": 8,
+
              "Http": null,
            "SvKey": 14,
+
              "Description": "",
            "IsSubCode1": true,
+
              "Country":                {
            "IsSubCode2": true,
+
                  "Key": 90,
            "IsPartnerBasedOn": false,
+
                  "Value": "Австрия"
            "Day": 1,
+
              },
            "DurationInNight": 1,
+
              "HotelDetails": [              {
            "BeginDateTime": "2018-02-25T10:30:00",
+
                  "HotelRoom": 46463,
            "EndDateTime": "2018-02-26T18:24:00",
+
                  "Room":                  {
            "IsHooded": false,
+
                    "Key": 129,
            "IsDeleted": false,
+
                    "Value": "DBL"
            "IsNotCalculate": false,
+
                  },
            "PacketId": 779,
+
                  "RoomCategory":                  {
            "Index": 0
+
                    "Key": 3493,
        },
+
                    "Value": "Cosy"
                  {
+
                  },
            "Hotel":            {
+
                  "AccomodationType":                  {
              "Key": 178,
+
                    "Key": 1256,
              "Value": "Ananas"
+
                    "Value": "2+1_K",
 +
                    "AdultCount": 2,
 +
                    "ChildCount": 1
 +
                  },
 +
                  "Pansion":                  {
 +
                    "Key": 4,
 +
                    "Value": "Завтрак"
 +
                  },
 +
                  "Cost": 58.22,
 +
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 4,
 +
                    "FreePlaces": 0,
 +
                    "TotalPlaces": 0
 +
                  },
 +
                  "PartnerId": 12667,
 +
                  "ByPax": false,
 +
                  "Partner":                  {
 +
                    "Key": 12667,
 +
                    "Value": "Партнер-покупатель1"
 +
                  }
 +
              }],
 +
              "HotelTypes": [              {
 +
                  "Key": 5,
 +
                  "Value": "Рекомендуемые"
 +
              }],
 +
              "Id": 1,
 +
              "SvKey": 3,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": true,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 1,
 +
              "DurationInNight": 9,
 +
              "BeginDateTime": "2018-02-25T12:00:00",
 +
              "EndDateTime": "2018-03-06T12:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
              "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 1
 
             },
 
             },
            "City":             {
+
                        {
              "Key": 35,
+
              "DepartureCity":               {
              "Value": "Вена"
+
                  "Key": 35,
            },
+
                  "Value": "Вена"
            "Stars":             {
+
              },
              "Key": 56,
+
              "DepartureCountry":               {
              "Value": "2*"
+
                  "Key": 90,
            },
+
                  "Value": "Австрия"
            "Resort":             {
+
              },
              "Key": -1,
+
              "ArrivalCity":               {
              "Value": null
+
                  "Key": 1,
            },
+
                  "Value": "Москва"
            "ImageURL": "",
+
               },
            "Http": "http://booking.panteon.ru/TourPrograms/Home/Tour/?tourKey=100000007",
+
               "ArrivalCountry":                {
            "Description": "",
+
                   "Key": 460,
            "Country":            {
+
                   "Value": "Россия"
              "Key": 90,
 
               "Value": "Австрия"
 
            },
 
            "HotelDetails": [            {
 
              "HotelRoom": 46462,
 
               "Room":                {
 
                   "Key": 2,
 
                   "Value": "Double"
 
 
               },
 
               },
               "RoomCategory":                {
+
               "DepartureAirport":                {
                   "Key": 4129,
+
                   "Key": "VIE1",
                   "Value": "Cottage Premier Deluxe"
+
                   "Value": "Vena1"
 
               },
 
               },
               "AccomodationType":                {
+
               "ArrivalAirport":                {
                   "Key": 1256,
+
                   "Key": "DME",
                  "Value": "2+1_K",
+
                   "Value": "Домодедово"
                   "AdultCount": 2,
 
                  "ChildCount": 1
 
 
               },
 
               },
               "Pansion":                {
+
               "Airline":                {
                   "Key": 4,
+
                   "Key": "7U",
                   "Value": "Завтрак"
+
                   "Value": "Авиаэнерго"
 
               },
 
               },
               "Cost": 194.08,
+
               "Aircraft":                {
              "QuotaStatus":                {
+
                   "Key": "727",
                   "PlacesStatus": 4,
+
                   "Value": "Boeing"
                   "FreePlaces": 0,
 
                  "TotalPlaces": 0
 
 
               },
 
               },
               "PartnerId": 12667,
+
               "Flight":                {
              "ByPax": true,
+
                   "Key": 774,
               "Partner":                {
+
                   "Value": "222"
                  "Key": 12667,
 
                  "Value": "Партнер-покупатель1"
 
              }
 
            }],
 
            "HotelTypes":            [
 
                              {
 
                   "Key": 93,
 
                   "Value": "Best choice"
 
 
               },
 
               },
                              {
+
              "DepartureTime": "00:00:00",
                   "Key": 166,
+
              "ArrivalTime": "00:00:00",
                   "Value": "Майские праздники"
+
              "EndDateTime": "2018-03-06T00:00:00",
 +
              "FlightDetails": [              {
 +
                   "Tariff":                  {
 +
                    "Key": 89,
 +
                    "Code": "Y",
 +
                    "Name": "Экономический класс"
 +
                  },
 +
                  "Cost": 0,
 +
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 4,
 +
                    "FreePlaces": 0,
 +
                    "TotalPlaces": 0
 +
                  },
 +
                   "PartnerId": 10760,
 +
                  "ByPax": true,
 +
                  "Partner":                  {
 +
                    "Key": 0,
 +
                    "Value": null
 +
                  }
 +
              }],
 +
              "FlightSetting":                {
 +
                  "ServiceId": 4,
 +
                  "PatternId": 5,
 +
                  "FlightId": 4
 
               },
 
               },
                              {
+
              "FlightSourceMode": 1,
                   "Key": 94,
+
              "Id": 4,
                   "Value": "Молодежный отдых"
+
              "SvKey": 1,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": false,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 10,
 +
              "DurationInNight": 0,
 +
              "BeginDateTime": "2018-03-06T00:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
              "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 4
 +
            }
 +
        ],
 +
        "NotRouteServices":          [
 +
            [            {
 +
              "ServiceName": "страховка",
 +
              "City": null,
 +
              "Country": 6245,
 +
              "Code":                {
 +
                   "Key": 297,
 +
                   "Value": "Страховка от несчастного случая"
 
               },
 
               },
                              {
+
              "ByScheduler": false,
                   "Key": 5,
+
              "Details": [              {
                   "Value": "Рекомендуемые"
+
                  "SubCode1":                  {
 +
                    "Key": 18,
 +
                    "Value": "2"
 +
                  },
 +
                  "SubCode2":                  {
 +
                    "Key": null,
 +
                    "Value": ""
 +
                  },
 +
                  "Date": null,
 +
                  "IsShowTransportPlan": true,
 +
                  "Cost": 970.4,
 +
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 1,
 +
                    "FreePlaces": 0,
 +
                    "TotalPlaces": 0
 +
                  },
 +
                  "PartnerId": 12668,
 +
                  "ByPax": true,
 +
                  "Partner":                  {
 +
                    "Key": 0,
 +
                    "Value": null
 +
                  }
 +
              }],
 +
              "ParentId": null,
 +
              "PartnerBasedOnServiceTemplateId": null,
 +
              "Id": 10,
 +
              "SvKey": 6,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": true,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 1,
 +
              "DurationInNight": 9,
 +
              "BeginDateTime": "2018-02-25T00:00:00",
 +
              "EndDateTime": "2018-03-06T00:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": true,
 +
              "IsNotCalculate": true,
 +
              "PacketId": 882,
 +
              "Index": 2
 +
            }],
 +
            [            {
 +
              "ServiceName": "экскурсия",
 +
              "City":                {
 +
                   "Key": 1046,
 +
                   "Value": "Санто-Доминго"
 
               },
 
               },
                              {
+
              "Country": 6245,
                   "Key": 201,
+
              "Code":                {
                   "Value": "222"
+
                   "Key": 743,
 +
                   "Value": "4"
 
               },
 
               },
                              {
+
              "ByScheduler": false,
                   "Key": 206,
+
              "Details": [              {
                   "Value": "Нпа новый улучшенный"
+
                   "SubCode1":                  {
 +
                    "Key": 37,
 +
                    "Value": "Мини-автобус 10 чел."
 +
                  },
 +
                   "SubCode2":                  {
 +
                    "Key": null,
 +
                    "Value": ""
 +
                  },
 +
                  "Date": null,
 +
                  "IsShowTransportPlan": false,
 +
                  "Cost": 84.91,
 +
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 1,
 +
                    "FreePlaces": 0,
 +
                    "TotalPlaces": 0
 +
                  },
 +
                  "PartnerId": 12667,
 +
                  "ByPax": true,
 +
                  "Partner":                  {
 +
                    "Key": 0,
 +
                    "Value": null
 +
                  }
 +
              }],
 +
              "ParentId": null,
 +
              "PartnerBasedOnServiceTemplateId": null,
 +
              "Id": 7,
 +
              "SvKey": 4,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": false,
 +
              "IsPartnerBasedOn": true,
 +
              "Day": 1,
 +
              "DurationInNight": 0,
 +
              "BeginDateTime": "2018-02-25T00:00:00",
 +
              "EndDateTime": "2018-02-26T00:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": true,
 +
              "IsNotCalculate": true,
 +
              "PacketId": 779,
 +
              "Index": 3
 +
            }]
 +
        ],
 +
        "MinCostServicesComposition":          [
 +
                        {
 +
              "Key":                {
 +
                  "TemplateId": 3,
 +
                  "PatternId": 13,
 +
                  "SettingId": 13
 
               },
 
               },
                              {
+
              "Value":                {
                   "Key": 200,
+
                   "Cost": 240,
                   "Value": "Новый который лучший"
+
                  "ServiceType": 1,
 +
                  "Code": 882,
 +
                  "SubCode1": 89,
 +
                  "SubCode2": 1,
 +
                  "PacketId": 779,
 +
                  "PartnerId": 12668,
 +
                  "CountryId": 90,
 +
                  "CityId": 35,
 +
                  "Day": 1,
 +
                  "DurationInNight": 0
 +
              }
 +
            },
 +
                        {
 +
              "Key":               {
 +
                  "TemplateId": 1,
 +
                   "PatternId": 0,
 +
                  "SettingId": 0
 
               },
 
               },
                              {
+
              "Value":                {
                   "Key": 177,
+
                   "Cost": 58.22,
                   "Value": "Хитрый отель: работает как хочет"
+
                  "ServiceType": 3,
 +
                  "Code": 709,
 +
                  "SubCode1": 46463,
 +
                  "SubCode2": 4,
 +
                  "PacketId": 779,
 +
                  "PartnerId": 12667,
 +
                  "CountryId": 90,
 +
                   "CityId": 35,
 +
                  "Day": 1,
 +
                  "DurationInNight": 9
 
               }
 
               }
            ],
 
            "Id": 1,
 
            "SvKey": 3,
 
            "IsSubCode1": true,
 
            "IsSubCode2": true,
 
            "IsPartnerBasedOn": false,
 
            "Day": 2,
 
            "DurationInNight": 8,
 
            "BeginDateTime": "2018-02-26T18:24:00",
 
            "EndDateTime": "2018-03-06T18:24:00",
 
            "IsHooded": false,
 
            "IsDeleted": false,
 
            "IsNotCalculate": false,
 
            "PacketId": 779,
 
            "Index": 1
 
        }
 
      ],
 
      "NotRouteServices": [],
 
      "MinCostServicesComposition":      [
 
                  {
 
            "Key":            {
 
              "TemplateId": 8,
 
              "PatternId": 0,
 
              "SettingId": 0
 
 
             },
 
             },
            "Value":             {
+
                        {
              "Cost": 145.56,
+
              "Key":                {
              "ServiceType": 14,
+
                  "TemplateId": 4,
              "Code": 1316,
+
                  "PatternId": 5,
              "SubCode1": 312,
+
                  "SettingId": 4
              "SubCode2": 39,
+
              },
              "PacketId": 779,
+
              "Value":               {
              "PartnerId": 12662,
+
                  "Cost": 0,
              "CountryId": 90,
+
                  "ServiceType": 1,
              "CityId": 275,
+
                  "Code": 774,
              "Day": 1,
+
                  "SubCode1": 89,
              "DurationInNight": 1
+
                  "SubCode2": 35,
 +
                  "PacketId": 779,
 +
                  "PartnerId": 10760,
 +
                  "CountryId": 460,
 +
                  "CityId": 1,
 +
                  "Day": 10,
 +
                  "DurationInNight": 0
 +
              }
 
             }
 
             }
         },
+
         ],
                  {
+
        "FlightWeight": 2,
             "Key":            {
+
        "LinkingFlightsRules":          {
               "TemplateId": 1,
+
            "notCombineDifferentAirlineRule":            {
               "PatternId": 0,
+
              "airlines": ["AY2"],
               "SettingId": 0
+
              "flightSettings": [],
 +
              "enabled": true
 +
            },
 +
            "checkPlusMinus1CharterRule":            {
 +
              "FlightSettingPairs": [],
 +
              "enabled": false
 +
            },
 +
            "notCombineDifferentTariffGroupRule":            {
 +
              "FlightSettings": [],
 +
              "enabled": true
 +
            },
 +
             "notCombineDifferentPartnerRule":            {
 +
               "FlightSettings": [],
 +
              "enabled": false
 +
            },
 +
            "departureCityEqualsArrivalCityRule":            {
 +
               "FlightSettingPairs": [],
 +
               "enabled": false
 
             },
 
             },
             "Value":            {
+
             "combineOnlySpecificChartersRule":            {
               "Cost": 194.08,
+
               "settings": [],
               "ServiceType": 3,
+
               "enabled": false
              "Code": 178,
 
              "SubCode1": 46462,
 
              "SubCode2": 4,
 
              "PacketId": 779,
 
              "PartnerId": 12667,
 
              "CountryId": 90,
 
              "CityId": 35,
 
              "Day": 2,
 
              "DurationInNight": 8
 
 
             }
 
             }
        }
 
      ],
 
      "FlightWeight": 0,
 
      "LinkingFlightsRules":      {
 
        "notCombineDifferentAirlineRule":          {
 
            "airlines": [],
 
            "flightSettings": [],
 
            "enabled": false
 
        },
 
        "checkPlusMinus1CharterRule":          {
 
            "FlightSettingPairs": [],
 
            "enabled": false
 
        },
 
        "notCombineDifferentTariffGroupRule":          {
 
            "FlightSettings": [],
 
            "enabled": true
 
        },
 
        "notCombineDifferentPartnerRule":          {
 
            "FlightSettings": [],
 
            "enabled": false
 
        },
 
        "departureCityEqualsArrivalCityRule":          {
 
            "FlightSettingPairs": [],
 
            "enabled": false
 
 
         },
 
         },
         "combineOnlySpecificChartersRule":          {
+
         "RouteSubVariants": []
            "settings": [],
+
       }],
            "enabled": false
 
        }
 
       },
 
      "RouteSubVariants": []
 
  }],
 
 
   "SecondaryFiltersResult":    {
 
   "SecondaryFiltersResult":    {
 
       "TourTypes": [      {
 
       "TourTypes": [      {

Версия 08:30, 22 февраля 2018

Статья находится на стадии разработки.

Версия статьи от 22-02-2018.

Поддерживаемые версии ПК «Мастер-Тур»:
Начиная с 15 версии


Введение

Данный web-сервис разработан для разработки собственного сайта туроператору на основе API.

Установка

Для работы с web-сервисом необходимо установить службу поиска.
После установки web-сервис будет доступен по адресу http://значение настройки "serviceAddress" в TourSearchOwin/"название метода" (пример: http://localhost:9000/TourSearchOwin/Settings)

Список методов

Выгрузка настроек службы поиска (Settings)

Метод производит выгрузку настроек службы поиска.

  • Формат запроса:
    • .../TourSearchOwin/Settings?
  • Принимаемые параметры:
    • нет принимаемых параметров
  • Возвращаемый результат:
    • ChildAgesSetting – регулируется настройкой максимальный возраст ребенка (массив возрастов, при которых турист будет считаться ребенком
    • DurationSetting – регулируется настройкой максимальная продолжительность тура (массив продолжительностей, доступных в фильтрах для поиска)
    • RoundServiceSetting – признак округления цены (количество знаков после запятой)
    • CacheReady – статус готовности службы поиска к работе (true/false)
    • EnableFiterTree – устаревшая настройка, будет убрана (по умолчанию всегда false)
    • EnableActualFilters – включены ли актуальные фильтры (true/false)
    • CorrectLicense – проверка лицензии (true/false)
    • CorrectLicenseMessage – сообщение, если проверка лицензии не прошла
    • IsCorrectUser – проверка наличия пользователя в таблице Userlist, под которым запущена служба поиска (true/false)
    • IsShowCitizenAuthTourist – настройка запрашивать гражданство при регистрации частного лица (true/false)
    • IsShowFewCountPlaces – настройка отображения числового значения оставшихся мест, когда достигнуто значение «Мало» (true/false)
    • IsShowBusTransferPlaces – использовать фильтр наличие мест на автобусный переезд в поиске (true/false)
    • UseBusSeatChecks – план рассадки автобусного переезда (0 – не отображать, 1 – отображать без проверки, 2 – отображать с проверкой)
    • UseTransferSeatChecks – план рассадки трансфера (0 – не отображать, 1 – отображать без проверки, 2 – отображать с проверкой)
    • IsShowFiltersByCity – отображать фильтр по городам на главной странице поиска (true/false)
    • CheckRealCourses – включена ли проверка курсов реальных валют при поиске (true/false)
    • CommonImagesFolderPath – путь к папке для хранения изображений
    • UseApplyFiltersButton – отображать кнопку «Применить фильтры» (true/false)
    • AutoSearchFiltersTimeout – задержка между выбором дополнительных фильтров и выводом результатов (в секундах)
    • UseFastSearchAlgoritm – использовать быстрый алгоритм поиска (true/false)
    • MaxSearchDatesCountClient – максимальное количество дат, которое будет обрабатываться в клиенте поиска
    • MaxDurationsCountClient – максимальное количество продолжительностей, которое будет обрабатываться в клиенте поиска
Пример

Вызов метода Settings

http://localhost:9000/TourSearchOwin/Settings

Возвращаемый результат метода Settings (в формате JSON)

{
   "ChildAgesSetting":    [
      1, 
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      11,
      12,
      13,
      14,
      15,
      16
   ],
   "DurationSetting":    [
      1,
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      11,
      12,
      13,
      14,
      15,
      16,
      17,
      18,
      19,
      20
   ],
   "RoundServiceSetting": 2,
   "CacheReady": true,
   "EnableFiterTree": false,
   "EnableActualFilters": true,
   "CorrectLicense": true,
   "CorrectLicenseMessage": "0deb1f882da1ec6301c961780507a180",
   "IsCorrectUser": true,
   "IsShowCitizenAuthTourist": true,
   "IsShowFewCountPlaces": true,
   "IsShowBusTransferPlaces": true,
   "UseBusSeatChecks": 1,
   "UseTransferSeatChecks": 2,
   "IsShowFiltersByCity": true,
   "CheckRealCourses": true,
   "CommonImagesFolderPath": "\\\\server\\Icons",
   "UseApplyFiltersButton": false,
   "AutoSearchFiltersTimeout": 1,
   "UseFastSearchAlgoritm": true,
   "MaxSearchDatesCountClient": 10,
   "MaxDurationsCountClient": 14
}


Выгрузка списка валют (Currency)

Метод возвращает список используемых валют.

  • Формат запроса:
    • .../TourSearchOwin/Currency
  • Принимаемые параметры:
    • нет принимаемых параметров
  • Возвращаемый результат:
    • Code – код валюты
    • Name – наименование валюты
    • IsMain – признак валюты «Главная»
    • IsNational – признак валюты «Национальная»
    • IsoCode – ISO код валюты
    • Key – идентификатор валюты
    • IsShowInSearch – признак показывать ли валюту в поиске
Пример

Вызов метода Currency

http://localhost:9000/TourSearchOwin/Currency

Возвращаемый результат метода Currency (в формате JSON)

[
      {
      "Code": "EU",
      "Name": "Euro",
      "IsMain": false,
      "IsNational": false,
      "IsoCode": "EUR",
      "Key": 2,
      "IsShowInSearch": true
   },
      {
      "Code": "рб",
      "Name": "Рубль",
      "IsMain": false,
      "IsNational": true,
      "IsoCode": "RUR",
      "Key": 14,
      "IsShowInSearch": true
   },
      {
      "Code": "$",
      "Name": "US Dollar",
      "IsMain": true,
      "IsNational": false,
      "IsoCode": "USD",
      "Key": 1,
      "IsShowInSearch": true
   }
]


Выгрузка квотируемых услуг системы (QuotedServices)

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

  • Формат запроса:
    • .../TourSearchOwin/QuotedServices
  • Принимаемые параметры:
    • нет принимаемых параметров
  • Возвращаемый результат:
    • Key – идентификатор услуги
    • Code – код услуги
    • Name – наименование услуги (русский)
    • NameLat – наименование услуги (английский)
    • IsDuration – наличие продолжительности у услуги
    • IsCity – наличие города у услуги
    • IsSubCode1 – признак наличия SubCode1 у услуги (вид проживания у отеля, тариф у авиаперелета)
    • IsSubCode2 – признак наличия SubCode2 у услуги (тип питания у отеля)
    • Quoted – признак квотируемости услуги
    • CheckGeoPoint – наличие геоточек у услуги
    • IsRoute – признак маршрутной услуги
    • LittlePercent – число в %, при которых будет считаться количество мест «Мало»
    • LittlePlace – число, при котором будет считаться количество мест «Мало»
    • LittleAnd – признак наличия мест «Мало» – будем ли учитывать количество мест вместе с процентным соотношением между общим и оставшимся количеством мест
    • IsPartnerBasedOn – признак сопоставления партнера услуги в зависимости от отеля
    • Control – идентификатор статуса услуги
Пример

Вызов метода QuotedServices

http://localhost:9000/TourSearchOwin/QuotedServices

Возвращаемый результат метода QuotedServices (в формате JSON)

[
      {
      "Key": 1,
      "Code": "А_П",
      "Name": "Авиаперелет",
      "NameLat": "Flight",
      "IsDuration": false,
      "IsCity": true,
      "IsSubCode1": true,
      "IsSubCode2": false,
      "Quoted": true,
      "CheckGeoPoint": true,
      "IsRoute": true,
      "LittlePercent": null,
      "LittlePlace": 10,
      "LittleAnd": true,
      "IsPartnerBasedOn": false,
      "Control": 1
   },
      {
      "Key": 3,
      "Code": "HOTEL",
      "Name": "Отель/Круиз",
      "NameLat": "Hotel/Cruise",
      "IsDuration": true,
      "IsCity": true,
      "IsSubCode1": true,
      "IsSubCode2": true,
      "Quoted": true,
      "CheckGeoPoint": true,
      "IsRoute": true,
      "LittlePercent": 99,
      "LittlePlace": 5,
      "LittleAnd": false,
      "IsPartnerBasedOn": false,
      "Control": 1
   }
]


Выгрузка городов отправления (departureCities)

Метод производит выгрузку всех доступных городов отправления для поискового запроса.

  • Формат запроса:
    • .../TourSearchOwin/departureCities?
  • Принимаемые параметры:
    • нет принимаемых параметров
  • Возвращаемый результат:
    • Key – идентификатор города
    • Name – название города
Пример

Вызов метода departureCities

http://localhost:9000/TourSearchOwin/departureCities

Возвращаемый результат метода departureCities (в формате JSON)

[
      {
      "Key": -1,
      "Name": "Без перелета"
   },
      {
      "Key": 312,
      "Name": "Астрахань"
   },
      {
      "Key": 1,
      "Name": "Москва"
   }
]


Выгрузка списка стран (Destination)

Метод производит выгрузку всех доступных направлений туроператора.

  • Формат запроса:
    • .../TourSearchOwin/Destination?
  • Принимаемые параметры ( * – обязательный):
    • pageNumber – номер страницы ???
    • term * – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
    • showAll – ??? (true/false)
    • departureCities * – идентификатор города отправления (из контроллера .../TourSearchOwin/departureCities?)
  • Возвращаемый результат:
    • Name – название страны
    • Key – идентификатор страны
    • DestinationType – ??? (всегда возвращается в JSON = 1, в xml = country)
Пример

Вызов метода Destination

http://localhost:9000/TourSearchOwin/Destination?pageNumber=1&term=&showAll=false&departureCities=1

Возвращаемый результат метода Destination (в формате JSON)

[
      {
      "Name": "Болгария",
      "Key": 359,
      "DestinationType": 1
   },
      {
      "Name": "Индия",
      "Key": 26,
      "DestinationType": 1
   },
      {
      "Name": "Финляндия",
      "Key": 64,
      "DestinationType": 1
   }
]


Выгрузка списка городов (ActualizeCities)

Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.

  • Формат запроса:
    • .../TourSearchOwin/ActualizeCities?
  • Принимаемые параметры ( * – обязательный):
    • cityKeys * – идентификатор города отправления (полученный из метода .../TourSearchOwin/departureCities?)
    • Key * – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
    • Name * – название страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
    • term * – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
  • Возвращаемый результат:
    • Key – идентификатор города
    • Name – название города
Пример

Вызов метода ActualizeCities

http://localhost:9000/TourSearchOwin/ActualizeCities?cityKeys=1&Key=90&Name=Австрия&term=

Возвращаемый результат метода ActualizeCities (в формате JSON)

[
      {
      "Key": -1,
      "Name": "Все"
   },
      {
      "Key": 35,
      "Name": "Вена"
   },
      {
      "Key": 440,
      "Name": "Зельден"
   }
]


Выгрузка типов туров (ActualizeTourType)

Метод возвращает список типов туров по определенному городу отправления, стране и городу прибытия.

  • Формат запроса:
    • .../TourSearchOwin/ActualizeTourType?
  • Принимаемые параметры ( * – обязательный):
    • departureCityKeys * – идентификатор города отправления (полученный из метода .../TourSearchOwin/departureCities?)
    • Key * – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
    • Name * – название страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
    • Type * – ??? (по умолчанию всегда 1)
    • destinationCity * – идентификатор города прибытия (полученный из метода .../TourSearchOwin/ActualizeCities?), по умолчанию передается -1, то есть все города в рамках данной страны
    • term * – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
  • Возвращаемый результат:
    • Key – идентификатор типа тура
    • Name – название типа тура
    • ParentId – идентификатор группы, к которой относится данный типа тура (если тип тура не относится к группе, то возвращается null)
Пример

Вызов метода ActualizeTourType

http://localhost:9000/TourSearchOwin/ActualizeTourType?departureCityKeys=1&Key=90&Name=Австрия&Type=1&destinationCity=-1&terms=

Возвращаемый результат метода ActualizeTourType (в формате JSON)

[
      {
      "Key": -1,
      "Name": "Все",
      "ParentId": null
   },
      {
      "Key": 2,
      "Name": "Стандартный тур",
      "ParentId": null
   },
      {
      "Key": 16,
      "Name": "Экскурсионный тур",
      "ParentId": 35
   }
]


Выгрузка актуальных дат заездов (TourDate)

Метод производит выгрузку доступных дат заездов для поискового запроса.

  • Формат запроса:
    • .../TourSearchOwin/TourDate?
  • Принимаемые параметры ( * – обязательный):
    • departureCity * – идентификатор города отправления (полученный из метода .../TourSearchOwin/departureCities?)
    • destinationCity * – идентификатор города прибытия (полученный из метода .../TourSearchOwin/ActualizeCities?), по умолчанию передается -1, то есть все города в рамках данной страны
    • Key * – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
    • Name * – название страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
    • Type * – ??? (по умолчанию всегда 1)
    • tourTypes * – идентификатор типа тура (полученный из метода .../TourSearchOwin/ActualizeTourType?), по умолчанию передается -1, то есть все типы тура в рамках данной страны
    • term * – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
  • Возвращаемый результат:
    • массив дат
Пример

Вызов метода TourDate

http://localhost:9000/TourSearchOwin/TourDate?departureCity=1&destinationCity=-1&Key=90&Name=Австрия&Type=1&tourTypes=-1&term=

Возвращаемый результат метода TourDate (в формате JSON)

[
   "21.02.2018",
   "22.02.2018",
   "23.02.2018",
   "24.02.2018",
   "25.02.2018",
   "26.02.2018",
   "27.02.2018",
   "28.02.2018"
]


Выгрузка актуальных продолжительностей (Duration)

Метод производит выгрузку доступных продолжительностей для поискового запроса.

  • Формат запроса:
    • .../TourSearchOwin/Duration?
  • Принимаемые параметры ( * – обязательный):
    • departureCity * – идентификатор города отправления (полученный из метода .../TourSearchOwin/departureCities?)
    • destinationCity * – идентификатор города прибытия (полученный из метода .../TourSearchOwin/ActualizeCities?), по умолчанию передается -1, то есть все города в рамках данной страны
    • Key * – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
    • Name * – название страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
    • Type * – ??? (по умолчанию всегда 1)
    • tourDate * – дата(ы) заезда (полученные из метода .../TourSearchOwin/TourDate?)
    • tourTypes * – идентификатор типа тура (полученный из метода .../TourSearchOwin/ActualizeTourType?), по умолчанию передается -1, то есть все типы тура в рамках данной страны
    • term * – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
  • Возвращаемый результат:
    • массив продолжительностей
Пример

Вызов метода Duration

http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1&Key=90&Name=Австрия&Type=1&tourDate=25.02.2018,26.02.2018&tourTypes=-1&term=

Возвращаемый результат метода Duration (в формате JSON)

[
   7,
   8,
   10,
   12,
   15,
   18
]


Поиск туров (Tour)

Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены.

  • Формат запроса:
    • .../TourSearchOwin/Tour?
  • Принимаемые параметры ( * – обязательный):
    • DepartureCityKeys * – идентификатор города отправления (полученный из метода .../TourSearchOwin/departureCities?)
    • Dates * – ??? как передать 2 даты? дата(ы) заезда (полученные из метода .../TourSearchOwin/TourDate?)
    • Durations * – ??? как передать 2 продолжительности? продолжительности тура в днях (полученные из метода .../TourSearchOwin/Duration?)
    • PageNumber * – ??? (возвращается 1)
    • PageSize * – количество возвращаемых результатов на одной странице (возвращается 20)
    • HotelScheme – ??? (пустой по умолчанию)
    • TourKey – ??? (пустой по умолчанию)
    • TourDuration – ? (пустой по умолчанию)
    • isFromBasket – происходит ли обращение из корзины или из поиска туров (true/false)
    • isFillSecondaryFilters – ??? (true/false)
    • DestinationType – ??? (1)
    • DestinationKey – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
    • AdultCount – количество взрослых
    • ChildAges – возраст детей ??? (описать, как будут передаваться двое детей)
    • CurrencyName – код валюты
    • AviaQuota – информация о квотах на авиаперелет (5) ??? расписать что означает каждый из цифр
    • HotelQuota – информация о квотах на отель (5) ??? расписать что означает каждый из цифр
    • BusTransferQuota – информация о квотах на автобусный переезд (5) ??? расписать что означает каждый из цифр
    • MinPrice – минимальная цена ??? (NaN)
    • TourType – идентификатор типа тура (полученный из метода .../TourSearchOwin/ActualizeTourType?), по умолчанию передается -1, то есть все типы тура в рамках данной страны. Возможна множественная передача параметров.
    • CityIds – идентификатор города прибытия (полученный из метода .../TourSearchOwin/ActualizeCities?), по умолчанию передается -1, то есть все города в рамках данной страны. Возможна множественная передача параметров.
    • TimeDepartureFrom – время отправления с (всегда возвращается 00:00)
    • TimeDepartureTo – время отправления по (всегда возвращается 23:59)
    • TimeArrivalFrom – время прибытия с (всегда возвращается 00:00)
    • TimeArrivalTo – время прибытия по (всегда возвращается 23:59)
    • ArrivalFlightNoTransfer – ??? уточнить что означает
    • DepartureFlightNoTransfer – ??? уточнить что означает
    • wrongLicenseFileUpperTitle – ??? для локализации (убрать)
  • Возвращаемый результат:
    • CheckMessages – информация о том, произошла ли ошибка при поиске (null)
    • Message – сообщение об ошибке
      • Key – код ошибки
      • Value – сообщение об ошибке
    • Result – результаты поиска
      • Key – идентификатов программы тура
      • Name – название программы тура
      • TourUrl – ссылка на программу тура
      • BookingConditions – условия бронирования программы туров
      • StartDate – дата начала тура
      • Duration – продолжительность тура (в днях)
      • DurationInNight – продолжительность проживания (в ночах)
      • Types – ??? возможно идентификатор типа туров
      • Cost – цена тура
      • Rate – код валюты тура
      • CityDepature – город отправления
        • Key – идентификатор города отправления
        • Value – название города отправления
      • CountryId – ??? предположительно страна тура, но почему отображается ключ 0?
      • Services – услуги в туре
        • DepartureCity – город отправления
          • Key – идентификатор города отправления
          • Value – название города отправления
        • DepartureCountry
          • Key
          • Value
        • ArrivalCity
          • Key
          • Value
        • ArrivalCountry
          • Key
          • Value
        • DepartureAirport
          • Key
          • Value
        • ArrivalAirport
          • Key
          • Value
        • Airline
          • Key
          • Value
        • Aircraft
          • Key
          • Value
        • Flight
          • Key
          • Value
        • DepartureTime
        • ArrivalTime
        • EndDateTime
        • FlightDetails
          • Tariff
            • Key
            • Code
            • Name
          • Cost
          • QuotaStatus
            • PlacesStatus
            • FreePlaces
            • TotalPlaces
          • PartnerId
          • ByPax
          • Partner
            • Key
            • Value
        • FlightSetting
          • ServiceId
          • PatternId
          • FlightId
        • FlightSourceMode
        • Id
        • SvKey
        • IsSubCode1
        • IsSubCode2
        • IsPartnerBasedOn
        • Day
        • DurationInNight
        • BeginDateTime
        • IsHooded
        • IsDeleted
        • IsNotCalculate
        • PacketId
        • Index
    • '
    • '
    • '
    • '
        "CountryId": 0,
        "Services":          [


              "BeginDateTime": "2018-02-25T10:00:00",
              "IsHooded": false,
              "IsDeleted": false,
              "IsNotCalculate": false,
              "PacketId": 779,
              "Index": 0
           },
                       {
              "Hotel":                {
                 "Key": 709,
                 "Value": "Am Brilliantengrund"
              },
              "City":                {
                 "Key": 35,
                 "Value": "Вена"
              },
              "Stars":                {
                 "Key": -1,
                 "Value": null
              },
              "Resort":                {
                 "Key": -1,
                 "Value": null
              },
              "ImageURL": "",
              "Http": null,
              "Description": "",
              "Country":                {
                 "Key": 90,
                 "Value": "Австрия"
              },
              "HotelDetails": [               {
                 "HotelRoom": 46463,
                 "Room":                   {
                    "Key": 129,
                    "Value": "DBL"
                 },
                 "RoomCategory":                   {
                    "Key": 3493,
                    "Value": "Cosy"
                 },
                 "AccomodationType":                   {
                    "Key": 1256,
                    "Value": "2+1_K",
                    "AdultCount": 2,
                    "ChildCount": 1
                 },
                 "Pansion":                   {
                    "Key": 4,
                    "Value": "Завтрак"
                 },
                 "Cost": 58.22,
                 "QuotaStatus":                   {
                    "PlacesStatus": 4,
                    "FreePlaces": 0,
                    "TotalPlaces": 0
                 },
                 "PartnerId": 12667,
                 "ByPax": false,
                 "Partner":                   {
                    "Key": 12667,
                    "Value": "Партнер-покупатель1"
                 }
              }],
              "HotelTypes": [               {
                 "Key": 5,
                 "Value": "Рекомендуемые"
              }],
              "Id": 1,
              "SvKey": 3,
              "IsSubCode1": true,
              "IsSubCode2": true,
              "IsPartnerBasedOn": false,
              "Day": 1,
              "DurationInNight": 9,
              "BeginDateTime": "2018-02-25T12:00:00",
              "EndDateTime": "2018-03-06T12:00:00",
              "IsHooded": false,
              "IsDeleted": false,
              "IsNotCalculate": false,
              "PacketId": 779,
              "Index": 1
           },
                       {
              "DepartureCity":                {
                 "Key": 35,
                 "Value": "Вена"
              },
              "DepartureCountry":                {
                 "Key": 90,
                 "Value": "Австрия"
              },
              "ArrivalCity":                {
                 "Key": 1,
                 "Value": "Москва"
              },
              "ArrivalCountry":                {
                 "Key": 460,
                 "Value": "Россия"
              },
              "DepartureAirport":                {
                 "Key": "VIE1",
                 "Value": "Vena1"
              },
              "ArrivalAirport":                {
                 "Key": "DME",
                 "Value": "Домодедово"
              },
              "Airline":                {
                 "Key": "7U",
                 "Value": "Авиаэнерго"
              },
              "Aircraft":                {
                 "Key": "727",
                 "Value": "Boeing"
              },
              "Flight":                {
                 "Key": 774,
                 "Value": "222"
              },
              "DepartureTime": "00:00:00",
              "ArrivalTime": "00:00:00",
              "EndDateTime": "2018-03-06T00:00:00",
              "FlightDetails": [               {
                 "Tariff":                   {
                    "Key": 89,
                    "Code": "Y",
                    "Name": "Экономический класс"
                 },
                 "Cost": 0,
                 "QuotaStatus":                   {
                    "PlacesStatus": 4,
                    "FreePlaces": 0,
                    "TotalPlaces": 0
                 },
                 "PartnerId": 10760,
                 "ByPax": true,
                 "Partner":                   {
                    "Key": 0,
                    "Value": null
                 }
              }],
              "FlightSetting":                {
                 "ServiceId": 4,
                 "PatternId": 5,
                 "FlightId": 4
              },
              "FlightSourceMode": 1,
              "Id": 4,
              "SvKey": 1,
              "IsSubCode1": true,
              "IsSubCode2": false,
              "IsPartnerBasedOn": false,
              "Day": 10,
              "DurationInNight": 0,
              "BeginDateTime": "2018-03-06T00:00:00",
              "IsHooded": false,
              "IsDeleted": false,
              "IsNotCalculate": false,
              "PacketId": 779,
              "Index": 4
           }
        ],
        "NotRouteServices":          [
           [            {
              "ServiceName": "страховка",
              "City": null,
              "Country": 6245,
              "Code":                {
                 "Key": 297,
                 "Value": "Страховка от несчастного случая"
              },
              "ByScheduler": false,
              "Details": [               {
                 "SubCode1":                   {
                    "Key": 18,
                    "Value": "2"
                 },
                 "SubCode2":                   {
                    "Key": null,
                    "Value": ""
                 },
                 "Date": null,
                 "IsShowTransportPlan": true,
                 "Cost": 970.4,
                 "QuotaStatus":                   {
                    "PlacesStatus": 1,
                    "FreePlaces": 0,
                    "TotalPlaces": 0
                 },
                 "PartnerId": 12668,
                 "ByPax": true,
                 "Partner":                   {
                    "Key": 0,
                    "Value": null
                 }
              }],
              "ParentId": null,
              "PartnerBasedOnServiceTemplateId": null,
              "Id": 10,
              "SvKey": 6,
              "IsSubCode1": true,
              "IsSubCode2": true,
              "IsPartnerBasedOn": false,
              "Day": 1,
              "DurationInNight": 9,
              "BeginDateTime": "2018-02-25T00:00:00",
              "EndDateTime": "2018-03-06T00:00:00",
              "IsHooded": false,
              "IsDeleted": true,
              "IsNotCalculate": true,
              "PacketId": 882,
              "Index": 2
           }],
           [            {
              "ServiceName": "экскурсия",
              "City":                {
                 "Key": 1046,
                 "Value": "Санто-Доминго"
              },
              "Country": 6245,
              "Code":                {
                 "Key": 743,
                 "Value": "4"
              },
              "ByScheduler": false,
              "Details": [               {
                 "SubCode1":                   {
                    "Key": 37,
                    "Value": "Мини-автобус 10 чел."
                 },
                 "SubCode2":                   {
                    "Key": null,
                    "Value": ""
                 },
                 "Date": null,
                 "IsShowTransportPlan": false,
                 "Cost": 84.91,
                 "QuotaStatus":                   {
                    "PlacesStatus": 1,
                    "FreePlaces": 0,
                    "TotalPlaces": 0
                 },
                 "PartnerId": 12667,
                 "ByPax": true,
                 "Partner":                   {
                    "Key": 0,
                    "Value": null
                 }
              }],
              "ParentId": null,
              "PartnerBasedOnServiceTemplateId": null,
              "Id": 7,
              "SvKey": 4,
              "IsSubCode1": true,
              "IsSubCode2": false,
              "IsPartnerBasedOn": true,
              "Day": 1,
              "DurationInNight": 0,
              "BeginDateTime": "2018-02-25T00:00:00",
              "EndDateTime": "2018-02-26T00:00:00",
              "IsHooded": false,
              "IsDeleted": true,
              "IsNotCalculate": true,
              "PacketId": 779,
              "Index": 3
           }]
        ],
        "MinCostServicesComposition":          [
                       {
              "Key":                {
                 "TemplateId": 3,
                 "PatternId": 13,
                 "SettingId": 13
              },
              "Value":                {
                 "Cost": 240,
                 "ServiceType": 1,
                 "Code": 882,
                 "SubCode1": 89,
                 "SubCode2": 1,
                 "PacketId": 779,
                 "PartnerId": 12668,
                 "CountryId": 90,
                 "CityId": 35,
                 "Day": 1,
                 "DurationInNight": 0
              }
           },
                       {
              "Key":                {
                 "TemplateId": 1,
                 "PatternId": 0,
                 "SettingId": 0
              },
              "Value":                {
                 "Cost": 58.22,
                 "ServiceType": 3,
                 "Code": 709,
                 "SubCode1": 46463,
                 "SubCode2": 4,
                 "PacketId": 779,
                 "PartnerId": 12667,
                 "CountryId": 90,
                 "CityId": 35,
                 "Day": 1,
                 "DurationInNight": 9
              }
           },
                       {
              "Key":                {
                 "TemplateId": 4,
                 "PatternId": 5,
                 "SettingId": 4
              },
              "Value":                {
                 "Cost": 0,
                 "ServiceType": 1,
                 "Code": 774,
                 "SubCode1": 89,
                 "SubCode2": 35,
                 "PacketId": 779,
                 "PartnerId": 10760,
                 "CountryId": 460,
                 "CityId": 1,
                 "Day": 10,
                 "DurationInNight": 0
              }
           }
        ],
        "FlightWeight": 2,
        "LinkingFlightsRules":          {
           "notCombineDifferentAirlineRule":             {
              "airlines": ["AY2"],
              "flightSettings": [],
              "enabled": true
           },
           "checkPlusMinus1CharterRule":             {
              "FlightSettingPairs": [],
              "enabled": false
           },
           "notCombineDifferentTariffGroupRule":             {
              "FlightSettings": [],
              "enabled": true
           },
           "notCombineDifferentPartnerRule":             {
              "FlightSettings": [],
              "enabled": false
           },
           "departureCityEqualsArrivalCityRule":             {
              "FlightSettingPairs": [],
              "enabled": false
           },
           "combineOnlySpecificChartersRule":             {
              "settings": [],
              "enabled": false
           }
        },
        "RouteSubVariants": []
     }],
  "SecondaryFiltersResult":    {
     "TourTypes": [      {
        "Id": 2,
        "Name": "Стандартный тур",
        "ParentId": null,
        "Type": "TourType"
     }],
     "TourPrograms": [      {
        "Key": 100003381,
        "Name": " Автобусный тур (новые проверки)_2",
        "TourUrl": "www.megatec.ru",

"BookingConditions": "

Условия бронирования<\/strong><\/p>\n

Сразу же после получения Вашей заявки и обсуждения всех деталей, мы вышлем Вам счет-фактуру на безвозвратный депозит. После получения депозита в размере 50-100 евро (в зависимости от стоимости тура) на человека, Вы получите Тур Ваучер, подтверждающий все детали и условия поездки в Армению.<\/p>\n

Условия оплаты<\/strong><\/p>\n

После бронирования тура необходимо внести безвозвратный депозит в размере 50-100 евро, что обеспечит нашим координаторам возможность начать организацию поездки (бронирование гостиницы, питание, транспорт и т.п.). При покупки тура с авиабилетом, предоплата составит 80% от стоимости всего тура.<\/p>\n

Оставшуюся сумму Вы можете выплатить после Вашего прибытия в страну.<\/p>\n

Мы оставляем за собой право отменить бронирование, если платежи не будут произведены в установленные сроки.<\/p>\n

Форма оплаты<\/strong><\/p>\n

Предоплату можно внести одним из следующих способов:<\/p>\n

    \n
  • Банковский перевод<\/li>\n
  • Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)<\/li>\n<\/ul>\n

    Окончательный платеж может быть осуществлен следующими способами:<\/p>\n

      \n
    • Оплата наличными (при оплате наличными Вы получаете скидку в размере 2% от общей суммы)<\/li>\n
    • Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)<\/li>\n<\/ul>\n

       <\/p>\n

      Условия аннуляции тура <\/strong><\/p>\n

      Если Вы или один из членов Вашей группы желает отменить тур, сообщите об этом нашей компании, как можно скорее в письменной форме. Пожалуйста, обратите внимание, что в данном случае предоплата (200 евро) не подлежит возмещению, но Вы сможете использовать ее в течении всего года и заказать другой тур. В этом случае наша фирма будет вынуждена взять с Вас дополнительные 100 евро для повторного бронирования отеля.<\/p>", "IsLandOnly": false, "IsRestrictMultiHotels": false, "IsHotelTemplates": true, "IsRouteServices": true, "MultiHotelDelta": 0, "Rate": "EU", "DateStart": "2018-02-01T00:00:00Z", "DateEnd": "2018-02-26T00:00:00Z", "Status": { "Key": 3, "Value": "Доступен для продажи" }, "Templates": [ {"$id": "1"}, {"$id": "2"} ], "Types": [ { "Id": 2, "Name": "Стандартный тур", "ParentId": null, "Type": "TourType" }], "LinkingFlightsRules": { "notCombineDifferentAirlineRule": { "airlines": [], "flightSettings": [], "enabled": false }, "checkPlusMinus1CharterRule": { "FlightSettingPairs": [], "enabled": false }, "notCombineDifferentTariffGroupRule": { "FlightSettings": [], "enabled": true }, "notCombineDifferentPartnerRule": { "FlightSettings": [], "enabled": false }, "departureCityEqualsArrivalCityRule": { "FlightSettingPairs": [], "enabled": false }, "combineOnlySpecificChartersRule": { "settings": [], "enabled": false } }, "XmlSettings": "<TourProgram xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><Key>0<\/Key><TourSettingsViewModel><TourName> Автобусный тур (новые проверки)_2<\/TourName><TourUrl>www.megatec.ru<\/TourUrl><BookingConditions><p><strong>Условия бронирования</strong></p>\r\n<p>Сразу же после получения Вашей заявки и обсуждения всех деталей, мы вышлем Вам счет-фактуру на безвозвратный депозит. После получения депозита в размере 50-100 евро (в зависимости от стоимости тура) на человека, Вы получите Тур Ваучер, подтверждающий все детали и условия поездки в Армению.</p>\r\n<p><strong>Условия оплаты</strong></p>\r\n<p>После бронирования тура необходимо внести безвозвратный депозит в размере 50-100 евро, что обеспечит нашим координаторам возможность начать организацию поездки (бронирование гостиницы, питание, транспорт и т.п.). При покупки тура с авиабилетом, предоплата составит 80% от стоимости всего тура.</p>\r\n<p>Оставшуюся сумму Вы можете выплатить после Вашего прибытия в страну.</p>\r\n<p>Мы оставляем за собой право отменить бронирование, если платежи не будут произведены в установленные сроки.</p>\r\n<p><strong>Форма оплаты</strong></p>\r\n<p>Предоплату можно внести одним из следующих способов:</p>\r\n<ul>\r\n<li>Банковский перевод</li>\r\n<li>Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)</li>\r\n</ul>\r\n<p>Окончательный платеж может быть осуществлен следующими способами:</p>\r\n<ul>\r\n<li>Оплата наличными (при оплате наличными Вы получаете скидку в размере 2% от общей суммы)</li>\r\n<li>Кредитная карта (при оплате посредством кредитной карты, сервис взимает 3% от общей суммы)</li>\r\n</ul>\r\n<p>&nbsp;</p>\r\n<p><strong>Условия аннуляции тура&nbsp;</strong></p>\r\n<p>Если Вы или один из членов Вашей группы желает отменить тур, сообщите об этом нашей компании, как можно скорее в письменной форме.&nbsp;Пожалуйста, обратите внимание, что в данном случае предоплата (200 евро) не подлежит возмещению, но Вы сможете использовать ее в течении всего года и заказать другой тур. В этом случае наша фирма будет вынуждена взять с Вас дополнительные 100 евро для повторного бронирования отеля.</p><\/BookingConditions><ManagerKey>127<\/ManagerKey><TourTypes><int>2<\/int><\/TourTypes><DateBegin>2018-02-01T00:00:00Z<\/DateBegin><DateEnd>2018-02-26T00:00:00Z<\/DateEnd><IsLandOnly>false<\/IsLandOnly><IsRestrictMultiHotels>false<\/IsRestrictMultiHotels><MultiHotelDelta>0<\/MultiHotelDelta><Rate>EU<\/Rate><IsAction>false<\/IsAction><TourLeadDepartment>0<\/TourLeadDepartment><DepartureCities><int>1<\/int><int>312<\/int><int>259<\/int><int>1082<\/int><int>1099<\/int><\/DepartureCities><DepartureCountries><int>460<\/int><\/DepartureCountries><\/TourSettingsViewModel><TourConsistencyViewModel><ArrivalCities><int>35<\/int><\/ArrivalCities><Countries><int>90<\/int><\/Countries><ServiceTemplates><ServiceTemplate><Id>8<\/Id><SvKey>14<\/SvKey><BusTransferData><SelectedPacket><Key>779<\/Key><Value>Общая проверка системы__<\/Value><\/SelectedPacket><SelectedPartners><IntStringElement><Key>12664<\/Key><Value>Новый Путь<\/Value><\/IntStringElement><IntStringElement><Key>12662<\/Key><Value>Bonsai Co.Ltd<\/Value><\/IntStringElement><\/SelectedPartners><PartnersShowAll>false<\/PartnersShowAll><SelectedCountriesFrom><IntStringElement><Key>460<\/Key><Value>Россия<\/Value><\/IntStringElement><\/SelectedCountriesFrom><CountriesFromShowAll>false<\/CountriesFromShowAll><SelectedCitiesFrom><IntStringElement><Key>1<\/Key><Value>Москва<\/Value><\/IntStringElement><\/SelectedCitiesFrom><CitiesFromShowAll>false<\/CitiesFromShowAll><SelectedCountriesTo><IntStringElement><Key>90<\/Key><Value>Австрия<\/Value><\/IntStringElement><\/SelectedCountriesTo><CountriesToShowAll>false<\/CountriesToShowAll><SelectedCitiesTo><IntStringElement><Key>275<\/Key><Value>Арльберг<\/Value><\/IntStringElement><\/SelectedCitiesTo><CitiesToShowAll>false<\/CitiesToShowAll><SelectedCodes><IntStringElement><Key>1127<\/Key><Value>Переезд 2_ 16:54-18:24 (+3)<\/Value><\/IntStringElement><IntStringElement><Key>1133<\/Key><Value>Переезд 4 (+2)<\/Value><\/IntStringElement><\/SelectedCodes><CodesShowAll>false<\/CodesShowAll><SelectedSubcodes1 /><Subcodes1ShowAll>false<\/Subcodes1ShowAll><SelectedSubcodes2 /><Subcodes2ShowAll>false<\/Subcodes2ShowAll><DepartureTimeFrom>00:00<\/DepartureTimeFrom><DepartureTimeTo>23:59<\/DepartureTimeTo><ArrivalTimeFrom>00:00<\/ArrivalTimeFrom><ArrivalTimeTo>23:59<\/ArrivalTimeTo><\/BusTransferData><IsHooded>false<\/IsHooded><IsDeleted>false<\/IsDeleted><IsNotCalculate>false<\/IsNotCalculate><IdParent xsi:nil=\"true\" /><IsCity>1<\/IsCity><IsRoute>1<\/IsRoute><IsPartnerBasedOn>0<\/IsPartnerBasedOn><\/ServiceTemplate><ServiceTemplate><Id>1<\/Id><SvKey>3<\/SvKey><HotelData><HotelGroupId>23<\/HotelGroupId><HotelGroups><HotelGroup><Id>22<\/Id><Name>Проживание_0<\/Name><Hotel><SelectedTourDuration><unsignedByte>7<\/unsignedByte><unsignedByte>8<\/unsignedByte><\/SelectedTourDuration><SelectedPacket><Key>779<\/Key><Value>Общая проверка системы<\/Value><\/SelectedPacket><SelectedCountryByHotel><Key>90<\/Key><Value>Австрия<\/Value><\/SelectedCountryByHotel><CountriesByHotelShowAll>false<\/CountriesByHotelShowAll><SelectedPartners><IntStringElement><Key>12667<\/Key><Value>Партнер-покупатель1<\/Value><\/IntStringElement><\/SelectedPartners><PartnersShowAll>false<\/PartnersShowAll><SelectedCitiesByHotel><SelectedCitiesByHotel><Key>35<\/Key><Value>Вена<\/Value><\/SelectedCitiesByHotel><\/SelectedCitiesByHotel><CitiesByHotelShowAll>false<\/CitiesByHotelShowAll><FilteredAddedHotels><HotelDetail><HotelId>178<\/HotelId><PartnerId>12667<\/PartnerId><CountryId>0<\/CountryId><CityId>35<\/CityId><ResortId xsi:nil=\"true\" /><\/HotelDetail><\/FilteredAddedHotels><AllHotelInPacket>false<\/AllHotelInPacket><\/Hotel><Description>Австрия \\ Вена \\ <\/Description><\/HotelGroup><\/HotelGroups><\/HotelData><IsHooded>false<\/IsHooded><IsDeleted>false<\/IsDeleted><IsNotCalculate>false<\/IsNotCalculate><IdParent xsi:nil=\"true\" /><IsCity>1<\/IsCity><IsRoute>1<\/IsRoute><IsPartnerBasedOn>0<\/IsPartnerBasedOn><\/ServiceTemplate><\/ServiceTemplates><ServiceTemplateId>15<\/ServiceTemplateId><\/TourConsistencyViewModel><MenuViewModel><Status><Key>ForSale<\/Key><Value>Доступен для продажи<\/Value><\/Status><\/MenuViewModel><LinkingFlightsRulesViewModel><NotCombineDifferentAirlineRule><Enabled>false<\/Enabled><Airlines /><FlightSettings /><\/NotCombineDifferentAirlineRule><CheckPlusMinus1CharterRule><Enabled>false<\/Enabled><\/CheckPlusMinus1CharterRule><NotCombineDifferentTariffGroupRule><Enabled>true<\/Enabled><\/NotCombineDifferentTariffGroupRule><NotCombineDifferentPartnerRule><Enabled>false<\/Enabled><\/NotCombineDifferentPartnerRule><DepartureCityEqualsArrivalCityRule><Enabled>false<\/Enabled><\/DepartureCityEqualsArrivalCityRule><CombineOnlySpecificChartersRule><Enabled>false<\/Enabled><Settings /><\/CombineOnlySpecificChartersRule><\/LinkingFlightsRulesViewModel><\/TourProgram>", "Type": "TourProgram" }], "TourDurations": [10], "TourDates": ["2018-02-25T00:00:00"], "HotelCities": [ { "key": 35, "Country": { "key": 90, "name": "Австрия", "Code": "AUS", "CitizenName": "Австрия", "CitizenNameLat": "AUSTRIA", "PassportMinDurCheckFrom": 0, "CheckINN": false, "PassportMinDur": null, "INNName": "ИНН", "Web": 1, "WebImage": "/pics/animate/austria.gif", "WebHTTP": "", "AnkLang": 0, "Type": "Country" }, "name": "Вена", "Code": "VIE", "Web": 0, "RSKey": 0, "WebImage": null, "IsDeparture": 1, "Type": "City" }], "HotelResorts": [ { "Key": -1, "CountryKey": 0, "Name": "Не указан", "NameLat": null, "Type": "Resort" }], "HotelCategories": [ { "Key": 56, "Name": "2*", "PrintNumber": 2, "Type": "HotelCatigory" }], "Hotels": [ { "Key": 178, "Country": { "key": 90, "name": "Австрия", "Code": "AUS", "CitizenName": "Австрия", "CitizenNameLat": "AUSTRIA", "PassportMinDurCheckFrom": 0, "CheckINN": false, "PassportMinDur": null, "INNName": "ИНН", "Web": 1, "WebImage": "/pics/animate/austria.gif", "WebHTTP": "", "AnkLang": 0, "Type": "Country" }, "City": { "key": 35, "Country": { "key": 90, "name": "Австрия", "Code": "AUS", "CitizenName": "Австрия", "CitizenNameLat": "AUSTRIA", "PassportMinDurCheckFrom": 0, "CheckINN": false, "PassportMinDur": null, "INNName": "ИНН", "Web": 1, "WebImage": "/pics/animate/austria.gif", "WebHTTP": "", "AnkLang": 0, "Type": "Country" }, "name": "Вена", "Code": "VIE", "Web": 0, "RSKey": 0, "WebImage": null, "IsDeparture": 1, "Type": "City" }, "Resort": null, "Name": "Ananas", "Category": { "Key": 56, "Name": "2*", "PrintNumber": 2, "Type": "HotelCatigory" }, "TimeFrom": "1900-01-01T11:00:00", "TimeTo": "1900-01-01T12:00:00", "HTTP": "http://booking.panteon.ru/TourPrograms/Home/Tour/?tourKey=100000007", "Stars": "2*", "TimeIsEmpty": false, "NameLat": "Ananas", "Address": null, "IsCruise": 0, "Phone": "(+43/1) 546200", "Code": null, "Type": "Hotel" }], "Pansions": [ { "Key": 4, "Code": "BB2", "Name": "Завтрак", "NameLat": null, "Type": "Pansion" }, { "Key": 2, "Code": "HB", "Name": "Полупансион", "NameLat": null, "Type": "Pansion" } ], "Airlines": [], "FlightTariffs": [], "DepartureCities": [ { "key": -1, "Country": null, "name": "Без перелета", "Code": null, "Web": null, "RSKey": null, "WebImage": null, "IsDeparture": null, "Type": "City" }], "DepartureAirports": [], "ArrivalCities": [], "ArrivalAirports": [], "HotelTypes": [ { "key": 93, "name": "Best choice", "Type": "HotelType" }, { "key": 166, "name": "Майские праздники", "Type": "HotelType" }, { "key": 94, "name": "Молодежный отдых", "Type": "HotelType" }, { "key": 5, "name": "Рекомендуемые", "Type": "HotelType" }, { "key": 201, "name": "222", "Type": "HotelType" }, { "key": 206, "name": "Нпа новый улучшенный", "Type": "HotelType" }, { "key": 200, "name": "Новый который лучший", "Type": "HotelType" }, { "key": 177, "name": "Хитрый отель: работает как хочет", "Type": "HotelType" } ] } } http://dev1-22:9000/TourSearchOwin/Tour?DepartureCityKeys=312&Dates=25.02.2018&Dates=26.02.2018&Durations=9&Durations=10&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&isFromBasket=false&isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90&AdultCount=2&ChildAges=2&ChildAges=4&CurrencyName=EU&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&MinPrice=NaN&TourType=-1&CityIds=-1&TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00&TimeArrivalTo=23%3A59&ArrivalFlightNoTransfer=false&DepartureFlightNoTransfer=false http://dev1-22:9000/TourSearchOwin/Tour?DepartureCityKeys=312&Dates=25.02.2018&Dates=26.02.2018&Durations=9&Durations=10&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&isFromBasket=false&isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90&AdultCount=2&ChildAges=2&ChildAges=4&CurrencyName=EU&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&MinPrice=NaN&TourType=-1&CityIds=-1&TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00&TimeArrivalTo=23%3A59&ArrivalFlightNoTransfer=false&DepartureFlightNoTransfer=false&wrongLicenseFileUpperTitle=%D0%9D%D0%B5%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D1%8B%D0%B9+%D1%84%D0%B0%D0%B9%D0%BB+%D0%BB%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D0%B8.&_=1519198071922

      Пример

      Вызов метода Duration

      http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1&Key=90&Name=Австрия&Type=1&tourDate=25.02.2018,26.02.2018&tourTypes=-1&term=
      

      Возвращаемый результат метода Duration (в формате JSON)

      [
         7,
         8,
         10,
         12,
         15,
         18
      ]
      



      Загрузка справочников

      Выгрузка списка категорий отелей (GetHotelCategories)

      Метод возвращает список категорий отелей (примеры: 3*, 4*, Apts и т.д.).

      • Формат запроса:
        •  ?action=GetHotelCategories
      • Принимаемые параметры:
        • id – идентификатор категории отеля (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
      • Возвращаемый результат:
        • id – идентификатор категории отеля
        • name – название категории отеля
      Пример

      Вызов метода GetHotelCategories

      http://localhost:9000/TourSearchOwin/searchApi?action=GetHotelCategories
      

      Возвращаемый результат метода GetHotelCategories (в формате JSON)

      {
         "version": "1.0",
         "hotelCategories":    [
                  {
               "id": 59,
               "name": "5*"
            },
                  {
               "id": 58,
               "name": "4*"
            },
                  {
               "id": 57,
               "name": "3*"
            }
         ]
      }
      

      Выгрузка списка отелей (GetHotels)

      Метод возвращает список всех доступных отелей, на которые есть актуальные цены.

      • Формат запроса:
        •  ?action=GetHotels
      • Принимаемые параметры:
        • id – идентификатор отеля (опциональный, передача в запрос нескольких id не обрабатывается, в этом случае возвращаются все результаты. Если указан, то запрашивается только одна запись)
      • Возвращаемый результат:
        • id – идентификатор отеля
        • name – название отеля
        • hotelCategoryId – идентификатор категории отеля
        • resortId – идентификатор города, в котором расположен отель
      Пример

      Вызов метода GetHotels

      http://localhost:9000/TourSearchOwin/searchApi?action=GetHotels
      

      Возвращаемый результат метода GetHotels (в формате JSON)

      {
         "version": "1.0",
         "hotels":    [
                  {
               "id": 672,
               "name": "'Opal",
               "hotelCategoryId": 59,
               "resortId": 0
            },
                  {
               "id": 106,
               "name": "OPERA LAFAYETTE",
               "hotelCategoryId": 23,
               "resortId": 42
            },
                  {
               "id": 683,
               "name": "Altstadt Vienna",
               "hotelCategoryId": 23,
               "resortId": 0
            },
                  {
               "id": 702,
               "name": "Albatros",
               "hotelCategoryId": 57,
               "resortId": 0
            },
                  {
               "id": 709,
               "name": "Am Brilliantengrund",
               "hotelCategoryId": 23,
               "resortId": 40
            },
                  {
               "id": 2362,
               "name": "Gastehaus Franz Riml",
               "hotelCategoryId": 58,
               "resortId": 0
            }            
         ]
      }
      


      Поиск туров (GetTours)

      Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены. Количество туров в выдаче регулируется параметром count.

      • Формат запроса:
        •  ?action=GetTours&count=int&countryId=int&departCityId=int&dateFrom=date&dateTo=date&adults=int&kids=int&nightsMin=int&nightsMax=int&currencyId=int
      • Принимаемые параметры ( * – обязательный):
        • offerId – уникальный идентификатор ранее найденного предложения. В случае, если данный параметр задан, все остальные параметры не обязательны и не принимаются в расчет, метод возвращает одну запись.
        • count * – максимальное количество предложений в выдаче.
        • countryId * – идентификатор страны.
        • departCityId * – идентификатор города вылета.
        • dateFrom * – начальная дата в диапазоне дат вылета в формате dd.MM.yyyy (пример: 31.12.2016).
        • dateTo * – конечная дата в диапазоне дат вылета в формате dd.MM.yyyy (пример: 31.12.2016).
        • adults * – количество взрослых.
        • kids * – количество детей.
        • kidsAges – количество полных лет каждому ребёнку, передается в виде строки, перечисление через запятую (пример: 3,6).
        • nightsMin * – минимальное количество дней в туре.
        • nightsMax * – максимальное количество дней в туре.
        • resorts – идентификаторы городов, перечисление через запятую.
        • hotelCategories – идентификаторы категорий отелей, перечисление через запятую.
        • hotels – идентификаторы отелей, перечисление через запятую.
        • meals – идентификаторы видов питания, перечисление через запятую.
        • currencyId * – валюта, в которой будут выданы цены, а также валюта для входящих параметров priceMin и priceMax (если они есть).
        • priceMin – Цена тура от.
        • priceMax – Цена тура до.
        • hotelIsNotInStop – при значении 1 в результатах не должно быть отелей в стопе (отели со статусом «под запрос» допустимы). При значении 0 в результат должны попадать как отели в стопе, так и отели с наличием мест и с местами по запросу.
        • ticketsIncluded * – при значении 1 в результатах должны быть только туры с включенной стоимостью перелета («только отель» недопустимы). При значении 0 в результат должны попадать как туры без перелета, так и туры с перелетом.
        • hasTickets – при значении 1 в результатах должны быть туры только с реальным наличием билетов в перелете (не должно быть туров со стопом на перелете, перелеты со статусом «под запрос» недопустимы). При значении 0 в результат должны попадать как туры без билетов на рейс, так и туры с наличием билетов и с билетами по запросу.
        • excludeUsualTours – при значении 1 из результатов должны быть исключены туры, являющиеся обычными турами (не являющиеся многоотельными). При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат.
        • excludeCombined – при значении 1 из результатов должны быть исключены туры, являющиеся многоотельными. При значении 0 или отсутствии данного параметра такие туры должны быть включены в результат.
        • showToursWithoutHotels – при значении 1 в результатах поиска вместе с обычными турами должны подбираться туры без проживания (без услуги отель в составе тура). При значении 0 или отсутствии данного параметра такие туры должны быть исключены из результата поиска. Параметр обрабатывается, начиная с релиза 15.2.
      • Возвращаемый результат ( * – обязательный):
        • offerId * – уникальный идентификатор предложения, по которому в дальнейшем можно провести актуализацию тура.
        • tourName * – название программы тура.
        • hotelId * – идентификатор отеля.
        • hotelUrl – ссылка на страницу с описанием отеля.
        • resortId * – идентификатор города, в котором расположен отель.
        • hotelCategoryId * – идентификатор категории отеля.
        • mealId * – идентификатор вида питания.
        • htPlaceName * – название типа размещения в номере (примеры: 2 ADL + 1 CH (2-12), 2 ADL + INF).
        • roomTypeName – название категории номера (примеры: standard, deluxe, family, deluxe super ocean view).
        • tourDate * – дата начала тура в формате dd.MM.yyyy (пример: 31.12.2016).
        • tourEndDate – дата окончания тура (дата прилета) в формате dd.MM.yyyy (пример: 31.12.2016).
        • nights * – продолжительность тура в днях.
        • price * – цена тура в валюте, которая была указана во входном параметре currencyId.
        • hotelIsInStop * – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос.
        • ticketsIncluded * – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур).
        • hasEconomTicketsDpt * – наличие билетов эконом класса на место отдыха, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
        • hasEconomTicketsRtn * – наличие обратных билетов эконом класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
        • hasBusinessTicketsDpt * – наличие билетов бизнес класса на место отдыха, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
        • hasBusinessTicketsRtn * – наличие обратных билетов бизнес класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано. Группы перелетов задаются в настройке flightTariffGroups.
        • tourUrl * – ссылка на корзину (при переходе по которой можно забронировать тур).
        • spoUrl – ссылка на описание тура (указывается в программе тура).
        • fewPlacesInHotel – числовое значение мест в отеле. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
        • fewTicketsDptY – числовое значение мест прямого перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
        • fewTicketsRtnY – числовое значение мест обратного перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
        • fewTicketsDptB – числовое значение мест прямого перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
        • fewTicketsRtnB – числовое значение мест обратного перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
        • flags – если тур многоотельный, возвращается код 1024. Во всех остальных случаях возвращается 0.
        • description – указывается информация о проживании. Если тур многоотельный, то указывается информация обо всех отелях в туре (пример: 1 н., Resort1, Hotel1, Standard, BB; 3 н., Resort2, Hotel2, Standard, BB; 2 н., Resort3, Hotel3, Standard, BB).
        • receivingParty – параметр не обрабатывается.
        • earlyBookingValidTill – параметр не обрабатывается.
      Пример

      Вызов метода GetTours

      http://localhost:9000/TourSearchOwin/searchApi?action=GetTours&count=20&countryId=22&departCityId=1
      &dateFrom=10.08.2016&dateTo=10.08.2016&ticketsIncluded=0&adults=2&kids=0&nightsMin=7&nightsMax=7&currencyId=1
      

      Возвращаемый результат метода GetTours (в формате JSON)

      {
         "version": "1.0",
         "tours": [   {
            "offerId": 256,
            "tourName": "Тур в Португалии_авиа",
            "hotelId": 3239,
            "hotelUrl": "www.tophotels.com/NapHotel",
            "resortId": 45,
            "hotelCategoryId": 64,
            "mealId": 38,
            "htPlaceName": "2 Adult",
            "roomTypeName": "Sea View",
            "tourDate": "10.08.2016",
            "tourEndDate": "17.08.2016",
            "nights": 7,
            "price": 1036,
            "hotelIsInStop": 2,
            "ticketsIncluded": 1,
            "hasEconomTicketsDpt": 1,
            "hasEconomTicketsRtn": 2,
            "hasBusinessTicketsDpt": 0,
            "hasBusinessTicketsRtn": 1,
            "tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_22&tour=161&date=10.08.16&duration=8&hotelScheme=1_7_3239_221_10760
      &adultCount=2&hotelQuota=7&aviaQuota=7&serviceDescriptions=2_1_586_89_1_22_33_221_10760_1_0,
      1_3_3239_1148_38_22_33_221_10760_1_7,3_1_587_89_33_460_1_221_10760_8_0&currency=USD",
            "fewPlacesInHotel": 5,
            "fewTicketsDptY": 8,
            "fewTicketsRtnY": 8,
            "fewTicketsDptB": null,
            "fewTicketsRtnB": null,
            "spoUrl": "wiki.megatec.ru",
            "flags": 0,
            "description": "5 н., Порту, 3* Paradisos, Standart, BB",
            "receivingParty": "",
            "earlyBookingValidTill": ""
         }]
      }
      

      Актуализация тура (ActualizeTour)

      Метод служит для получения окончательной цены тура (со всеми обязательными доплатами и сборами), списка включенных в стоимость тура услуг, а также вариантов перелета, возможных дополнительных услуг и доплат по ним. Метод должен возвращать цену самой дешевой конфигурации запрашиваемого предложения. Для корректной работы метода необходимо, чтобы offerId был уникален для предложений с разным составом группы туристов, даже в случае если все прочие параметры предложений совпадают.

      • Формат запроса:
        •  ?action=ActualizeTour
      • Принимаемые параметры ( * – обязательный):
        • offerId * – уникальный идентификатор ранее найденного предложения.
        • currencyId * – валюта, в которой рассчитывается цена и доплаты.
      • Возвращаемый результат ( * – обязательный):
        • price * – актуализированная цена тура в валюте, которая была указана во входном параметре currencyId.
        • ticketsIsIncluded * – включена ли стоимость билетов в стоимость тура, допустимы значения: 0 – не включена (тур только отель), 1 – включена (пакетный тур).
        • hotelIsInStop – наличие мест в отеле, допустимы значения: 0 – есть места, 1 – нет мест, 2 – запрос.
        • hasEconomTicketsDpt * – наличие билетов эконом класса на место отдыха, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
        • hasEconomTicketsRtn * – наличие обратных билетов эконом класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
        • hasBusinessTicketsDpt * – наличие билетов бизнес класса на место отдыха, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
        • hasBusinessTicketsRtn * – наличие обратных билетов бизнес класса, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. При значении атрибута ticketsIncluded = 0 значение данного параметра будет проигнорировано.
        • fewPlacesInHotel – числовое значение мест в отеле. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
        • fewEconomTicketsDpt – числовое значение мест прямого перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
        • fewEconomTicketsRtn – числовое значение мест обратного перелета эконом класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
        • fewBusinessTicketsDpt – числовое значение мест прямого перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
        • fewBusinessTicketsRtn – числовое значение мест обратного перелета бизнес класса. По умолчанию поле возвращается с пустым значением. Если удовлетворяются условия, заданные в настройке "Мало", но не включена настройка "Отображать числовое значение оставшихся мест" в панели администрирования, то возвращается значение «-1». Если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест", то возвращается числовое значение того количества мест, которое осталось.
        • tourUrl – ссылка на корзину (при переходе по которой можно забронировать тур).
        • services – список услуг, которые могут быть в туре
          • id * – идентификатор услуги, уникальный в рамках данного предложения.
          • type * – Тип услуги. Может принимать одно из следующих значений:
            • HotelInfo – отель
            • Insurance – страховка
            • DptTransport – перелет туда
            • RtnTransport – перелет обратно
            • MidDptTransport – промежуточный перелет туда (при пересадке)
            • MidRtnTransport – промежуточный перелет обратно (при пересадке)
            • AdditionalService – дополнительная услуга
            • Transfer – трансфер
            • Excursion – экскурсия
            • Visa – виза
          • name * – наименование услуги
          • isIncluded * – включена ли данная услуга в стоимость текущей конфигурации тура, допустимы значения: 0 – не включена, 1 – включена.
          • description – описание услуги в произвольной форме (не обрабатывается).
          • surcharge – стоимость услуги.
          • flightCompatibleIds – совместимые перелеты. Идентификаторы услуг перелетов, представленных в секции services, которые могут применяться совместно с текущей услугой перелета. Для перелета туда заполняется id перелетов обратно и наоборот. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
          • flightClass – класс перелета. Группы перелетов для классов задаются в настройке flightTariffGroups. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport. Может принимать одно из следующих значений:
            • ECONOM – эконом
            • BUSINESS – бизнес
          • flightAvailability – наличие билетов, допустимы значения: 0 – нет мест, 1 есть места, 2 – запрос. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
          • flightPlacesCount – параметр не обрабатывается, всегда возвращается -1.
          • flightAirportFrom – код аэропорта вылета. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
          • flightAirportTo – код аэропорта прилета. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
          • flightNum – код авиакомпании и номер рейса. Применяется и является обязательным только для услуг типа: DptTransport, RtnTransport.
          • flightAirline – код авиакомпании. Применяется только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
          • flightStartDateTime – Дата и время вылета в формате dd.MM.yyyy HH:mm (пример: 31.12.2016 14:30). Применяется только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
          • flightEndDateTime – Дата и время прилета в формате dd.MM.yyyy HH:mm (пример: 31.12.2016 14:30). Применяется только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
          • flightAircraft – тип самолета. Применяется только для услуг типа: DptTransport, RtnTransport, MidDptTransport, MidRtnTransport.
      Пример

      Вызов метода ActualizeTour

      http://localhost:9000/TourSearchOwin/searchApi?action=ActualizeTour&offerID=256&currencyId=1
      

      Возвращаемый результат метода ActualizeTour (в формате JSON)

      {
         "version": "1.0",
         "actualizedTour":    {
            "price": 1036,
            "ticketsIsIncluded": 1,
            "hotelIsInStop": 2,
            "hasEconomTicketsDpt": 1,
            "hasEconomTicketsRtn": 2,
            "hasBusinessTicketsDpt": 0,
            "hasBusinessTicketsRtn": 1,
            "fewPlacesInHotel": 5,
            "fewEconomTicketsDpt": 8,
            "fewEconomTicketsRtn": 8,
            "fewBusinessTicketsDpt": null,
            "fewBusinessTicketsRtn": null,
            "tourUrl": "http://localhost/TourSearchClient/Basket?departureCities=1&destination=1_22&tour=161&date=10.08.16&duration=8&hotelScheme=1_7_3239_221_10760
      &adultCount=2&hotelQuota=7&aviaQuota=7&serviceDescriptions=2_1_586_89_1_22_33_221_10760_1_0,
      1_3_3239_1148_38_22_33_221_10760_1_7,3_1_587_89_33_460_1_221_10760_8_0&currency=USD",
            "services":       [
                        {
                  "id": 0,
                  "type": "DptTransport",
                  "name": "А_П::Москва/Лиссабон/3G001, DME-LUS, 11:00-13:00/Y Экономический класс",
                  "isIncluded": 1,
                  "description": "",
                  "surcharge": 100,
                  "flightCompatibleIds": "2",
                  "flightClass": "ECONOM",
                  "flightAvailability": 1,
                  "flightPlacesCount": -1,
                  "flightAirportFrom": "DME",
                  "flightAirportTo": "LUS",
                  "flightNum": "3G 001",
                  "flightAirline": "3G",
                  "flightStartDateTime": "10.08.2016 11:00",
                  "flightEndDateTime": "10.08.2016 13:00",
                  "flightAircraft": "310"
               },
                        {
                  "id": 1,
                  "type": "HotelInfo",
                  "name": "HOTEL::Лиссабон/Отель в Лиссабоне-4,7 ночей/Double(Sea View),2 Adult/TT NewP",
                  "isIncluded": 1,
                  "description": "",
                  "surcharge": 836,
                  "flightCompatibleIds": null,
                  "flightClass": null,
                  "flightAvailability": -1,
                  "flightPlacesCount": -1,
                  "flightAirportFrom": null,
                  "flightAirportTo": null,
                  "flightNum": null,
                  "flightAirline": null,
                  "flightStartDateTime": null,
                  "flightEndDateTime": null,
                  "flightAircraft": null
               },
                        {
                  "id": 2,
                  "type": "RtnTransport",
                  "name": "А_П::Лиссабон/Москва/3G002, LUS-DME, 20:00-21:00/Y Экономический класс",
                  "isIncluded": 1,
                  "description": "",
                  "surcharge": 100,
                  "flightCompatibleIds": "0",
                  "flightClass": "ECONOM",
                  "flightAvailability": 2,
                  "flightPlacesCount": -1,
                  "flightAirportFrom": "LUS",
                  "flightAirportTo": "DME",
                  "flightNum": "3G 002",
                  "flightAirline": "3G",
                  "flightStartDateTime": "17.08.2016 20:00",
                  "flightEndDateTime": "17.08.2016 21:00",
                  "flightAircraft": "310"
               }
            ]
         }
      }
      

      Проверка туриста (checkTourist)

      Метод служит для получения информации о путевке по номеру путевки и номеру паспорта туриста.

      • Формат запроса:
        • /checkTourist
      • Принимаемые параметры ( * – обязательный):
        • dogovorNumber * – номер путевки.
        • passport * – номер паспорта туриста (заграничного или общегражданского).
      • Возвращаемый результат:
        • isDogovortrue, если путевка найдена по номеру путевки, false, если не найдена.
        • isAnnulatedtrue, если путевка аннулирована, false, если не аннулирована.
        • dogovorStatus – статус путевки
        • isPaytrue, если путевка полностью оплачена, false, если не оплачена или оплачена частично.
        • dogovorDateBegin – дата начала заезда.
        • dogovorDateEnd – дата окончания заезда.
        • dogovorDateCreate – дата создания путевки.
        • isTouristDogovorCreatetrue, если турист (по номеру паспорта) является главным туристом в путевке.
        • services – набор услуг в путевке.
          • svKey – код класса услуги.
          • code – код услуги.
          • subCode1 – код доп. описания 1 услуги.
          • subCode2 – код доп. описания 2 услуги.
          • name – название услуги.
        • touristInfo – информация о главном туристе.
          • lastname – фамилия туриста (рус).
          • firstname – имя туриста (рус).
          • surname – отчество туриста.
          • address – адрес (индекс, город, улица, дом, квартира).
          • postcode – индекс.
          • city – город.
          • street – улица.
          • home – дом.
          • roomNumber – квартира.
      Пример

      Вызов метода checkTourist

      http://localhost:9000/TourSearchOwin/checkTourist?dogovorNumber=AU25120001&passport=1234567
      

      Возвращаемый результат метода checkTourist (в формате JSON)

      {
         "isDogovor": true,
         "isAnnulated": false,
         "dogovorStatus": "ОК",
         "isPay": true,
         "dogovorDateBegin": "05.02.2018", 
         "dogovorDateEnd": "12.02.2018",
         "dogovorDateCreate": "01.02.2018",
         "isTouristDogovorCreate": true,
         "services":    [
                  {
               "svKey": "1",
               "code": "1088",
               "subCode1": "147",
               "subCode2": "35",
               "name": "А_П::Вена/Москва/SU2353, VIE-SVO, 18:05-22:40/NSU Экономический класс"
            },
                  {
               "svKey": "3",
               "code": "698",
               "subCode1": "46200",
               "subCode2": "1",
               "name": "HOTEL::Вена/Graben-1*,5 ночей/DBL(Standart ),2Ad/FB Полный пансион"
            },
                  {
               "svKey": "1",
               "code": "1087",
               "subCode1": "147",
               "subCode2": "1",
               "name": "А_П::Москва/Вена/SU2352, SVO-VIE, 16:20-17:05/NSU Экономический класс"
            }
         ],
         "touristInfo":    {
            "lastname": "Ivanov",
            "firstname": "Ivan",
            "surname": "Ivanovich",
            "address": "123456, г. Москва, ул. Ленина, д. 1, кв. 15",
            "postcode": "123456",
            "city": "Москва",
            "street": "Ленина",
            "home": "1",
            "roomNumber": "15"
         }
      }