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

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(Выгрузка информации от удаленного поставщика по перелету (RebuildFlights))
(Установка)
 
(не показано 114 промежуточных версий 7 участников)
Строка 12: Строка 12:
 
Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
 
Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'')
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'')
 +
 +
==Swagger==
 +
Работу методов можно проверить с помощью Swagger по пути: ''http://localhost:9000/TourSearchOwin/SwaggerUI''
  
 
==Список методов==
 
==Список методов==
Строка 17: Строка 20:
 
Последовательность вызова методов сервиса<br />
 
Последовательность вызова методов сервиса<br />
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
 +
 +
===Информация о состоянии службы поиска (statusCache)===
 +
Метод выводит информацию о состоянии службы поиска при ее загрузке.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/statusCache?
 +
* Принимаемые параметры:
 +
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''Initialized''' – информация о том, загружена ли служба или нет ('''false''' – инициализация кешей не завершена, '''true''' – инициализация кешей завершена)
 +
** '''Status''' – состояние службы. Возможные значения: ''Запущена инициализация кэшей'', ''Инициализация кэшей завершена''
 +
** '''CacheName''' – информация о том, какой именно кеш сейчас считается (название)
 +
** '''Iteration''' – порядковый номер считаемого справочника кеша
 +
** '''CacheCount''' – общее количество кешей
 +
** '''ProcessMessage''' – детализация. Информацию можно разделить на 3 блока:
 +
*** Загрузка всех справочных данных, кроме расчета маршрутов и актуальных фильтров. В этом случае сообщение будет ''Загрузка кэшей из БД''
 +
*** Расчет маршрутов. ''CacheName'' – ''HotelScheme'', сообщение будет ''tours load: 956 / 1234''
 +
*** Расчет актуальных фильтров. ''CacheName'' – ''ActualFilters'', сообщение будет ''Actual filter processed: 783012 / 3865687"''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода Settings
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/statusCache
 +
</syntaxhighlight>
 +
Возвращаемый результат метода statusCache (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "ToursSearchView",
 +
    "Iteration": 10,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "Загрузка кэшей из БД"
 +
}
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "HotelScheme",
 +
    "Iteration": 109,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "tours load: 956 / 1234"
 +
}
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "ActualFilters",
 +
    "Iteration": 112,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "Actual filter processed: 783012 / 3865687"
 +
}
 +
{
 +
    "Initialized": true,
 +
    "Status": "Инициализация кэшей завершена",
 +
    "CacheName": null,
 +
    "Iteration": 0,
 +
    "CacheCount": 0,
 +
    "ProcessMessage": null
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
 
===Авторизация (Token)===
 
===Авторизация (Token)===
Строка 105: Строка 170:
 
*** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован"
 
*** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован"
 
*** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован".
 
*** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован".
 
+
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
 +
** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
 +
** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
 +
** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
 +
** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
 +
** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
Строка 182: Строка 253:
 
   "ShowHotelImagesInSearch": true
 
   "ShowHotelImagesInSearch": true
 
   "CacheReadyMessage": "Кеш инициализирован"
 
   "CacheReadyMessage": "Кеш инициализирован"
 +
    "nodeId": 2147483647,
 +
    "FullPaymentPeriod": null,
 +
    "FullPaymentCheckin": 5,
 +
    "PrePaymentPeriod": null,
 +
    "PrePaymentCheckin": 10,
 +
    "PrePaymentPercent": 50.0,
 +
    "PrePaymentCu": null
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
 
  
 
===Выгрузка списка валют в онлайне (Currency)===
 
===Выгрузка списка валют в онлайне (Currency)===
Строка 257: Строка 334:
 
** GET .../TourSearchOwin/CurrencyRates
 
** GET .../TourSearchOwin/CurrencyRates
 
* Принимаемые параметры:
 
* Принимаемые параметры:
** нет принимаемых параметров
+
** '''dateFrom''' – начальная дата, от которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''dateTo''' – конечная дата, до которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''otherBaseCurrencyId''' – идентификатор любой валюты, эмулирующей работу национальной валюты, необязательный параметр. Если заполнен, то в результатах выдачи параметр ''baseCurrencyId'' будет заменяться на валюту из параметра ''otherBaseCurrencyId'' (обрабатывается с релиза 15.9).
 +
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''baseCurrencyId''' – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке ''basketCurrency'' в конфигурационном файле (обрабатывается с релиза 15.6)
 
** '''baseCurrencyId''' – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке ''basketCurrency'' в конфигурационном файле (обрабатывается с релиза 15.6)
 
** '''currencyId''' – идентификатор валюты, курс которой приводится
 
** '''currencyId''' – идентификатор валюты, курс которой приводится
 
** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''')
 
** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''')
 +
** '''date''' – дата, на которую был зарегистрирован выводимый курс валюты
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 268: Строка 349:
 
Вызов метода CurrencyRates
 
Вызов метода CurrencyRates
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/CurrencyRates
+
http://localhost:9000/TourSearchOwin/CurrencyRates?dateFrom=18.09.2024&dateTo=19.09.2024
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода CurrencyRates (в формате JSON)
 
Возвращаемый результат метода CurrencyRates (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
{
+
[
  "version": "1.08",
+
    {
  "currencyRates":   [
+
        "BaseCurrencyId": 14,
            {
+
        "CurrencyId": 1,
        "baseCurrencyId": 2,
+
        "Rate": 91.429200,
        "currencyId": 1,
+
        "Date": "18.09.2024"
        "rate": 65.256054
+
    },
      },
+
    {
            {
+
        "BaseCurrencyId": 14,
        "baseCurrencyId": 2,
+
        "CurrencyId": 2,
        "currencyId": 3,
+
        "Rate": 101.505700,
        "rate": 71.168955
+
        "Date": "18.09.2024"
      }
+
    },
  ]
+
    {
}
+
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 1,
 +
        "Rate": 91.671200,
 +
        "Date": "19.09.2024"
 +
    },
 +
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 2,
 +
        "Rate": 102.039000,
 +
        "Date": "19.09.2024"
 +
    }
 +
]
  
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 503: Строка 595:
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
 
** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']])
 
** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']])
 +
** '''type''' – настройка easySearchFilter (0/не указано - настройка выключена, 1 - настройка включена)
 
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''Name''' – название страны
 
** '''Name''' – название страны
 
** '''Key''' – идентификатор страны
 
** '''Key''' – идентификатор страны
** '''DestinationType''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''DestinationType''' – тип результата (внутренний параметр, не изменяемый, всегда возвращается значение = 1)
 +
** '''IsExist''' – не используется
 +
** '''Data''' – массив данных для контекстного поиска
 +
*** '''CityKey''' – код города
 +
*** '''CityName''' – Название
 +
*** '''HotelKey''' – код отеля
 +
*** '''HotelName''' – название отеля
 +
*** '''ResortKey''' – код курорта
 +
*** '''ResortName''' – название курорта
 +
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 514: Строка 616:
 
Вызов метода Destination
 
Вызов метода Destination
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 +
 
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1
 
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 520: Строка 623:
 
[
 
[
 
       {
 
       {
       "Name": "Болгария",
+
       "Data": null,
       "Key": 359,
+
      "DestinationType": 1,
       "DestinationType": 1
+
      "IsExist": false,
 +
       "Key": 90,
 +
       "Name": "Австрия"
 +
   
 +
   
 
   },
 
   },
 
       {
 
       {
       "Name": "Индия",
+
       "Data": null,
       "Key": 26,
+
      "DestinationType": 1,
       "DestinationType": 1
+
      "IsExist": false,
 +
       "Key": 53,
 +
       "Name": "Тайланд"
 +
     
 +
     
 
   },
 
   },
 
       {
 
       {
       "Name": "Финляндия",
+
       "Data": null,
       "Key": 64,
+
      "DestinationType": 1,
       "DestinationType": 1
+
      "IsExist": false,
 +
       "Key": 460,
 +
       "Name": "Россия"
 +
     
 +
     
 
   }
 
   }
 +
]
 +
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1&type=1
 +
</syntaxhighlight>
 +
Возвращаемый результат метода Destination (в формате JSON) с включенной настройкой easySearchFilter
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
{
 +
  "Name": "Австрия",
 +
  "Key": 90,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
        {
 +
          "CityKey": 35,
 +
          "CityName": "Вена",
 +
          "HotelKey": 178,
 +
          "HotelName": "Ananas, 5+++*",
 +
          "ResortKey": 232,
 +
          "ResortName": "Малина"
 +
        },
 +
        {
 +
          "CityKey": 35,
 +
          "CityName": "Вена",
 +
          "HotelKey": 20748,
 +
          "HotelName": "Dev, 1-4*Boutique",
 +
          "ResortKey": 0,
 +
          "ResortName": ""
 +
        },
 +
      ],
 +
}
 +
{
 +
  "Name": "Тайланд",
 +
  "Key": 53,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
            "CityKey": 415,
 +
            "CityName": "Пхукет",
 +
            "HotelKey": 5263,
 +
            "HotelName": "7Q Hotel, HV",
 +
            "ResortKey": 123,
 +
            "ResortName": "Пхукет"
 +
          }
 +
        ],
 +
},
 +
{
 +
  "Name": "Россия",
 +
  "Key": 460,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
            "CityKey": 295,
 +
            "CityName": "Санкт-Петербург",
 +
            "HotelKey": 20365,
 +
            "HotelName": "Бристоль, 3*",
 +
            "ResortKey": 0,
 +
            "ResortName": ""
 +
          }
 +
        ],
 +
},
 +
{
 +
  "Name": "ОАЭ",
 +
  "Key": 2,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
          "CityKey": 12,
 +
          "CityName": "ДУБАЙ",
 +
          "HotelKey": 1257,
 +
          "HotelName": "Avari, APTH3",
 +
          "ResortKey": 0,
 +
          "ResortName": ""
 +
          },
 +
      ],
 +
}
 
]
 
]
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 585: Строка 782:
 
** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 
** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
Строка 591: Строка 788:
 
** '''Key''' – идентификатор типа тура
 
** '''Key''' – идентификатор типа тура
 
** '''Name''' – название типа тура
 
** '''Name''' – название типа тура
** '''ParentId''' – идентификатор группы, к которой относится данный типа тура (если тип тура не относится к группе, то возвращается ''null'')
+
** '''ParentId''' – идентификатор группы, к которой относится данный тип тура (если тип тура не относится к группе, то возвращается ''null'')
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 631: Строка 828:
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
* Возвращаемый результат:
 
* Возвращаемый результат:
Строка 667: Строка 864:
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''tourDate *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''tourDate *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''tourTypes *''' – идентификатор типа(ов) тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
** '''tourTypes *''' – идентификатор типа(ов) тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
Строка 706: Строка 903:
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false)
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false)
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true)
+
** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
** '''DestinationType *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''AdultCount *''' – количество взрослых
 
** '''AdultCount *''' – количество взрослых
Строка 719: Строка 916:
 
** '''Groups''' – группировка результатов (2 – по названию тура, 4 – по дате тура, 8 – по продолжительности тура, 16 – по городу вылета, 32 – по отелю, 64 – по городу отеля, 128 – по курорту отеля, 256 – по категории отеля)
 
** '''Groups''' – группировка результатов (2 – по названию тура, 4 – по дате тура, 8 – по продолжительности тура, 16 – по городу вылета, 32 – по отелю, 64 – по городу отеля, 128 – по курорту отеля, 256 – по категории отеля)
 
** '''HotelScheme''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры:  
 
** '''HotelScheme''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры:  
*** '''TemplateId''' – идентификатор шаблона услуги,  
+
*** '''TemplateId''' – идентификатор шаблона услуги (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Key->TemplateId),  
*** '''DurationInNight''' – продолжительность отеля в ночах,  
+
*** '''DurationInNight''' – продолжительность отеля в ночах (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->DurationInNight),  
*** '''Code''' – ключ отеля,  
+
*** '''Code''' – ключ отеля (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->Code),  
*** '''PacketKey''' – ключ пакета,  
+
*** '''PacketKey''' – ключ пакета (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PacketId),
*** '''PartnerKey''' – ключ партнера
+
*** '''PartnerKey''' – ключ партнера (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PartnerId),
*** '''GDSProviderId''' – ключ провайдера из внешней системы
+
*** '''GDSProviderId''' – ключ провайдера из внешней системы (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->GDSProviderId),
*** '''TotalTourDuration''' – общая продолжительность тура в днях
+
*** '''TotalTourDuration''' – общая продолжительность тура в днях (этот параметр можно взять из контроллера Tour->Result->Duration)
 
** '''BusTransferPointKeys''' – данный признак проставляется в ''true'' в том случае, когда происходит запрос вариантов проживания (кнопка ''Варианты'') в автобусных переездах
 
** '''BusTransferPointKeys''' – данный признак проставляется в ''true'' в том случае, когда происходит запрос вариантов проживания (кнопка ''Варианты'') в автобусных переездах
 
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
 
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
Строка 757: Строка 954:
 
** '''CityDeparture''' – ключ города начала поездки (дополнительный фильтр)
 
** '''CityDeparture''' – ключ города начала поездки (дополнительный фильтр)
 
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
 
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
** '''GroupGuid''' – используется для получения турпрограмм по уникальному ключу из кэша при использовании группировки. Примеры использования. ''GroupGuid=00000000-0000-0000-0000-000000000000'' – при первом запросе от локальной системы. ''GroupGuid=936DA01F-9ABD-4d9d-80C7-02AF85C822A8'' (уникальный ключ) – передается на клиент от первого запроса из внешней системы. С данным уникальным ключом осуществляется второй запрос от удаленной внешней системы. Далее происходит получение значений по данному уникальному ключу. Обрабатывается начиная с релиза 15.4.
+
** '''GroupGuid''' – используется для получения турпрограмм по уникальному ключу из кэша при использовании группировки. Примеры использования. ''GroupGuid=00000000-0000-0000-0000-000000000000'' – при первом запросе от локальной системы. ''GroupGuid=936DA01F-9ABD-4d9d-80C7-02AF85C822A8'' (уникальный ключ) – передается на клиент от первого запроса из внешней системы. С данным уникальным ключом осуществляется второй запрос от внешней системы. Далее происходит получение значений по данному уникальному ключу. Обрабатывается начиная с релиза 15.4.
** '''IsGroupingTourAlreadyMerge''' – определяет слияние данных турпрограмм от локальной системы с данными от внешней системы при использовании группировки. Примеры использования. ''IsGroupingTourAlreadyMerge=false'' – полученные данные от локальной системы не объединены с данными от внешней удаленной системы. На клиенте осуществляется объединение данных турпрограмм с последующей сортировкой по минимальной цене. ''IsGroupingTourAlreadyMerge=true'' – полученные данные от локальной системы уже объединены с данными от внешней удаленной системы. На клиенте осуществляется только сортировка по минимальной цене. Обрабатывается начиная с релиза 15.4.
+
** '''IsGroupingTourAlreadyMerge''' – определяет слияние данных турпрограмм от локальной системы с данными от внешней системы при использовании группировки. Примеры использования. ''IsGroupingTourAlreadyMerge=false'' – полученные данные от локальной системы не объединены с данными от внешней системы. На клиенте осуществляется объединение данных турпрограмм с последующей сортировкой по минимальной цене. ''IsGroupingTourAlreadyMerge=true'' – полученные данные от локальной системы уже объединены с данными от внешней системы. На клиенте осуществляется только сортировка по минимальной цене. Обрабатывается начиная с релиза 15.4.
 
** '''SearchId''' – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5.
 
** '''SearchId''' – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5.
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 
   
 
   
  
Строка 772: Строка 970:
 
*** '''TourUrl''' – ссылка на программу тура
 
*** '''TourUrl''' – ссылка на программу тура
 
*** '''BookingConditions''' – условия бронирования программы туров
 
*** '''BookingConditions''' – условия бронирования программы туров
 +
*** '''DefaultManagers''' – список выбранных менеджеров в туре
 +
*** '''Manager''' – ключ менеджера по умолчанию в туре
 +
*** '''Branches''' – список ключей филиалов бронирования
 +
*** '''DetermineTheBranchOnCity''' – признак, определять филиал в зависимости от города начала поездки
 +
*** '''IndividualFlightSelection''' – признак, включены ли индивидуальные настройки подбора перелетов
 +
*** '''RestrictionDateArrival''' – признак, ограничение даты прилета по базовому рейсу в индивидуальных настройках подбора перелетов
 +
*** '''PriceUpdateForView''' – признак обновления цен в индивидуальных настройках подбора перелетов (true – включен, false – выключен)
 +
*** '''SelectFlightAutomatically''' – признак выбирать рейс автоматически, если не выбран пользователем в индивидуальных настройках подбора перелетов
 +
*** '''BaggageSearchOtherFares''' – признак поиска багажа в других тарифах в индивидуальных настройках подбора перелетов
 +
*** '''Luggage''' – значение багажа в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''LuggageForView''' – значение багажа в блоке настроек, влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''LuggageForPrice''' – значение багажа в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''FlightClass''' – класс перелета в индивидуальных настройках подбора перелетов (economy – Эконом, premiumEconomy 2 Премиум-эконом, business – Бизнес, first – Первый)
 +
*** '''Directs''' – значение пересадок в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, onlyDirectFlights – только прямые рейсы)
 +
*** '''DirectsForView''' – значение пересадок в блоке влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
 +
*** '''DirectsForPrice''' – значение пересадок в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
 +
*** '''DepartureTimeLimit''' – ограничение времени вылета: «Вылет не позже» в формате hh:mm
 +
*** '''SortingForView''' – сортировка в индивидуальных настройках подбора перелетов (cheap – сначала дешевые, fast – сначала быстрые, optimal – оптимальные)
 
*** '''StartDate''' – дата начала тура
 
*** '''StartDate''' – дата начала тура
 +
*** '''MaxConnectionTime''' – длительность пересадок в индивидуальных настройках подбора перелетов в формате hh:mm
 +
*** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
 +
*** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
 +
*** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
 +
*** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
 +
*** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
 +
*** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
 
*** '''Duration''' – продолжительность тура (в днях)
 
*** '''Duration''' – продолжительность тура (в днях)
 
*** '''DurationInNight''' – продолжительность проживания (в ночах)
 
*** '''DurationInNight''' – продолжительность проживания (в ночах)
 
*** '''Types''' – идентификатор типа туров
 
*** '''Types''' – идентификатор типа туров
*** '''Cost''' – цена тура
+
*** '''Price''' –  цена тура с учетом скидки в валюте поиска
 +
*** '''Cost''' – цена тура в валюте поиска
 
*** '''Rate''' – код валюты тура
 
*** '''Rate''' – код валюты тура
 +
*** '''Penalties''' – внутреннее поле, не используется
 
*** '''CityDepature''' – город отправления
 
*** '''CityDepature''' – город отправления
 
**** '''Key''' – идентификатор города отправления
 
**** '''Key''' – идентификатор города отправления
Строка 820: Строка 1045:
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''QuotaStatus''' – информация о квоте
 
***** '''QuotaStatus''' – информация о квоте
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)  
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 832: Строка 1057:
 
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
 
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
**** '''FlightSourceMode''' – локальный или удаленный перелет (внутренняя информация из программы туров)
+
**** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров)
 
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)  
 
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)  
 
**** '''SvKey''' – ключ типа услуги
 
**** '''SvKey''' – ключ типа услуги
Строка 851: Строка 1076:
 
***** '''Key''' – ключ города
 
***** '''Key''' – ключ города
 
***** '''Value''' – название города
 
***** '''Value''' – название города
**** '''Country''' – ключ страны
+
**** '''Country''' – объект страна
 +
***** '''Key''' – ключ страны
 +
***** '''Value''' – название страны
 
**** '''Code''' – объект код услуги
 
**** '''Code''' – объект код услуги
 
***** '''Key''' – ключ услуги
 
***** '''Key''' – ключ услуги
Строка 867: Строка 1094:
 
***** '''Cost''' – цена
 
***** '''Cost''' – цена
 
***** '''QuotaStatus''' – объект информация по квотам
 
***** '''QuotaStatus''' – объект информация по квотам
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 957: Строка 1184:
 
***** '''enabled''' – флаг включен/выключен
 
***** '''enabled''' – флаг включен/выключен
 
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 +
*** '''Routes''' – количество маршрутов для данного варианта поиска (к примеру, если будет несколько вариантов
 +
*** '''IsRemoteHotels''' – признак, есть ли внешние отели в данном варианте
 +
*** '''IsTourImages''' – признак, есть ли картинки тура
 +
*** '''MaskKeys''' – маска фильтра категории номеров
 
** '''SecondaryFiltersResult''' – результаты доп. фильтров
 
** '''SecondaryFiltersResult''' – результаты доп. фильтров
 
*** '''TourTypes''' – типы тура
 
*** '''TourTypes''' – типы тура
Строка 1007: Строка 1238:
 
****** '''settings''' –
 
****** '''settings''' –
 
****** '''enabled''' –
 
****** '''enabled''' –
**** '''XmlSettings''' – строка xml для актуальных фильтров
 
 
**** '''Type''' – тип справочника (используется для внутренних целей)
 
**** '''Type''' – тип справочника (используется для внутренних целей)
 
*** '''TourDurations''' – продолжительность тура
 
*** '''TourDurations''' – продолжительность тура
Строка 1035: Строка 1265:
 
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах  
 
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах  
 
***** '''''' –  
 
***** '''''' –  
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 1062: Строка 1293:
 
         "TourUrl": "www.megatec.ru",
 
         "TourUrl": "www.megatec.ru",
 
         "BookingConditions": "<p>Условия бронирования тура.<\/p>",
 
         "BookingConditions": "<p>Условия бронирования тура.<\/p>",
 +
        "DefaultManagers": [],
 +
        "Manager": 169,
 +
        "Branches": [],
 +
        "DetermineTheBranchOnCity": false,
 +
        "IndividualFlightSelection": true,
 +
        "RestrictionDateArrival": false,
 +
        "PriceUpdateForView": false,
 +
        "SelectFlightAutomatically": false,
 +
        "BaggageSearchOtherFares": false,
 +
        "Luggage": "withoutLuggage",
 +
        "LuggageForView": "all",
 +
        "LuggageForPrice": "all",
 +
        "FlightClass": "economy",
 +
        "Directs": "all",
 +
        "DirectsForView": "all",
 +
        "DirectsForPrice": "all",
 +
        "DepartureTimeLimit": "",
 +
        "SortingForView": "cheap",
 
         "StartDate": "2018-02-25T00:00:00",
 
         "StartDate": "2018-02-25T00:00:00",
 +
        "MaxConnectionTime": 0
 +
        "FullPaymentPeriod": 5,
 +
        "FullPaymentCheckin": null,
 +
        "PrePaymentPeriod": null,
 +
        "PrePaymentCheckin": 5,
 +
        "PrePaymentCu": null,
 +
        "PrePaymentPercent": 10.0,
 
         "Duration": 4,
 
         "Duration": 4,
 
         "DurationInNight": 3,
 
         "DurationInNight": 3,
 
         "Types": [2],
 
         "Types": [2],
 +
        "Price": 260,
 
         "Cost": 260,
 
         "Cost": 260,
 +
        "Penalties": null,
 
         "Rate": "EU",
 
         "Rate": "EU",
 
         "CityDepature":          {
 
         "CityDepature":          {
Строка 1197: Строка 1455:
 
                     "Value": "Завтрак"
 
                     "Value": "Завтрак"
 
                   },
 
                   },
 +
                  "AbsolutePenalties": null,
 
                   "Cost": 19.47,
 
                   "Cost": 19.47,
 
                   "QuotaStatus":                  {
 
                   "QuotaStatus":                  {
Строка 1313: Строка 1572:
 
               "ServiceName": "страховка",
 
               "ServiceName": "страховка",
 
               "City": null,
 
               "City": null,
               "Country": 6245,
+
               "Country":               {
               "Code":                {
+
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
               "Code":                {
 
                   "Key": 297,
 
                   "Key": 297,
 
                   "Value": "Страховка от несчастного случая"
 
                   "Value": "Страховка от несчастного случая"
Строка 1366: Строка 1628:
 
                   "Value": "Санто-Доминго"
 
                   "Value": "Санто-Доминго"
 
               },
 
               },
               "Country": 6245,
+
               "Country":               {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 
               "Code":                {
 
               "Code":                {
 
                   "Key": 743,
 
                   "Key": 743,
Строка 1501: Строка 1766:
 
             }
 
             }
 
         },
 
         },
         "RouteSubVariants": []
+
         "RouteSubVariants": [],
 +
        "Routes": 1,
 +
        "IsRemoteHotels": false,
 +
        "IsTourImages": false,
 +
        "MaskKeys": null
 
       }
 
       }
 
   ],
 
   ],
Строка 1569: Строка 1838:
 
               }
 
               }
 
             },
 
             },
            "XmlSettings": "информация о туре в формате xml",
 
 
             "Type": "TourProgram"
 
             "Type": "TourProgram"
 
         }
 
         }
Строка 2020: Строка 2288:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка транспортного плана (TransportPlan)===
+
* Детализация параметра serviceDescriptions из url:
 +
** '''TemplateId''' – идентификатор шаблона услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->TemplateId)
 +
** '''PatternId''' – идентификатор паттерна услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->PatternId)
 +
** '''SettingId''' – идентификатор услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->SettingId)
 +
** '''ServiceType''' – тип услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->ServiceType)
 +
** '''Code''' – код услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->Code)
 +
** '''SubCode1''' – доп. описание 1 услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->SubCode1)
 +
** '''SubCode2''' – доп. описание 2 услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->SubCode2)
 +
** '''CountryId''' – ключ страны (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->CountryId)
 +
** '''CityId''' – ключ города (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->CityId)
 +
** '''PacketId''' – ключ пакета (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->PacketId)
 +
** '''PartnerId''' – ключ партнера (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->PartnerId)
 +
** '''Day''' – день предоставления (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->Day)
 +
** '''DurationInNight''' – продолжительность в ночах (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->DurationInNight)
 +
 
 +
Пример: serviceDescriptions=1_0_0_3_107274_1400134_1526_460_1_1830_14752_1_8
 +
 
 +
===Выгрузка транспортного плана (TransportPlan) до релиза 15.7 включительно===
 
Метод производит выгрузку транспортного плана.
 
Метод производит выгрузку транспортного плана.
 
* Формат запроса:
 
* Формат запроса:
Строка 2108: Строка 2393:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка первоначального варианта в корзину для бронирования (Tour)===
+
===Выгрузка транспортного плана (TransportPlan) начиная с релиза 15.8===
Метод поиска, который возвращает варианты только по данной турпрограмме и схеме отеля.
+
Метод производит выгрузку транспортного плана.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/Tour?
+
** GET .../TourSearchOwin/TransportPlan?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''code''' – код услуги
** '''DestinationType *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''dateBegin''' – дата услуги
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''serviceType''' – тип услуги
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
** '''transportKey''' – ключ справочника транспорт
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''AdultCount *''' – количество взрослых
 
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''CurrencyName *''' – код валюты
 
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''HotelScheme *''' – объект схемы отеля
 
*** '''TemplateId''' – идентификатор шаблона услуги
 
*** '''DurationInNight''' – продолжительность отеля в ночах
 
*** '''Code''' – ключ отеля
 
*** '''PacketKey''' – ключ пакета
 
*** '''PartnerKey''' – ключ партнера
 
*** '''GDSProviderId''' – ключ провайдера из внешней системы
 
*** '''TotalTourDuration''' – общая продолжительность тура в днях, обрабатывается начиная с релиза 15.6, обязательный параметр. Изменения связаны с возможностью работы поиска в ночах проживания в отеле, для перехода в корзину необходимо знать общую продолжительность тура. Взять значение для параметра ''TotalTourDuration'' для HotelScheme можно из свойства ''Duration'', пришедшего для данной цены в ответе метода поиск туров (''Tour'')
 
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false).
 
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (true/false)
 
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
 
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
 
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
 
  
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''CheckMessages''' – сообщения для логики проверки тура (не используется)
+
** '''VehiclePlans''' – массив параметров зон плана
** '''Message''' – сообщение об ошибке
+
*** '''Key''' – ключ зоны
*** '''Key''' – код ошибки
+
*** '''TransportKey''' – ключ из справочника транспорт
*** '''Value''' – сообщение об ошибке
+
*** '''Row''' – количество рядов
** '''Result''' – результаты поиска
+
*** '''AreaNumber''' – номер уровня
*** '''Key''' – идентификатор программы тура
+
*** '''Name''' – название уровня
*** '''Name''' – название программы тура
+
*** '''PlanOrientation''' – ориентация плана (''false'' - горизонтальная, ''true'' - вертикальная)
*** '''TourUrl''' – ссылка на программу тура
+
*** '''Column''' – количество столбцов
*** '''BookingConditions''' – условия бронирования программы туров
+
*** '''IsAirCraft''' – является ли планом самолета (''false'' - нет, ''true'' - является)
*** '''StartDate''' – дата начала тура
+
*** '''Type''' – не используется
*** '''Duration''' – продолжительность тура (в днях)
+
** '''Seats''' – массив параметров посадочного места
*** '''DurationInNight''' – продолжительность проживания (в ночах)
+
*** '''Key''' – ключ места
*** '''Types''' – идентификатор типа туров
+
*** '''SeatType''' – тип места (None = 0, Seat = 1, Pass/comment = 2, Block = 4, Busy = 5)
*** '''Cost''' – цена тура
+
*** '''Index''' – индекс места
*** '''Rate''' – код валюты тура
+
*** '''Number''' – название ячейки с местом
*** '''CityDepature''' – город отправления
+
*** '''Type''' – тип "место"
**** '''Key''' – идентификатор города отправления
+
*** '''VPKey''' – ключ зоны
**** '''Value''' – название города отправления
+
*** '''Border''' – обводка границы (комбинация цифр, где 0 - нет обводки, 1 - обводка в 1 px, 2 - обводка в 2 px)
*** '''CountryId''' – всегда возвращается ключ 0
+
 
*** '''Services''' – услуги в туре
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
**** '''DepartureCity''' – город отправления
+
<div class="mw-collapsible-content">
***** '''Key
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода TransportPlan
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/TransportPlan?code=1776&dateBegin=28.03.2022&serviceType=14&transportKey=35
 +
</syntaxhighlight>
 +
Возвращаемый результат метода TransportPlan (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
"VehiclePlans":
 +
[
 +
  {
 +
    "Key": 291,
 +
    "TransportKey": 35,
 +
    "Row": 2,
 +
    "AreaNumber": 1,
 +
    "Name": "Зона 1",
 +
    "PlanOrientation": false,
 +
    "Column": 3,
 +
    "IsAirCraft": false,
 +
    "Type": "VehiclePlans"
 +
  },
 +
  {
 +
    "Key": 292,
 +
    "TransportKey": 35,
 +
    "Row": 3,
 +
    "AreaNumber": 2,
 +
    "Name": "Зона 2",
 +
    "PlanOrientation": true,
 +
    "Column": 2,
 +
    "IsAirCraft": false,
 +
    "Type": "VehiclePlans"
 +
  }
 +
],
 +
"
 
                   "Key": 90,
 
                   "Key": 90,
 
                   "Value": "Австрия"
 
                   "Value": "Австрия"
 
               },
 
               },
               "HotelDetails":                [
+
               "DepartureAirport":                {
                                    {
+
                  "Key": "DME",
                    "HotelRoom": 10468,
+
                  "Value": "Домодедово"
                    "Room":                     {
+
              },
                        "Key": 2,
+
              "ArrivalAirport":               {
                        "Value": "Double"
+
                  "Key": "VIE1",
                    },
+
                  "Value": "Vena1"
                    "RoomCategory":                     {
+
              },
                        "Key": 776,
+
              "Airline":               {
                        "Value": "Standart133"
+
                  "Key": "3G",
                    },
+
                  "Value": "Атлант Союз_d;kgmdlfkgnfdlkhndlfkhnlkfnh"
                    "AccomodationType":                     {
+
              },
                        "Key": 328,
+
              "Aircraft":               {
                        "Value": "2Ad",
+
                  "Key": "319",
                        "AdultCount": 2,
+
                  "Value": "AIRBUS "
                        "ChildCount": 0
+
              },
                    },
+
              "Flight":               {
                    "Pansion":                     {
+
                  "Key": 858,
                        "Key": 4,
+
                  "Value": "1111"
                        "Value": "Завтрак"
+
              },
                    },
+
              "DepartureTime": "10:00:00",
                    "Cost": 112.96,
+
              "ArrivalTime": "11:59:00",
                    "QuotaStatus":                     {
+
              "EndDateTime": "2018-03-31T11:59:00",
                        "PlacesStatus": 4,
+
              "FlightDetails": [              {
                        "FreePlaces": 0,
+
                  "Tariff":                   {
                        "IsFewPlaces": false
+
                    "Key": 67,
                    },
+
                    "Code": "C",
                    "PartnerId": 12667,
+
                    "Name": "Бизнес класс"
                    "ByPax": false,
+
                  },
                     "Partner":                      {
+
                  "Cost": 6.45,
                        "Key": 12667,
+
                  "QuotaStatus":                   {
                        "Value": "Партнер-покупатель1"
+
                     "PlacesStatus": 4,
                    }
+
                     "FreePlaces": 0,
 +
                    "IsFewPlaces": false
 
                   },
 
                   },
                                     {
+
                  "PartnerId": 10760,
                     "HotelRoom": 38636,
+
                  "ByPax": true,
                     "Room":                      {
+
                  "Partner":                  {
                         "Key": 2,
+
                    "Key": 0,
                         "Value": "Double"
+
                    "Value": null
                     },
+
                  }
                     "RoomCategory":                      {
+
              }],
                         "Key": 3764,
+
              "FlightSetting":                {
                         "Value": "Standart Without window"
+
                  "ServiceId": 3,
                     },
+
                  "PatternId": 14,
                     "AccomodationType":                      {
+
                  "FlightId": 14
                         "Key": 328,
+
              },
                         "Value": "2Ad",
+
              "FlightSourceMode": 1,
                         "AdultCount": 2,
+
              "Id": 3,
                         "ChildCount": 0
+
              "SvKey": 1,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": false,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 1,
 +
              "DurationInNight": 0,
 +
              "BeginDateTime": "2018-03-31T10:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
              "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 0
 +
            },
 +
                        {
 +
              "Hotel":                {
 +
                  "Key": 707,
 +
                  "Value": "Beim Theresianum"
 +
              },
 +
              "City":                {
 +
                  "Key": 35,
 +
                  "Value": "Вена"
 +
              },
 +
              "Stars":                {
 +
                  "Key": 66,
 +
                  "Value": "4*Boutique"
 +
              },
 +
              "Resort":                {
 +
                  "Key": -1,
 +
                  "Value": null
 +
              },
 +
              "ImageURL": "",
 +
              "Http": null,
 +
              "Description": "",
 +
              "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
              "HotelDetails":                [
 +
                                     {
 +
                     "HotelRoom": 10468,
 +
                     "Room":                      {
 +
                         "Key": 2,
 +
                         "Value": "Double"
 +
                     },
 +
                     "RoomCategory":                      {
 +
                         "Key": 776,
 +
                         "Value": "Standart133"
 +
                     },
 +
                     "AccomodationType":                      {
 +
                         "Key": 328,
 +
                         "Value": "2Ad",
 +
                         "AdultCount": 2,
 +
                         "ChildCount": 0
 
                     },
 
                     },
 
                     "Pansion":                      {
 
                     "Pansion":                      {
Строка 2532: Строка 3190:
 
                         "Value": "Завтрак"
 
                         "Value": "Завтрак"
 
                     },
 
                     },
                     "Cost": 338.9,
+
                     "Cost": 112.96,
 
                     "QuotaStatus":                      {
 
                     "QuotaStatus":                      {
 
                         "PlacesStatus": 4,
 
                         "PlacesStatus": 4,
Строка 2544: Строка 3202:
 
                         "Value": "Партнер-покупатель1"
 
                         "Value": "Партнер-покупатель1"
 
                     }
 
                     }
                   }
+
                  },
               ],
+
                                    {
               "HotelTypes": [],
+
                    "HotelRoom": 38636,
               "Id": 1,
+
                    "Room":                      {
               "SvKey": 3,
+
                        "Key": 2,
 +
                        "Value": "Double"
 +
                    },
 +
                    "RoomCategory":                      {
 +
                        "Key": 3764,
 +
                        "Value": "Standart Without window"
 +
                    },
 +
                    "AccomodationType":                      {
 +
                        "Key": 328,
 +
                        "Value": "2Ad",
 +
                        "AdultCount": 2,
 +
                        "ChildCount": 0
 +
                    },
 +
                    "Pansion":                      {
 +
                        "Key": 4,
 +
                        "Value": "Завтрак"
 +
                    },
 +
                    "Cost": 338.9,
 +
                    "QuotaStatus":                      {
 +
                        "PlacesStatus": 4,
 +
                        "FreePlaces": 0,
 +
                        "IsFewPlaces": false
 +
                    },
 +
                    "PartnerId": 12667,
 +
                    "ByPax": false,
 +
                    "Partner":                      {
 +
                        "Key": 12667,
 +
                        "Value": "Партнер-покупатель1"
 +
                    }
 +
                   }
 +
               ],
 +
               "HotelTypes": [],
 +
               "Id": 1,
 +
               "SvKey": 3,
 
               "IsSubCode1": true,
 
               "IsSubCode1": true,
 
               "IsSubCode2": true,
 
               "IsSubCode2": true,
Строка 2799: Строка 3490:
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
 
** '''countryId *''' – ключ страны, для которой будут выгружаться настройки
 
** '''countryId *''' – ключ страны, для которой будут выгружаться настройки
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''TouristFieldsSettings''' – массив полей с информацией о туристах (из админки Мастер-Web)  
 
** '''TouristFieldsSettings''' – массив полей с информацией о туристах (из админки Мастер-Web)  
Строка 2809: Строка 3502:
 
**** '''IsRequired''' – признак обязательности заполнения поля
 
**** '''IsRequired''' – признак обязательности заполнения поля
 
**** '''IsVisible''' – видимость поля (видимое)
 
**** '''IsVisible''' – видимость поля (видимое)
**** '''IsDisabled''' – видимость поля (невидимое)
+
**** '''IsDisabled''' – служебный внутренний параметр. При работе с API не используется
 
**** '''Translit''' – настройки транслитерации (0 – нет, 1 – транслитерация, 2 – латиница)  
 
**** '''Translit''' – настройки транслитерации (0 – нет, 1 – транслитерация, 2 – латиница)  
 
**** '''LetterCase''' – настройки регистра (0 – по умолчанию, 1 – с заглавной, 2 – большие, 3 – маленькие)
 
**** '''LetterCase''' – настройки регистра (0 – по умолчанию, 1 – с заглавной, 2 – большие, 3 – маленькие)
Строка 2838: Строка 3531:
 
** '''ChildAgeSetting''' – максимальный возраст ребенка, когда он считается ребенком (лет)
 
** '''ChildAgeSetting''' – максимальный возраст ребенка, когда он считается ребенком (лет)
 
** '''InfantAgeSetting''' – максимальный возраст младенца (месяцев)
 
** '''InfantAgeSetting''' – максимальный возраст младенца (месяцев)
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 3129: Строка 3823:
 
Метод производит выгрузку услуг доплат к авиаперелетам.
 
Метод производит выгрузку услуг доплат к авиаперелетам.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/GetFlightsAdditionalServices?
+
** POST .../TourSearchOwin/GetFlightsAdditionalServices?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 3162: Строка 3857:
 
**** '''ByPax''' – цена за человека
 
**** '''ByPax''' – цена за человека
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3205: Строка 3900:
 
*** '''ServiceName''' – название услуги
 
*** '''ServiceName''' – название услуги
 
*** '''City''' – объект город
 
*** '''City''' – объект город
*** '''Country''' – ключ страны
+
*** '''Country''' – объект страна
 +
**** '''Key''' – ключ страны
 +
**** '''Value''' – название страны
 
*** '''Code''' – объект код услуги
 
*** '''Code''' – объект код услуги
 
**** '''Key''' – ключ услуги
 
**** '''Key''' – ключ услуги
Строка 3221: Строка 3918:
 
**** '''Cost''' – цена
 
**** '''Cost''' – цена
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3254: Строка 3951:
 
Вызов метода GetHotelsAdditionalServices
 
Вызов метода GetHotelsAdditionalServices
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
POST http://localhost:9000/TourSearchOwin/GetHotelsAdditionalServices? HTTP/1.1
+
POST http://localhost:9000/TourSearchOwin/GetFlightsAdditionalServices?nodeId=2147483647 HTTP/1.1
 
Content-Type: application/json
 
Content-Type: application/json
 
{
 
{
Строка 3395: Строка 4092:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода GetHotelsAdditionalServices (в формате JSON)
+
Возвращаемый результат метода GetFlightsAdditionalServices (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
[{
 
[{
 
"ServiceName": "Доплаты к авиаперелетам",
 
"ServiceName": "Доплаты к авиаперелетам",
 
"City": null,
 
"City": null,
"Country": 90,
+
        "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
},
 
"Code": {
 
"Code": {
 
"Key": 357,
 
"Key": 357,
Строка 3457: Строка 4157:
 
Метод производит выгрузку услуг доплат к отелям.
 
Метод производит выгрузку услуг доплат к отелям.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/GetHotelsAdditionalServices?
+
** POST .../TourSearchOwin/GetHotelsAdditionalServices?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 3490: Строка 4191:
 
**** '''ByPax''' – цена за человека
 
**** '''ByPax''' – цена за человека
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)  
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3572: Строка 4273:
 
**** '''Cost''' – цена
 
**** '''Cost''' – цена
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3605: Строка 4306:
 
Вызов метода GetHotelsAdditionalServices
 
Вызов метода GetHotelsAdditionalServices
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
POST http://localhost:9000/TourSearchOwin/GetHotelsAdditionalServices? HTTP/1.1
+
POST http://localhost:9000/TourSearchOwin/GetHotelsAdditionalServices?nodeId=2147483647 HTTP/1.1
 
Content-Type: application/json
 
Content-Type: application/json
  
Строка 3741: Строка 4442:
 
"ServiceName": "Доплаты к отелям",
 
"ServiceName": "Доплаты к отелям",
 
"City": null,
 
"City": null,
"Country": 90,
+
                "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
},
 
"Code": {
 
"Code": {
 
"Key": 364,
 
"Key": 364,
Строка 3799: Строка 4503:
 
Метод производит расчет услуг с индивидуальным выбором у туристов.
 
Метод производит расчет услуг с индивидуальным выбором у туристов.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/CalculateIndividualServiceCosts?
+
** POST .../TourSearchOwin/CalculateIndividualServiceCosts?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 3861: Строка 4566:
 
**** '''Brutto''' – брутто
 
**** '''Brutto''' – брутто
 
**** '''Discount''' – скидка
 
**** '''Discount''' – скидка
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 3867: Строка 4573:
 
Вызов метода CalculateIndividualServiceCosts
 
Вызов метода CalculateIndividualServiceCosts
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
POST http://localhost:9000/TourSearchOwin/CalculateIndividualServiceCosts? HTTP/1.1
+
POST http://localhost:9000/TourSearchOwin/CalculateIndividualServiceCosts?nodeId=2147483647 HTTP/1.1
 
Content-Type: application/json
 
Content-Type: application/json
  
Строка 3947: Строка 4653:
  
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
<font style="color:red">''Внимание!''</font> Если в туре используется перелет из GDS, то в параметр '''flightSettings''' передается ответ из секции '''flightGDSRequest''' метода API [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Актуализация тура (ActualizeTour)|ActualizeTour]]. Далее для получения цены выполняем методы [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)|RebuidFlights]] и [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Расчет путевки (CalculateReservation)|CalculateReservation]]. <br />
 
** '''flightSettings''' – информация о шаблоне услуги авиаперелета
 
** '''flightSettings''' – информация о шаблоне услуги авиаперелета
 
*** '''templateId''' – идентификатор шаблона услуги
 
*** '''templateId''' – идентификатор шаблона услуги
Строка 4203: Строка 4910:
 
     "key": 0,
 
     "key": 0,
 
     "tourDurationByDays": "11",
 
     "tourDurationByDays": "11",
     "langueCode": "ru"
+
     "langueCode": "ru",
 +
    "isCanary": "false"
 
}
 
}
  
Строка 4659: Строка 5367:
  
 
===Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)===
 
===Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)===
 +
<font style="color:red">''Внимание!''</font> Если в туре используется перелет из GDS, то перед этим методом вызывается [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Поиск рейсов из внешней системы (GetGDSFlights)|GetGDSFlights]] в принимаемые параметры которого передается ответ из секции flightGDSRequest метода API [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Актуализация тура (ActualizeTour)|ActualizeTour]]. Далее текущий метод [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)|RebuidFlights]] и далее [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Расчет путевки (CalculateReservation)|CalculateReservation]]. <br />
 
Метод возвращает информацию по выбранному перелету от внешнего поставщика.  
 
Метод возвращает информацию по выбранному перелету от внешнего поставщика.  
 
* Формат запроса:
 
* Формат запроса:
Строка 4909: Строка 5618:
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''QuotaStatus''' – информация о квоте
 
***** '''QuotaStatus''' – информация о квоте
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 5817: Строка 6526:
 
Метод производит расчет стоимости путевки.
 
Метод производит расчет стоимости путевки.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/CalculateReservation?
+
** POST .../TourSearchOwin/CalculateReservation?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 5823: Строка 6533:
  
 
* Принимаемые параметры POST запроса:
 
* Принимаемые параметры POST запроса:
** '''TourProgramId''' – ключ турпрограммы
+
** '''TourProgramId *''' – ключ турпрограммы
** '''BeginDate''' – дата начала тура
+
** '''BeginDate *''' – дата начала тура
** '''Duration''' – продолжительность тура
+
** '''Duration *''' – продолжительность тура
** '''Currency''' – код валюты
+
** '''Currency *''' – код валюты
** '''initialPrice''' – объект изначальная цена
+
** '''initialPrice *''' – объект изначальная цена
*** '''price''' – цена
+
*** '''price *''' – цена
*** '''currency''' – код валюты
+
*** '''currency *''' – код валюты
** '''Services''' – массив услуг
+
** '''Services *''' – массив услуг
*** '''Service''' – объект услуги (отель/круиз, авиаперелет, трансфер или др.)
+
*** '''Service *''' – объект услуги (отель/круиз, авиаперелет, трансфер или др.)
**** '''ServiceType''' – тип услуги (поле ''sv_key'' из таблицы ''service'')
+
**** '''ServiceType *''' – тип услуги (поле ''sv_key'' из таблицы ''service'')
**** '''Code''' – код услуги
+
**** '''Code *''' – код услуги
**** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] услуги
+
**** '''SubCode1 *''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] услуги
**** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] услуги
+
**** '''SubCode2 *''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] услуги
**** '''Packet''' – ключ пакета услуги
+
**** '''Packet *''' – ключ пакета услуги
**** '''Partner''' – ключ партнера услуги
+
**** '''Partner *''' – ключ партнера услуги
**** '''Day''' – день предоставления услуги
+
**** '''Day *''' – день предоставления услуги
**** '''DurationInNight''' – продолжительность услуги в ночах
+
**** '''DurationInNight *''' – продолжительность услуги в ночах
**** '''City''' – ключ города
+
**** '''City *''' – ключ города
**** '''Country''' – страна услуги
+
**** '''Country *''' – страна услуги
**** '''Attributes''' – битовая маска атрибутов услуг
+
**** '''Attributes *''' – битовая маска атрибутов услуг (Значение по умолчанию 0. Дальше в зависимости от признака услуги, может принимать значениz:
**** '''IsRemovable''' – (не обрабатывается)
+
None              = 0,если услуга удаляемая, эта настройка находится в программе туров,</br>
**** '''Type''' – тип услуги в путевке (базовая дополнительная)
+
Delete            = 1,</br>
**** '''IsHooded''' – признак скрытая услуга
+
CodeEdit          = 2,</br>
**** '''IsNotCalculated''' – признак не рассчитываемая услуга
+
SubCode1Edit      = 4,</br>
**** '''BeginDateTimeString''' – дата и время начала услуги
+
CityEdit          = 8,</br>
**** '''EndDateTimeString''' – дата и время окончания услуги
+
PartnerEdit      = 16,</br>
**** '''TemplateId''' – шаблон услуги
+
BadCheck          = 32,</br>
**** '''Cost''' – цена услуги
+
Invisible        = 64, отображаемая</br>
**** '''ByPax''' – цена за человека
+
DurationEdit      = 128,</br>
**** '''QuotaStatus''' – объект статус квотирования
+
FullEdit          = Delete | CodeEdit | SubCode1Edit | SubCode2Edit | CityEdit | PartnerEdit | DurationEdit,</br>
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
+
Host              = 256,</br>
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
+
HostChangeCode2  = Host | 512,</br>
***** '''IsFewPlaces''' выполнены ли условия, заданные в настройке "Мало": '''true''' если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
+
HostChangeCode1  = Host | 1024,</br>
**** '''Index''' – индекс услуги
+
HostChangeCode    = Host | 2048,</br>
**** '''IsRoute''' – признак маршрутная услуга
+
HostChangePartner = Host | 4096,</br>
**** '''ServiceTemplateIndex''' – индекс шаблона услуги
+
HostChangePacket  = Host | 8192,</br>
**** '''RemoteId''' – информация об услуге в удаленной системе
+
Depended          = 16384,</br>
**** '''IsCommission''' – признак, комиссионная ли услуга
+
DependedCode2    = Depended | 512,</br>
**** '''BaseFlightsParams''' – параметры рассчитанных авиаперелетов
+
DependedCode1    = Depended | 1024,</br>
***** '''CityArrival''' – ключ города прибытия прямого перелета
+
DependedCode      = Depended | 2048,</br>
***** '''FlightCode''' – ключ прямого авиаперелета
+
DependedCity      = Depended | 4096,</br>
***** '''TariffKey''' – ключ тарифа прямого авиаперелета
+
DependedCountry  = Depended | 8192,</br>
***** '''PartnerId''' – ключ партнера прямого авиаперелета
+
FullDepended      = Depended | DependedCode2 | DependedCode1 | DependedCode | DependedCity | DependedCountry,</br>
***** '''CityArrival''' – ключ города прибытия обратного перелета
+
NotCalculate      = 32768,не рассчитываемая,</br>
***** '''FlightCode''' – ключ обратного авиаперелета
+
SubCode2Edit      = 65536,</br>
***** '''TariffKey''' – ключ тарифа обратного авиаперелета
+
GDSService        = 131072, от внешней системы)</br>
***** '''PartnerId''' – ключ партнера обратного авиаперелета
+
**** ''' *IsRemovable''' – (не обрабатывается)
*** '''TouristNumbersList''' – массив туристов, привязанных к услуге
+
**** ''' *Type''' – тип услуги в путевке. Может принимать значения:
** '''Tourists''' – массив туристов
+
None (0) – не установлено,</br>
*** '''IsMain''' – главный турист
+
Base (1) – базовая услуга. Основные услуги в корзине, проживание, перелет.</br>
*** '''Number''' – порядковый номер туриста
+
Optional (2) Дополнительная услуга,</br>
*** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
+
NYDinner (4) – Новогодний ужин,</br>
*** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
+
FlightAdditionalPayment (8) Доплата на перелет,</br>
*** '''FirstName''' – имя (лат)
+
TourWebDifference (16) Разница в СПО,</br>
*** '''LastName''' – фамилия (лат)
+
AddedByCalculator (32) – Добавленная при рассчете путевки,</br>
*** '''Patronymic''' – отчество (лат)
+
AddedByReservationBuilder (64) – добавленная услуга при формировании состава путевки,</br>
*** '''FirstNameRus''' – имя (рус)
+
BaseChanged (128) – базовая измененная услуга,</br>
*** '''LastNameRus''' – фамилия (рус)
+
HotelAdditionalPayment (256) – доплата на отель</br>
*** '''PatronymicRus''' – отчество (рус)
+
**** '''IsHooded *''' – признак скрытая услуга
*** '''InternationalPassportSeries''' – серия загранпаспорта
+
**** '''IsNotCalculated *''' – признак не рассчитываемая услуга
*** '''InternationalPassportNumber''' – номер загранпаспорта
+
**** '''BeginDateTimeString *''' – дата и время начала услуги
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
+
**** '''EndDateTimeString *''' – дата и время окончания услуги
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке (DD.MM.YYYY)
+
**** '''TemplateId *''' – порядок расположения шаблона услуги в внутри самой услуги в программе тура
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
+
[[Файл: Ea_491.png|600px|индекс шаблона услуги]]</br>
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY)
+
**** '''Cost *''' – цена услуги
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
+
**** '''ByPax *''' – цена за человека
*** '''PassportSeries''' – серия паспорта
+
**** '''QuotaStatus *''' – объект статус квотирования
*** '''PassportNumber''' – номер паспорта
+
***** '''PlacesStatus *''' – статус по квотам (есть места / нет мест / под запрос)
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
+
***** '''FreePlaces *''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
*** '''PassportDateOfIssueString''' – дата выдачи паспорта  строковом формате (DD.MM.YYYY)
+
***** '''IsFewPlaces *''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
*** '''PassportByWhom''' – кем выдан паспорт
+
**** '''Index *''' – индекс услуги
*** '''Citizenship''' – название страны
+
**** '''IsRoute *''' – признак маршрутная услуга (Перелет, автобусный переезд, жд переезд, трансфер, экскурсия)
*** '''Phone''' – телефон
+
**** '''ServiceTemplateIndex *''' – индекс шаблона услуги (Порядок расположения услуги в программе тура. Не отображается в программе туров,это просто порядковый номер услуги в путевке)
*** '''Email''' – e-mail
+
[[Файл: Ea_490.png|600px|индекс шаблона услуги]]</br>
*** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
+
**** '''RemoteId *''' – информация об услуге во внешней системе
*** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
+
**** '''IsCommission *''' – признак, комиссионная ли услуга
*** '''BirthPlace''' – место рождения
+
**** '''BaseFlightsParams *''' – параметры рассчитанных авиаперелетов ''Обязательный параметр, если в путевке есть услуга авиаперелета''
*** '''CitizenID''' – гражданство
+
***** '''CityArrival *''' – ключ города прибытия прямого перелета
*** '''Age''' – количество полных лет на момент окончания тура
+
***** '''FlightCode *''' – ключ прямого авиаперелета
** '''Day''' – день (перевод)
+
***** '''TariffKey *''' – ключ тарифа прямого авиаперелета
** '''Day2''' – дня (перевод)
+
***** '''PartnerId *''' – ключ партнера прямого авиаперелета
** '''Days''' – дней (перевод)
+
***** '''CityArrival *''' – ключ города прибытия обратного перелета
** '''Night''' – ночь (перевод)
+
***** '''FlightCode *''' – ключ обратного авиаперелета
** '''Night2''' – ночи (перевод)
+
***** '''TariffKey *''' – ключ тарифа обратного авиаперелета
** '''Nights''' – ночей (перевод)
+
***** '''PartnerId *''' – ключ партнера обратного авиаперелета
** '''adultsCountOverServiceLimit''' – Количество взрослых туристов превышает лимит услуги (перевод)
+
*** '''TouristNumbersList *''' – массив туристов, привязанных к услуге
** '''at''' – на (перевод)
+
** '''Tourists *''' – массив туристов. Для того, чтобы узнать, какие поля обязательные для туриста, мы можем обратиться к методу [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка настройки отображения полей по туристам (TouristDataSettings)|TouristDataSettings]] по определенной стране. В каждом объекте есть поле '''IsRequired''', которое отвечает за то, будет ли оно обязательным для заполнения или его можно оставить с пустым значением.
** '''incorrectChildrenInf''' – Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание) (перевод)
+
*** '''IsMain *''' – главный турист
 
+
*** '''Number *''' – порядковый номер туриста
* Возвращаемый результат:
+
*** '''AgeType *''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
** '''IsValid''' – признак валидности путевки
+
*** '''MaleFemaleSex *''' – пол (0 – мужской, 1 – женский)
** '''ErrorMessage''' – сообщение об ошибке, если есть
+
*** '''FirstName *''' – имя (лат)
** '''CalculatedReservation''' – объект рассчитанной путевки  
+
*** '''LastName *''' – фамилия (лат)
*** '''TourKey''' – ключ тура  
+
*** '''Patronymic *''' – отчество (лат)
*** '''BeginDate''' – дата начала тура
+
*** '''FirstNameRus *''' – имя (рус)
*** '''Duration''' – продолжительность путевки в днях
+
*** '''LastNameRus *''' – фамилия (рус)
*** '''Currency''' – код валюты тура  
+
*** '''PatronymicRus *''' – отчество (рус)
*** '''CalculatedServicesPrice''' – сумма обязательных услуг, входящих в состав тура  
+
*** '''InternationalPassportSeries *''' – серия загранпаспорта
*** '''ChangedPrice''' – сумма, на которую изменилась итоговая стоимость '''TotalPrice''' в результате добавления обязательных и дополнительных услуг
+
*** '''InternationalPassportNumber *''' – номер загранпаспорта
*** '''Price''' – итоговая стоимость тура для агентства, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг - партнерская комиссия (в валюте тура)
+
*** '''InternationalPassportDateOfIssue *''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''TotalPrice''' – итоговая стоимость тура для туриста, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг (в валюте тура)
+
*** '''InternationalPassportDateOfIssueString *''' – дата выдачи загранпаспорта в строке (DD.MM.YYYY)
 +
*** '''InternationalPassportDateOfExpiry *''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''InternationalPassportDateOfExpiryString *''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY)
 +
*** '''internationalPassportByWhom *''' – кем выдан загранпаспорт
 +
*** '''PassportSeries *''' – серия паспорта
 +
*** '''PassportNumber *''' – номер паспорта
 +
*** '''PassportDateOfIssue *''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''PassportDateOfIssueString *''' – дата выдачи паспорта  строковом формате (DD.MM.YYYY)
 +
*** '''PassportByWhom *''' – кем выдан паспорт
 +
*** '''Citizenship *''' – название страны
 +
*** '''Phone *''' – телефон
 +
*** '''Email *''' – e-mail
 +
*** '''BirthDay *''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
 +
*** '''BirthDayString *''' – дата рождения в строковом формате (DD.MM.YYYY)
 +
*** '''BirthPlace *''' – место рождения
 +
*** '''CitizenID *''' – гражданство
 +
*** '''Age *''' – количество полных лет на момент окончания тура
 +
** '''Day *''' – день (перевод) ''Может быть с пустым значением''
 +
** '''Day2 *''' – дня (перевод) ''Может быть с пустым значением''
 +
** '''Days *''' – дней (перевод) ''Может быть с пустым значением''
 +
** '''Night *''' – ночь (перевод) ''Может быть с пустым значением''
 +
** '''Night2 *''' – ночи (перевод) ''Может быть с пустым значением''
 +
** '''Nights *''' – ночей (перевод) ''Может быть с пустым значением''
 +
** '''adultsCountOverServiceLimit *''' – Количество взрослых туристов превышает лимит услуги (перевод) ''Может быть с пустым значением''
 +
** '''at *''' – на (перевод) ''Может быть с пустым значением''
 +
** '''incorrectChildrenInf *''' – Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание) (перевод) ''Может быть с пустым значением''
 +
** '''DiscountCardId *''' – ID основания для скидки (дисконтной карты) полученное в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Проверка основания для скидки (CheckCauseDiscount)|CheckCauseDiscount]] ''Может быть с пустым значением''
 +
** '''PromocodeId *''' – ID промокода полученное в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Проверка промокода (CheckPromocode)|CheckPromocode]] ''Может быть с пустым значением''
 +
 
 +
 
 +
* Возвращаемый результат:
 +
** '''IsValid''' – признак валидности путевки
 +
** '''ErrorMessage''' – сообщение об ошибке, если есть
 +
** '''CalculatedReservation''' – объект рассчитанной путевки  
 +
*** '''TourKey''' – ключ тура  
 +
*** '''BeginDate''' – дата начала тура
 +
*** '''Duration''' – продолжительность путевки в днях
 +
*** '''Currency''' – код валюты тура  
 +
*** '''CalculatedServicesPrice''' – сумма обязательных услуг, входящих в состав тура  
 +
*** '''ChangedPrice''' – сумма, на которую изменилась итоговая стоимость '''TotalPrice''' в результате добавления обязательных и дополнительных услуг
 +
*** '''Price''' – итоговая стоимость тура для агентства, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг - партнерская комиссия (в валюте тура)
 +
*** '''TotalPrice''' – итоговая стоимость тура для туриста, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг (в валюте тура)
 
*** '''IsDiscountIsPercent''' – признак, в процентах ли дается партнерская комиссия или в y.e.
 
*** '''IsDiscountIsPercent''' – признак, в процентах ли дается партнерская комиссия или в y.e.
 
*** '''NationalChangedPrice''' – сумма, на которую изменилась итоговая стоимость '''TotalPrice''' в результате добавления обязательных и дополнительных услуг (в национальной валюте)
 
*** '''NationalChangedPrice''' – сумма, на которую изменилась итоговая стоимость '''TotalPrice''' в результате добавления обязательных и дополнительных услуг (в национальной валюте)
Строка 5949: Строка 6700:
 
** '''DurationInNights''' – продолжительность тура в ночах
 
** '''DurationInNights''' – продолжительность тура в ночах
 
** '''NationalCurrency''' – код национальной валюты
 
** '''NationalCurrency''' – код национальной валюты
 +
** '''PromoDiscount''' – числовое значение скидки полученное после ввода промокода, либо дисконтной карты
 +
** '''PromoTotalDiscount''' – значение скидки в валюте тура
 +
** '''PromoNationalDiscount''' – значение скидки в национальной валюте
 +
** '''PromoIsDiscountPercent''' – обозначение типа скидки в процентах. Значение может быть:
 +
***'''true''' – скидка по промокоду, либо дисконтной карты предоставляется в процентах
 +
*** '''false''' – скидка по промокоду, либо дисконтной карты предоставляется в фиксированном значении, согласно валюте тура
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 5955: Строка 6714:
 
Вызов метода CalculateReservation
 
Вызов метода CalculateReservation
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
POST http://localhost:9000/TourSearchOwin/CalculateReservation? HTTP/1.1
+
POST http://localhost:9000/TourSearchOwin/CalculateReservation?nodeId=2147483647 HTTP/1.1
 
Content-Type: application/json
 
Content-Type: application/json
  
Строка 6129: Строка 6888:
 
"at": "на",
 
"at": "на",
 
"incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)"
 
"incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)"
 +
        "PromocodeId":"",
 +
        "DiscountCardId":"95"
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 6153: Строка 6914:
 
"Discount": 0.0,
 
"Discount": 0.0,
 
"TotalDiscount": 0.0,
 
"TotalDiscount": 0.0,
 +
                "PromoDiscount": 50.0,
 +
                "PromoTotalDiscount": 10.0,
 +
                "PromoNationalDiscount": 10.0,
 +
                "PromoIsDiscountPercent": true,
 
"ServiceTourists": [{
 
"ServiceTourists": [{
 
"ServiceType": 1,
 
"ServiceType": 1,
Строка 6208: Строка 6973:
  
 
* Формат запроса:
 
* Формат запроса:
** PUT .../TourSearchOwin/CreateReservation/1?
+
** PUT .../TourSearchOwin/CreateReservation/1?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 6215: Строка 6981:
  
 
* Принимаемые параметры PUT запроса:
 
* Принимаемые параметры PUT запроса:
** '''TourProgramId''' – ключ турпрограммы
+
** '''TourProgramId *''' – ключ турпрограммы
** '''BeginDate''' – дата начала тура (YYYY-MM-DDThh:mm:ss)
+
** '''BeginDate *''' – дата начала тура (YYYY-MM-DDThh:mm:ss)
** '''Duration''' – продолжительность тура
+
** '''Duration *''' – продолжительность тура
** '''Currency''' – код валюты
+
** '''Currency *''' – код валюты
** '''Services''' – массив услуг
+
** '''Services *''' – массив услуг
*** '''Service''' – объект услуги (отель/круиз, авиаперелет, трансфер или др.)
+
*** '''Service *''' – объект услуги (отель/круиз, авиаперелет, трансфер или др.)
**** '''ServiceType''' – тип услуги (поле ''sv_key'' из таблицы ''service'')
+
**** '''ServiceType *''' – тип услуги (поле ''sv_key'' из таблицы ''service'')
**** '''Code''' – код услуги
+
**** '''Code *''' – код услуги
**** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] услуги
+
**** '''SubCode1 *''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] услуги
**** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] услуги
+
**** '''SubCode2 *''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] услуги
**** '''Packet''' – ключ пакета услуги
+
**** '''Packet *''' – ключ пакета услуги
**** '''Partner''' – ключ партнера услуги
+
**** '''Partner *''' – ключ партнера услуги
**** '''Day''' – день предоставления услуги
+
**** '''Day *''' – день предоставления услуги
**** '''DurationInNight''' – продолжительность услуги в ночах
+
**** '''DurationInNight *''' – продолжительность услуги в ночах
**** '''City''' – ключ города
+
**** '''City *''' – ключ города
**** '''Country''' – страна услуги
+
**** '''Country *''' – страна услуги
**** '''Attributes''' – битовая маска атрибутов услуг
+
**** '''Attributes *''' – битовая маска атрибутов услуг
**** '''IsRemovable''' – (не обрабатывается)
+
**** '''IsRemovable *''' – (не обрабатывается)
**** '''Type''' – тип услуги в путевке (базовая дополнительная)
+
**** '''Type *''' – тип услуги в путевке (базовая дополнительная)
**** '''IsHooded''' – признак скрытая услуга
+
**** '''IsHooded *''' – признак скрытая услуга
**** '''IsNotCalculated''' – признак не рассчитываемая услуга
+
**** '''IsNotCalculated *''' – признак не рассчитываемая услуга
**** '''BeginDateTimeString''' – дата и время начала услуги
+
**** '''BeginDateTimeString *''' – дата и время начала услуги
**** '''EndDateTimeString''' – дата и время окончания услуги
+
**** '''EndDateTimeString *''' – дата и время окончания услуги
**** '''TemplateId''' – шаблон услуги
+
**** '''TemplateId *''' – шаблон услуги
**** '''Cost''' – цена услуги
+
**** '''Cost *''' – цена услуги
**** '''ByPax''' – цена за человека
+
**** '''ByPax *''' – цена за человека
**** '''QuotaStatus''' – объект статус квотирования
+
**** '''QuotaStatus *''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus *''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)  
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
+
***** '''FreePlaces *''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
+
***** '''IsFewPlaces *''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
**** '''Index''' – индекс услуги
+
**** '''Index *''' – индекс услуги
**** '''IsRoute''' – признак маршрутная услуга
+
**** '''IsRoute *''' – признак маршрутная услуга
**** '''ServiceTemplateIndex''' – индекс шаблона услуги
+
**** '''ServiceTemplateIndex *''' – индекс шаблона услуги
**** '''RemoteId''' – информация об услуге в удаленной системе
+
**** '''RemoteId *''' – информация об услуге во внешний системе
**** '''IsCommission''' – признак, комиссионная ли услуга
+
**** '''IsCommission *''' – признак, комиссионная ли услуга
**** '''BaseFlightsParams''' – параметры рассчитанных авиаперелетов
+
**** '''BaseFlightsParams *''' – параметры рассчитанных авиаперелетов ''Обязательный параметр, если в путевке есть услуга авиаперелета''
***** '''CityArrival''' – ключ города прибытия прямого перелета
+
***** '''CityArrival *''' – ключ города прибытия прямого перелета
***** '''FlightCode''' – ключ прямого авиаперелета
+
***** '''FlightCode *''' – ключ прямого авиаперелета
***** '''TariffKey''' – ключ тарифа прямого авиаперелета
+
***** '''TariffKey *''' – ключ тарифа прямого авиаперелета
***** '''PartnerId''' – ключ партнера прямого авиаперелета
+
***** '''PartnerId *''' – ключ партнера прямого авиаперелета
***** '''CityArrival''' – ключ города прибытия обратного перелета
+
***** '''CityArrival *''' – ключ города прибытия обратного перелета
***** '''FlightCode''' – ключ обратного авиаперелета
+
***** '''FlightCode *''' – ключ обратного авиаперелета
***** '''TariffKey''' – ключ тарифа обратного авиаперелета
+
***** '''TariffKey *''' – ключ тарифа обратного авиаперелета
***** '''PartnerId''' – ключ партнера обратного авиаперелета
+
***** '''PartnerId *''' – ключ партнера обратного авиаперелета
*** '''TouristNumbersList''' – массив туристов, привязанных к услуге
+
*** '''TouristNumbersList *''' – массив туристов, привязанных к услуге
** '''Tourists''' – массив туристов
+
** '''Tourists *''' – массив туристов. Для того, чтобы узнать, какие поля обязательные для туриста, мы можем обратиться к методу [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка настройки отображения полей по туристам (TouristDataSettings)|TouristDataSettings]] по определенной стране. В каждом объекте есть поле '''IsRequired''', которое отвечает за то, будет ли оно обязательным для заполнения или его можно оставить с пустым значением.
*** '''IsMain''' – главный турист
+
*** '''IsMain *''' – главный турист
*** '''Number''' – порядковый номер туриста
+
*** '''Number *''' – порядковый номер туриста
*** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
+
*** '''AgeType *''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
*** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
+
*** '''MaleFemaleSex *''' – пол (0 – мужской, 1 – женский)
*** '''FirstName''' – имя (лат)
+
*** '''FirstName *''' – имя (лат)
*** '''LastName''' – фамилия (лат)
+
*** '''LastName *''' – фамилия (лат)
*** '''Patronymic''' – отчество (лат)
+
*** '''Patronymic *''' – отчество (лат)
*** '''FirstNameRus''' – имя (рус)
+
*** '''FirstNameRus *''' – имя (рус)
*** '''LastNameRus''' – фамилия (рус)
+
*** '''LastNameRus *''' – фамилия (рус)
*** '''PatronymicRus''' – отчество (рус)
+
*** '''PatronymicRus *''' – отчество (рус)
*** '''InternationalPassportSeries''' – серия загранпаспорта
+
*** '''InternationalPassportSeries *''' – серия загранпаспорта
*** '''InternationalPassportNumber''' – номер загранпаспорта
+
*** '''InternationalPassportNumber *''' – номер загранпаспорта
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
+
*** '''InternationalPassportDateOfIssue *''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY)
+
*** '''InternationalPassportDateOfIssueString *''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY)
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
+
*** '''InternationalPassportDateOfExpiry *''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY)
+
*** '''InternationalPassportDateOfExpiryString *''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY)
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
+
*** '''internationalPassportByWhom *''' – кем выдан загранпаспорт
*** '''PassportSeries''' – серия паспорта
+
*** '''PassportSeries *''' – серия паспорта
*** '''PassportNumber''' – номер паспорта
+
*** '''PassportNumber *''' – номер паспорта
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
+
*** '''PassportDateOfIssue *''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строковом формате (DD.MM.YYYY)
+
*** '''PassportDateOfIssueString *''' – дата выдачи паспорта в строковом формате (DD.MM.YYYY)
*** '''PassportByWhom''' – кем выдан паспорт
+
*** '''PassportByWhom *''' – кем выдан паспорт
*** '''Citizenship''' – название страны
+
*** '''Citizenship *''' – название страны
*** '''Phone''' – телефон
+
*** '''Phone *''' – телефон
*** '''Email''' – e-mail
+
*** '''Email *''' – e-mail
*** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
+
*** '''BirthDay *''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
*** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
+
*** '''BirthDayString *''' – дата рождения в строковом формате (DD.MM.YYYY)
*** '''BirthPlace''' – место рождения
+
*** '''BirthPlace *''' – место рождения
*** '''CitizenID''' – ID туриста (задается в карточке постоянного клиента)
+
*** '''CitizenID *''' – ID туриста (задается в карточке постоянного клиента)
*** '''Age''' – количество полных лет на момент окончания тура
+
*** '''Age *''' – количество полных лет на момент окончания тура
** '''BranchId''' – ключ филиала бронирования (начиная с релиза 15.3). Если не передан, то филиал бронирования берется из менеджера по умолчанию либо из пользователя, создавшего тур.
+
** '''BranchId *''' – ключ филиала бронирования (начиная с релиза 15.3). Если не передан, то филиал бронирования берется из менеджера по умолчанию либо из пользователя, создавшего тур. ''Может быть с пустым значением''
** '''OwnerId''' – ключ ведущего менеджера (начиная с релиза 15.3). Если 0, то берется по умолчанию. Если по умолчанию не указан, то берется создатель тура.
+
** '''OwnerId *''' – ключ ведущего менеджера (начиная с релиза 15.3). Если 0, то берется по умолчанию. Если по умолчанию не указан, то берется создатель тура. ''Может быть с пустым значением''
** '''Day''' – день (перевод)
+
** '''Day *''' – день (перевод) ''Может быть с пустым значением''
** '''Day2''' – дня (перевод)
+
** '''Day2 *''' – дня (перевод) ''Может быть с пустым значением''
** '''Days''' – дней (перевод)
+
** '''Days *''' – дней (перевод) ''Может быть с пустым значением''
** '''Night''' – ночь (перевод)
+
** '''Night *''' – ночь (перевод) ''Может быть с пустым значением''
** '''Night2''' – ночи (перевод)
+
** '''Night2 *''' – ночи (перевод) ''Может быть с пустым значением''
** '''Nights''' – ночей (перевод)
+
** '''Nights *''' – ночей (перевод) ''Может быть с пустым значением''
** '''adultsCountOverServiceLimit''' – Количество взрослых туристов превышает лимит услуги (перевод)
+
** '''adultsCountOverServiceLimit *''' – Количество взрослых туристов превышает лимит услуги (перевод) ''Может быть с пустым значением''
** '''incorrectChildrenInf''' – Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание) (перевод)  
+
** '''incorrectChildrenInf *''' – Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание) (перевод) ''Может быть с пустым значением''
 
+
** '''OrderInfoUrl''' – Адрес окна путевки в личном кабинете
* Возвращаемый результат:
+
** '''DogovorComment''' – Комментарий к путевке (сохраняется как сообщения в истории путевки) ''Может быть с пустым значением''
** '''Reservation''' – объект путевки
+
** '''DiscountCardId ''' – ID основания для скидки (дисконтной карты) полученное в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Проверка основания для скидки (CheckCauseDiscount)|CheckCauseDiscount]] ''Может быть с пустым значением''
 +
** '''PromocodeId ''' – ID промокода полученное в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Проверка промокода (CheckPromocode)|CheckPromocode]] ''Может быть с пустым значением''
 +
 
 +
 
 +
 
 +
* Возвращаемый результат:
 +
** '''Reservation''' – объект путевки
 
*** '''$id''' – внутренний идентификатор для установки связей между сущностями,
 
*** '''$id''' – внутренний идентификатор для установки связей между сущностями,
 
*** '''Code''' – код путевки
 
*** '''Code''' – код путевки
Строка 6322: Строка 7094:
 
*** '''Discount''' – величина скидки на одного человека
 
*** '''Discount''' – величина скидки на одного человека
 
*** '''DiscountSum''' – абсолютная величина скидки
 
*** '''DiscountSum''' – абсолютная величина скидки
*** '''SORCode''' – ключ статус путевки
+
*** '''SORCode''' – ключ статус путевки, возможные значения: 0-в работе, 1-не определён, 2-аннулирован, 3-wait лист, 7-ок.
 
*** '''CrDate''' – дата и время создания путевки
 
*** '''CrDate''' – дата и время создания путевки
 
*** '''Rate''' – код валюты путевки
 
*** '''Rate''' – код валюты путевки
Строка 6375: Строка 7147:
 
**** '''SubCode2''' – ключ доп.описания 2 услуги
 
**** '''SubCode2''' – ключ доп.описания 2 услуги
 
**** '''Men''' – количество человек, пользующихся услугой по путевке
 
**** '''Men''' – количество человек, пользующихся услугой по путевке
**** '''Days''' – количество дней услуги
+
**** '''Days''' – количество дней услуги (для услуги Отель ("SVKey": 3) количество ночей услуги)
 
**** '''CNKey''' – ключ страны услуги
 
**** '''CNKey''' – ключ страны услуги
 
**** '''CTKey''' – ключ города услуги
 
**** '''CTKey''' – ключ города услуги
Строка 6385: Строка 7157:
 
**** '''Control''' – ключ статуса услуги (ссылка на таблицу Controls),
 
**** '''Control''' – ключ статуса услуги (ссылка на таблицу Controls),
 
**** '''Attribute''' – атрибут услуги
 
**** '''Attribute''' – атрибут услуги
**** '''DateBeg''' – дата начала действия услуги
+
**** '''DateBeg''' – дата начала действия услуги в днях (для отеля - в ночах)
**** '''DateEnd''' – дата окончания действия услуги
+
**** '''DateEnd''' – дата окончания действия услуги в днях (для отеля - в ночах)
 
**** '''Discount''' – размер скидки по услуге
 
**** '''Discount''' – размер скидки по услуге
 
**** '''Comment''' – комментарий к услуге
 
**** '''Comment''' – комментарий к услуге
Строка 6473: Строка 7245:
 
Вызов метода CreateReservation
 
Вызов метода CreateReservation
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
PUT http://localhost:9000/TourSearchOwin/CreateReservation/1? HTTP/1.1
+
PUT http://localhost:9000/TourSearchOwin/CreateReservation/1?nodeId=2147483647 HTTP/1.1
 
Content-Type: application/json
 
Content-Type: application/json
 
Authorization: Bearer AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA-
 
Authorization: Bearer AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA-
Строка 6649: Строка 7421:
 
             "Phone": "",
 
             "Phone": "",
 
             "Email": "",
 
             "Email": "",
             "BirthDay": "1979-12-31T21:00:00.000Z",
+
             "BirthDay": "1980-01-01T00:00:00.000Z",
 
             "BirthDayString": "01.01.1980",
 
             "BirthDayString": "01.01.1980",
 
             "BirthPlace": "Москва",
 
             "BirthPlace": "Москва",
Строка 6680: Строка 7452:
 
             "Phone": "",
 
             "Phone": "",
 
             "Email": "",
 
             "Email": "",
             "BirthDay": "1980-12-31T21:00:00.000Z",
+
             "BirthDay": "1981-01-01T00:00:00.000Z",
 
             "BirthDayString": "01.01.1981",
 
             "BirthDayString": "01.01.1981",
 
             "BirthPlace": "Москва",
 
             "BirthPlace": "Москва",
Строка 6697: Строка 7469:
 
     "Nights": "ночей",
 
     "Nights": "ночей",
 
     "adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги",
 
     "adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги",
     "incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)"
+
     "incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)",
 +
    "OrderInfoUrl": "http://localhost/MasterWeb/OrderInfo.aspx",
 +
    "DogovorComment": ""
 +
    "PromocodeId":"301",
 +
    "DiscountCardId":""
 +
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 7117: Строка 7894:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка информации о путевке (GetReservation)===
+
===Бронирование путевки с упрощенными входными параметрами (CreateReservationExternalSystem)===
Метод выводит информацию о бронированной путевке.
+
Метод производит бронирование путевки с упрощенными входными параметрами. <br />
 +
При бронировании проверяется корректность заполнения обязательных полей туристов. В случае, если обязательные поля не заполнены, возвращается ошибка с сообщением, бронь не создается.
 +
Данный метод разработан индивидуально для одного из клиентов. В обычном режиме нужно пользоваться всегда методом [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Бронирование путевки (CreateReservation)|Бронирование путевки (CreateReservation)]]
  
* Формат запроса:
+
*Формат запроса:
** GET .../TourSearchOwin/GetReservation?
+
** PUT .../TourSearchOwin/CreateReservationExternalSystem/1?
  
* Принимаемые параметры headers ( '''*''' – обязательный):
+
*Принимаемые параметры headers ('''*''' – обязательный):
 
** '''Content-Type *''' – application/json
 
** '''Content-Type *''' – application/json
** '''Authorization *''' – token_type + access_token (полученные из метода .../TourSearchOwin/Token?)  
+
** '''Authorization *''' – token_type + access_token (полученные из метода .../TourSearchOwin/Token?)
  
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
+
*Принимаемые параметры PUT запроса:
** '''dgCode *''' – номер путевки:
+
** '''BeginDate *''' – дата начала тура (YYYY-MM-DDThh:mm)
 
+
** '''Duration *''' – продолжительность тура в днях
* Возвращаемый результат:
+
** '''Currency *''' – код валюты
** '''$id''' – внутренний идентификатор для установки связей между сущностями,
+
** '''TourProgramId''' – идентификатор турпрограммы (необязательный, по умолчанию 0)
** '''Code''' – код путевки
+
** '''Services *''' – массив услуг, в данном случае будет содержать только услугу отель
** '''TurDate''' – дата заезда
+
*** '''Code *''' – идентификатор отеля во внешней системе, сравниваются с промежуточной базой данных статического адаптера [[Megatec Integration Service:Индивидуальные особенности адаптеров TravelLine (Россия)|MIS TravelLine (Россия)]]
** '''TRKey''' – ключ тура
+
*** '''Cost *''' – стоимость проживания за весь период
** '''CNKey''' – ключ страны
+
*** '''Packet *''' – идентификатор пакета, сравниваются с промежуточной базой данных статического адаптера [[Megatec Integration Service:Индивидуальные особенности адаптеров TravelLine (Россия)|MIS TravelLine (Россия)]]
** '''CTKey''' – ключ города
+
*** '''SubCode1 *''' – идентификатор типа номера, сравниваются с промежуточной базой данных статического адаптера [[Megatec Integration Service:Индивидуальные особенности адаптеров TravelLine (Россия)|MIS TravelLine (Россия)]]
** '''NMen''' – количество туристов по путевке
+
** '''Tourists *''' – массив туристов
** '''Price''' – стоимость путевки за вычетом скидки (комиссии)
+
*** '''FirstName *''' – имя туриста
** '''Payed''' – оплаченная сумма по путевке
+
*** '''LastName *''' – фамилия туриста
** '''NDay''' – продолжительность тура в днях
+
*** '''Patronymic *''' – отчество туриста
** '''MainMan''' – ФИО лица, заключившего договор
+
*** '''MaleFemaleSex *''' – пол (0 – мужской, 1 женский)
** '''MainManPhone''' – номер телефона лица, заключившего договор
+
*** '''AgeType *''' – тип туриста (0 взрослый, 1 ребенок, 2 инфант)
** '''MainManAddress''' – адрес лица, заключившего договор
+
*** '''Age *''' – количество полных лет на момент окончания тура
** '''MainManPassport''' – паспортные данные лица, заключившего договор
+
*** '''Phone *''' – телефон (обязателен для первого туриста)
** '''PartnerKey''' – ключ партнера, оформившего договор
+
*** '''Email *''' – e-mail (обязателен для первого туриста)
** '''Operator''' – ФИО создателя договора
+
** '''DogovorComment *''' – комментарий к путевке (ограничение 254 символа, при превышении разбивается на части)
** '''Discount''' – величина скидки на одного человека
+
[[Файл:Am 063.png|left]]<br />
** '''DiscountSum''' – абсолютная величина скидки
+
1. В случае, если в теле запроса указываются ID несинхронизированных отелей, пакета, типа номера, то создаются фиктивные данные, которые необходимо изменить в услуге экрана ''Путевка'' (пример: Отель ApiHotel, пакет ApiPacket, тип номера ApiRoom(ApiRoomCategory),ApiAccmdmen)<br />
** '''SORCode''' – ключ статус путевки
+
2. Тип питания всегда будет создаваться фиктивный и его необходимо изменить в услуге экрана ''Путевка'' (пример: Тип питания ApiPansion)<br /><br /><br />
** '''CrDate''' – дата и время создания путевки
+
*Возвращаемый результат:
** '''Rate''' – код валюты путевки
+
** '''Reservation''' – объект путевки
** '''Advertise''' – ключ источника рекламы
+
*** '''$id''' – внутренний идентификатор для установки связей между сущностями,
** '''Locked''' – блокировка путевки: ''1'' – если заблокирована
+
*** '''Code''' – код путевки
** '''CauseDisc''' – ключ основания для скидки
 
** '''PPaymentDate''' – максимальная дата внесения предоплаты
 
** '''PaymentDate''' – максимальная дата полной оплаты
 
** '''Procent''' – информация о предоплате: ''1'' – предоплата в %; ''0'' предоплата в у.е.
 
** '''TurDateBfrAnnul''' значение даты заезда до аннуляции путевки (при аннуляции дата заезда заменяется на 31.12.1899)
 
** '''ARKey''' – ключ причины аннуляции путевки
 
** '''Key''' – ключ договора
 
** '''CodePartner''' значение ключевого поля из таблицы партнеров
 
** '''FilialKey''' ключ филиала фирмы-владельца, пользователем которого была забронирована путевка
 
** '''IsOutDoc''' статус выдачи документов
 
** '''Notes''' – сообщение поставщику
 
** '''DiscSumBfrAnn''' – числовое значение скидки перед аннуляцией путевки
 
** '''PriceBfrAnn''' – стоимость путевки перед ее аннуляцией
 
** '''RazmerP''' – размер предоплаты
 
** '''LeadDepartment''' – ключ отдела, ведущего данный тур
 
** '''MainManEmail''' – адрес е-mail из данных лица, заключившего договор
 
** '''MainManComment''' – примечание из данных лица, заключившего договор
 
** '''DupUserKey''' – ключ представителя партнера, которым был оформлен договор
 
** '''BTKey''' – ключ системы бронирования, из которой был оформлен договор
 
** '''ConfirmedDate''' – дата подтверждения путевки покупателю
 
** '''PrtDogKey''' – договор партнера, по которому оформлена путевка
 
** '''CTDepartureKey''' – ключ города начала поездки
 
** '''PDTType''' – тип договора, по которому оформлена путевка
 
** '''NationalCurrencyPrice''' – стоимость путевки в национальной валюте
 
** '''NationalCurrencyDiscountSum''' – значение скидки в национальной валюте
 
** ''