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

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(Установка)
 
(не показано 86 промежуточных версий 6 участников)
Строка 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>
Строка 508: Строка 600:
 
** '''Name''' – название страны
 
** '''Name''' – название страны
 
** '''Key''' – идентификатор страны
 
** '''Key''' – идентификатор страны
** '''DestinationType''' – тип результата (параметр не изменяемый, когда результат возвращается в JSON, то значение будет = 1, когда результат возвращается в xml, то значение будет = country). Зависит от программы, которая возвращает результат.
+
** '''DestinationType''' – тип результата (внутренний параметр, не изменяемый, всегда возвращается значение = 1)
 
** '''IsExist''' – не используется
 
** '''IsExist''' – не используется
 
** '''Data''' – массив данных для контекстного поиска
 
** '''Data''' – массив данных для контекстного поиска
Строка 690: Строка 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''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
Строка 696: Строка 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">Пример
Строка 736: Строка 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'', то есть все типы тура в рамках данной страны
 
* Возвращаемый результат:
 
* Возвращаемый результат:
Строка 772: Строка 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'', то есть все типы тура в рамках данной страны
Строка 811: Строка 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 *''' – количество взрослых
Строка 824: Строка 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''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
Строка 865: Строка 957:
 
** '''IsGroupingTourAlreadyMerge''' – определяет слияние данных турпрограмм от локальной системы с данными от внешней системы при использовании группировки. Примеры использования. ''IsGroupingTourAlreadyMerge=false'' – полученные данные от локальной системы не объединены с данными от внешней системы. На клиенте осуществляется объединение данных турпрограмм с последующей сортировкой по минимальной цене. ''IsGroupingTourAlreadyMerge=true'' – полученные данные от локальной системы уже объединены с данными от внешней системы. На клиенте осуществляется только сортировка по минимальной цене. Обрабатывается начиная с релиза 15.4.
 
** '''IsGroupingTourAlreadyMerge''' – определяет слияние данных турпрограмм от локальной системы с данными от внешней системы при использовании группировки. Примеры использования. ''IsGroupingTourAlreadyMerge=false'' – полученные данные от локальной системы не объединены с данными от внешней системы. На клиенте осуществляется объединение данных турпрограмм с последующей сортировкой по минимальной цене. ''IsGroupingTourAlreadyMerge=true'' – полученные данные от локальной системы уже объединены с данными от внешней системы. На клиенте осуществляется только сортировка по минимальной цене. Обрабатывается начиная с релиза 15.4.
 
** '''SearchId''' – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5.
 
** '''SearchId''' – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5.
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 
   
 
   
  
Строка 877: Строка 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''' – идентификатор города отправления
Строка 925: Строка 1045:
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''QuotaStatus''' – информация о квоте
 
***** '''QuotaStatus''' – информация о квоте
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)  
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 956: Строка 1076:
 
***** '''Key''' – ключ города
 
***** '''Key''' – ключ города
 
***** '''Value''' – название города
 
***** '''Value''' – название города
**** '''Country''' – ключ страны
+
**** '''Country''' – объект страна
 +
***** '''Key''' – ключ страны
 +
***** '''Value''' – название страны
 
**** '''Code''' – объект код услуги
 
**** '''Code''' – объект код услуги
 
***** '''Key''' – ключ услуги
 
***** '''Key''' – ключ услуги
Строка 972: Строка 1094:
 
***** '''Cost''' – цена
 
***** '''Cost''' – цена
 
***** '''QuotaStatus''' – объект информация по квотам
 
***** '''QuotaStatus''' – объект информация по квотам
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 1062: Строка 1184:
 
***** '''enabled''' – флаг включен/выключен
 
***** '''enabled''' – флаг включен/выключен
 
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 +
*** '''Routes''' – количество маршрутов для данного варианта поиска (к примеру, если будет несколько вариантов
 +
*** '''IsRemoteHotels''' – признак, есть ли внешние отели в данном варианте
 +
*** '''IsTourImages''' – признак, есть ли картинки тура
 +
*** '''MaskKeys''' – маска фильтра категории номеров
 
** '''SecondaryFiltersResult''' – результаты доп. фильтров
 
** '''SecondaryFiltersResult''' – результаты доп. фильтров
 
*** '''TourTypes''' – типы тура
 
*** '''TourTypes''' – типы тура
Строка 1112: Строка 1238:
 
****** '''settings''' –
 
****** '''settings''' –
 
****** '''enabled''' –
 
****** '''enabled''' –
**** '''XmlSettings''' – строка xml для актуальных фильтров
 
 
**** '''Type''' – тип справочника (используется для внутренних целей)
 
**** '''Type''' – тип справочника (используется для внутренних целей)
 
*** '''TourDurations''' – продолжительность тура
 
*** '''TourDurations''' – продолжительность тура
Строка 1140: Строка 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">Пример
Строка 1167: Строка 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":          {
Строка 1302: Строка 1455:
 
                     "Value": "Завтрак"
 
                     "Value": "Завтрак"
 
                   },
 
                   },
 +
                  "AbsolutePenalties": null,
 
                   "Cost": 19.47,
 
                   "Cost": 19.47,
 
                   "QuotaStatus":                  {
 
                   "QuotaStatus":                  {
Строка 1418: Строка 1572:
 
               "ServiceName": "страховка",
 
               "ServiceName": "страховка",
 
               "City": null,
 
               "City": null,
               "Country": 6245,
+
               "Country":               {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 
               "Code":                {
 
               "Code":                {
 
                   "Key": 297,
 
                   "Key": 297,
Строка 1471: Строка 1628:
 
                   "Value": "Санто-Доминго"
 
                   "Value": "Санто-Доминго"
 
               },
 
               },
               "Country": 6245,
+
               "Country":               {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 
               "Code":                {
 
               "Code":                {
 
                   "Key": 743,
 
                   "Key": 743,
Строка 1606: Строка 1766:
 
             }
 
             }
 
         },
 
         },
         "RouteSubVariants": []
+
         "RouteSubVariants": [],
 +
        "Routes": 1,
 +
        "IsRemoteHotels": false,
 +
        "IsTourImages": false,
 +
        "MaskKeys": null
 
       }
 
       }
 
   ],
 
   ],
Строка 1674: Строка 1838:
 
               }
 
               }
 
             },
 
             },
            "XmlSettings": "информация о туре в формате xml",
 
 
             "Type": "TourProgram"
 
             "Type": "TourProgram"
 
         }
 
         }
Строка 2124: Строка 2287:
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
 +
 +
* Детализация параметра 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 включительно===
 
===Выгрузка транспортного плана (TransportPlan) до релиза 15.7 включительно===
Строка 2561: Строка 2741:
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
 
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
** '''DestinationType *''' – тип результата (параметр не изменяемый, когда результат возвращается в JSON, то значение будет = 1, когда результат возвращается в xml, то значение будет = country). Зависит от программы, которая возвращает результат.
+
** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
Строка 2571: Строка 2751:
 
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
** '''HotelScheme *''' – объект схемы отеля
+
** '''HotelScheme *''' – объект схемы отеля (при работе с авиабукингом передается конструкция такого вида ''HotelScheme=[{"TemplateId":"}]'')
 
*** '''TemplateId''' – идентификатор шаблона услуги
 
*** '''TemplateId''' – идентификатор шаблона услуги
 
*** '''DurationInNight''' – продолжительность отеля в ночах
 
*** '''DurationInNight''' – продолжительность отеля в ночах
Строка 2582: Строка 2762:
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false).
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false).
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (true/false)
+
** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
+
** '''TourKey''' – ключ программы тура
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
+
** '''TourDuration''' – продолжительность тура в днях
 
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
 
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Возвращаемый результат:
 
* Возвращаемый результат:
Строка 2597: Строка 2778:
 
*** '''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''' – дата начала тура
 +
*** '''MaxConnectionTime''' – длительность пересадок в индивидуальных настройках подбора перелетов в формате hh:mm
 +
*** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
 +
*** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
 +
*** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
 +
*** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
 +
*** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
 +
*** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
 +
*** '''Duration''' – продолжительность тура (в днях)
 +
*** '''DurationInNight''' – продолжительность проживания (в ночах)
 +
*** '''Types''' – идентификатор типа туров
 +
*** '''Price''' –  цена тура с учетом скидки в валюте поиска
 +
*** '''Cost''' – цена тура в валюте поиска
 +
*** '''Rate''' – код валюты тура
 +
*** '''Penalties''' – внутреннее поле, не используется
 
*** '''StartDate''' – дата начала тура
 
*** '''StartDate''' – дата начала тура
 
*** '''Duration''' – продолжительность тура (в днях)
 
*** '''Duration''' – продолжительность тура (в днях)
Строка 2645: Строка 2859:
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''QuotaStatus''' – информация о квоте
 
***** '''QuotaStatus''' – информация о квоте
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)  
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 2676: Строка 2890:
 
***** '''Key''' – ключ города
 
***** '''Key''' – ключ города
 
***** '''Value''' – название города
 
***** '''Value''' – название города
**** '''Country''' – ключ страны
+
**** '''Country''' – объект страна
 +
***** '''Key''' – ключ страны
 +
***** '''Value''' – название страны
 
**** '''Code''' – объект код услуги
 
**** '''Code''' – объект код услуги
 
***** '''Key''' – ключ услуги
 
***** '''Key''' – ключ услуги
Строка 2692: Строка 2908:
 
***** '''Cost''' – цена
 
***** '''Cost''' – цена
 
***** '''QuotaStatus''' – объект информация по квотам
 
***** '''QuotaStatus''' – объект информация по квотам
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)  
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 2783: Строка 2999:
 
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 
** '''SecondaryFiltersResult''' – доп. фильтры (не используется при вызове из корзины)
 
** '''SecondaryFiltersResult''' – доп. фильтры (не используется при вызове из корзины)
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
  
Строка 2810: Строка 3027:
 
         "TourUrl": "www.megatec.ru",
 
         "TourUrl": "www.megatec.ru",
 
         "BookingConditions": "Условия бронирования тура",
 
         "BookingConditions": "Условия бронирования тура",
         "StartDate": "2018-03-31T00:00:00",
+
        "DefaultManagers": [],
         "Duration": 8,
+
        "Manager": 169,
         "DurationInNight": 7,
+
        "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",
 +
        "MaxConnectionTime": 0
 +
        "FullPaymentPeriod": 5,
 +
        "FullPaymentCheckin": null,
 +
        "PrePaymentPeriod": null,
 +
        "PrePaymentCheckin": 5,
 +
        "PrePaymentCu": null,
 +
        "PrePaymentPercent": 10.0,
 +
         "Duration": 4,
 +
         "DurationInNight": 3,
 
         "Types": [2],
 
         "Types": [2],
         "Cost": 122,
+
        "Price": 260,
 +
         "Cost": 260,
 +
        "Penalties": null,
 
         "Rate": "EU",
 
         "Rate": "EU",
 
         "CityDepature":          {
 
         "CityDepature":          {
Строка 3246: Строка 3490:
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
 
** '''countryId *''' – ключ страны, для которой будут выгружаться настройки
 
** '''countryId *''' – ключ страны, для которой будут выгружаться настройки
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''TouristFieldsSettings''' – массив полей с информацией о туристах (из админки Мастер-Web)  
 
** '''TouristFieldsSettings''' – массив полей с информацией о туристах (из админки Мастер-Web)  
Строка 3256: Строка 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 – маленькие)
Строка 3285: Строка 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">Пример
Строка 3576: Строка 3823:
 
Метод производит выгрузку услуг доплат к авиаперелетам.
 
Метод производит выгрузку услуг доплат к авиаперелетам.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/GetFlightsAdditionalServices?
+
** POST .../TourSearchOwin/GetFlightsAdditionalServices?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 3609: Строка 3857:
 
**** '''ByPax''' – цена за человека
 
**** '''ByPax''' – цена за человека
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3652: Строка 3900:
 
*** '''ServiceName''' – название услуги
 
*** '''ServiceName''' – название услуги
 
*** '''City''' – объект город
 
*** '''City''' – объект город
*** '''Country''' – ключ страны
+
*** '''Country''' – объект страна
 +
**** '''Key''' – ключ страны
 +
**** '''Value''' – название страны
 
*** '''Code''' – объект код услуги
 
*** '''Code''' – объект код услуги
 
**** '''Key''' – ключ услуги
 
**** '''Key''' – ключ услуги
Строка 3668: Строка 3918:
 
**** '''Cost''' – цена
 
**** '''Cost''' – цена
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3701: Строка 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
 
{
 
{
Строка 3842: Строка 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,
Строка 3904: Строка 4157:
 
Метод производит выгрузку услуг доплат к отелям.
 
Метод производит выгрузку услуг доплат к отелям.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/GetHotelsAdditionalServices?
+
** POST .../TourSearchOwin/GetHotelsAdditionalServices?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 3937: Строка 4191:
 
**** '''ByPax''' – цена за человека
 
**** '''ByPax''' – цена за человека
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)  
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 4019: Строка 4273:
 
**** '''Cost''' – цена
 
**** '''Cost''' – цена
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 4052: Строка 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
  
Строка 4188: Строка 4442:
 
"ServiceName": "Доплаты к отелям",
 
"ServiceName": "Доплаты к отелям",
 
"City": null,
 
"City": null,
"Country": 90,
+
                "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
},
 
"Code": {
 
"Code": {
 
"Key": 364,
 
"Key": 364,
Строка 4246: Строка 4503:
 
Метод производит расчет услуг с индивидуальным выбором у туристов.
 
Метод производит расчет услуг с индивидуальным выбором у туристов.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/CalculateIndividualServiceCosts?
+
** POST .../TourSearchOwin/CalculateIndividualServiceCosts?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 4308: Строка 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">Пример
Строка 4314: Строка 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
  
Строка 5359: Строка 5618:
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''QuotaStatus''' – информация о квоте
 
***** '''QuotaStatus''' – информация о квоте
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 6267: Строка 6526:
 
Метод производит расчет стоимости путевки.
 
Метод производит расчет стоимости путевки.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/CalculateReservation?
+
** POST .../TourSearchOwin/CalculateReservation?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 6273: Строка 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)
*** '''IsDiscountIsPercent''' – признак, в процентах ли дается партнерская комиссия или в y.e.
+
*** '''InternationalPassportDateOfExpiry *''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''NationalChangedPrice''' – сумма, на которую изменилась итоговая стоимость '''TotalPrice''' в результате добавления обязательных и дополнительных услуг (в национальной валюте)
+
*** '''InternationalPassportDateOfExpiryString *''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY)
*** '''NationalTotalDiscount''' – партнерская комиссия агентству (в национальной валюте)  
+
*** '''internationalPassportByWhom *''' – кем выдан загранпаспорт
*** '''NationalTotalPrice''' – итоговая стоимость тура для туриста, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг (в национальной валюте)  
+
*** '''PassportSeries *''' – серия паспорта
*** '''NatinoalCalculatedServicesPrice''' – сумма обязательных услуг, входящих в состав тура (в национальной валюте)   
+
*** '''PassportNumber *''' – номер паспорта
*** '''NationalPrice''' – итоговая стоимость тура для агентства, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг - партнерская комиссия (в национальной валюте)
+
*** '''PassportDateOfIssue *''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
*** '''Discount''' – партнерская комиссия агентству (в процентах или y.e.)
+
*** '''PassportDateOfIssueString *''' – дата выдачи паспорта  строковом формате (DD.MM.YYYY)
*** '''TotalDiscount''' – партнерская комиссия агентству (в валюте тура)
+
*** '''PassportByWhom *''' – кем выдан паспорт
*** '''ServiceTourists''' – массив услуг, входящих в тур  
+
*** '''Citizenship *''' – название страны
**** '''ServiceType''' – тип услуги
+
*** '''Phone *''' – телефон
**** '''Day''' – день предоставления
+
*** '''Email *''' – e-mail
**** '''DurationInNight''' – продолжительность в ночах  
+
*** '''BirthDay *''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
**** '''Time''' – время начала услуги
+
*** '''BirthDayString *''' – дата рождения в строковом формате (DD.MM.YYYY)
**** '''Name''' – полное описание услуги
+
*** '''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.
 +
*** '''NationalChangedPrice''' – сумма, на которую изменилась итоговая стоимость '''TotalPrice''' в результате добавления обязательных и дополнительных услуг (в национальной валюте)
 +
*** '''NationalTotalDiscount''' – партнерская комиссия агентству (в национальной валюте)  
 +
*** '''NationalTotalPrice''' – итоговая стоимость тура для туриста, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг (в национальной валюте)  
 +
*** '''NatinoalCalculatedServicesPrice''' – сумма обязательных услуг, входящих в состав тура (в национальной валюте)   
 +
*** '''NationalPrice''' – итоговая стоимость тура для агентства, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг - партнерская комиссия (в национальной валюте)
 +
*** '''Discount''' – партнерская комиссия агентству (в процентах или y.e.)
 +
*** '''TotalDiscount''' – партнерская комиссия агентству (в валюте тура)
 +
*** '''ServiceTourists''' – массив услуг, входящих в тур  
 +
**** '''ServiceType''' – тип услуги
 +
**** '''Day''' – день предоставления
 +
**** '''DurationInNight''' – продолжительность в ночах  
 +
**** '''Time''' – время начала услуги
 +
**** '''Name''' – полное описание услуги
 
**** '''TouristCount''' – количество туристов на услуге
 
**** '''TouristCount''' – количество туристов на услуге
 
**** '''Attributes''' – битовая маска атрибутов
 
**** '''Attributes''' – битовая маска атрибутов
Строка 6399: Строка 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">Пример
Строка 6405: Строка 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
  
Строка 6579: Строка 6888:
 
"at": "на",
 
"at": "на",
 
"incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)"
 
"incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)"
 +
        "PromocodeId":"",
 +
        "DiscountCardId":"95"
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 6603: Строка 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,
Строка 6658: Строка 6973:
  
 
* Формат запроса:
 
* Формат запроса:
** PUT .../TourSearchOwin/CreateReservation/1?
+
** PUT .../TourSearchOwin/CreateReservation/1?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 6665: Строка 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''' – код путевки
Строка 6772: Строка 7094:
 
*** '''Discount''' – величина скидки на одного человека
 
*** '''Discount''' – величина скидки на одного человека
 
*** '''DiscountSum''' – абсолютная величина скидки
 
*** '''DiscountSum''' – абсолютная величина скидки
*** '''SORCode''' – ключ статус путевки
+
*** '''SORCode''' – ключ статус путевки, возможные значения: 0-в работе, 1-не определён, 2-аннулирован, 3-wait лист, 7-ок.
 
*** '''CrDate''' – дата и время создания путевки
 
*** '''CrDate''' – дата и время создания путевки
 
*** '''Rate''' – код валюты путевки
 
*** '''Rate''' – код валюты путевки
Строка 6825: Строка 7147:
 
**** '''SubCode2''' – ключ доп.описания 2 услуги
 
**** '''SubCode2''' – ключ доп.описания 2 услуги
 
**** '''Men''' – количество человек, пользующихся услугой по путевке
 
**** '''Men''' – количество человек, пользующихся услугой по путевке
**** '''Days''' – количество дней услуги
+
**** '''Days''' – количество дней услуги (для услуги Отель ("SVKey": 3) количество ночей услуги)
 
**** '''CNKey''' – ключ страны услуги
 
**** '''CNKey''' – ключ страны услуги
 
**** '''CTKey''' – ключ города услуги
 
**** '''CTKey''' – ключ города услуги
Строка 6835: Строка 7157:
 
**** '''Control''' – ключ статуса услуги (ссылка на таблицу Controls),
 
**** '''Control''' – ключ статуса услуги (ссылка на таблицу Controls),
 
**** '''Attribute''' – атрибут услуги
 
**** '''Attribute''' – атрибут услуги
**** '''DateBeg''' – дата начала действия услуги
+
**** '''DateBeg''' – дата начала действия услуги в днях (для отеля - в ночах)
**** '''DateEnd''' – дата окончания действия услуги
+
**** '''DateEnd''' – дата окончания действия услуги в днях (для отеля - в ночах)
 
**** '''Discount''' – размер скидки по услуге
 
**** '''Discount''' – размер скидки по услуге
 
**** '''Comment''' – комментарий к услуге
 
**** '''Comment''' – комментарий к услуге
Строка 6923: Строка 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-
Строка 7099: Строка 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": "Москва",
Строка 7130: Строка 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": "Москва",
Строка 7147: Строка 7469:
 
     "Nights": "ночей",
 
     "Nights": "ночей",
 
     "adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги",
 
     "adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги",
     "incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)"
+
     "incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)",
 +
    "OrderInfoUrl": "http://localhost/MasterWeb/OrderInfo.aspx",
 +
    "DogovorComment": ""
 +
    "PromocodeId":"301",
 +
    "DiscountCardId":""
 +
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 7567: Строка 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''' – значение скидки в национальной валюте
 
** '''NationalCurrencyPayed''' – сумма платежей по путевке, зафиксированная в национальной валюте
 
** '''CurrencyKey''' ключ национальной валюты путевки
 
** '''CurrencyRate''' – курс национальной валюты путевки
 
** '''ClientKey''' – ключ частника, которым был оформлен договор
 
** '''Partner''' информация о партнере покупателе, привязанным к путевке
 
*** '''$id''' – внутренний идентификатор для установки связей между сущностями
 
*** '''Key''' – ключ партнера покумателя
 
*** '''FullName''' – полное имя партнера
 
*** '''Name''' – имя партнера
 
** '''Services''' – коллекция услуг в данной путевке
 
*** '''$id''' – внутренний идентификатор для установки связей между сущностями
 
*** '''DGCod''' – номер путевки
 
 
*** '''TurDate''' – дата начала тура
 
*** '''TurDate''' – дата начала тура
*** '''Key''' – ключ услуги
+
*** '''TRKey''' – идентификатор тура
*** '''PaketKey''' – ключ пакета
+
*** '''CNKey''' – идентификатор страны
*** '''TRKey''' – клют тура
+
*** '''CTKey''' – идентификатор города
*** '''SVKey''' – ключ типа услуги
+
*** '''NMen''' – количество туристов
*** '''Name''' – наименование услуги
+
*** '''Price''' – стоимость путевки
*** '''Day''' – порядковый номер дня тура, в который предоставляется услуга
+
*** '''Payed''' – оплаченная сумма
*** '''Code''' – ключ кода услуги
+
*** '''NDay''' – продолжительность тура в днях
*** '''SubCode1''' – ключ доп.описания 1 услуги
+
*** '''MainMan''' – контактное лицо
*** '''SubCode2''' – ключ доп.описания 2 услуги
+
*** '''MainManPhone''' – телефон контактного лица
*** '''Men''' – количество человек, пользующихся услугой по путевке
+
*** '''MainManAddress''' – адрес лица, заключившего договор
*** '''Days''' – количество дней услуги
+
*** '''MainManPassport''' – паспортные данные контактного лица
*** '''CNKey''' – ключ страны услуги
+
*** '''PartnerKey''' – идентификатор партнера
*** '''CTKey''' – ключ города услуги
+
*** '''Operator''' – оператор, оформивший путевку
*** '''PartnerKey''' – ключ партнера, предоставляющего услугу
+
*** '''Discount''' – размер скидки
*** '''Brutto''' – стоимость услуги брутто
+
*** '''DiscountSum''' – сумма скидки
*** '''Wait''' – признак услуги ''Снимать квоту при бронировании''
+
*** '''SORCode''' – ключ статус путевки, возможные значения: 0-в работе, 1-не определён, 2-аннулирован, 3-wait лист, 7-ок.
*** '''Warning''' – неиспользуемое поле
+
*** '''CrDate''' – дата создания путевки
*** '''TimeBeg''' – поле используется для сортировки услуг в путевке
+
*** '''Rate''' – код валюты путевки
*** '''Control''' – ключ статуса услуги (ссылка на таблицу Controls),
+
*** '''Advertise''' – идентификатор рекламного источника
*** '''Attribute''' – атрибут услуги
+
*** '''Locked''' – статус блокировки путевки
*** '''DateBeg''' – дата начала действия услуги
+
*** '''CauseDisc''' – код основания скидки
*** '''DateEnd''' – дата окончания действия услуги
+
*** '''PPaymentDate''' – дата предоплаты
*** '''Discount''' – размер скидки по услуге
+
*** '''PaymentDate''' – максимальная дата полной оплаты
*** '''Comment''' – комментарий к услуге
+
*** '''Procent''' – предоплата в %
*** '''DGKey''' – ключ договора,
+
*** '''TurDateBfrAnnul''' – дата начала тура до аннуляции
*** '''Blocked''' – признак блокировки услуги (''0'' – не блокирована, ''1'' – блокирована)
+
*** '''ARKey''' – идентификатор причины аннуляции
*** '''NameLat''' – наименование услуги (латинский)
+
*** '''Key''' – идентификатор договора
*** '''Long''' – продолжительность тура в днях
+
*** '''CodePartner''' – идентификатор партнера
*** '''TRFId''' – ключ тарифа
+
*** '''FilialKey''' – идентификатор филиала
*** '''CreateDate''' – дата создания услуги в путевке
+
*** '''IsOutDoc''' – статус выдачи документов
*** '''CalculatePriceDate''' – дата расчета цены
+
*** '''Notes''' – примечания
*** '''ShowOrder''' – порядок при сортировке
+
*** '''DiscSumBfrAnn''' – сумма скидки перед аннуляцией
*** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
+
*** '''PriceBfrAnn''' – цена путевки перед аннуляцией
**** '''$ref''' – связь с внутренним идентификатором ''$id''
+
*** '''RazmerP''' – размер предоплаты
** '''Turists''' – коллекция туристов в данной путевке
+
*** '''LeadDepartment''' – идентификатор ведущего отдела
*** '''$id''' – внутренний идентификатор для установки связей между сущностями
+
*** '''MainManEmail''' – e-mail контактного лица
*** '''DGCod''' – номер путевки, к которому привязан турист
+
*** '''MainManComment''' – комментарий контактного лица
*** '''Key''' – ключ туриста
+
*** '''DupUserKey''' – идентификатор представителя агента
*** '''TurDate''' – дата начала тура
+
*** '''BTKey''' – идентификатор системы бронирования
*** '''NameRus''' – фамилия туриста (русское)
+
*** '''ConfirmedDate''' – дата подтверждения путевки
*** '''NameLat''' – фамилия туриста (латинское)
+
*** '''PrtDogKey''' – идентификатор договора партнера
*** '''ShortName''' – имя и отчество туриста в формате ''И.О.''
+
*** '''CTDepartureKey''' – идентификатор города отправления
*** '''Sex''' – пол туриста (признак): ''Null'' или ''0'' – Муж; ''1'' – Жен; ''2'' – Child (ребенок); ''3'' – Infant (младенец)
+
*** '''PDTType''' – тип договора путевки
*** '''FNameRus''' – имя туриста (русское)
+
*** '''NationalCurrencyPrice''' – цена в национальной валюте
*** '''FNameLat''' – имя туриста (латинское)
+
*** '''NationalCurrencyDiscountSum''' – сумма скидки в национальной валюте
*** '''SNameRus''' – отчество туриста (русское)
+
*** '''NationalCurrencyPayed''' – оплаченная сумма в национальной валюте
*** '''SNameLat''' – отчество туриста (латинское)
+
*** '''CurrencyKey''' – идентификатор валюты
*** '''BirthDay''' – дата рождения туриста
+
*** '''CurrencyRate''' – курс валюты
*** '''BirthCountry''' – страна рождения туриста
+
*** '''ClientKey''' – идентификатор клиента
*** '''BirthCity''' – город рождения туриста
+
*** '''AgencyPrice''' – цена для агентства
*** '''Citizen''' – гражданство туриста
+
*** '''Partner''' – информация о партнере
*** '''PostIndex''' – почтовый индекс
+
**** '''$id''' – идентификатор записи
*** '''PostCity''' – адрес проживания туриста (город)
+
**** '''Key''' – идентификатор партнера
*** '''PostStreet''' – адрес проживания туриста (улица)
+
**** '''FullName''' – полное название партнера
*** '''PostBild''' – адрес проживания туриста (номер дома)
+
**** '''Name''' – краткое название партнера
*** '''PostFlat''' – адрес проживания туриста (номер квартиры)
+
*** '''Services''' – список услуг
*** '''Phone''' – номер телефона туриста
+
**** '''$id''' – внутренний идентификатор для установки связей между сущностями
*** '''PhoneCode''' – код телефона туриста
+
**** '''DGCod''' – номер путевки
*** '''PasportType''' – серия заграничного паспорта
+
**** '''TurDate''' – дата начала тура
*** '''PasportNum''' – номер заграничного паспорта
+
**** '''Key''' – ключ услуги
*** '''PasportDate''' – дата выдачи заграничного паспорта
+
**** '''PaketKey''' – ключ пакета
*** '''PasportDateEnd''' – дата окончания срока действия заграничного паспорта
+
**** '''TRKey''' – клют тура
*** '''PasportByWhom''' – кем выдан заграничный паспорт
+
**** '''SVKey''' – ключ типа услуги
*** '''Place''' – место рождения
+
**** '''Name''' – наименование услуги
*** '''IsAnketa''' – выдавалась ли анкета
+
**** '''Day''' – порядковый номер дня тура, в который предоставляется услуга
*** '''PaspRuser''' – серия общегражданского паспорта
+
**** '''Code''' – ключ кода услуги
*** '''PaspRuNum''' – номер общегражданского паспорта
+
**** '''SubCode1''' – ключ доп.описания 1 услуги
*** '''PaspRuDate''' – дата выдачи общегражданского паспорта
+
**** '''SubCode2''' – ключ доп.описания 2 услуги
*** '''PaspRuByWhom''' – кем выдан общегражданский паспорт
+
**** '''Men''' – количество человек, пользующихся услугой по путевке
*** '''ClientId''' – ключ в таблице клиентов
+
**** '''Days''' – количество дней услуги
*** '''IsMain''' – признак главного туриста по путевке
+
**** '''CNKey''' – ключ страны услуги
*** '''DGKey''' – ключ кутевки
+
**** '''CTKey''' – ключ города услуги
*** '''RealSex''' – реальный пол туриста: ''Null'' или ''0'' – Муж; ''1'' – Жен
+
**** '''PartnerKey''' – ключ партнера, предоставляющего услугу
*** '''Email''' – е-mail туриста
+
**** '''Brutto''' – стоимость услуги брутто
*** '''EnableSmsNotifications''' – согласен получать уведомления по СМС
+
**** '''Wait''' – признак услуги ''Снимать квоту при бронировании''
*** '''CitizenId''' – идентификатор туриста
+
**** '''Warning''' – неиспользуемое поле
*** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
+
**** '''TimeBeg''' – поле используется для сортировки услуг в путевке
**** '''$ref''' – связь с внутренним идентификатором ''$id''
+
**** '''Control''' – ключ статуса услуги (ссылка на таблицу Controls),
** '''TuristServices''' – коллекция связей туриста с услугой
+
**** '''Attribute''' – атрибут услуги
*** '''$id''' – внутренний идентификатор для установки связей между сущностями
+
**** '''DateBeg''' – дата начала действия услуги
*** '''TUKey''' – ключ туриста
+
**** '''DateEnd''' – дата окончания действия услуги
*** '''DLKey''' – ключ услуги
+
**** '''Discount''' – размер скидки по услуге
*** '''NumDoc''' – номер документа (авиабилета)
+
**** '''Comment''' – комментарий к услуге
*** '''NumRoom''' – номер комнаты (каюты)
+
**** '''DGKey''' – ключ договора,
*** '''Seat''' – номер места (в номере отеля, каюты) или место в транспорте
+
**** '''Blocked''' – признак блокировки услуги (''0'' – не блокирована, ''1'' – блокирована)
*** '''Area''' – зона (палуба) в отеле, круизе
+
**** '''NameLat''' – наименование услуги (латинский)
*** '''DocDate''' – дата документа (авиабелета)
+
**** '''Long''' – продолжительность тура в днях
*** '''Key''' – первичный ключ связки
+
**** '''TRFId''' – ключ тарифа
*** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
+
**** '''CreateDate''' – дата создания услуги в путевке
**** '''$ref''' – связь с внутренним идентификатором ''$id''
+
**** '''CalculatePriceDate''' – дата расчета цены
** '''DogovorMessages''' – сообщение по путевке покупателю
+
**** '''ShowOrder''' – порядок при сортировке
*** '''id''' – внутренний идентификатор для установки связей между сущностями
+
**** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
*** '''Date''' – дата создание сообщения
+
***** '''$ref''' – связь с внутренним идентификатором ''$id''
*** '''Text''' – текст сообщения
+
*** '''Turists''' – список туристов
*** '''Remark''' – код сообщения
+
**** '''$id''' – внутренний идентификатор для установки связей между сущностями
*** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
+
**** '''DGCod''' – номер путевки, к которому привязан турист
**** '''$ref''' – связь с внутренним идентификатором ''$id''  
+
**** '''Key''' – ключ туриста
 +
**** '''TurDate''' – дата начала тура
 +
**** '''NameRus''' – фамилия туриста (русское)
 +
**** '''NameLat''' – фамилия туриста (латинское)
 +
**** '''ShortName''' – имя и отчество туриста в формате ''И.О.''
 +
**** '''Sex''' – пол туриста (признак): ''Null'' или ''0'' – Муж; ''1'' – Жен; ''2'' – Child (ребенок); ''3'' – Infant (младенец)
 +
**** '''FNameRus''' – имя туриста (русское)
 +
**** '''FNameLat''' – имя туриста (латинское)
 +
**** '''SNameRus''' – отчество туриста (русское)
 +
**** '''SNameLat''' – отчество туриста (латинское)
 +
**** '''BirthDay''' – дата рождения туриста
 +
**** '''BirthCountry''' – страна рождения туриста
 +
**** '''BirthCity''' – город рождения туриста
 +
**** '''Citizen''' – гражданство туриста
 +
**** '''PostIndex''' – почтовый индекс
 +
**** '''PostCity''' – адрес проживания туриста (город)
 +
**** '''PostStreet''' – адрес проживания туриста (улица)
 +
**** '''PostBild''' – адрес проживания туриста (номер дома)
 +
**** '''PostFlat''' – адрес проживания туриста (номер квартиры)
 +
**** '''Phone''' – номер телефона туриста
 +
**** '''PhoneCode''' – код телефона туриста
 +
**** '''PasportType''' – серия заграничного паспорта
 +
**** '''PasportNum''' – номер заграничного паспорта
 +
**** '''PasportDate''' – дата выдачи заграничного паспорта
 +
**** '''PasportDateEnd''' – дата окончания срока действия заграничного паспорта
 +
**** '''PasportByWhom''' – кем выдан заграничный паспорт
 +
**** '''Place''' – место рождения
 +
**** '''IsAnketa''' – выдавалась ли анкета
 +
**** '''PaspRuser''' – серия общегражданского паспорта
 +
**** '''PaspRuNum''' – номер общегражданского паспорта
 +
**** '''PaspRuDate''' – дата выдачи общегражданского паспорта
 +
**** '''PaspRuByWhom''' – кем выдан общегражданский паспорт
 +
**** '''ClientId''' – ключ в таблице клиентов
 +
**** '''IsMain''' – признак главного туриста по путевке
 +
**** '''DGKey''' – ключ кутевки
 +
**** '''RealSex''' – реальный пол туриста: ''Null'' или ''0'' – Муж; ''1'' – Жен
 +
**** '''Email''' – е-mail туриста
 +
**** '''EnableSmsNotifications''' – согласен получать уведомления по СМС
 +
**** '''CitizenId''' – идентификатор туриста
 +
**** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
 +
***** '''$ref''' – связь с внутренним идентификатором ''$id''
 +
*** '''TuristServices''' – коллекция связей туриста с услугой
 +
**** '''$id''' – внутренний идентификатор для установки связей между сущностями
 +
**** '''TUKey''' – ключ туриста
 +
**** '''DLKey''' – ключ услуги
 +
**** '''NumDoc''' – номер документа (авиабилета)
 +
**** '''NumRoom''' – номер комнаты (каюты)
 +
**** '''Seat''' – номер места (в номере отеля, каюты) или место в транспорте
 +
**** '''Area''' – зона (палуба) в отеле, круизе
 +
**** '''DocDate''' – дата документа (авиабелета)
 +
**** '''Key''' – первичный ключ связки
 +
**** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
 +
***** '''$ref''' – связь с внутренним идентификатором ''$id''
 +
*** '''DogovorMessages''' – сообщение по путевке покупателю
 +
**** '''id''' – внутренний идентификатор для установки связей между сущностями
 +
**** '''Date''' – дата создание сообщения
 +
**** '''Text''' – текст сообщения
 +
**** '''Remark''' – код сообщения
 +
**** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
 +
***** '''$ref''' – связь с внутренним идентификатором ''$id''
 +
** '''ValidationResultSummary''' – объект статус результата бронирования
 +
*** '''ValidationResult''' – объект с ошибками и флагом валидности путевки
 +
**** '''Errors''' – массив ошибок бронирования
 +
**** '''IsValid''' – признак валидности бронирования
 +
*** '''ValidationResultAttributes''' – атрибут результата бронирования
 +
 
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:1200px">Пример запроса
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода CostOfferDescriptions
+
Вызов метода CreateReservationExternalSystem
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
GET http://localhost:9000/TourSearchOwin/GetReservation?dgCode=AU10101003
+
PUT http://localhost:9000/TourSearchOwin/CreateReservationExternalSystem/1?
 
Content-Type: application/json
 
Content-Type: application/json
Authorization: Bearer AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA-
+
Authorization: Bearer AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAObjhnb1q7EOpYmBFLH9T4AAAAAACAAAAAAAQZgAAAAEAACAAAACi2OgeCgKM2UVjnd-_y7WK9Tp90D7uiyDzOpQNy2PUrQAAAAAOgAAAAAIAACAAAABBwMz7N-
EqAAAAAASAAACgAAAAEAAAAO4S-VrqBhQuhqliqrAKKfIgAQAAn-gfgP-rYjk-Krr1Ck2A-IGCw6FBhamUOzFxgTtk1hR-
+
lZMFS0R9BqYXrNkVEL0ORSd2IpZ95J78cBHDABAABoZQCpqlwdHPASxLfQj-sRBv1S-kkGRC3g6wMlF_UjzI4PGIv_x5SdDwdIqoveXSyxshY88VidzcMRZjk2HJFjUJrcG_e8FfKpzUZUuFvq1dASzSm83JNgdqNaPjnjqSpffBEfD-zA1L77wMgN9_d70lVTh8PlxXkx_fxQI3D0Dcymqz-Q7ymsWM9HMDlmQ2BllmjBisc8UaYLT3VvmAvI1uDL08FFT1Rx9LFMi2B36OGZQgUoona0KuY48x5Xhbx5yeLAKdvqqEDViG35z7H8_gVU8T5TR08PDJvxvAe24lV1rBGidGNZqPL4meuSrh1hUl9j2vmFfhdGIyBhz7B9Z1Q2iDNfL6j-YfNEcuj8SGTMm5pfObAdcjH5CKI4T-
GLMryFIH8VK5GmHdHubZWj4S7XcazGL1Kn5-VlbiYdW2ZVWpYlk638aV-XS2kpZ9YrKgViiM_x8RH5TPo4-
+
QWcvE6HUfRs0UzAf2eF1bXQAAAAGMNV8S-M1ckRYpUCIVNPCLWi4g9HR0oIIJIRCMpu3hAJPM1xlNSaaYabu-il-PwoOthHujA2PZXtXj9-o3wpEA
9LhE7V-SjiB_CP_qs58DRKcyohq3Tz9QaiFgH1Ko7O2XKjTBG7SHyQPDPYjaqg9kDxmzq0UcIT6Fm4YkDxmm9-
 
CW7u3cEFWcpiqKOc2VvZFKPPHc07uDOO4w9FXPhpXZwOqrJBxzhbr73RuhzPs_e-hgxKaIlsMaK5b0v5ReAMy1kuY0ebXA
 
</syntaxhighlight>
 
Возвращаемый результат метода GetReservation (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
 
{
 
{
     "$id": 1,
+
     "BeginDate": "2024-12-16T14:00",
     "Code": "AU10101003",
+
     "Duration": 4,
     "TurDate": "2021-01-01T00:00:00",
+
     "Currency": "рб",
     "TRKey": 100000038,
+
     "TourProgramId": 0,
     "CNKey": 90,
+
     "Services": [
    "CTKey": 35,
+
        {
    "NMen": 2,
+
            "Code": "8746",
    "Price": 877,
+
            "Cost": 9900,
    "Payed": 0,
+
            "Packet": "359679",
     "NDay": 9,
+
            "SubCode1": "356847"
    "MainMan": "",
+
        }
    "MainManPhone": "",
+
    ],
    "MainManAddress": "",
+
     "Tourists": [
    "MainManPassport": "",
+
        {
    "PartnerKey": 10762,
+
            "FirstName": "Иван",
    "Operator": "Megatec ",
+
            "LastName": "Иванов",
    "Discount": 40,
+
            "Patronymic": "Иванович",
    "DiscountSum": 80,
+
            "MaleFemaleSex": 0,
    "SORCode": 3,
+
            "AgeType": 0,
    "CrDate": "2020-10-12T15:02:29.013",
+
            "Age": 18,
    "Rate": "$",
+
            "Phone": "79876543232",
    "Advertise": 0,
+
            "Email": "emailqwerty123@example.com"
    "Locked": null,
+
        },
    "CauseDisc": null,
+
        {
    "PPaymentDate": null,
+
            "FirstName": "Петр",
     "PaymentDate": "2020-10-14T00:00:00",
+
            "LastName": "Петров",
    "Procent": 1,
+
            "Patronymic": "Петрович",
    "TurDateBfrAnnul": null,
+
            "MaleFemaleSex": 0,
    "ARKey": 0,
+
            "AgeType": 0,
    "Key": 40335,
+
            "Age": 18
    "CodePartner": null,
+
        }
    "FilialKey": 1,
+
    ],
    "IsOutDoc": 0,
+
     "DogovorComment": "Это тестовая путевка. Клиент указывает детали отеля и размещения."
     "Notes": null,
+
}
    "DiscSumBfrAnn": null,
+
</syntaxhighlight>
    "PriceBfrAnn": null,
+
</TD></TR></TABLE>
    "RazmerP": 0,
+
</div></div><br />
    "LeadDepartment": 0,
+
 
    "MainManEmail": "test@megatec.ru",
+
 
    "MainManComment": "",
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:1200px">Пример ответа
    "DupUserKey": 6,
+
<div class="mw-collapsible-content">
    "BTKey": 1,
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
    "ConfirmedDate": null,
+
Возвращаемый результат метода CreateReservationExternalSystem (в формате JSON)
    "PrtDogKey": 11,
+
<syntaxhighlight lang="java" enclose="div">
    "CTDepartureKey": 1,
+
{
    "PDTType": 0,
+
     "Reservation": {
    "NationalCurrencyPrice": null,
+
        "$id": 1,
    "NationalCurrencyDiscountSum": null,
+
        "Code": "RU27010037",
    "NationalCurrencyPayed": null,
+
        "TurDate": "2025-01-27T12:00:00",
    "CurrencyKey": null,
+
        "TRKey": 0,
    "CurrencyRate": null,
+
        "CNKey": 460,
    "ClientKey": null,
+
        "CTKey": 1,
    "Partner": {
+
        "NMen": 2,
         "$id": 2,
+
        "Price": 9900.0,
         "Key": 10762,
+
        "Payed": 0.0,
         "FullName": "Агентство",
+
        "NDay": 4,
         "Name": "Агентство"
+
        "MainMan": "Тестовый Представитель",
    },
+
        "MainManPhone": "+79139992222",
    "Services": [{
+
        "MainManAddress": "",
            "$id": 3,
+
        "MainManPassport": "11111 2222222222222",
            "DGCod": "AU10101003",
+
        "PartnerKey": 12667,
            "TurDate": "2021-01-01T00:00:00",
+
        "Operator": "Allservises A.A.",
            "Key": 202463,
+
        "Discount": 17.0,
            "PaketKey": 209,
+
        "DiscountSum": 0.0,
            "TRKey": 100000038,
+
        "SORCode": 0,
            "SVKey": 1,
+
         "CrDate": "2025-01-24T17:26:17.25",
            "Name": "А_П::Москва/Вена/00444, DME-VIE, 14:00-16:30/C Бизнес класс",
+
         "Rate": "рб",
            "Day": 1,
+
         "Advertise": 0,
            "Code": 570,
+
         "Locked": null,
            "SubCode1": 67,
+
        "CauseDisc": 0,
            "SubCode2": 1,
+
        "PPaymentDate": null,
            "Men": 2,
+
        "PaymentDate": "2025-01-26T00:00:00",
            "Days": 0,
+
        "Procent": 1,
            "CNKey": 90,
+
        "TurDateBfrAnnul": null,
            "CTKey": 35,
+
        "ARKey": 0,
            "PartnerKey": 10760,
+
        "Key": 54010,
            "Brutto": 162.2,
+
        "CodePartner": null,
            "Wait": null,
+
        "FilialKey": 12850,
            "Warning": 0,
+
        "IsOutDoc": 0,
            "TimeBeg": "1899-01-01T14:00:00",
+
        "Notes": null,
            "Control": 1,
+
        "DiscSumBfrAnn": null,
            "Attribute": 65695,
+
        "PriceBfrAnn": null,
            "DateBeg": "2021-01-01T00:00:00",
+
        "RazmerP": 10.0,
            "DateEnd": "2021-01-01T00:00:00",
+
        "LeadDepartment": 0,
            "Discount": 14.8,
+
        "MainManEmail": "test@megatec.ru",
            "Comment": null,
+
        "MainManComment": "",
            "DGKey": 40335,
+
        "DupUserKey": 333,
            "Blocked": null,
+
        "BTKey": 1,
            "NameLat": "А_П::Москва/Вена/00444, DME-VIE, 14:00-16:30/C Бизнес класс",
+
        "ConfirmedDate": null,
             "Long": 9,
+
        "PrtDogKey": 1335,
             "TRFId": 0,
+
        "CTDepartureKey": 0,
             "CreateDate": "2020-10-12T15:02:29.013",
+
        "PDTType": 0,
             "CalculatePriceDate": "2020-10-12T15:02:29.013",
+
        "NationalCurrencyPrice": null,
            "ShowOrder": 1,
+
        "NationalCurrencyDiscountSum": null,
             "Connections": [{
+
        "NationalCurrencyPayed": null,
                    "$ref": 1
+
        "CurrencyKey": null,
                 }
+
        "CurrencyRate": null,
            ]
+
        "ClientKey": null,
        }, {
+
        "AgencyPrice": 0.0,
            "$id": 4,
+
        "Partner": {
            "DGCod": "AU10101003",
+
             "$id": 2,
            "TurDate": "2021-01-01T00:00:00",
+
             "Key": 12667,
            "Key": 202462,
+
             "FullName": "Партнер-покупатель (полное название)",
            "PaketKey": 209,
+
             "Name": "Партнер-покупатель122"
            "TRKey": 100000038,
+
        },
            "SVKey": 3,
+
        "Services": [
            "Name": "HOTEL::Вена/Albatros-1*,8 ночей/Double(Standart),2 Adult/HB Полупансион",
+
             {
            "Day": 1,
+
                "$id": 3,
            "Code": 702,
+
                "DGCod": "RU27010037",
            "SubCode1": 1113,
+
                 "TurDate": "2025-01-27T12:00:00",
            "SubCode2": 2,
+
                "Key": 250570,
            "Men": 2,
+
                "PaketKey": 2043,
            "Days": 8,
+
                "TRKey": 0,
            "CNKey": 90,
+
                "SVKey": 3,
            "CTKey": 35,
+
                "Name": "HOTEL::Москва/ApiHotel-,3 ночи/ApiRoom(ApiRoomCategory),ApiAccmdmen/ApiPansion ApiPansion",
            "PartnerKey": 10760,
+
                "Day": 1,
            "Brutto": 519.6,
+
                "Code": 341264,
            "Wait": null,
+
                "SubCode1": 1552918,
            "Warning": 0,
+
                "SubCode2": 1812,
            "TimeBeg": "1899-01-01T16:30:00",
+
                "Men": 2,
            "Control": 1,
+
                "Days": 3,
            "Attribute": 65695,
+
                "CNKey": 460,
            "DateBeg": "2021-01-01T00:00:00",
+
                "CTKey": 1,
            "DateEnd": "2021-01-08T00:00:00",
+
                "PartnerKey": 0,
            "Discount": 47.4,
+
                "Brutto": 9900.0,
            "Comment": null,
+
                "Wait": null,
            "DGKey": 40335,
+
                "Warning": 0,
            "Blocked": null,
+
                "TimeBeg": "1899-01-01T00:00:00",
            "NameLat": "HOTEL::Вена/Albatros-1*,8 ночей/Double(Standart),2 Adult/HB Полупансион",
+
                "Control": 1,
            "Long": 9,
+
                "Attribute": 65695,
            "TRFId": 0,
+
                "DateBeg": "2025-01-27T00:00:00",
            "CreateDate": "2020-10-12T15:02:29.013",
+
                "DateEnd": "2025-01-29T00:00:00",
            "CalculatePriceDate": "2020-10-12T15:02:29.013",
+
                "Discount": 0.0,
            "ShowOrder": 2,
+
                "Comment": null,
            "Connections": [{
+
                "DGKey": 54010,
                    "$ref": 1
+
                "Blocked": null,
                 }
+
                "NameLat": "HOTEL::Москва/ApiHotel-,3 ночи/ApiRoom(ApiRoomCategory),ApiAccmdmen/ApiPansion ApiPansion",
            ]
+
                "Long": 4,
         }, {
+
                "TRFId": 0,
            "$id": 5,
+
                "CreateDate": "2025-01-24T17:26:17.25",
            "DGCod": "AU10101003",
+
                "CalculatePriceDate": "2025-01-24T17:26:17.25",
            "TurDate": "2021-01-01T00:00:00",
+
                "ShowOrder": 1,
            "Key": 202461,
+
                "Connections": [
            "PaketKey": 209,
+
                    {
            "TRKey": 100000038,
+
                        "$ref": 1
            "SVKey": 1,
+
                    }
            "Name": "А_П::Вена/Москва/00444, VIE-SV1, 14:00-16:45/C Бизнес класс",
+
                 ]
            "Day": 9,
+
            }
            "Code": 572,
+
        ],
            "SubCode1": 67,
+
         "Turists": [
            "SubCode2": 35,
+
            {
            "Men": 2,
+
                "$id": 4,
            "Days": 0,
+
                "DGCod": "RU27010037",
            "CNKey": 460,
+
                "Key": 120806,
            "CTKey": 1,
+
                "TurDate": "2025-01-27T12:00:00",
            "PartnerKey": 10760,
+
                "NameRus": "Иванов",
            "Brutto": 195.2,
+
                "NameLat": "Иванов",
            "Wait": null,
+
                "ShortName": "И.И.",
            "Warning": 0,
+
                "Sex": 0,
            "TimeBeg": "1899-01-01T14:00:00",
+
                "FNameRus": "Иван",
            "Control": 1,
+
                "FNameLat": "Иван",
            "Attribute": 65695,
+
                "SNameRus": "Иванович",
            "DateBeg": "2021-01-09T00:00:00",
+
                "SNameLat": "Иванович",
            "DateEnd": "2021-01-09T00:00:00",
+
                "BirthDay": "2007-01-24T00:00:00",
            "Discount": 17.8,
+
                "BirthCountry": null,
            "Comment": null,
+
                "BirthCity": null,
            "DGKey": 40335,
+
                "Citizen": null,
            "Blocked": null,
+
                "PostIndex": null,
            "NameLat": "А_П::Вена/Москва/00444, VIE-SV1, 14:00-16:45/C Бизнес класс",
+
                "PostCity": null,
            "Long": 9,
+
                "PostStreet": null,
            "TRFId": 0,
+
                "PostBild": null,
            "CreateDate": "2020-10-12T15:02:29.013",
+
                "PostFlat": null,
            "CalculatePriceDate": "2020-10-12T15:02:29.013",
+
                "Phone": "79876543232",
            "ShowOrder": 3,
+
                "PhoneCode": null,
            "Connections": [{
+
                "PasportType": "",
                    "$ref": 1
+
                "PasportNum": "",
                }
+
                "PasportDate": null,
            ]
+
                "PasportDateEnd": null,
        }
+
                "PasportByWhom": null,
    ],
+
                "Place": null,
    "Turists": [{
+
                "IsAnketa": null,
            "$id": 6,
+
                "PaspRuser": "",
            "DGCod": "AU10101003",
+
                "PaspRuNum": "",
            "Key": 88653,
+
                "PaspRuDate": null,
            "TurDate": "2021-01-01T00:00:00",
+
                "PaspRuByWhom": "",
            "NameRus": "IVANOV",
+
                "ClientId": null,
            "NameLat": "IVANOV",
+
                "IsMain": 1,
            "ShortName": "I.",
+
                "DGKey": 54010,
            "Sex": 0,
+
                "RealSex": 0,
            "FNameRus": "IVAN",
+
                "Email": "emailqwerty123@example.com",
            "FNameLat": "IVAN",
+
                "EnableSmsNotifications": 0,
            "SNameRus": "",
+
                "CitizenId": "",
            "SNameLat": "",
+
                "Connections": [
            "BirthDay": "1980-01-01T00:00:00",
+
                    {
            "BirthCountry": null,
+
                        "$ref": 1
            "BirthCity": "Москва",
+
                    }
            "Citizen": "",
+
                ]
            "PostIndex": null,
+
            },
            "PostCity": null,
+
            {
            "PostStreet": null,
+
                "$id": 5,
            "PostBild": null,
+
                "DGCod": "RU27010037",
            "PostFlat": null,
+
                "Key": 120805,
            "Phone": "",
+
                "TurDate": "2025-01-27T12:00:00",
            "PhoneCode": null,
+
                "NameRus": "Петров",
            "PasportType": "",
+
                "NameLat": "Петров",
            "PasportNum": "",
+
                "ShortName": "П.П.",
            "PasportDate": null,
+
                "Sex": 0,
            "PasportDateEnd": null,
+
                "FNameRus": "Петр",
            "PasportByWhom": "",
+
                "FNameLat": "Петр",
            "Place": null,
+
                "SNameRus": "Петрович",
            "IsAnketa": null,
+
                "SNameLat": "Петрович",
            "PaspRuser": "",
+
                "BirthDay": "2007-01-24T00:00:00",
            "PaspRuNum": "",
+
                "BirthCountry": null,
            "PaspRuDate": null,
+
                "BirthCity": null,
            "PaspRuByWhom": "",
+
                "Citizen": null,
            "ClientId": null,
+
                "PostIndex": null,
            "IsMain": 1,
+
                "PostCity": null,
            "DGKey": 40335,
+
                "PostStreet": null,
            "RealSex": 0,
+
                "PostBild": null,
            "Email": "",
+
                "PostFlat": null,
            "EnableSmsNotifications": 0,
+
                "Phone": null,
            "CitizenId": "",
+
                "PhoneCode": null,
            "Connections": [{
+
                "PasportType": "",
                    "$ref": 1
+
                "PasportNum": "",
                 }
+
                "PasportDate": null,
            ]
+
                "PasportDateEnd": null,
         }, {
+
                "PasportByWhom": null,
            "$id": 7,
+
                "Place": null,
            "DGCod": "AU10101003",
+
                "IsAnketa": null,
            "Key": 88652,
+
                "PaspRuser": "",
            "TurDate": "2021-01-01T00:00:00",
+
                "PaspRuNum": "",
            "NameRus": "PETROV",
+
                "PaspRuDate": null,
            "NameLat": "PETROV",
+
                "PaspRuByWhom": "",
            "ShortName": "P.",
+
                "ClientId": null,
            "Sex": 0,
+
                "IsMain": 0,
            "FNameRus": "PETR",
+
                "DGKey": 54010,
            "FNameLat": "PETR",
+
                "RealSex": 0,
            "SNameRus": "",
+
                "Email": "",
            "SNameLat": "",
+
                "EnableSmsNotifications": 0,
             "BirthDay": "1981-01-01T00:00:00",
+
                "CitizenId": "",
            "BirthCountry": null,
+
                "Connections": [
            "BirthCity": "Москва",
+
                    {
            "Citizen": "",
+
                        "$ref": 1
            "PostIndex": null,
+
                    }
            "PostCity": null,
+
                 ]
            "PostStreet": null,
+
            }
            "PostBild": null,
+
        ],
            "PostFlat": null,
+
         "TuristServices": [
            "Phone": "",
+
            {
            "PhoneCode": null,
+
                "$id": 6,
            "PasportType": "",
+
                "TUKey": 120806,
            "PasportNum": "",
+
                "DLKey": 250570,
             "PasportDate": null,
+
                "NumDoc": null,
            "PasportDateEnd": null,
+
                "NumRoom": 0,
            "PasportByWhom": "",
+
                "Seat": null,
            "Place": null,
+
                "Area": null,
            "IsAnketa": null,
+
                "DocDate": null,
            "PaspRuser": "",
+
                "Key": 134191,
            "PaspRuNum": "",
+
                "Connections": [
             "PaspRuDate": null,
+
                    {
             "PaspRuByWhom": "",
+
                        "$ref": 1
             "ClientId": null,
+
                    },
             "IsMain": 0,
+
                    {
            "DGKey": 40335,
+
                        "$ref": 3
            "RealSex": 0,
+
                    },
            "Email": "",
+
                    {
            "EnableSmsNotifications": 0,
+
                        "$ref": 4
            "CitizenId": "",
+
                    }
            "Connections": [{
+
                ]
                    "$ref": 1
+
            },
                }
+
             {
            ]
+
                "$id": 7,
        }
+
                "TUKey": 120805,
    ],
+
                "DLKey": 250570,
    "TuristServices": [{
+
                "NumDoc": null,
            "$id": 8,
+
                "NumRoom": 0,
            "TUKey": 88653,
+
                "Seat": null,
            "DLKey": 202463,
+
                "Area": null,
            "NumDoc": null,
+
                "DocDate": null,
            "NumRoom": 0,
+
                "Key": 134190,
            "Seat": null,
+
                "Connections": [
            "Area": null,
+
                    {
            "DocDate": null,
+
                        "$ref": 1
            "Key": 3770,
+
                    },
            "Connections": [{
+
                    {
                    "$ref": 1
+
                        "$ref": 3
                }, {
+
                    },
                    "$ref": 3
+
                    {
                }, {
+
                        "$ref": 5
                    "$ref": 6
+
                    }
                }
+
                ]
            ]
+
            }
        }, {
+
        ],
            "$id": 9,
+
        "DogovorMessages": [
            "TUKey": 88652,
+
             {
            "DLKey": 202463,
+
                "$id": 8,
            "NumDoc": null,
+
                "Date": "2025-01-24T17:26:18.26",
            "NumRoom": 0,
+
                "Text": "Это тестовая путевка",
            "Seat": null,
+
                "Remark": "от агента",
            "Area": null,
+
                "Connections": [
            "DocDate": null,
+
                    {
            "Key": 3768,
+
                        "$ref": 1
            "Connections": [{
+
                    }
                    "$ref": 1
+
                ]
                }, {
+
            }           
                    "$ref": 3
+
        ]
                }, {
+
    },
                    "$ref": 7
+
    "UsedMailService": false,
                }
+
    "ValidationResultSummary": {
            ]
+
        "ValidationResult": {
        }, {
+
             "Errors": [],
            "$id": 10,
+
             "Warnings": null,
            "TUKey": 88652,
+
             "States": null,
            "DLKey": 202462,
+
             "IsValid": true
            "NumDoc": null,
+
        },
            "NumRoom": 0,
+
        "ValidationResultAttributes": 0
            "Seat": null,
+
    }
            "Area": null,
+
}
            "DocDate": null,
+
</syntaxhighlight>
            "Key": 3767,
+
</TD></TR></TABLE>
            "Connections": [{
+
</div></div><br />
                    "$ref": 1
+
 
                }, {
+
===Выгрузка информации о путевке (GetReservation)===
                    "$ref": 4
+
Метод выводит информацию о бронированной путевке.
                }, {
+
 
                    "$ref": 7
+
* Формат запроса:
                }
+
** GET .../TourSearchOwin/GetReservation?
            ]
+
 
        }, {
+
* Принимаемые параметры headers ( '''*''' – обязательный):
            "$id": 11,
+
** '''Content-Type *''' – application/json
            "TUKey": 88653,
+
** '''Authorization *''' – token_type + access_token (полученные из метода .../TourSearchOwin/Token?)
            "DLKey": 202462,
+
 
            "NumDoc": null,
+
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
            "NumRoom": 0,
+
** '''dgCode *''' – номер путевки:
            "Seat": null,
+
 
            "Area": null,
+
* Возвращаемый результат:
            "DocDate": null,
+
** '''$id''' – внутренний идентификатор для установки связей между сущностями,
            "Key": 3771,
+
** '''Code''' – код путевки
            "Connections": [{
+
** '''TurDate''' – дата заезда
                    "$ref": 1
+
** '''TRKey''' – ключ тура
                }, {
+
** '''CNKey''' – ключ страны
                    "$ref": 4
+
** '''CTKey''' – ключ города
                }, {
+
** '''NMen''' – количество туристов по путевке
                    "$ref": 6
+
** '''Price''' – стоимость путевки за вычетом скидки (комиссии)
                }
+
** '''Payed''' – оплаченная сумма по путевке
            ]
+
** '''NDay''' – продолжительность тура в днях
        }, {
+
** '''MainMan''' – ФИО лица, заключившего договор
            "$id": 12,
+
** '''MainManPhone''' – номер телефона лица, заключившего договор
            "TUKey": 88653,
+
** '''MainManAddress''' – адрес лица, заключившего договор
            "DLKey": 202461,
+
** '''MainManPassport''' – паспортные данные лица, заключившего договор
            "NumDoc": null,
+
** '''PartnerKey''' – ключ партнера, оформившего договор
            "NumRoom": 0,
+
** '''Operator''' – ФИО создателя договора
            "Seat": null,
+
** '''Discount''' – величина скидки на одного человека
            "Area": null,
+
** '''DiscountSum''' – абсолютная величина скидки
            "DocDate": null,
+
** '''SORCode''' – ключ статус путевки, возможные значения: 0-в работе, 1-не определён, 2-аннулирован, 3-wait лист, 7-ок.
            "Key": 3772,
+
** '''CrDate''' – дата и время создания путевки
            "Connections": [{
+
** '''Rate''' – код валюты путевки
                    "$ref": 1
+
** '''Advertise''' – ключ источника рекламы
                }, {
+
** '''Locked''' – блокировка путевки: ''1'' – если заблокирована
                    "$ref": 5
+
** '''CauseDisc''' – ключ основания для скидки
                }, {
+
** '''PPaymentDate''' – максимальная дата внесения предоплаты
                    "$ref": 6
+
** '''PaymentDate''' – максимальная дата полной оплаты
                }
+
** '''Procent''' – информация о предоплате: ''1'' – предоплата в %; ''0'' – предоплата в у.е.
            ]
+
** '''TurDateBfrAnnul''' – значение даты заезда до аннуляции путевки (при аннуляции дата заезда заменяется на 31.12.1899)
        }, {
+
** '''ARKey''' – ключ причины аннуляции путевки
            "$id": 13,
+
** '''Key''' – ключ договора
            "TUKey": 88652,
+
** '''CodePartner''' – значение ключевого поля из таблицы партнеров
            "DLKey": 202461,
+
** '''FilialKey''' – ключ филиала фирмы-владельца, пользователем которого была забронирована путевка
            "NumDoc": null,
+
** '''IsOutDoc''' – статус выдачи документов
            "NumRoom": 0,
+
** '''Notes''' – сообщение поставщику
            "Seat": null,
+
** '''DiscSumBfrAnn''' – числовое значение скидки перед аннуляцией путевки
            "Area": null,
+
** '''PriceBfrAnn''' – стоимость путевки перед ее аннуляцией
            "DocDate": null,
+
** '''RazmerP''' – размер предоплаты
            "Key": 3769,
+
** '''LeadDepartment''' – ключ отдела, ведущего данный тур
            "Connections": [{
+
** '''MainManEmail''' – адрес е-mail из данных лица, заключившего договор
                    "$ref": 1
+
** '''MainManComment''' – примечание из данных лица, заключившего договор
                }, {
+
** '''DupUserKey''' – ключ представителя партнера, которым был оформлен договор
                    "$ref": 5
+
** '''BTKey''' – ключ системы бронирования, из которой был оформлен договор
                }, {
+
** '''ConfirmedDate''' – дата подтверждения путевки покупателю
                    "$ref": 7
+
** '''PrtDogKey''' – договор партнера, по которому оформлена путевка
                }
+
** '''CTDepartureKey''' – ключ города начала поездки
            ]
+
** '''PDTType''' – тип договора, по которому оформлена путевка
        }
+
** '''NationalCurrencyPrice''' – стоимость путевки в национальной валюте
    ],
+
** '''NationalCurrencyDiscountSum''' – значение скидки в национальной валюте
    "DogovorMessages": [{
+
** '''NationalCurrencyPayed''' – сумма платежей по путевке, зафиксированная в национальной валюте
            "$id": 14,
+
** '''CurrencyKey''' – ключ национальной валюты путевки
            "Date": "2020-10-09T09:16:39.99",
+
** '''CurrencyRate''' – курс национальной валюты путевки
            "Text": "Тайм-лимит забронированного перелета: 14.10.2020 21:59",
+
** '''ClientKey''' – ключ частника, которым был оформлен договор
            "Remark": "TimeLimit",
+
** '''Partner''' – информация о партнере покупателе, привязанным к путевке
            "Connections": [{
+
*** '''$id''' – внутренний идентификатор для установки связей между сущностями
                    "$ref": 1
+
*** '''Key''' – ключ партнера покумателя
                }
+
*** '''FullName''' – полное имя партнера
            ]
+
*** '''Name''' – имя партнера
        }
+
** '''Services''' – коллекция услуг в данной путевке
    ]
+
*** '''$id''' – внутренний идентификатор для установки связей между сущностями
}
+
*** '''DGCod''' – номер путевки
</syntaxhighlight>
+
*** '''TurDate''' – дата начала тура
</TD></TR></TABLE>
+
*** '''Key''' – ключ услуги
</div></div><br />
+
*** '''PaketKey''' – ключ пакета
 
+
*** '''TRKey''' – клют тура
===Выгрузка информации о ценовых блоках (CostOfferDescriptions)===
+
*** '''SVKey''' – ключ типа услуги
Метод принимает на вход ключи ценовых блоков и возвращает, прикреплённое к ним описание.
+
*** '''Name''' – наименование услуги
* Формат запроса:
+
*** '''Day''' – порядковый номер дня тура, в который предоставляется услуга
** GET .../TourSearchOwin/CostOfferDescriptions?
+
*** '''Code''' – ключ кода услуги
* Принимаемые параметры ( * – обязательный):
+
*** '''SubCode1''' – ключ доп.описания 1 услуги
** '''COKeysString''' * – ключи ценовых блоков через запятую
+
*** '''SubCode2''' – ключ доп.описания 2 услуги
* Возвращаемый результат:
+
*** '''Men''' – количество человек, пользующихся услугой по путевке
** '''CostOfferImageInfo''' – коллекция объектов из двух полей:
+
*** '''Days''' – количество дней услуги
*** '''IdCostOffer''' – ключ ценового блока
+
*** '''CNKey''' – ключ страны услуги
*** '''InfoText''' – описание ценового блока
+
*** '''CTKey''' – ключ города услуги
 
+
*** '''PartnerKey''' – ключ партнера, предоставляющего услугу
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
*** '''Brutto''' – стоимость услуги брутто
<div class="mw-collapsible-content">
+
*** '''Wait''' – признак услуги ''Снимать квоту при бронировании''
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
*** '''Warning''' – неиспользуемое поле
 +
*** '''TimeBeg''' – поле используется для сортировки услуг в путевке
 +
*** '''Control''' – ключ статуса услуги (ссылка на таблицу Controls),
 +
*** '''Attribute''' – атрибут услуги
 +
*** '''DateBeg''' – дата начала действия услуги
 +
*** '''DateEnd''' – дата окончания действия услуги
 +
*** '''Discount''' – размер скидки по услуге
 +
*** '''Comment''' – комментарий к услуге
 +
*** '''DGKey''' – ключ договора,
 +
*** '''Blocked''' – признак блокировки услуги (''0'' – не блокирована, ''1'' – блокирована)
 +
*** '''NameLat''' – наименование услуги (латинский)
 +
*** '''Long''' – продолжительность тура в днях
 +
*** '''TRFId''' – ключ тарифа
 +
*** '''CreateDate''' – дата создания услуги в путевке
 +
*** '''CalculatePriceDate''' – дата расчета цены
 +
*** '''ShowOrder''' – порядок при сортировке
 +
*** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
 +
**** '''$ref''' – связь с внутренним идентификатором ''$id''
 +
** '''Turists''' – коллекция туристов в данной путевке
 +
*** '''$id''' – внутренний идентификатор для установки связей между сущностями
 +
*** '''DGCod''' – номер путевки, к которому привязан турист
 +
*** '''Key''' – ключ туриста
 +
*** '''TurDate''' – дата начала тура
 +
*** '''NameRus''' фамилия туриста (русское)
 +
*** '''NameLat''' – фамилия туриста (латинское)
 +
*** '''ShortName''' – имя и отчество туриста в формате ''И.О.''
 +
*** '''Sex''' – пол туриста (признак): ''Null'' или ''0'' – Муж; ''1'' – Жен; ''2'' – Child (ребенок); ''3'' – Infant (младенец)
 +
*** '''FNameRus''' – имя туриста (русское)
 +
*** '''FNameLat''' – имя туриста (латинское)
 +
*** '''SNameRus''' – отчество туриста (русское)
 +
*** '''SNameLat''' – отчество туриста (латинское)
 +
*** '''BirthDay''' – дата рождения туриста
 +
*** '''BirthCountry''' – страна рождения туриста
 +
*** '''BirthCity''' – город рождения туриста
 +
*** '''Citizen''' – гражданство туриста
 +
*** '''PostIndex''' – почтовый индекс
 +
*** '''PostCity''' – адрес проживания туриста (город)
 +
*** '''PostStreet''' – адрес проживания туриста (улица)
 +
*** '''PostBild''' – адрес проживания туриста (номер дома)
 +
*** '''PostFlat''' – адрес проживания туриста (номер квартиры)
 +
*** '''Phone''' – номер телефона туриста
 +
*** '''PhoneCode''' – код телефона туриста
 +
*** '''PasportType''' – серия заграничного паспорта
 +
*** '''PasportNum''' – номер заграничного паспорта
 +
*** '''PasportDate''' – дата выдачи заграничного паспорта
 +
*** '''PasportDateEnd''' – дата окончания срока действия заграничного паспорта
 +
*** '''PasportByWhom''' – кем выдан заграничный паспорт
 +
*** '''Place''' – место рождения
 +
*** '''IsAnketa''' – выдавалась ли анкета
 +
*** '''PaspRuser''' – серия общегражданского паспорта
 +
*** '''PaspRuNum''' – номер общегражданского паспорта
 +
*** '''PaspRuDate''' – дата выдачи общегражданского паспорта
 +
*** '''PaspRuByWhom''' – кем выдан общегражданский паспорт
 +
*** '''ClientId''' – ключ в таблице клиентов
 +
*** '''IsMain''' – признак главного туриста по путевке
 +
*** '''DGKey''' – ключ кутевки
 +
*** '''RealSex''' – реальный пол туриста: ''Null'' или ''0'' – Муж; ''1'' – Жен
 +
*** '''Email''' – е-mail туриста
 +
*** '''EnableSmsNotifications''' – согласен получать уведомления по СМС
 +
*** '''CitizenId''' – идентификатор туриста
 +
*** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
 +
**** '''$ref''' – связь с внутренним идентификатором ''$id''
 +
** '''TuristServices''' – коллекция связей туриста с услугой
 +
*** '''$id''' – внутренний идентификатор для установки связей между сущностями
 +
*** '''TUKey''' – ключ туриста
 +
*** '''DLKey''' – ключ услуги
 +
*** '''NumDoc''' – номер документа (авиабилета)
 +
*** '''NumRoom''' – номер комнаты (каюты)
 +
*** '''Seat''' – номер места (в номере отеля, каюты) или место в транспорте
 +
*** '''Area''' – зона (палуба) в отеле, круизе
 +
*** '''DocDate''' – дата документа (авиабелета)
 +
*** '''Key''' – первичный ключ связки
 +
*** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
 +
**** '''$ref''' – связь с внутренним идентификатором ''$id''
 +
** '''DogovorMessages''' – сообщение по путевке покупателю
 +
*** '''id''' – внутренний идентификатор для установки связей между сущностями
 +
*** '''Date''' – дата создание сообщения
 +
*** '''Text''' – текст сообщения
 +
*** '''Remark''' – код сообщения
 +
*** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
 +
**** '''$ref''' – связь с внутренним идентификатором ''$id''  
 +
 
 +
<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>
 
Вызов метода CostOfferDescriptions
 
Вызов метода CostOfferDescriptions
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
GET http://localhost:9000/TourSearchOwin/CostOfferDescriptions?COKeysString=15143
+
GET http://localhost:9000/TourSearchOwin/GetReservation?dgCode=AU10101003
</syntaxhighlight>
+
Content-Type: application/json
Возвращаемый результат метода CostOfferDescriptions (в формате JSON)
+
Authorization: Bearer AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA-
<syntaxhighlight lang="java" enclose="div">
+
EqAAAAAASAAACgAAAAEAAAAO4S-VrqBhQuhqliqrAKKfIgAQAAn-gfgP-rYjk-Krr1Ck2A-IGCw6FBhamUOzFxgTtk1hR-
[
+
GLMryFIH8VK5GmHdHubZWj4S7XcazGL1Kn5-VlbiYdW2ZVWpYlk638aV-XS2kpZ9YrKgViiM_x8RH5TPo4-
      {
+
9LhE7V-SjiB_CP_qs58DRKcyohq3Tz9QaiFgH1Ko7O2XKjTBG7SHyQPDPYjaqg9kDxmzq0UcIT6Fm4YkDxmm9-
      "CostOfferImageInfo":   {
+
CW7u3cEFWcpiqKOc2VvZFKPPHc07uDOO4w9FXPhpXZwOqrJBxzhbr73RuhzPs_e-hgxKaIlsMaK5b0v5ReAMy1kuY0ebXA
          "IdCostOffer": 15143,
 
          "InfoText": "СПО до 01.01.2020"
 
  },
 
  }
 
]
 
 
</syntaxhighlight>
 
</syntaxhighlight>
</TD></TR></TABLE>
+
Возвращаемый результат метода GetReservation (в формате JSON)
</div></div><br />
 
 
 
 
 
===Получение капчи (GetCaptcha)===
 
Метод возвращает капчу (используется при регистрации частного лица).
 
* Формат запроса:
 
** GET .../TourSearchOwin/GetCaptcha?
 
* Принимаемые параметры ( * – обязательный):
 
** '''sessionId''' * – Id сессии
 
* Возвращаемый результат:
 
** '''FileContents''' – файл капчи в бинарном виде
 
** '''ContentType''' – расширение файла (image/jpeg)
 
** '''FileDownloadName''' – имя файла
 
 
 
<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>
 
Вызов метода GetCaptcha
 
<syntaxhighlight lang="java" enclose="div">
 
GET http://localhost:9000/TourSearchOwin/GetCaptcha?sessionId=cd5yr3wftltmorphuzwx0krh
 
</syntaxhighlight>
 
Возвращаемый результат метода GetCaptcha (в формате JSON)
 
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
     "FileContents": "iVBORw0KGgoAAAANSUhEUgAAALQAAAAyCAYAAAD1JPH3AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAA
+
     "$id": 1,
     xiSURBVHhe7Z1NyE1tF8eNZMZEyUBGEikDAwNFKRSFMsCEMkDyOUG+Hgw8UkiPvHjLq1uRdBsgMVEGxERGGHGPmBkantdvd9Z51n3tdX3ts/c+5+Bfq/ucfa7Ptf5rXWtf1z
+
     "Code": "AU10101003",
     7nntLpdFb8lL+qyqtXry4/f/78H+szLanlYjI+Pv6fsbGx/1qfjZJMTEz8ff369f/x1/q8LfkVdKkFQvOiEt69e9eZMmVKIQ8fPuxeLcNX7vv374WEQN3Xr18Xr58+fdpr58aNG8
+
     "TurDate": "2021-01-01T00:00:00",
     W1UQXzOnXqVG9ug8CLFy8KXd66dat7JR8/fvwo2kFitqTs+/fvOx8+fOheqR/JhLYGDjmFYNeuXSuuWfCVw6iID5rAKJ0xbNmypXgPGdqEdqxRg2/cd+/eLXR56dKl4n2V+UFObI
+
     "TRKey": 100000038,
     GEbAkuXrzYs+f9+/e7V+tFMqF9A4dokBSyhZBaToOyKPvcuXM9J+IvY/j8+XPxvg24jjVKCEVh9Cu6DZXLhc/59+7d29Pjhg0bulfrRV8px+8Cy7FGBW4U9iG1XAwh5//69Wvn6N
+
     "CNKey": 90,
    GjnbVr13Y+fvzYvVov/hC6BdSRrhBBc1Y3gY7CIaSWi2HQzt84oZnUqEW1fuDOt450hXrUhyQaKSQf5dy/ChonNArVOfevjpcvXxYiqCNiUc+9b/CRXGNQuf8gnehPytEH3GgM2n
+
     "CTKey": 35,
    Jgi+RcI08VtL3809/58+cH4kSCkSJ03Z6PkfU2ZC7aIm9q/gyBILmAOm0QWcBO2LFjxzqrV6/u7Nu3r9W+BY0R2iIeE6w6ySaWT8gIAfpxEtqAcFVv2mJISS0ERGs9F/b/NcH7wa,
+
     "NMen": 2,
     "ContentType": "image/jpeg",
+
    "Price": 877,
     "FileDownloadName": ""
+
    "Payed": 0,
}
+
    "NDay": 9,
</syntaxhighlight>
+
    "MainMan": "",
</TD></TR></TABLE>
+
    "MainManPhone": "",
</div></div><br />
+
    "MainManAddress": "",
 
+
    "MainManPassport": "",
===Проверка капчи (CheckCaptcha)===
+
    "PartnerKey": 10762,
Метод проверяет введенную капчу (используется при регистрации частного лица).
+
    "Operator": "Megatec ",
* Формат запроса:
+
    "Discount": 40,
** GET .../TourSearchOwin/CheckCaptcha?
+
    "DiscountSum": 80,
* Принимаемые параметры ( * – обязательный):
+
    "SORCode": 3,
** '''captchaText''' * – текст капчи
+
    "CrDate": "2020-10-12T15:02:29.013",
** '''sessionId''' * – Id сессии
+
    "Rate": "$",
* Возвращаемый результат:
+
    "Advertise": 0,
** '''true/false''' – результат проверки (false – капча или Id сессии неверные, true – капча верна)
+
    "Locked": null,
 
+
    "CauseDisc": null,
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
    "PPaymentDate": null,
<div class="mw-collapsible-content">
+
     "PaymentDate": "2020-10-14T00:00:00",
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
    "Procent": 1,
Вызов метода CheckCaptcha
+
    "TurDateBfrAnnul": null,
<syntaxhighlight lang="java" enclose="div">
+
    "ARKey": 0,
GET http://localhost:9000/TourSearchOwin/CheckCaptcha?captchaText=vf8an&sessionId=cd5yr3wftltmorphuzwx0krh
+
    "Key": 40335,
</syntaxhighlight>
+
    "CodePartner": null,
Возвращаемый результат метода CheckCaptcha (в формате JSON)
+
    "FilialKey": 1,
<syntaxhighlight lang="java" enclose="div">
+
    "IsOutDoc": 0,
{
+
    "Notes": null,
     true
+
    "DiscSumBfrAnn": null,
}
+
    "PriceBfrAnn": null,
</syntaxhighlight>
+
    "RazmerP": 0,
</TD></TR></TABLE>
+
    "LeadDepartment": 0,
</div></div><br />
+
    "MainManEmail": "test@megatec.ru",
 
+
    "MainManComment": "",
===Проверка e-mail (CheckMail)===
+
    "DupUserKey": 6,
Метод проверяет e-mail при регистрации частного лица на существование такого же e-mail в базе данных.
+
     "BTKey": 1,
* Формат запроса:
+
    "ConfirmedDate": null,
** GET .../TourSearchOwin/CheckMail?
+
    "PrtDogKey": 11,
* Принимаемые параметры ( * – обязательный):
+
    "CTDepartureKey": 1,
** '''mail''' * – e-mail пользователя
+
    "PDTType": 0,
* Возвращаемый результат:
+
    "NationalCurrencyPrice": null,
** '''true/false''' – результат проверки (false – пользователь с таким e-mail уже существует, true – пользователь с таким e-mail нет в базе данных)
+
    "NationalCurrencyDiscountSum": null,
 
+
    "NationalCurrencyPayed": null,
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
    "CurrencyKey": null,
<div class="mw-collapsible-content">
+
    "CurrencyRate": null,
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
    "ClientKey": null,
Вызов метода CheckMail
+
    "Partner": {
<syntaxhighlight lang="java" enclose="div">
+
        "$id": 2,
GET http://localhost:9000/TourSearchOwin/CheckMail?mail=test@megatec.ru
+
        "Key": 10762,
</syntaxhighlight>
+
        "FullName": "Агентство",
Возвращаемый результат метода CheckMail (в формате JSON)
+
        "Name": "Агентство"
<syntaxhighlight lang="java" enclose="div">
+
    },
{
+
    "Services": [{
     true
+
            "$id": 3,
}
+
            "DGCod": "AU10101003",
</syntaxhighlight>
+
            "TurDate": "2021-01-01T00:00:00",
</TD></TR></TABLE>
+
            "Key": 202463,
</div></div><br />
+
            "PaketKey": 209,
 
+
            "TRKey": 100000038,
===Проверка туриста (checkTourist)===
+
            "SVKey": 1,
Метод служит для получения информации о путевке по номеру путевки и номеру паспорта туриста.
+
            "Name": "А_П::Москва/Вена/00444, DME-VIE, 14:00-16:30/C Бизнес класс",
* Формат запроса:
+
            "Day": 1,
** GET .../TourSearchOwin/checkTourist?
+
            "Code": 570,
* Принимаемые параметры ( * – обязательный):
+
            "SubCode1": 67,
** '''dogovorNumber *''' – номер путевки.
+
            "SubCode2": 1,
** '''passport *''' – номер паспорта туриста (заграничного или общегражданского).
+
            "Men": 2,
* Возвращаемый результат:
+
            "Days": 0,
** '''isDogovor''' – '''true''', если путевка найдена по номеру путевки, '''false''', если не найдена.
+
            "CNKey": 90,
** '''isAnnulated''' – '''true''', если путевка аннулирована, '''false''', если не аннулирована.
+
            "CTKey": 35,
** '''dogovorStatus''' – статус путевки
+
            "PartnerKey": 10760,
** '''isPay''' – '''true''', если путевка полностью оплачена, '''false''', если не оплачена или оплачена частично.
+
            "Brutto": 162.2,
** '''dogovorDateBegin''' – дата начала заезда.
+
            "Wait": null,
** '''dogovorDateEnd''' – дата окончания заезда.
+
            "Warning": 0,
** '''dogovorDateCreate''' – дата создания путевки.
+
            "TimeBeg": "1899-01-01T14:00:00",
** '''isTouristDogovorCreate''' – '''true''', если турист (по номеру паспорта) является главным туристом в путевке.
+
            "Control": 1,
** '''services''' – набор услуг в путевке.
+
            "Attribute": 65695,
*** '''svKey''' – код класса услуги.
+
            "DateBeg": "2021-01-01T00:00:00",
*** '''code''' – код услуги.
+
            "DateEnd": "2021-01-01T00:00:00",
*** '''subCode1''' – код доп. описания 1 услуги.
+
            "Discount": 14.8,
*** '''subCode2''' – код доп. описания 2 услуги.
+
            "Comment": null,
*** '''name''' – название услуги.
+
            "DGKey": 40335,
** '''touristInfo''' – информация о главном туристе.
+
            "Blocked": null,
*** '''lastname''' – фамилия туриста (рус).
+
            "NameLat": "А_П::Москва/Вена/00444, DME-VIE, 14:00-16:30/C Бизнес класс",
*** '''firstname''' – имя туриста (рус).
+
            "Long": 9,
*** '''surname''' – отчество туриста.
+
            "TRFId": 0,
*** '''address''' – адрес (индекс, город, улица, дом, квартира).
+
            "CreateDate": "2020-10-12T15:02:29.013",
*** '''postcode''' – индекс.
+
            "CalculatePriceDate": "2020-10-12T15:02:29.013",
*** '''city''' – город.
+
             "ShowOrder": 1,
*** '''street''' – улица.
+
            "Connections": [{
*** '''home''' – дом.
+
                    "$ref": 1
*** '''roomNumber''' – квартира.
+
                }
 
+
            ]
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
        }, {
<div class="mw-collapsible-content">
+
            "$id": 4,
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
            "DGCod": "AU10101003",
Вызов метода checkTourist
+
            "TurDate": "2021-01-01T00:00:00",
<syntaxhighlight lang="java" enclose="div">
+
            "Key": 202462,
http://localhost:9000/TourSearchOwin/checkTourist?dogovorNumber=AU25120001&passport=1234567
+
             "PaketKey": 209,
</syntaxhighlight>
+
            "TRKey": 100000038,
Возвращаемый результат метода checkTourist (в формате JSON)
+
            "SVKey": 3,
<syntaxhighlight lang="java" enclose="div">
+
            "Name": "HOTEL::Вена/Albatros-1*,8 ночей/Double(Standart),2 Adult/HB Полупансион",
{
+
             "Day": 1,
  "isDogovor": true,
+
            "Code": 702,
  "isAnnulated": false,
+
            "SubCode1": 1113,
  "dogovorStatus": "ОК",
+
            "SubCode2": 2,
  "isPay": true,
+
            "Men": 2,
  "dogovorDateBegin": "05.02.2018",  
+
            "Days": 8,
  "dogovorDateEnd": "12.02.2018",
+
            "CNKey": 90,
  "dogovorDateCreate": "01.02.2018",
+
            "CTKey": 35,
  "isTouristDogovorCreate": true,
+
            "PartnerKey": 10760,
  "services":    [
+
            "Brutto": 519.6,
             {
+
            "Wait": null,
        "svKey": "1",
+
            "Warning": 0,
        "code": "1088",
+
            "TimeBeg": "1899-01-01T16:30:00",
        "subCode1": "147",
+
            "Control": 1,
        "subCode2": "35",
+
            "Attribute": 65695,
        "name": "А_П::Вена/Москва/SU2353, VIE-SVO, 18:05-22:40/NSU Экономический класс"
+
            "DateBeg": "2021-01-01T00:00:00",
      },
+
            "DateEnd": "2021-01-08T00:00:00",
             {
+
            "Discount": 47.4,
        "svKey": "3",
+
            "Comment": null,
        "code": "698",
+
            "DGKey": 40335,
        "subCode1": "46200",
+
            "Blocked": null,
        "subCode2": "1",
+
            "NameLat": "HOTEL::Вена/Albatros-1*,8 ночей/Double(Standart),2 Adult/HB Полупансион",
        "name": "HOTEL::Вена/Graben-1*,5 ночей/DBL(Standart ),2Ad/FB Полный пансион"
+
            "Long": 9,
      },
+
            "TRFId": 0,
             {
+
            "CreateDate": "2020-10-12T15:02:29.013",
        "svKey": "1",
+
            "CalculatePriceDate": "2020-10-12T15:02:29.013",
        "code": "1087",
+
            "ShowOrder": 2,
        "subCode1": "147",
+
            "Connections": [{
        "subCode2": "1",
+
                    "$ref": 1
        "name": "А_П::Москва/Вена/SU2352, SVO-VIE, 16:20-17:05/NSU Экономический класс"
+
                }
      }
+
            ]
  ],
+
        }, {
  "touristInfo":   {
+
            "$id": 5,
      "lastname": "Ivanov",
+
            "DGCod": "AU10101003",
      "firstname": "Ivan",
+
            "TurDate": "2021-01-01T00:00:00",
      "surname": "Ivanovich",
+
            "Key": 202461,
      "address": "123456, г. Москва, ул. Ленина, д. 1, кв. 15",
+
            "PaketKey": 209,
      "postcode": "123456",
+
            "TRKey": 100000038,
      "city": "Москва",
+
            "SVKey": 1,
      "street": "Ленина",
+
            "Name": "А_П::Вена/Москва/00444, VIE-SV1, 14:00-16:45/C Бизнес класс",
      "home": "1",
+
            "Day": 9,
      "roomNumber": "15"
+
            "Code": 572,
  }
+
            "SubCode1": 67,
}
+
            "SubCode2": 35,
</syntaxhighlight>
+
            "Men": 2,
</TD></TR></TABLE>
+
            "Days": 0,
</div></div><br />
+
            "CNKey": 460,
 
+
            "CTKey": 1,
===Список значений параметра гражданства (Citizenships)===
+
            "PartnerKey": 10760,
Метод служит для получения списка значений параметра гражданства.
+
            "Brutto": 195.2,
* Формат запроса:
+
            "Wait": null,
** GET .../TourSearchOwin/Citizenships?
+
            "Warning": 0,
* Принимаемые параметры ( * – обязательный):
+
            "TimeBeg": "1899-01-01T14:00:00",
** '''pageSize *''' – размер выдачи
+
            "Control": 1,
** '''pageNumber *''' – порядковый номер страницы выдачи
+
            "Attribute": 65695,
** '''term *''' – подстрочный фильтр для отбора (пустой по умолчанию)
+
            "DateBeg": "2021-01-09T00:00:00",
* Возвращаемый результат:
+
            "DateEnd": "2021-01-09T00:00:00",
** '''Key''' – ключ страны
+
            "Discount": 17.8,
** '''Name''' – название гражданства
+
            "Comment": null,
 
+
            "DGKey": 40335,
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
            "Blocked": null,
<div class="mw-collapsible-content">
+
            "NameLat": "А_П::Вена/Москва/00444, VIE-SV1, 14:00-16:45/C Бизнес класс",
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
            "Long": 9,
Вызов метода Citizenships
+
            "TRFId": 0,
<syntaxhighlight lang="java" enclose="div">
+
            "CreateDate": "2020-10-12T15:02:29.013",
http://localhost:9000/TourSearchOwin/Citizenships?pageSize=50&pageNumber=1&term=
+
            "CalculatePriceDate": "2020-10-12T15:02:29.013",
</syntaxhighlight>
+
            "ShowOrder": 3,
Возвращаемый результат метода Citizenships (в формате JSON)
+
            "Connections": [{
<syntaxhighlight lang="java" enclose="div">
+
                    "$ref": 1
{
+
                }
    {
+
            ]
        "Key": 90,
+
        }
        "Name": "Австрия"
+
    ],
    },
+
    "Turists": [{
    {
+
            "$id": 6,
        "Key": 222,
+
            "DGCod": "AU10101003",
        "Name": "Англия"
+
            "Key": 88653,
    },
+
            "TurDate": "2021-01-01T00:00:00",
    {
+
            "NameRus": "IVANOV",
        "Key": 376,
+
            "NameLat": "IVANOV",
        "Name": "Андорра"
+
            "ShortName": "I.",
    },
+
            "Sex": 0,
    {
+
            "FNameRus": "IVAN",
        "Key": 375,
+
            "FNameLat": "IVAN",
        "Name": "Беларусь"
+
            "SNameRus": "",
    },
+
            "SNameLat": "",
    {
+
            "BirthDay": "1980-01-01T00:00:00",
        "Key": 3,
+
            "BirthCountry": null,
        "Name": "Бельгия"
+
            "BirthCity": "Москва",
    }
+
            "Citizen": "",
}
+
            "PostIndex": null,
</syntaxhighlight>
+
            "PostCity": null,
</TD></TR></TABLE>
+
            "PostStreet": null,
</div></div><br />
+
            "PostBild": null,
 
+
            "PostFlat": null,
===Выгрузка постоянного клиента (Client)===
+
            "Phone": "",
Метод выгружает постоянного клиента при авторизации частного лица.
+
            "PhoneCode": null,
* Формат запроса:
+
            "PasportType": "",
** GET .../TourSearchOwin/Client?
+
            "PasportNum": "",
* Принимаемые параметры ( * – обязательный):
+
            "PasportDate": null,
** '''clientId *''' – Id постоянного клиента
+
            "PasportDateEnd": null,
* Возвращаемый результат:
+
            "PasportByWhom": "",
** '''$id''' – внутренний порядковый идентификатор
+
            "Place": null,
** '''CL_KEY''' – ключ справочника постоянные клиенты
+
            "IsAnketa": null,
** '''CL_OPERUPDATE''' – ключ менеджера, который последний обновил постоянного клиента
+
            "PaspRuser": "",
** '''CL_OPERUPDATE''' – дата обновления постоянного клиента
+
            "PaspRuNum": "",
** '''CL_PFKEY''' – внутренний ключ
+
            "PaspRuDate": null,
** '''CL_NAMERUS''' – имя (на русском)
+
            "PaspRuByWhom": "",
** '''CL_NAMELAT''' – имя (на латинице)
+
            "ClientId": null,
** '''CL_SHORTNAME''' – инициалы
+
            "IsMain": 1,
** '''CL_SEX''' – пол
+
            "DGKey": 40335,
** '''CL_FNAMERUS''' – фамилия (на русском)
+
            "RealSex": 0,
** '''CL_FNAMELAT''' – фамилия (на латинице)
+
            "Email": "",
** '''CL_SNAMERUS''' – отчество (на русском)
+
            "EnableSmsNotifications": 0,
** '''CL_SNAMELAT''' – отчество (на латинице)
+
            "CitizenId": "",
** '''CL_BIRTHDAY''' – дата рождения
+
            "Connections": [{
** '''CL_BIRTHCOUNTRY''' – страна рождения
+
                    "$ref": 1
** '''CL_BIRTHCITY''' – место рождения (город)
+
                }
** '''CL_CITIZEN''' – гражданство
+
            ]
** '''CL_ADDRESS''' – полный адрес
+
        }, {
** '''CL_POSTINDEX''' – почтовый индекс
+
            "$id": 7,
** '''CL_POSTCITY''' – город
+
            "DGCod": "AU10101003",
** '''CL_POSTSTREET''' – улица
+
            "Key": 88652,
** '''CL_POSTBILD''' – дом
+
            "TurDate": "2021-01-01T00:00:00",
** '''CL_POSTFLAT''' – квартира
+
            "NameRus": "PETROV",
** '''CL_PHONE''' – телефон
+
            "NameLat": "PETROV",
** '''CL_PASPORTSER''' – серия загранпаспорта
+
            "ShortName": "P.",
** '''CL_PASPORTNUM''' – номер загранпаспорта
+
            "Sex": 0,
** '''CL_PASPORTDATE''' – дата выдачи загранпаспорта
+
            "FNameRus": "PETR",
** '''CL_PASPORTDATEEND''' – срок действия загранпаспорта
+
            "FNameLat": "PETR",
** '''CL_PASPORTBYWHOM''' – кем выдан загранпаспорт
+
            "SNameRus": "",
** '''CL_PASPRUSER''' – серия общегражданского паспорта
+
            "SNameLat": "",
** '''CL_PASPRUNUM''' – номер общегражданского паспорта
+
            "BirthDay": "1981-01-01T00:00:00",
** '''CL_PASPRUDATE''' – дата выдачи общегражданского паспорта
+
            "BirthCountry": null,
** '''CL_PASPRUBYWHOM''' – кем выдан общегражданский паспорт
+
            "BirthCity": "Москва",
** '''CL_ISMARK''' – профессия
+
            "Citizen": "",
** '''CL_TYPE''' – примечания
+
            "PostIndex": null,
** '''CL_IMPRESSNOTE''' – общие впечатления
+
            "PostCity": null,
** '''CL_NOTE''' – особые отметки
+
            "PostStreet": null,
** '''CL_REMARK''' – примечания
+
            "PostBild": null,
** '''CL_IMPRESSKEY''' – ключ выбранного впечатления
+
            "PostFlat": null,
** '''CL_TITLE1''' – служебные отметки, заголовок 1
+
            "Phone": "",
** '''CL_TITLE2''' – служебные отметки, заголовок 2
+
            "PhoneCode": null,
** '''CL_TITLE3''' – служебные отметки, заголовок 3
+
            "PasportType": "",
** '''CL_TITLE4''' – служебные отметки, заголовок 4
+
            "PasportNum": "",
** '''CL_FUTURE''' – пожелания
+
            "PasportDate": null,
** '''CL_LASTSTAT''' – информация о статистике
+
            "PasportDateEnd": null,
** '''CL_SUMMA''' – сумма по клиенту
+
            "PasportByWhom": "",
** '''CL_NMENWITH''' – число спутников
+
            "Place": null,
** '''CL_SUMDOGOVOR''' – сумма по путевкам
+
            "IsAnketa": null,
** '''CL_NTRIP''' – число поездок
+
            "PaspRuser": "",
** '''ROWID''' – внутренний идентификатор
+
            "PaspRuNum": "",
** '''cl_fax''' – факс
+
            "PaspRuDate": null,
** '''cl_mail:''' – e-mail
+
            "PaspRuByWhom": "",
** '''CL_MINCOST''' – минимальная стоимость поездки
+
            "ClientId": null,
** '''CL_MAXCOST''' – максимальная стоимость поездки
+
            "IsMain": 0,
** '''CL_RealSex''' – пол
+
            "DGKey": 40335,
** '''CL_EnableSmsNotifications''' – признак согласен получать sms-уведомление
+
            "RealSex": 0,
** '''CL_CHECKED''' – оповещения
+
            "Email": "",
** '''CL_Creator''' – создатель постоянного клиента
+
            "EnableSmsNotifications": 0,
** '''CL_CreateDate''' – дата создания постоянного клиента
+
            "CitizenId": "",
** '''CL_Login''' – логин
+
            "Connections": [{
** '''CL_Password''' – пароль
+
                    "$ref": 1
** '''CL_IsOnlineUser''' – является ли постоянный клиент онлайн пользователем
+
                }
** '''CL_CitizenID''' – ID гражданства
+
            ]
** '''CARDS''' – информация о дисконтной карте
+
        }
 
+
    ],
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
     "TuristServices": [{
<div class="mw-collapsible-content">
+
            "$id": 8,
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
            "TUKey": 88653,
Вызов метода Client
+
            "DLKey": 202463,
<syntaxhighlight lang="java" enclose="div">
+
            "NumDoc": null,
http://localhost:9000/TourSearchOwin/Client?clientId=7314
+
            "NumRoom": 0,
</syntaxhighlight>
+
            "Seat": null,
Возвращаемый результат метода Client (в формате JSON)
+
            "Area": null,
<syntaxhighlight lang="java" enclose="div">
+
            "DocDate": null,
{
+
            "Key": 3770,
    "$id": "1",
+
            "Connections": [{
    "CL_KEY": 7314,
+
                    "$ref": 1
    "CL_OPERUPDATE": 106,
+
                }, {
    "CL_DATEUPDATE": "2021-01-21T11:56:41.287",
+
                    "$ref": 3
    "CL_PFKEY": 2,
+
                }, {
    "CL_NAMERUS": "Test888",
+
                    "$ref": 6
    "CL_NAMELAT": "Test888",
+
                }
    "CL_SHORTNAME": "T.",
+
            ]
    "CL_SEX": 0,
+
        }, {
    "CL_FNAMERUS": "Test888",
+
            "$id": 9,
    "CL_FNAMELAT": "Test888",
+
            "TUKey": 88652,
    "CL_SNAMERUS": "",
+
            "DLKey": 202463,
    "CL_SNAMELAT": "",
+
            "NumDoc": null,
    "CL_BIRTHDAY": null,
+
            "NumRoom": 0,
    "CL_BIRTHCOUNTRY": "",
+
            "Seat": null,
    "CL_BIRTHCITY": "",
+
            "Area": null,
    "CL_CITIZEN": "Spain",
+
            "DocDate": null,
    "CL_ADDRESS": ", г., ул., д., кв.",
+
            "Key": 3768,
    "CL_POSTINDEX": "",
+
            "Connections": [{
    "CL_POSTCITY": "",
+
                    "$ref": 1
    "CL_POSTSTREET": "",
+
                }, {
    "CL_POSTBILD": "",
+
                    "$ref": 3
    "CL_POSTFLAT": "",
+
                }, {
    "CL_PHONE": "65465465",
+
                    "$ref": 7
    "CL_PASPORTSER": "",
+
                }
    "CL_PASPORTNUM": "",
+
            ]
    "CL_PASPORTDATE": null,
+
        }, {
    "CL_PASPORTDATEEND": null,
+
            "$id": 10,
    "CL_PASPORTBYWHOM": "",
+
            "TUKey": 88652,
    "CL_PASPRUSER": "",
+
            "DLKey": 202462,
    "CL_PASPRUNUM": "",
+
            "NumDoc": null,
    "CL_PASPRUDATE": null,
+
            "NumRoom": 0,
    "CL_PASPRUBYWHOM": "",
+
            "Seat": null,
    "CL_ISMARK": 7,
+
            "Area": null,
    "CL_TYPE": 6,
+
            "DocDate": null,
    "CL_IMPRESSNOTE": "7",
+
            "Key": 3767,
    "CL_NOTE": "5",
+
            "Connections": [{
    "CL_REMARK": "6",
+
                    "$ref": 1
    "CL_IMPRESSKEY": 3,
+
                }, {
    "CL_TITLE1": "1",
+
                    "$ref": 4
    "CL_TITLE2": "2",
+
                }, {
    "CL_TITLE3": "3",
+
                    "$ref": 7
    "CL_TITLE4": "4",
+
                }
    "CL_FUTURE": "8",
+
            ]
    "CL_LASTSTAT": null,
+
        }, {
    "CL_SUMMA": null,
+
            "$id": 11,
    "CL_NMENWITH": null,
+
            "TUKey": 88653,
    "CL_SUMDOGOVOR": null,
+
            "DLKey": 202462,
    "CL_NTRIP": null,
+
            "NumDoc": null,
    "ROWID": "AAAAAAJBNbw=",
+
            "NumRoom": 0,
    "cl_fax": "",
+
            "Seat": null,
    "cl_mail": "test888@mail.ru",
+
            "Area": null,
    "CL_MINCOST": null,
+
            "DocDate": null,
    "CL_MAXCOST": null,
+
            "Key": 3771,
    "CL_RealSex": 0,
+
            "Connections": [{
    "CL_EnableSmsNotifications": 0,
+
                    "$ref": 1
    "CL_CHECKED": false,
+
                }, {
    "CL_Creator": 106,
+
                    "$ref": 4
     "CL_CreateDate": "2018-03-06T14:10:27.687",
+
                }, {
    "CL_Login": "test888@mail.ru",
+
                    "$ref": 6
     "CL_Password": "/wjpKpaXhmuTtSaG6xIUtQ==",
+
                }
    "CL_IsOnlineUser": true,
+
            ]
    "CL_CitizenID": "",
+
        }, {
    "CARDS": []
+
            "$id": 12,
 +
            "TUKey": 88653,
 +
            "DLKey": 202461,
 +
            "NumDoc": null,
 +
            "NumRoom": 0,
 +
            "Seat": null,
 +
            "Area": null,
 +
            "DocDate": null,
 +
            "Key": 3772,
 +
            "Connections": [{
 +
                    "$ref": 1
 +
                }, {
 +
                    "$ref": 5
 +
                }, {
 +
                    "$ref": 6
 +
                }
 +
            ]
 +
        }, {
 +
            "$id": 13,
 +
            "TUKey": 88652,
 +
            "DLKey": 202461,
 +
            "NumDoc": null,
 +
            "NumRoom": 0,
 +
            "Seat": null,
 +
            "Area": null,
 +
            "DocDate": null,
 +
            "Key": 3769,
 +
            "Connections": [{
 +
                    "$ref": 1
 +
                }, {
 +
                    "$ref": 5
 +
                }, {
 +
                    "$ref": 7
 +
                }
 +
            ]
 +
        }
 +
    ],
 +
    "DogovorMessages": [{
 +
            "$id": 14,
 +
            "Date": "2020-10-09T09:16:39.99",
 +
            "Text": "Тайм-лимит забронированного перелета: 14.10.2020 21:59",
 +
            "Remark": "TimeLimit",
 +
            "Connections": [{
 +
                    "$ref": 1
 +
                }
 +
            ]
 +
        }
 +
     ]
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 8563: Строка 9019:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка описаний ценовых блоков (CostOfferDescriptions)===
+
===Выгрузка информации о ценовых блоках (CostOfferDescriptions)===
Метод выгружает описания ценовых блоков.
+
Метод принимает на вход ключи ценовых блоков и возвращает, прикреплённое к ним описание.
 
* Формат запроса:
 
* Формат запроса:
 
** GET .../TourSearchOwin/CostOfferDescriptions?
 
** GET .../TourSearchOwin/CostOfferDescriptions?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''COKeysString *''' – ключи ценовых блоков
+
** '''COKeysString''' * – ключи ценовых блоков через запятую
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''IdCostOffer''' – Id ценового блока  
+
** '''CostOfferImageInfo''' – коллекция объектов из двух полей:
** '''InfoText''' – описание ценового блока
+
*** '''IdCostOffer''' – ключ ценового блока
 +
*** '''InfoText''' – описание ценового блока
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 8578: Строка 9035:
 
Вызов метода CostOfferDescriptions
 
Вызов метода CostOfferDescriptions
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/CostOfferDescriptions?COKeysString=16834,16828
+
GET http://localhost:9000/TourSearchOwin/CostOfferDescriptions?COKeysString=15143
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода CostOfferDescriptions (в формате JSON)
 
Возвращаемый результат метода CostOfferDescriptions (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
{
+
[
    "costOffersImageInformation": [
+
      {
        {
+
      "CostOfferImageInfo":   {
            "IdCostOffer": 16834,
+
          "IdCostOffer": 15143,
            "InfoText": "Информация для онлайна 2"
+
          "InfoText": "СПО до 01.01.2020"
        },
+
  },
        {
+
  }
            "IdCostOffer": 16828,
+
]
            "InfoText": "Информация для онлайна"
 
        },
 
    ]
 
}
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка описания по стране (CountryInfo)===
+
 
Метод выгружает описание по стране.
+
===Получение капчи (GetCaptcha)===
 +
Метод возвращает капчу (используется при регистрации частного лица).
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/CountryInfo?
+
** GET .../TourSearchOwin/GetCaptcha?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''countryKey *''' – ключ страны
+
** '''sessionId''' * Id сессии
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''информация по выбранной стране'''
+
** '''FileContents''' – файл капчи в бинарном виде
 +
** '''ContentType''' – расширение файла (image/jpeg)
 +
** '''FileDownloadName''' – имя файла
  
 
<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">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода CountryInfo
+
Вызов метода GetCaptcha
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/CountryInfo?countryKey=90
+
GET http://localhost:9000/TourSearchOwin/GetCaptcha?sessionId=cd5yr3wftltmorphuzwx0krh
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода CountryInfo (в формате JSON)
+
Возвращаемый результат метода GetCaptcha (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
"<p>Информация о стране</p>\n"
+
    "FileContents": "iVBORw0KGgoAAAANSUhEUgAAALQAAAAyCAYAAAD1JPH3AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAA
 +
    xiSURBVHhe7Z1NyE1tF8eNZMZEyUBGEikDAwNFKRSFMsCEMkDyOUG+Hgw8UkiPvHjLq1uRdBsgMVEGxERGGHGPmBkantdvd9Z51n3tdX3ts/c+5+Bfq/ucfa7Ptf5rXWtf1z
 +
    7nntLpdFb8lL+qyqtXry4/f/78H+szLanlYjI+Pv6fsbGx/1qfjZJMTEz8ff369f/x1/q8LfkVdKkFQvOiEt69e9eZMmVKIQ8fPuxeLcNX7vv374WEQN3Xr18Xr58+fdpr58aNG8
 +
    W1UQXzOnXqVG9ug8CLFy8KXd66dat7JR8/fvwo2kFitqTs+/fvOx8+fOheqR/JhLYGDjmFYNeuXSuuWfCVw6iID5rAKJ0xbNmypXgPGdqEdqxRg2/cd+/eLXR56dKl4n2V+UFObI
 +
    GEbAkuXrzYs+f9+/e7V+tFMqF9A4dokBSyhZBaToOyKPvcuXM9J+IvY/j8+XPxvg24jjVKCEVh9Cu6DZXLhc/59+7d29Pjhg0bulfrRV8px+8Cy7FGBW4U9iG1XAwh5//69Wvn6N
 +
    GjnbVr13Y+fvzYvVov/hC6BdSRrhBBc1Y3gY7CIaSWi2HQzt84oZnUqEW1fuDOt450hXrUhyQaKSQf5dy/ChonNArVOfevjpcvXxYiqCNiUc+9b/CRXGNQuf8gnehPytEH3GgM2n
 +
    Jgi+RcI08VtL3809/58+cH4kSCkSJ03Z6PkfU2ZC7aIm9q/gyBILmAOm0QWcBO2LFjxzqrV6/u7Nu3r9W+BY0R2iIeE6w6ySaWT8gIAfpxEtqAcFVv2mJISS0ERGs9F/b/NcH7wa,
 +
    "ContentType": "image/jpeg",
 +
    "FileDownloadName": ""
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 8623: Строка 9087:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка картинки по отелю (HotelImages)===
+
===Проверка капчи (CheckCaptcha)===
Метод выгружает картинку по отелю.
+
Метод проверяет введенную капчу (используется при регистрации частного лица).
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/HotelImages?
+
** GET .../TourSearchOwin/CheckCaptcha?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''hotelKeys *''' – ключ отеля (можно передать несколько ключей отеля, каждый раз указывая параметр ''hotelKeys''), в этом случае возвращается информация о главном фото отеля
+
** '''captchaText''' * текст капчи
* либо
+
** '''sessionId''' * Id сессии
** '''hotelKey *''' – либо ключ отеля, в этом случае возвращается полная информация о всех фотографиях в отеле
+
* Возвращаемый результат:
* Возвращаемый результат (если передан ''hotelKeys''):
+
** '''true/false''' – результат проверки (false капча или Id сессии неверные, true капча верна)
** '''Name''' – название файла
 
** '''HotelKey''' – ключ отеля
 
** '''InfoExists''' – есть ли информация
 
** '''ImagesCount''' – общее количество картинок по отелю
 
* либо (если передан ''hotelKey'')
 
** '''Images''' объект картинок
 
*** '''Key''' ключ картинки
 
*** '''Description''' – описание картинки
 
*** '''Priority''' – приоритет
 
*** '''Name''' – название файла
 
*** '''HotelKey''' – ключ отеля
 
*** '''InfoExists''' – есть ли информация
 
** '''Country''' – страна отеля
 
** '''City''' – город отеля
 
** '''Name''' – название отеля
 
** '''HotelCategoryName''' – категория отеля
 
** '''Address''' – адрес отеля
 
** '''Phone''' – телефон
 
** '''Email''' – e-mail
 
** '''Http''' – адрес сайта
 
** '''Description''' – описание отеля
 
** '''InfrastructureHotel''' – инфраструктура отеля
 
** '''RecreationSport''' – развлечения и спорт
 
** '''Beach''' – информация о пляже
 
** '''Healing''' – лечение
 
** '''Excursion''' – экскурсии
 
** '''AdditionalService''' – дополнительные услуги
 
** '''ForChildren''' – для детей
 
** '''AddCost''' – доплаты
 
** '''CheckoutTimeFrom''' – заезд в отель
 
** '''CheckoutTimeTo''' – выезд из отеля
 
** '''Latitude''' – GPS координаты: географическая широта (обрабатывается с релиза 15.6)
 
** '''Longitude''' – GPS координаты: географическая долгота (обрабатывается с релиза 15.6)
 
  
<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">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода HotelImages
+
Вызов метода CheckCaptcha
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/HotelImages?hotelKeys=8660&hotelKeys=178
+
GET http://localhost:9000/TourSearchOwin/CheckCaptcha?captchaText=vf8an&sessionId=cd5yr3wftltmorphuzwx0krh
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода HotelImages (в формате JSON)
+
Возвращаемый результат метода CheckCaptcha (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
[
+
{
    {
+
     true
        "Name": "Dubai_Emirates_UAE_Skyscrapers_Megapolis_From_564495_2560x1599.jpg",
+
}
        "HotelKey": 8660,
 
        "InfoExists": true
 
     },
 
    {
 
        "Name": "Spain_Resorts_Houses_Tenerife_Canary_Islands_Pools_527022_1280x853.jpg",
 
        "HotelKey": 178,
 
        "InfoExists": true
 
    }
 
]
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример детальной информации отеля
+
===Проверка e-mail (CheckMail)===
 +
Метод проверяет e-mail при регистрации частного лица на существование такого же e-mail в базе данных.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/CheckMail?
 +
* Принимаемые параметры ( * – обязательный):
 +
** '''mail''' * – e-mail пользователя
 +
* Возвращаемый результат:
 +
** '''true/false''' – результат проверки (false – пользователь с таким e-mail уже существует, true – пользователь с таким e-mail нет в базе данных)
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода HotelImages
+
Вызов метода CheckMail
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/HotelImages?hotelKey=178
+
GET http://localhost:9000/TourSearchOwin/CheckMail?mail=test@megatec.ru
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода HotelImages (в формате JSON)
+
Возвращаемый результат метода CheckMail (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
     "Images": [
+
     true
        {
 
            "Key": 2619,
 
            "Description": "",
 
            "Priority": 1,
 
            "Name": "Spain_Resorts_Houses_Tenerife_Canary_Islands_Pools_527022_1280x853.jpg",
 
            "HotelKey": 178,
 
            "InfoExists": false
 
        },
 
        {
 
            "Key": 2620,
 
            "Description": "",
 
            "Priority": 2,
 
            "Name": "stock-photo-luxury-bedrooms-with-flare-light-559774297.jpg",
 
            "HotelKey": 178,
 
            "InfoExists": false
 
        },
 
        {
 
            "Key": 2621,
 
            "Description": "",
 
            "Priority": 3,
 
            "Name": "USA_Houses_Skyscrapers_Evening_Manhattan_New_York_562768_2560x1440.jpg",
 
            "HotelKey": 178,
 
            "InfoExists": false
 
        },
 
        {
 
            "Key": 2622,
 
            "Description": "",
 
            "Priority": 4,
 
            "Name": "Winter_Mountains_Forests_Slovakia_Tatra_mountains_555815_6000x4000.jpg",
 
            "HotelKey": 178,
 
            "InfoExists": false
 
        }
 
    ],
 
    "Country": "Австрия",
 
    "City": "Вена",
 
    "Name": "Ananas",
 
    "HotelCategoryName": "5+++*",
 
    "Address": "Вена, Австрия",
 
    "Phone": "(+43/1) 54620043",
 
    "Email": "",
 
    "Http": "https://www.booking.com/hotel/ru/dd1-2ddegd1-2ddegn.ru.html?aid=318615;label=New_Russian_RU_UK_21458017585-iiDMr3ISp%2AxxmWbPbGNx0QS99511367185%3Apl%3Ata%3Ap1%3Ap2%3Aac%3Aap%3Aneg%3Afi2132702086%3Atidsa-302962658775%3Alp9061012%3Ali%3Adec%3Adm;sid=fc5ecc",
 
    "Description": "<p>Расположен на улице Рихте Вензел ВВВ93-95 (р-он №5). В отеле 537 номеров, отель имеет свой гараж, сауну, тренажерный зал, кабельное телевидение. В каждом номере: телевизор, телефон, душ, туалет.</p>",
 
    "InfrastructureHotel": "<p>Ифраструктура отеля</p>",
 
    "RecreationSport": "<p>Развлечение и спорт</p>",
 
    "Beach": "<p>Ифраструктура отеля</p>",
 
    "Healing": "<p>Лечение</p>",
 
    "Excursion": "<p>Экскурсии</p>",
 
    "AdditionalService": "<p>Дополнительные услуги</p>",
 
    "ForChildren": "<p>Для детей</p>",
 
    "AddCost": "<p>Доплата</p>",
 
    "CheckoutTimeFrom": "12:00",
 
    "CheckoutTimeTo": "14:30",
 
    "Latitude": "12.788397°",
 
    "Longitude": "36.348986°"
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 8761: Строка 9138:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка картинки по туру (TourImages) начиная с релиза 15.7===
+
===Проверка туриста (checkTourist)===
Метод выгружает картинки по туру.
+
Метод служит для получения информации о путевке по номеру путевки и номеру паспорта туриста.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/TourImages?
+
** GET .../TourSearchOwin/checkTourist?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''tourKeys *''' – ключ тура (можно передать несколько ключей тура, каждый раз указывая параметр ''tourKeys'')
+
** '''dogovorNumber *''' – номер путевки.
 
+
** '''passport *''' – номер паспорта туриста (заграничного или общегражданского).
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Images''' – объект картинок
+
** '''isDogovor''' – '''true''', если путевка найдена по номеру путевки, '''false''', если не найдена.
*** '''Key''' – ключ картинки
+
** '''isAnnulated''' – '''true''', если путевка аннулирована, '''false''', если не аннулирована.
*** '''Description''' – описание картинки
+
** '''dogovorStatus''' – статус путевки
*** '''Priority''' – приоритет
+
** '''isPay''' – '''true''', если путевка полностью оплачена, '''false''', если не оплачена или оплачена частично.
*** '''Name''' – название файла
+
** '''dogovorDateBegin''' – дата начала заезда.
*** '''TourKey''' – ключ тура
+
** '''dogovorDateEnd''' – дата окончания заезда.
 +
** '''dogovorDateCreate''' – дата создания путевки.
 +
** '''isTouristDogovorCreate''' – '''true''', если турист (по номеру паспорта) является главным туристом в путевке.
 +
** '''services''' – набор услуг в путевке.
 +
*** '''svKey''' – код класса услуги.
 +
*** '''code''' – код услуги.
 +
*** '''subCode1''' – код доп. описания 1 услуги.
 +
*** '''subCode2''' – код доп. описания 2 услуги.
 +
*** '''name''' – название услуги.
 +
** '''touristInfo''' – информация о главном туристе.
 +
*** '''lastname''' – фамилия туриста (рус).
 +
*** '''firstname''' – имя туриста (рус).
 +
*** '''surname''' – отчество туриста.
 +
*** '''address''' – адрес (индекс, город, улица, дом, квартира).
 +
*** '''postcode''' – индекс.
 +
*** '''city''' – город.
 +
*** '''street''' – улица.
 +
*** '''home''' – дом.
 +
*** '''roomNumber''' – квартира.
  
 
<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">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода TourImages
+
Вызов метода checkTourist
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/TourImages?tourKey=100001132
+
http://localhost:9000/TourSearchOwin/checkTourist?dogovorNumber=AU25120001&passport=1234567
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода TourImages (в формате JSON)
+
Возвращаемый результат метода checkTourist (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
    "Images": [
+
  "isDogovor": true,
        {
+
  "isAnnulated": false,
             "Key": 52,
+
  "dogovorStatus": "ОК",
            "Description": "Московский планетарий",
+
  "isPay": true,
             "Priority": 1,
+
  "dogovorDateBegin": "05.02.2018",
            "Name": "Планетарий.jpg",
+
  "dogovorDateEnd": "12.02.2018",
            "TourKey": 100001132
+
  "dogovorDateCreate": "01.02.2018",
        },
+
  "isTouristDogovorCreate": true,
        {
+
  "services":    [
            "Key": 51,
+
            {
            "Description": "Виз из космоса",
+
        "svKey": "1",
            "Priority": 2,
+
        "code": "1088",
            "Name": "Вид из космоса.jpg",
+
        "subCode1": "147",
            "TourKey": 100001132
+
        "subCode2": "35",
        }
+
        "name": "А_П::Вена/Москва/SU2353, VIE-SVO, 18:05-22:40/NSU Экономический класс"
    ]
+
      },
}
+
             {
</syntaxhighlight>
+
        "svKey": "3",
</TD></TR></TABLE>
+
        "code": "698",
 +
        "subCode1": "46200",
 +
        "subCode2": "1",
 +
        "name": "HOTEL::Вена/Graben-1*,5 ночей/DBL(Standart ),2Ad/FB Полный пансион"
 +
      },
 +
             {
 +
        "svKey": "1",
 +
        "code": "1087",
 +
        "subCode1": "147",
 +
        "subCode2": "1",
 +
        "name": "А_П::Москва/Вена/SU2352, SVO-VIE, 16:20-17:05/NSU Экономический класс"
 +
      }
 +
  ],
 +
  "touristInfo":    {
 +
      "lastname": "Ivanov",
 +
      "firstname": "Ivan",
 +
      "surname": "Ivanovich",
 +
      "address": "123456, г. Москва, ул. Ленина, д. 1, кв. 15",
 +
      "postcode": "123456",
 +
      "city": "Москва",
 +
      "street": "Ленина",
 +
      "home": "1",
 +
      "roomNumber": "15"
 +
  }
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
===Регистрация частного лица (PersonalRegistration)===
+
===Список значений параметра гражданства (Citizenships)===
Метод производит регистрацию частного лица.
+
Метод служит для получения списка значений параметра гражданства.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/PersonalRegistration?
+
** GET .../TourSearchOwin/Citizenships?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''name *''' – имя
+
** '''pageSize *''' – размер выдачи
** '''surname *''' – фамилия
+
** '''pageNumber *''' – порядковый номер страницы выдачи
** '''phone *''' – телефон
+
** '''term *''' – подстрочный фильтр для отбора (пустой по умолчанию)
** '''login *''' – e-mail (он же является логином). Предварительно нужно вызывать метод проверки e-mail [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Проверка e-mail (CheckMail)|CheckMail]]
 
** '''password *''' – пароль (при упрощенной регистрации пароль не передается, а формируется системой автоматически)
 
** '''citizen *''' – гражданство (возможна передача пустого значения)
 
** '''country *''' – страна (возможна передача пустого значения)
 
** '''city *''' – город (возможна передача пустого значения)
 
** '''address *''' – адрес (возможна передача пустого значения)
 
** '''comment *''' – комментарий (возможна передача пустого значения)
 
** '''captchaText *''' – текст капчи. Предварительно нужно вызывать метод получения капчи [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Получение капчи (GetCaptcha)|GetCaptcha]]
 
** '''sessionId *''' – Id сессии (возможна передача произвольного значения)
 
 
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''SxotpFhg''' – сформированный (при упрощенной регистрации) или заданный пользователем пароль
+
** '''Key''' – ключ страны
 +
** '''Name''' – название гражданства
  
 
<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">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода PersonalRegistration
+
Вызов метода Citizenships
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/PersonalRegistration?name=Иван&surname=Иванов&phone=+79991234568&login=test1222@mail.ru
+
http://localhost:9000/TourSearchOwin/Citizenships?pageSize=50&pageNumber=1&term=
&citizen=&country=&city=&address=&comment=&captchaText=v7jnj&sessionId=43angzdfbc5h2wud1lp1301j
 
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода PersonalRegistration (в формате JSON)
+
Возвращаемый результат метода Citizenships (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
"SxotpFhg"
+
    {
}
+
        "Key": 90,
</syntaxhighlight>
+
        "Name": "Австрия"
</TD></TR></TABLE>
+
    },
</div></div><br />
+
    {
 
+
        "Key": 222,
===Выгрузка плана рассадки (TransportPlan)===
+
        "Name": "Англия"
Метод выгружает план рассадки транспортного средства.
+
    },
 +
    {
 +
        "Key": 376,
 +
        "Name": "Андорра"
 +
    },
 +
    {
 +
        "Key": 375,
 +
        "Name": "Беларусь"
 +
    },
 +
    {
 +
        "Key": 3,
 +
        "Name": "Бельгия"
 +
    }
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка постоянного клиента (Client)===
 +
Метод выгружает постоянного клиента при авторизации частного лица.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/TransportPlan?
+
** GET .../TourSearchOwin/Client?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''code *''' – код услуги
+
** '''clientId *''' – Id постоянного клиента
** '''dateBegin *''' – дата начала услуги
 
** '''serviceType *''' – класс услуги
 
** '''transportKey *''' – ключ транспорта
 
 
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''TransportKey''' – ключ транспорта
+
** '''$id''' – внутренний порядковый идентификатор
** '''Title''' – название
+
** '''CL_KEY''' – ключ справочника постоянные клиенты
** '''AreasCount''' – количество зон (уровней)
+
** '''CL_OPERUPDATE''' – ключ менеджера, который последний обновил постоянного клиента
** '''RowsCount''' – количество рядов
+
** '''CL_OPERUPDATE''' – дата обновления постоянного клиента
** '''ColumnsCount''' – количество колонок
+
** '''CL_PFKEY''' – внутренний ключ
** '''BusySeats''' – информация о занятых местах
+
** '''CL_NAMERUS''' – имя (на русском)
** '''Cells''' – блок не заполняется
+
** '''CL_NAMELAT''' – имя (на латинице)
*** '''Row''' – ряд
+
** '''CL_SHORTNAME''' – инициалы
*** '''Column''' – колонка
+
** '''CL_SEX''' – пол
*** '''Area''' – уровень
+
** '''CL_FNAMERUS''' – фамилия (на русском)
*** '''Type''' – тип места (1 - свободно, 5 - занято)
+
** '''CL_FNAMELAT''' – фамилия (на латинице)
*** '''Name''' – номер места
+
** '''CL_SNAMERUS''' – отчество (на русском)
** '''UserSeats''' – блок не заполняется
+
** '''CL_SNAMELAT''' – отчество (на латинице)
** '''BlockSeat''' – блок не заполняется
+
** '''CL_BIRTHDAY''' – дата рождения
 
+
** '''CL_BIRTHCOUNTRY''' – страна рождения
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
** '''CL_BIRTHCITY''' – место рождения (город)
<div class="mw-collapsible-content">
+
** '''CL_CITIZEN''' – гражданство
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
** '''CL_ADDRESS''' – полный адрес
Вызов метода TransportPlan
+
** '''CL_POSTINDEX''' – почтовый индекс
<syntaxhighlight lang="java" enclose="div">
+
** '''CL_POSTCITY''' – город
http://localhost:9000/TourSearchOwin/TransportPlan?code=1527&dateBegin=07.03.2021&serviceType=14&transportKey=31
+
** '''CL_POSTSTREET''' – улица
&citizen=&country=&city=&address=&comment=&captchaText=v7jnj&sessionId=43angzdfbc5h2wud1lp1301j
+
** '''CL_POSTBILD''' – дом
 +
** '''CL_POSTFLAT''' – квартира
 +
** '''CL_PHONE''' – телефон
 +
** '''CL_PASPORTSER''' – серия загранпаспорта
 +
** '''CL_PASPORTNUM''' – номер загранпаспорта
 +
** '''CL_PASPORTDATE''' – дата выдачи загранпаспорта
 +
** '''CL_PASPORTDATEEND''' – срок действия загранпаспорта
 +
** '''CL_PASPORTBYWHOM''' – кем выдан загранпаспорт
 +
** '''CL_PASPRUSER''' – серия общегражданского паспорта
 +
** '''CL_PASPRUNUM''' – номер общегражданского паспорта
 +
** '''CL_PASPRUDATE''' – дата выдачи общегражданского паспорта
 +
** '''CL_PASPRUBYWHOM''' – кем выдан общегражданский паспорт
 +
** '''CL_ISMARK''' – профессия
 +
** '''CL_TYPE''' – примечания
 +
** '''CL_IMPRESSNOTE''' – общие впечатления
 +
** '''CL_NOTE''' – особые отметки
 +
** '''CL_REMARK''' – примечания
 +
** '''CL_IMPRESSKEY''' – ключ выбранного впечатления
 +
** '''CL_TITLE1''' – служебные отметки, заголовок 1
 +
** '''CL_TITLE2''' – служебные отметки, заголовок 2
 +
** '''CL_TITLE3''' – служебные отметки, заголовок 3
 +
** '''CL_TITLE4''' – служебные отметки, заголовок 4
 +
** '''CL_FUTURE''' – пожелания
 +
** '''CL_LASTSTAT''' – информация о статистике
 +
** '''CL_SUMMA''' – сумма по клиенту
 +
** '''CL_NMENWITH''' – число спутников
 +
** '''CL_SUMDOGOVOR''' – сумма по путевкам
 +
** '''CL_NTRIP''' – число поездок
 +
** '''ROWID''' – внутренний идентификатор
 +
** '''cl_fax''' – факс
 +
** '''cl_mail:''' – e-mail
 +
** '''CL_MINCOST''' – минимальная стоимость поездки
 +
** '''CL_MAXCOST''' – максимальная стоимость поездки
 +
** '''CL_RealSex''' – пол
 +
** '''CL_EnableSmsNotifications''' – признак согласен получать sms-уведомление
 +
** '''CL_CHECKED''' – оповещения
 +
** '''CL_Creator''' – создатель постоянного клиента
 +
** '''CL_CreateDate''' – дата создания постоянного клиента
 +
** '''CL_Login''' – логин
 +
** '''CL_Password''' – пароль
 +
** '''CL_IsOnlineUser''' – является ли постоянный клиент онлайн пользователем
 +
** '''CL_CitizenID''' – ID гражданства
 +
** '''CARDS''' – информация о дисконтной карте
 +
 
 +
<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>
 +
Вызов метода Client
 +
<syntaxhighlight lang="java" enclose="div">
 +
http://localhost:9000/TourSearchOwin/Client?clientId=7314
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода TransportPlan (в формате JSON)
+
Возвращаемый результат метода Client (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
     "TransportKey": 31,
+
     "$id": "1",
     "Title": "",
+
    "CL_KEY": 7314,
     "AreasCount": 1,
+
    "CL_OPERUPDATE": 106,
     "RowsCount": 10,
+
    "CL_DATEUPDATE": "2021-01-21T11:56:41.287",
     "ColumnsCount": 2,
+
    "CL_PFKEY": 2,
     "BusySeats": [],
+
    "CL_NAMERUS": "Test888",
     "Cells": [
+
    "CL_NAMELAT": "Test888",
        {
+
    "CL_SHORTNAME": "T.",
            "Row": 4,
+
    "CL_SEX": 0,
            "Column": 0,
+
    "CL_FNAMERUS": "Test888",
            "Area": 0,
+
     "CL_FNAMELAT": "Test888",
            "Type": 1,
+
     "CL_SNAMERUS": "",
            "Name": "9"
+
     "CL_SNAMELAT": "",
        },
+
     "CL_BIRTHDAY": null,
        {
+
     "CL_BIRTHCOUNTRY": "",
            "Row": 4,
+
     "CL_BIRTHCITY": "",
            "Column": 1,
+
    "CL_CITIZEN": "Spain",
            "Area": 0,
+
    "CL_ADDRESS": ", г., ул., д., кв.",
            "Type": 1,
+
    "CL_POSTINDEX": "",
            "Name": "10"
+
    "CL_POSTCITY": "",
        },
+
    "CL_POSTSTREET": "",
        {
+
    "CL_POSTBILD": "",
            "Row": 1,
+
    "CL_POSTFLAT": "",
            "Column": 0,
+
    "CL_PHONE": "65465465",
            "Area": 0,
+
    "CL_PASPORTSER": "",
            "Type": 5,
+
    "CL_PASPORTNUM": "",
            "Name": "3"
+
    "CL_PASPORTDATE": null,
        },
+
    "CL_PASPORTDATEEND": null,
        {
+
    "CL_PASPORTBYWHOM": "",
            "Row": 1,
+
    "CL_PASPRUSER": "",
            "Column": 1,
+
    "CL_PASPRUNUM": "",
            "Area": 0,
+
    "CL_PASPRUDATE": null,
            "Type": 5,
+
    "CL_PASPRUBYWHOM": "",
            "Name": "4"
+
    "CL_ISMARK": 7,
        },
+
    "CL_TYPE": 6,
        {
+
    "CL_IMPRESSNOTE": "7",
            "Row": 8,
+
    "CL_NOTE": "5",
            "Column": 0,
+
    "CL_REMARK": "6",
            "Area": 0,
+
    "CL_IMPRESSKEY": 3,
            "Type": 1,
+
    "CL_TITLE1": "1",
            "Name": "17"
+
    "CL_TITLE2": "2",
        },
+
    "CL_TITLE3": "3",
        {
+
    "CL_TITLE4": "4",
            "Row": 8,
+
    "CL_FUTURE": "8",
            "Column": 1,
+
    "CL_LASTSTAT": null,
            "Area": 0,
+
    "CL_SUMMA": null,
            "Type": 1,
+
    "CL_NMENWITH": null,
            "Name": "18"
+
    "CL_SUMDOGOVOR": null,
        },
+
    "CL_NTRIP": null,
 +
    "ROWID": "AAAAAAJBNbw=",
 +
    "cl_fax": "",
 +
    "cl_mail": "test888@mail.ru",
 +
    "CL_MINCOST": null,
 +
    "CL_MAXCOST": null,
 +
    "CL_RealSex": 0,
 +
    "CL_EnableSmsNotifications": 0,
 +
    "CL_CHECKED": false,
 +
    "CL_Creator": 106,
 +
    "CL_CreateDate": "2018-03-06T14:10:27.687",
 +
    "CL_Login": "test888@mail.ru",
 +
    "CL_Password": "/wjpKpaXhmuTtSaG6xIUtQ==",
 +
    "CL_IsOnlineUser": true,
 +
    "CL_CitizenID": "",
 +
    "CARDS": []
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка описаний ценовых блоков (CostOfferDescriptions)===
 +
Метод выгружает описания ценовых блоков.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/CostOfferDescriptions?
 +
* Принимаемые параметры ( * – обязательный):
 +
** '''COKeysString *''' – ключи ценовых блоков
 +
* Возвращаемый результат:
 +
** '''IdCostOffer''' – Id ценового блока
 +
** '''InfoText''' – описание ценового блока
 +
 
 +
<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>
 +
Вызов метода CostOfferDescriptions
 +
<syntaxhighlight lang="java" enclose="div">
 +
http://localhost:9000/TourSearchOwin/CostOfferDescriptions?COKeysString=16834,16828
 +
</syntaxhighlight>
 +
Возвращаемый результат метода CostOfferDescriptions (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
    "costOffersImageInformation": [
 
         {
 
         {
             "Row": 5,
+
             "IdCostOffer": 16834,
             "Column": 0,
+
             "InfoText": "Информация для онлайна 2"
            "Area": 0,
 
            "Type": 1,
 
            "Name": "11"
 
 
         },
 
         },
 
         {
 
         {
             "Row": 5,
+
             "IdCostOffer": 16828,
             "Column": 1,
+
             "InfoText": "Информация для онлайна"
            "Area": 0,
 
            "Type": 1,
 
            "Name": "12"
 
 
         },
 
         },
        {
+
    ]
            "Row": 2,
+
}
            "Column": 0,
+
</syntaxhighlight>
            "Area": 0,
+
</TD></TR></TABLE>
            "Type": 1,
+
</div></div><br />
            "Name": "5"
+
 
        },
+
===Выгрузка описания по стране (CountryInfo)===
        {
+
Метод выгружает описание по стране.
            "Row": 2,
+
* Формат запроса:
            "Column": 1,
+
** GET .../TourSearchOwin/CountryInfo?
            "Area": 0,
+
* Принимаемые параметры ( * – обязательный):
            "Type": 1,
+
** '''countryKey *''' – ключ страны
            "Name": "6"
+
* Возвращаемый результат:
        },
+
** '''информация по выбранной стране'''
        {
+
 
            "Row": 9,
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
            "Column": 0,
+
<div class="mw-collapsible-content">
            "Area": 0,
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
            "Type": 1,
+
Вызов метода CountryInfo
            "Name": "19"
+
<syntaxhighlight lang="java" enclose="div">
        },
+
http://localhost:9000/TourSearchOwin/CountryInfo?countryKey=90
        {
+
</syntaxhighlight>
            "Row": 9,
+
Возвращаемый результат метода CountryInfo (в формате JSON)
            "Column": 1,
+
<syntaxhighlight lang="java" enclose="div">
            "Area": 0,
+
{
            "Type": 1,
+
"<p>Информация о стране</p>\n"
            "Name": "20"
+
}
        },
+
</syntaxhighlight>
        {
+
</TD></TR></TABLE>
            "Row": 6,
+
</div></div><br />
            "Column": 0,
+
 
            "Area": 0,
+
===Выгрузка картинки по отелю (HotelImages)===
            "Type": 1,
+
Метод выгружает картинку по отелю.
            "Name": "13"
+
* Формат запроса:
        },
+
** GET .../TourSearchOwin/HotelImages?
        {
+
* Принимаемые параметры ( * – обязательный):
            "Row": 6,
+
** '''hotelKeys *''' – ключ отеля (можно передать несколько ключей отеля, каждый раз указывая параметр ''hotelKeys''), в этом случае возвращается информация о главном фото отеля
            "Column": 1,
+
* либо
            "Area": 0,
+
** '''hotelKey *''' – либо ключ отеля, в этом случае возвращается полная информация о всех фотографиях в отеле
            "Type": 1,
+
* Возвращаемый результат (если передан ''hotelKeys''):
            "Name": "14"
+
** '''Name''' – название файла
        },
+
** '''HotelKey''' – ключ отеля
        {
+
** '''InfoExists''' – есть ли информация
            "Row": 3,
+
** '''ImagesCount''' – общее количество картинок по отелю
            "Column": 0,
+
* либо (если передан ''hotelKey'')
            "Area": 0,
+
** '''Images''' – объект картинок
            "Type": 1,
+
*** '''Key''' – ключ картинки
            "Name": "7"
+
*** '''Description''' – описание картинки
        },
+
*** '''Priority''' – приоритет
        {
+
*** '''Name''' – название файла
            "Row": 3,
+
*** '''HotelKey''' – ключ отеля
            "Column": 1,
+
*** '''InfoExists''' – есть ли информация
            "Area": 0,
+
** '''Country''' – страна отеля
            "Type": 1,
+
** '''City''' – город отеля
            "Name": "8"
+
** '''Name''' – название отеля
        },
+
** '''HotelCategoryName''' – категория отеля
        {
+
** '''Address''' – адрес отеля
            "Row": 0,
+
** '''Phone''' – телефон
            "Column": 0,
+
** '''Email''' – e-mail
            "Area": 0,
+
** '''Http''' – адрес сайта
            "Type": 1,
+
** '''Description''' – описание отеля
            "Name": "1"
+
** '''InfrastructureHotel''' – инфраструктура отеля
        },
+
** '''RecreationSport''' – развлечения и спорт
        {
+
** '''Beach''' – информация о пляже
            "Row": 0,
+
** '''Healing''' – лечение
            "Column": 1,
+
** '''Excursion''' – экскурсии
            "Area": 0,
+
** '''AdditionalService''' – дополнительные услуги
            "Type": 1,
+
** '''ForChildren''' – для детей
            "Name": "2"
+
** '''AddCost''' – доплаты
        },
+
** '''CheckoutTimeFrom''' – заезд в отель
        {
+
** '''CheckoutTimeTo''' – выезд из отеля
            "Row": 7,
+
** '''Latitude''' – GPS координаты: географическая широта (обрабатывается с релиза 15.6)
            "Column": 0,
+
** '''Longitude''' – GPS координаты: географическая долгота (обрабатывается с релиза 15.6)
            "Area": 0,
+
 
            "Type": 1,
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример краткой информации отеля
            "Name": "15"
+
<div class="mw-collapsible-content">
        },
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
        {
+
Вызов метода HotelImages
            "Row": 7,
+
<syntaxhighlight lang="java" enclose="div">
            "Column": 1,
+
http://localhost:9000/TourSearchOwin/HotelImages?hotelKeys=8660&hotelKeys=178
            "Area": 0,
+
</syntaxhighlight>
            "Type": 1,
+
Возвращаемый результат метода HotelImages (в формате JSON)
            "Name": "16"
+
<syntaxhighlight lang="java" enclose="div">
         }
+
[
    ],
+
    {
    "UserSeats": {},
+
        "Name": "Dubai_Emirates_UAE_Skyscrapers_Megapolis_From_564495_2560x1599.jpg",
    "BlockSeat": {}
+
        "HotelKey": 8660,
}
+
        "InfoExists": true
 +
    },
 +
    {
 +
        "Name": "Spain_Resorts_Houses_Tenerife_Canary_Islands_Pools_527022_1280x853.jpg",
 +
         "HotelKey": 178,
 +
        "InfoExists": true
 +
    }
 +
]
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка списка всех стран (Countries)===
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример детальной информации отеля
Метод производит выгрузку всех стран (используется для регистрации частного лица).
 
* Формат запроса:
 
** GET .../TourSearchOwin/Countries?
 
* Принимаемые параметры ( * – обязательный):
 
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
 
* Возвращаемый результат:
 
** '''Key''' – ключ страны
 
** '''Name''' – название
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода Countries
+
Вызов метода HotelImages
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Countries?term=
+
http://localhost:9000/TourSearchOwin/HotelImages?hotelKey=178
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода Countries (в формате JSON)
+
Возвращаемый результат метода HotelImages (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
[
+
{
    {
+
    "Images": [
        "Key": 6283,
+
        {
        "Name": " Азербайджан"
+
            "Key": 2619,
    },
+
            "Description": "",
    {
+
            "Priority": 1,
        "Key": 90,
+
            "Name": "Spain_Resorts_Houses_Tenerife_Canary_Islands_Pools_527022_1280x853.jpg",
        "Name": "Австрия"
+
            "HotelKey": 178,
    },
+
            "InfoExists": false
    {
+
        },
        "Key": 222,
+
        {
        "Name": "Англия"
+
            "Key": 2620,
    },
+
            "Description": "",
    {
+
            "Priority": 2,
        "Key": 376,
+
            "Name": "stock-photo-luxury-bedrooms-with-flare-light-559774297.jpg",
        "Name": "Андорра"
+
            "HotelKey": 178,
    },
+
            "InfoExists": false
    {
+
        },
        "Key": 375,
+
        {
        "Name": "Беларусь"
+
            "Key": 2621,
    },
+
            "Description": "",
    {
+
            "Priority": 3,
        "Key": 6305,
+
            "Name": "USA_Houses_Skyscrapers_Evening_Manhattan_New_York_562768_2560x1440.jpg",
        "Name": "Бельгия"
+
            "HotelKey": 178,
    },
+
            "InfoExists": false
    {
+
        },
        "Key": 359,
+
        {
        "Name": "Болгария"
+
            "Key": 2622,
    },
+
            "Description": "",
    {
+
            "Priority": 4,
        "Key": 6235,
+
            "Name": "Winter_Mountains_Forests_Slovakia_Tatra_mountains_555815_6000x4000.jpg",
        "Name": "Вьетнам"
+
            "HotelKey": 178,
    },
+
            "InfoExists": false
    {
+
        }
        "Key": 40,
+
     ],
        "Name": "Германия"
+
     "Country": "Австрия",
    },
+
    "City": "Вена",
    {
+
     "Name": "Ananas",
        "Key": 1,
+
    "HotelCategoryName": "5+++*",
        "Name": "Голландия"
+
     "Address": "Вена, Австрия",
    },
+
    "Phone": "(+43/1) 54620043",
    {
+
     "Email": "",
        "Key": 852,
+
     "Http": "https://www.booking.com/hotel/ru/dd1-2ddegd1-2ddegn.ru.html?aid=318615;label=New_Russian_RU_UK_21458017585-iiDMr3ISp%2AxxmWbPbGNx0QS99511367185%3Apl%3Ata%3Ap1%3Ap2%3Aac%3Aap%3Aneg%3Afi2132702086%3Atidsa-302962658775%3Alp9061012%3Ali%3Adec%3Adm;sid=fc5ecc",
        "Name": "Гонконг"
+
    "Description": "<p>Расположен на улице Рихте Вензел ВВВ93-95 (р-он №5). В отеле 537 номеров, отель имеет свой гараж, сауну, тренажерный зал, кабельное телевидение. В каждом номере: телевизор, телефон, душ, туалет.</p>",
     },
+
     "InfrastructureHotel": "<p>Ифраструктура отеля</p>",
     {
+
    "RecreationSport": "<p>Развлечение и спорт</p>",
        "Key": 29,
+
     "Beach": "<p>Ифраструктура отеля</p>",
        "Name": "Греция"
+
    "Healing": "<p>Лечение</p>",
    },
+
     "Excursion": "<p>Экскурсии</p>",
     {
+
     "AdditionalService": "<p>Дополнительные услуги</p>",
        "Key": 6251,
+
    "ForChildren": "<p>Для детей</p>",
        "Name": "Грузия"
+
     "AddCost": "<p>Доплата</p>",
    },
+
    "CheckoutTimeFrom": "12:00",
     {
+
     "CheckoutTimeTo": "14:30",
        "Key": 6224,
+
    "Latitude": "12.788397°",
        "Name": "Дания"
+
     "Longitude": "36.348986°"
    },
+
}
     {
+
</syntaxhighlight>
        "Key": 6245,
+
</TD></TR></TABLE>
        "Name": "Доминиканская Республика"
+
</div></div><br />
    },
+
 
     {
+
====Отображение картинки в браузере (GetImage)====
        "Key": 9,
+
Данный метод реализован не на API, а внутри самого приложения (Canary или TourSearchClient) и отображает картинку, полученную в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка картинки по отелю (HotelImages)|HotelImages]].
        "Name": "Египет"
+
* Формат запроса:
    },
+
** http://localhost/Canary/Image/GetImage?
    {
+
 
        "Key": 729,
+
* Принимаемые параметры ( * – обязательный):
        "Name": "Израиль"
+
** '''code *''' – ключ отеля
    },
+
** '''type *''' – размер картинки (возможные значения: ''small1'', ''small160x90'', ''medium'', ''big'')
     {
+
** '''name *''' – название файла (берется из метода [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка картинки по отелю (HotelImages)|HotelImages]])
        "Key": 26,
+
** '''imageType *''' – тип картинки (возможные значения: ''hotels'', ''tours'')
        "Name": "Индия"
+
 
    },
+
* Возвращаемый результат:
     {
+
** изображение картинки отеля
        "Key": 6221,
+
 
        "Name": "Индонезия"
+
<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>
        "Key": 6244,
+
Вызов метода GetImage
        "Name": "Иордания"
+
<syntaxhighlight lang="java" enclose="div">
    },
+
http://localhost/Canary/Image/GetImage?code=134049&type=small160x90&name=PalaceResort.webp&imageType=hotels
     {
+
 
        "Key": 6288,
+
</syntaxhighlight>
        "Name": "Ирландия"
+
Возвращаемый результат метода GetImage и виде картинки
    },
+
</TD></TR></TABLE>
     {
+
</div></div><br />
        "Key": 84,
+
 
        "Name": "Испания"
+
===Выгрузка картинки по туру (TourImages)===
    },
+
Метод выгружает картинки по туру.
     {
+
* Формат запроса:
        "Key": 80,
+
** GET .../TourSearchOwin/TourImages?
        "Name": "Италия"
+
* Принимаемые параметры ( * – обязательный):
    },
+
** '''tourKeys *''' – ключ тура (можно передать несколько ключей тура, каждый раз указывая параметр ''tourKeys'')
     {
+
 
        "Key": 3272,
+
* Возвращаемый результат:
        "Name": "Казахстан"
+
** '''Images''' – объект картинок
    },
+
*** '''Key''' – ключ картинки
    {
+
*** '''Description''' – описание картинки
        "Key": 6240,
+
*** '''Priority''' – приоритет
        "Name": "Камбоджа"
+
*** '''Name''' – название файла
    },
+
*** '''TourKey''' – ключ тура
    {
+
 
        "Key": 10,
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
        "Name": "Кипр"
+
<div class="mw-collapsible-content">
    },
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
    {
+
Вызов метода TourImages
        "Key": 6237,
+
<syntaxhighlight lang="java" enclose="div">
        "Name": "Китай"
+
http://localhost:9000/TourSearchOwin/TourImages?tourKey=100001132
    },
+
</syntaxhighlight>
    {
+
Возвращаемый результат метода TourImages (в формате JSON)
        "Key": 6254,
+
<syntaxhighlight lang="java" enclose="div">
        "Name": "Круизы"
+
{
    },
+
    "Images": [
    {
+
        {
        "Key": 6243,
+
            "Key": 52,
        "Name": "Куба"
+
            "Description": "Московский планетарий",
    },
+
            "Priority": 1,
    {
+
            "Name": "Планетарий.jpg",
        "Key": 6241,
+
            "TourKey": 100001132
        "Name": "Лаос"
+
         },
    },
+
        {
    {
+
            "Key": 51,
        "Key": 6261,
+
            "Description": "Вид из космоса",
        "Name": "Маврикий"
+
            "Priority": 2,
    },
+
            "Name": "Вид из космоса.jpg",
    {
+
            "TourKey": 100001132
        "Key": 603,
+
         }
        "Name": "Малайзия"
+
     ]
    },
+
}
    {
+
</syntaxhighlight>
        "Key": 960,
+
</TD></TR></TABLE>
        "Name": "Мальдивы"
+
</div></div><br />
    },
+
 
    {
+
====Отображение картинки в браузере (GetImage)====
        "Key": 535,
+
Данный метод реализован не на API, а внутри самого приложения (Canary или TourSearchClient) и отображает картинку, полученную в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка картинки по туру (TourImages)|TourImages]].
        "Name": "Мальта"
+
* Формат запроса:
    },
+
** http://localhost/Canary/Image/GetImage?
    {
+
 
        "Key": 77,
+
* Принимаемые параметры ( * – обязательный):
        "Name": "Мексика"
+
** '''code *''' – ключ тура
    },
+
** '''type *''' – размер картинки (возможные значения: ''small1'', ''small160x90'', ''medium'', ''big'')
    {
+
** '''name *''' – название файла (берется из метода [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка картинки по туру (TourImages)|TourImages]])
        "Key": 6252,
+
** '''imageType *''' – тип картинки (возможные значения: ''hotels'', ''tours'')
        "Name": "Молдавия"
+
 
    },
+
* Возвращаемый результат:
    {
+
** изображение картинки отеля
        "Key": 6242,
+
 
        "Name": "Мьянма"
+
<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>
        "Key": 6249,
+
Вызов метода GetImage
        "Name": "Непал"
+
<syntaxhighlight lang="java" enclose="div">
    },
+
http://localhost/Canary/Image/GetImage?code=005485049&type=small160x90&name=TheBestTour.webp&imageType=tours
    {
+
</syntaxhighlight>
        "Key": 6222,
+
Возвращаемый результат метода GetImage и виде картинки
        "Name": "Норвегия"
+
</TD></TR></TABLE>
    },
+
</div></div><br />
    {
+
 
        "Key": 2,
+
===Регистрация частного лица (PersonalRegistration)===
        "Name": "ОАЭ"
+
Метод производит регистрацию частного лица.
    },
+
* Формат запроса:
    {
+
** GET .../TourSearchOwin/PersonalRegistration?
        "Key": 6275,
+
* Принимаемые параметры ( * – обязательный):
        "Name": "Оман"
+
** '''name *''' – имя
    },
+
** '''surname *''' – фамилия
    {
+
** '''phone *''' – телефон
        "Key": 6246,
+
** '''login *''' – e-mail (он же является логином). Предварительно нужно вызывать метод проверки e-mail [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Проверка e-mail (CheckMail)|CheckMail]]
        "Name": "Польша"
+
** '''password *''' – пароль (при упрощенной регистрации пароль не передается, а формируется системой автоматически)
    },
+
** '''citizen *''' – гражданство (возможна передача пустого значения)
    {
+
** '''country *''' – страна (возможна передача пустого значения)
        "Key": 22,
+
** '''city *''' – город (возможна передача пустого значения)
        "Name": "Португалия"
+
** '''address *''' – адрес (возможна передача пустого значения)
    },
+
** '''comment *''' – комментарий (возможна передача пустого значения)
    {
+
** '''captchaText *''' – текст капчи. Предварительно нужно вызывать метод получения капчи [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Получение капчи (GetCaptcha)|GetCaptcha]]. Полученный ''FileContents'' преобразовать с помощью json в картинку, текст из которой вставить как значение ''captchaText''.
        "Key": 460,
+
** '''sessionId *''' – Id сессии (возможна передача произвольного значения)
        "Name": "Россия"
+
 
    },
+
* Возвращаемый результат:
    {
+
** '''SxotpFhg''' – сформированный (при упрощенной регистрации) или заданный пользователем пароль
        "Key": 6265,
+
 
        "Name": "Сейшелы"
+
<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>
        "Key": 6309,
+
Вызов метода PersonalRegistration
        "Name": "Сербия"
+
<syntaxhighlight lang="java" enclose="div">
    },
+
http://localhost:9000/TourSearchOwin/PersonalRegistration?name=Иван&surname=Иванов&phone=+79991234568&login=test1222@mail.ru
    {
+
&citizen=&country=&city=&address=&comment=&captchaText=v7jnj&sessionId=43angzdfbc5h2wud1lp1301j
        "Key": 665,
+
</syntaxhighlight>
         "Name": "Сингапур"
+
Возвращаемый результат метода PersonalRegistration (в формате JSON)
    },
+
<syntaxhighlight lang="java" enclose="div">
    {
+
{
        "Key": 6274,
+
"SxotpFhg"
        "Name": "Словения"
+
}
    },
+
</syntaxhighlight>
    {
+
</TD></TR></TABLE>
        "Key": 7,
+
</div></div><br />
        "Name": "США"
+
 
    },
+
===Отправка письма о бронировании частному лицу (PersonalSendMail)===
    {
+
Метод отправляет сообщение частному лицу о создании бронирования.
        "Key": 6253,
+
* Формат запроса:
         "Name": "Таджикистан"
+
** GET .../TourSearchOwin/PersonalSendMail?
    },
+
* Принимаемые параметры ( * – обязательный):
     {
+
** '''mail *''' – адрес электронной почты (логин частного лица)
        "Key": 6236,
+
** '''password *''' – пароль для входа частного лица
        "Name": "Тайвань"
+
** '''dogovorCode *''' – номер путевки
    },
+
 
    {
+
* Возвращаемый результат:
        "Key": 53,
+
** '''true''' – подтверждение об отправке письма
        "Name": "Тайланд"
+
 
    },
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
    {
+
<div class="mw-collapsible-content">
        "Key": 6313,
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
        "Name": "Танзания"
+
Вызов метода PersonalSendMail
    },
+
<syntaxhighlight lang="java" enclose="div">
    {
+
http://localhost:9000/TourSearchOwin/PersonalSendMail?mail=test1222@mail.ru&password=123456789&dogovorCode=AU01120022
        "Key": 97,
+
&citizen=&country=&city=&address=&comment=&captchaText=v7jnj&sessionId=43angzdfbc5h2wud1lp1301j
        "Name": "Тунис"
+
</syntaxhighlight>
    },
+
Возвращаемый результат метода PersonalSendMail (в формате JSON)
    {
+
<syntaxhighlight lang="java" enclose="div">
        "Key": 86,
+
{
        "Name": "Турция"
+
"true"
    },
+
}
    {
+
</syntaxhighlight>
        "Key": 5,
+
</TD></TR></TABLE>
        "Name": "Украина"
+
</div></div><br />
    },
+
 
    {
+
===Выгрузка плана рассадки (TransportPlan)===
        "Key": 6250,
+
Метод выгружает план рассадки транспортного средства.
        "Name": "Филиппины"
+
* Формат запроса:
    },
+
** GET .../TourSearchOwin/TransportPlan?
    {
+
* Принимаемые параметры ( * – обязательный):
        "Key": 64,
+
** '''code *''' – код услуги
        "Name": "Финляндия"
+
** '''dateBegin *''' – дата начала услуги
    },
+
** '''serviceType *''' – класс услуги
    {
+
** '''transportKey *''' – ключ транспорта
        "Key": 30,
+
 
        "Name": "Франция"
+
* Возвращаемый результат:
    },
+
** '''Key''' – ключ
    {
+
** '''TransportKey''' – ключ транспорта
        "Key": 38,
+
*** '''Row''' – ряд
        "Name": "Хорватия"
+
*** '''AreaNumber''' – уровень
    },
+
*** '''Name''' – номер места
    {
+
*** '''PlanOrientation''' –
        "Key": 6314,
+
*** '''Column''' – колонка
        "Name": "Черногория "
+
*** '''IsAirCraft''' –
    },
+
*** '''Dates''' – дата
    {
+
*** '''Comment''' –
        "Key": 15,
+
*** '''Type''' – тип места (1 - свободно, 5 - занято)
        "Name": "Чехия"
+
 
    },
+
 
    {
+
 
        "Key": 76,
+
 
        "Name": "Швейцария"
+
** '''Title''' – название
    },
+
** '''AreasCount''' – количество зон (уровней)
    {
+
** '''RowsCount''' – количество рядов
        "Key": 6223,
+
** '''ColumnsCount''' – количество колонок
        "Name": "Швеция"
+
** '''BusySeats''' – информация о занятых местах
    },
+
** '''Cells''' – блок не заполняется
    {
+
 
        "Key": 941,
+
** '''UserSeats''' – блок не заполняется
        "Name": "Шри Ланка"
+
** '''BlockSeat''' – блок не заполняется
    },
+
 
    {
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
        "Key": 372,
+
<div class="mw-collapsible-content">
        "Name": "Эстония"
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
    },
+
Вызов метода TransportPlan
    {
+
<syntaxhighlight lang="java" enclose="div">
        "Key": 6247,
+
http://localhost:9000/TourSearchOwin/TransportPlan?code=1527&dateBegin=07.03.2021&serviceType=14&transportKey=31
        "Name": "Южная Корея"
+
&citizen=&country=&city=&address=&comment=&captchaText=v7jnj&sessionId=43angzdfbc5h2wud1lp1301j
    },
+
</syntaxhighlight>
    {
+
Возвращаемый результат метода TransportPlan (в формате JSON)
        "Key": 6248,
+
<syntaxhighlight lang="java" enclose="div">
        "Name": "Япония"
+
{
    }
+
    "TransportKey": 31,
]
+
    "Title": "",
</syntaxhighlight>
+
    "AreasCount": 1,
</TD></TR></TABLE>
+
    "RowsCount": 10,
</div></div><br />
+
    "ColumnsCount": 2,
 
+
    "BusySeats": [],
 
+
    "Cells": [
===Выгрузка списка всех городов (Cities)===
+
        {
Метод производит выгрузку всех городов (используется для регистрации частного лица).
+
            "Row": 4,
* Формат запроса:
+
            "Column": 0,
** GET .../TourSearchOwin/Cities?
+
            "Area": 0,
* Принимаемые параметры ( * – обязательный):
+
            "Type": 1,
** '''countryKey *''' – ключ страны, по которой выгружать города (при значении ''-1'' выгружаются все города)
+
            "Name": "9"
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
+
        },
 
+
        {
* Возвращаемый результат:
+
            "Row": 4,
** '''Key''' – ключ города
+
            "Column": 1,
** '''Name''' – название
+
            "Area": 0,
 
+
            "Type": 1,
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
            "Name": "10"
<div class="mw-collapsible-content">
+
        },
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
        {
Вызов метода Cities
+
            "Row": 1,
<syntaxhighlight lang="java" enclose="div">
+
            "Column": 0,
http://localhost:9000/TourSearchOwin/Cities?countryKey=460&term=
+
            "Area": 0,
</syntaxhighlight>
+
            "Type": 5,
Возвращаемый результат метода Cities (в формате JSON)
+
            "Name": "3"
<syntaxhighlight lang="java" enclose="div">
+
        },
[
+
        {
    {
+
            "Row": 1,
        "Key": 1309,
+
            "Column": 1,
        "Name": "Алушта"
+
            "Area": 0,
    },
+
            "Type": 5,
    {
+
            "Name": "4"
        "Key": 564,
+
        },
        "Name": "Анапа"
+
        {
    },
+
            "Row": 8,
    {
+
            "Column": 0,
        "Key": 299,
+
            "Area": 0,
        "Name": "Архангельск"
+
            "Type": 1,
    },
+
            "Name": "17"
    {
+
        },
        "Key": 312,
+
        {
        "Name": "Астрахань"
+
            "Row": 8,
    },
+
            "Column": 1,
    {
+
            "Area": 0,
        "Key": 265,
+
            "Type": 1,
        "Name": "Белгород"
+
            "Name": "18"
    },
+
        },
    {
+
        {
        "Key": 329,
+
            "Row": 5,
        "Name": "Владивосток"
+
            "Column": 0,
    },
+
            "Area": 0,
    {
+
            "Type": 1,
        "Key": 258,
+
            "Name": "11"
        "Name": "Владикавказ"
+
        },
    },
+
        {
    {
+
            "Row": 5,
        "Key": 236,
+
            "Column": 1,
        "Name": "Владимир"
+
            "Area": 0,
    },
+
            "Type": 1,
    {
+
            "Name": "12"
        "Key": 358,
+
        },
        "Name": "Волгоград"
+
        {
    },
+
            "Row": 2,
    {
+
            "Column": 0,
        "Key": 1089,
+
            "Area": 0,
        "Name": "Воркута"
+
            "Type": 1,
    },
+
            "Name": "5"
    {
+
        },
        "Key": 1312,
+
        {
        "Name": "Воронеж"
+
            "Row": 2,
    },
+
            "Column": 1,
    {
+
            "Area": 0,
        "Key": 266,
+
            "Type": 1,
        "Name": "Екатеринбург"
+
            "Name": "6"
    },
+
        },
    {
+
        {
        "Key": 254,
+
            "Row": 9,
        "Name": "Иваново"
+
            "Column": 0,
    },
+
            "Area": 0,
    {
+
            "Type": 1,
        "Key": 350,
+
            "Name": "19"
        "Name": "Иркутск"
+
        },
    },
+
        {
    {
+
            "Row": 9,
        "Key": 238,
+
            "Column": 1,
        "Name": "Казань"
+
            "Area": 0,
 +
            "Type": 1,
 +
            "Name": "20"
 +
        },
 +
        {
 +
            "Row": 6,
 +
            "Column": 0,
 +
            "Area": 0,
 +
            "Type": 1,
 +
            "Name": "13"
 +
        },
 +
        {
 +
            "Row": 6,
 +
            "Column": 1,
 +
            "Area": 0,
 +
            "Type": 1,
 +
            "Name": "14"
 +
        },
 +
        {
 +
            "Row": 3,
 +
            "Column": 0,
 +
            "Area": 0,
 +
            "Type": 1,
 +
            "Name": "7"
 +
        },
 +
        {
 +
            "Row": 3,
 +
            "Column": 1,
 +
            "Area": 0,
 +
            "Type": 1,
 +
            "Name": "8"
 +
        },
 +
        {
 +
            "Row": 0,
 +
            "Column": 0,
 +
            "Area": 0,
 +
            "Type": 1,
 +
            "Name": "1"
 +
        },
 +
        {
 +
            "Row": 0,
 +
            "Column": 1,
 +
            "Area": 0,
 +
            "Type": 1,
 +
            "Name": "2"
 +
        },
 +
        {
 +
            "Row": 7,
 +
            "Column": 0,
 +
            "Area": 0,
 +
            "Type": 1,
 +
            "Name": "15"
 +
        },
 +
        {
 +
            "Row": 7,
 +
            "Column": 1,
 +
            "Area": 0,
 +
            "Type": 1,
 +
            "Name": "16"
 +
        }
 +
    ],
 +
    "UserSeats": {},
 +
    "BlockSeat": {}
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка плана рассадки в поезде (RailwayTransferTransportPlan)===
 +
Метод выгружает план рассадки в поезде.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/RailwayTransferTransportPlan?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''code''' – код услуги
 +
** '''dateBegin''' – дата услуги
 +
** '''serviceType''' – тип услуги
 +
** '''transportKey''' – ключ справочника транспорт
 +
 
 +
* Возвращаемый результат:
 +
** '''VehiclePlans''' – массив параметров зон плана
 +
*** '''Key''' – ключ зоны
 +
*** '''TransportKey''' – ключ из справочника транспорт
 +
*** '''Row''' – количество рядов
 +
*** '''AreaNumber''' – номер уровня
 +
*** '''Name''' – название уровня
 +
*** '''PlanOrientation''' – ориентация плана (''false'' - горизонтальная, ''true'' - вертикальная)
 +
*** '''Column''' – количество столбцов
 +
*** '''IsAirCraft''' – является ли планом самолета (''false'' - нет, ''true'' - является)
 +
*** '''Dates''' – дата
 +
*** '''Comment''' – комментарий
 +
*** '''Type''' – тип плана
 +
** '''Seats''' – массив параметров посадочного места
 +
*** '''Key''' – ключ места
 +
*** '''SeatType''' – тип места (None = 0, Seat = 1, Pass/comment = 2, Block = 4, Busy = 5)
 +
*** '''Index''' – индекс места
 +
*** '''Number''' – название ячейки с местом
 +
*** '''Type''' – тип места
 +
*** '''VPKey''' – ключ зоны
 +
*** '''Border''' – обводка границы (комбинация цифр, где 0 - нет обводки, 1 - обводка в 1 px, 2 - обводка в 2 px)
 +
 
 +
<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>
 +
Вызов метода RailwayTransferTransportPlan
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/RailwayTransferTransportPlan?code=1776&dateBegin=28.12.2025&serviceType=14&transportKey=35
 +
</syntaxhighlight>
 +
Возвращаемый результат метода RailwayTransferTransportPlan (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
  "VehiclePlans": [
 +
    {
 +
      "Key": 146,
 +
      "TransportKey": 95,
 +
      "Row": 33,
 +
      "AreaNumber": 1,
 +
      "Name": "1",
 +
      "PlanOrientation": true,
 +
      "Column": 3,
 +
      "IsAirCraft": false,
 +
      "Dates": null,
 +
      "Comment": null,
 +
      "Type": "VehiclePlans"
 
     },
 
     },
 
     {
 
     {
        "Key": 306,
+
      "Key": 287,
        "Name": "Калининград"
+
      "TransportKey": 95,
 +
      "Row": 10,
 +
      "AreaNumber": 2,
 +
      "Name": "2",
 +
      "PlanOrientation": true,
 +
      "Column": 5,
 +
      "IsAirCraft": false,
 +
      "Dates": null,
 +
      "Comment": null,
 +
      "Type": "VehiclePlans"
 +
    }
 +
  ],
 +
  "Seats": [
 +
    {
 +
      "Key": 961,
 +
      "SeatType": 1,
 +
      "Index": 0,
 +
      "Number": "10",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 1308,
+
      "Key": 962,
        "Name": "Коктебель"
+
      "SeatType": 2,
 +
      "Index": 1,
 +
      "Number": "П",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 313,
+
      "Key": 963,
        "Name": "Краснодар"
+
      "SeatType": 1,
 +
      "Index": 2,
 +
      "Number": "6",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 269,
+
      "Key": 964,
        "Name": "Красноярск"
+
      "SeatType": 1,
 +
      "Index": 3,
 +
      "Number": "2",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 1311,
+
      "Key": 965,
        "Name": "Крым"
+
      "SeatType": 2,
 +
      "Index": 4,
 +
      "Number": "П",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 1,
+
      "Key": 966,
        "Name": "Москва"
+
      "SeatType": 1,
 +
      "Index": 5,
 +
      "Number": "7",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 259,
+
      "Key": 967,
        "Name": "Мурманск"
+
      "SeatType": 1,
 +
      "Index": 6,
 +
      "Number": "3",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 234,
+
      "Key": 968,
        "Name": "Нижний Новгород"
+
      "SeatType": 2,
 +
      "Index": 7,
 +
      "Number": "П",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 1097,
+
      "Key": 969,
        "Name": "Новая Купавна"
+
      "SeatType": 0,
 +
      "Index": 8,
 +
      "Number": "",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 324,
+
      "Key": 970,
        "Name": "Новосибирск"
+
      "SeatType": 1,
 +
      "Index": 9,
 +
      "Number": "4",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 1043,
+
      "Key": 971,
        "Name": "Омск"
+
      "SeatType": 2,
 +
      "Index": 10,
 +
      "Number": "П",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 345,
+
      "Key": 972,
        "Name": "Оренбург"
+
      "SeatType": 1,
 +
      "Index": 11,
 +
      "Number": "8",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 308,
+
      "Key": 973,
        "Name": "Пенза"
+
      "SeatType": 4,
 +
      "Index": 12,
 +
      "Number": "5",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
        "Key": 263,
+
      "Key": 974,
        "Name": "Пермь"
+
      "SeatType": 2,
 +
      "Index": 13,
 +
      "Number": "про",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"
 
     },
 
     },
 
     {
 
     {
         "Key": 478,
+
      "Key": 975,
         "Name": "Петропавловск-Камчатский"
+
      "SeatType": 4,
 +
      "Index": 14,
 +
      "Number": "9",
 +
      "Type": "Seat",
 +
      "VPKey": 146,
 +
      "Border": "0000"     
 +
    }
 +
  ]
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
 
 +
===Выгрузка списка всех стран (Countries)===
 +
Метод производит выгрузку всех стран (используется для регистрации частного лица).
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/Countries?
 +
* Принимаемые параметры ( * – обязательный):
 +
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 +
 
 +
* Возвращаемый результат:
 +
** '''Key''' – ключ страны
 +
** '''Name''' – название
 +
 
 +
<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>
 +
Вызов метода Countries
 +
<syntaxhighlight lang="java" enclose="div">
 +
http://localhost:9000/TourSearchOwin/Countries?term=
 +
</syntaxhighlight>
 +
Возвращаемый результат метода Countries (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
    {
 +
         "Key": 6283,
 +
         "Name": " Азербайджан"
 
     },
 
     },
 
     {
 
     {
         "Key": 271,
+
         "Key": 90,
         "Name": "Псков"
+
         "Name": "Австрия"
 
     },
 
     },
 
     {
 
     {
         "Key": 1100,
+
         "Key": 222,
         "Name": "Пушкино"
+
         "Name": "Англия"
 
     },
 
     },
 
     {
 
     {
         "Key": 260,
+
         "Key": 376,
         "Name": "Ростов-на-Дону"
+
         "Name": "Андорра"
 
     },
 
     },
 
     {
 
     {
         "Key": 235,
+
         "Key": 375,
         "Name": "Рязань"
+
         "Name": "Беларусь"
 
     },
 
     },
 
     {
 
     {
         "Key": 232,
+
         "Key": 6305,
         "Name": "Самара"
+
         "Name": "Бельгия"
 
     },
 
     },
 
     {
 
     {
         "Key": 295,
+
         "Key": 359,
         "Name": "Санкт-Петербург"
+
         "Name": "Болгария"
 
     },
 
     },
 
     {
 
     {
         "Key": 1099,
+
         "Key": 6235,
         "Name": "Симферополь"
+
         "Name": "Вьетнам"
 
     },
 
     },
 
     {
 
     {
         "Key": 244,
+
         "Key": 40,
         "Name": "Смоленск"
+
         "Name": "Германия"
 +
    },
 +
    {
 +
        "Key": 1,
 +
        "Name": "Голландия"
 +
    },
 +
    {
 +
        "Key": 852,
 +
        "Name": "Гонконг"
 +
    },
 +
    {
 +
        "Key": 29,
 +
        "Name": "Греция"
 
     },
 
     },
 
     {
 
     {
         "Key": 1084,
+
         "Key": 6251,
         "Name": "Снегири"
+
         "Name": "Грузия"
 
     },
 
     },
 
     {
 
     {
         "Key": 454,
+
         "Key": 6224,
         "Name": "Сочи"
+
         "Name": "Дания"
 
     },
 
     },
 
     {
 
     {
         "Key": 1310,
+
         "Key": 6245,
         "Name": "Судак"
+
         "Name": "Доминиканская Республика"
 
     },
 
     },
 
     {
 
     {
         "Key": 1102,
+
         "Key": 9,
         "Name": "Тверь"
+
         "Name": "Египет"
 
     },
 
     },
 
     {
 
     {
         "Key": 1198,
+
         "Key": 729,
         "Name": "Тестовый город"
+
         "Name": "Израиль"
 
     },
 
     },
 
     {
 
     {
         "Key": 307,
+
         "Key": 26,
         "Name": "Томск"
+
         "Name": "Индия"
 
     },
 
     },
 
     {
 
     {
         "Key": 246,
+
         "Key": 6221,
         "Name": "Тула"
+
         "Name": "Индонезия"
 
     },
 
     },
 
     {
 
     {
         "Key": 334,
+
         "Key": 6244,
         "Name": "Хабаровск"
+
         "Name": "Иордания"
 
     },
 
     },
 
     {
 
     {
         "Key": 336,
+
         "Key": 6288,
         "Name": "Якутск"
+
         "Name": "Ирландия"
 
     },
 
     },
 
     {
 
     {
         "Key": 1098,
+
         "Key": 84,
         "Name": "Ялта"
+
         "Name": "Испания"
 
     },
 
     },
 
     {
 
     {
         "Key": 231,
+
         "Key": 80,
         "Name": "Ярославль"
+
         "Name": "Италия"
 
     },
 
     },
 
     {
 
     {
         "Key": 1082,
+
         "Key": 3272,
         "Name": "Ясный"
+
         "Name": "Казахстан"
     }
+
     },
]
+
    {
</syntaxhighlight>
+
        "Key": 6240,
</TD></TR></TABLE>
+
        "Name": "Камбоджа"
</div></div><br />
+
    },
 
+
    {
 
+
        "Key": 10,
===Выгрузка городов отправления в оформлении клиентов (RegistrationClientsDepartureCities)===
+
        "Name": "Кипр"
Метод производит выгрузку городов отправления в оформлении клиентов.
+
    },
* Формат запроса:
+
    {
** GET .../TourSearchOwin/RegistrationClientsDepartureCities?
+
        "Key": 6237,
* Принимаемые параметры ( * – обязательный):
+
        "Name": "Китай"
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
+
    },
** '''withoutFlight''' – перевод для ключа ''-1'' (Без перелета)
 
 
 
* Возвращаемый результат:
 
** '''Key''' – ключ города
 
** '''Name''' – название
 
** '''IsExist''' – информация о том, есть ли в этом городе отправления актуальные программы туров (true/false)
 
 
 
<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>
 
Вызов метода RegistrationClientsDepartureCities
 
<syntaxhighlight lang="java" enclose="div">
 
http://localhost:9000/TourSearchOwin/RegistrationClientsDepartureCities?term=&withoutFlight=Без перелета
 
</syntaxhighlight>
 
Возвращаемый результат метода RegistrationClientsDepartureCities (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
 
     {
 
     {
         "Key": -1,
+
         "Key": 6254,
         "Name": "Без перелета",
+
         "Name": "Круизы"
        "IsExist": true
 
 
     },
 
     },
 
     {
 
     {
         "Key": 1080,
+
         "Key": 6243,
         "Name": "Prime travel",
+
         "Name": "Куба"
        "IsExist": true
 
 
     },
 
     },
 
     {
 
     {
         "Key": 1079,
+
         "Key": 6241,
         "Name": "Азимут",
+
         "Name": "Лаос"
        "IsExist": true
 
 
     },
 
     },
 
     {
 
     {
         "Key": 1309,
+
         "Key": 6261,
         "Name": "Алушта",
+
         "Name": "Маврикий"
        "IsExist": true
 
 
     },
 
     },
 
     {
 
     {
         "Key": 56,
+
         "Key": 603,
         "Name": "Москва"
+
         "Name": "Малайзия"
        "IsExist": true
+
     },
     }
 
]
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</div></div><br />
 
 
 
 
 
===Выгрузка стран в оформлении клиентов (RegistrationClientsDestination)===
 
Метод производит выгрузку стран в оформлении клиентов.
 
* Формат запроса:
 
** GET .../TourSearchOwin/RegistrationClientsDestination?
 
* Принимаемые параметры ( * – обязательный):
 
** '''departureCity *''' – ключ города отправления (из контроллера [[#Выгрузка городов отправления в оформлении клиентов (RegistrationClientsDepartureCities)|''.../TourSearchOwin/RegistrationClientsDepartureCities?'']])
 
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
 
 
* Возвращаемый результат:
 
** '''Name''' – название
 
** '''Key''' – ключ страны
 
** '''DestinationType''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
 
** '''IsExist''' – информация о том, есть ли в этой стране актуальные программы туров (true/false)
 
 
 
<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>
 
Вызов метода RegistrationClientsDestination
 
<syntaxhighlight lang="java" enclose="div">
 
http://localhost:9000/TourSearchOwin/RegistrationClientsDestination?departureCity=1&term=
 
</syntaxhighlight>
 
Возвращаемый результат метода RegistrationClientsDestination (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
 
     {
 
     {
        "Name": "Австрия",
+
         "Key": 960,
         "Key": 90,
+
         "Name": "Мальдивы"
         "DestinationType": 1,
 
        "IsExist": true
 
 
     },
 
     },
 
     {
 
     {
        "Name": "Англия",
+
         "Key": 535,
         "Key": 222,
+
         "Name": "Мальта"
         "DestinationType": 1,
 
        "IsExist": true
 
 
     },
 
     },
 
     {
 
     {
        "Name": "Беларусь",
+
         "Key": 77,
         "Key": 375,
+
         "Name": "Мексика"
         "DestinationType": 1,
+
     },
        "IsExist": true
 
     }
 
]
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</div></div><br />
 
 
 
 
 
===Выгрузка турпрограмм в оформлении клиентов (RegistrationClientsTourPrograms)===
 
Метод производит выгрузку турпрограмм в оформлении клиентов.
 
* Формат запроса:
 
** GET .../TourSearchOwin/RegistrationClientsTourPrograms?
 
* Принимаемые параметры ( * – обязательный):
 
** '''departureCity *''' – ключ города отправления (из контроллера [[#Выгрузка городов отправления в оформлении клиентов (RegistrationClientsDepartureCities)|''.../TourSearchOwin/RegistrationClientsDepartureCities?'']])
 
** '''destination *''' – ключ страны (из контроллера [[#Выгрузка стран в оформлении клиентов (RegistrationClientsDestination)|''.../TourSearchOwin/RegistrationClientsDestination?'']])
 
** '''destinationType *''' – тип результата (параметр не изменяемый, когда результат возвращается в JSON, то значение будет = 1, когда результат возвращается в xml, то значение будет = country). Зависит от программы, которая возвращает результат.
 
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
** '''individualTitle ''' – перевод для программы тура с ключом 0 (Индивидуально)
 
 
 
* Возвращаемый результат:
 
** '''Key''' – ключ программы туров
 
** '''Name''' – название программы туров
 
** '''Rate''' – валюта тура
 
 
 
<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>
 
Вызов метода RegistrationClientsTourPrograms
 
<syntaxhighlight lang="java" enclose="div">
 
http://localhost:9000/TourSearchOwin/RegistrationClientsTourPrograms?departureCity=1&destination=90&destinationType=1&individualTitle=Индивидуально&term=
 
</syntaxhighlight>
 
Возвращаемый результат метода RegistrationClientsTourPrograms (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
[
 
 
     {
 
     {
         "Key": 0,
+
         "Key": 6252,
         "Name": "Индивидуально",
+
         "Name": "Молдавия"
         "Rate": ""
+
    },
 +
    {
 +
        "Key": 6242,
 +
        "Name": "Мьянма"
 +
    },
 +
    {
 +
        "Key": 6249,
 +
        "Name": "Непал"
 +
    },
 +
    {
 +
        "Key": 6222,
 +
        "Name": "Норвегия"
 +
    },
 +
    {
 +
         "Key": 2,
 +
        "Name": "ОАЭ"
 +
    },
 +
    {
 +
        "Key": 6275,
 +
        "Name": "Оман"
 +
    },
 +
    {
 +
        "Key": 6246,
 +
        "Name": "Польша"
 +
    },
 +
    {
 +
        "Key": 22,
 +
        "Name": "Португалия"
 
     },
 
     },
 
     {
 
     {
         "Key": 100003415,
+
         "Key": 460,
         "Name": "Aviabooking",
+
         "Name": "Россия"
        "Rate": "EU"
 
 
     },
 
     },
 
     {
 
     {
         "Key": 100003416,
+
         "Key": 6265,
         "Name": "Общая проверка системы",
+
         "Name": "Сейшелы"
         "Rate": "EU"
+
    },
     }
+
    {
]
+
        "Key": 6309,
</syntaxhighlight>
+
        "Name": "Сербия"
</TD></TR></TABLE>
+
    },
</div></div><br />
+
    {
 
+
        "Key": 665,
 
+
        "Name": "Сингапур"
===Выгрузка дат заезда в оформлении клиентов (RegistrationClientsTourDate)===
+
    },
Метод производит выгрузку дат заезда в оформлении клиентов.
+
    {
* Формат запроса:
+
        "Key": 6274,
** GET .../TourSearchOwin/RegistrationClientsTourDate?
+
        "Name": "Словения"
* Принимаемые параметры ( * – обязательный):
+
    },
** '''tourKey *''' – ключ программы тура
+
    {
 
+
        "Key": 7,
* Возвращаемый результат:
+
        "Name": "США"
** массив дат
+
    },
 
+
    {
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
        "Key": 6253,
<div class="mw-collapsible-content">
+
        "Name": "Таджикистан"
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
    },
Вызов метода RegistrationClientsTourDate
+
    {
<syntaxhighlight lang="java" enclose="div">
+
        "Key": 6236,
http://localhost:9000/TourSearchOwin/RegistrationClientsTourDate?tourKey=100006755
+
        "Name": "Тайвань"
</syntaxhighlight>
+
    },
Возвращаемый результат метода RegistrationClientsTourDate (в формате JSON)
+
    {
<syntaxhighlight lang="java" enclose="div">
+
        "Key": 53,
[
+
         "Name": "Тайланд"
     "06.05.2021",
+
    },
     "07.05.2021",
+
    {
     "08.05.2021",
+
        "Key": 6313,
     "09.05.2021",
+
        "Name": "Танзания"
     "10.05.2021",
+
    },
     "11.05.2021",
+
    {
     "12.05.2021",
+
        "Key": 97,
     "13.05.2021",
+
        "Name": "Тунис"
     "14.05.2021",
+
    },
     "15.05.2021"
+
    {
]
+
        "Key": 86,
</syntaxhighlight>
+
        "Name": "Турция"
</TD></TR></TABLE>
+
    },
</div></div><br />
+
    {
 
+
        "Key": 5,
===Поиск туров в оформлении клиентов (Search)===
+
        "Name": "Украина"
Метод возвращает наиболее дешевое предложения по определенному туру.
+
    },
* Формат запроса:
+
    {
** GET .../TourSearchOwin/RegistrationClient/Search?
+
        "Key": 6250,
* Принимаемые параметры ( '''*''' – обязательный):
+
        "Name": "Филиппины"
** '''DepartureCityKeys *''' – ключ города отправления (из контроллера [[#Выгрузка городов отправления в оформлении клиентов (RegistrationClientsDepartureCities)|''.../TourSearchOwin/RegistrationClientsDepartureCities?'']])
+
    },
** '''Dates *''' – дата заезда (из контроллера [[#Выгрузка дат заезда в оформлении клиентов (RegistrationClientsTourDate)|''.../TourSearchOwin/RegistrationClientsTourDate?'']])
+
    {
** '''Durations *''' – продолжительность
+
        "Key": 64,
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
+
        "Name": "Финляндия"
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
+
    },
** '''isFromBasket *''' – всегда false
+
    {
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true)
+
        "Key": 30,
** '''DestinationType *''' – тип результата (параметр не изменяемый, когда результат возвращается в JSON, то значение будет = 1, когда результат возвращается в xml, то значение будет = country). Зависит от программы, которая возвращает результат.
+
        "Name": "Франция"
** '''DestinationKey *''' – идентификатор страны прибытия (из контроллера [[#Выгрузка стран в оформлении клиентов (RegistrationClientsDestination)|''.../TourSearchOwin/RegistrationClientsDestination?'']])
+
    },
** '''AdultCount *''' – количество взрослых
+
    {
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
        "Key": 38,
** '''IsRegistrationClients''' – по умолчанию всегда приходит false
+
        "Name": "Хорватия"
** '''CurrencyName *''' – код валюты
+
    },
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
    {
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
        "Key": 6314,
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
        "Name": "Черногория "
** '''HotelScheme''' – пустой по умолчанию
+
    },
** '''TimeDepartureFrom''' – время отправления с (по умолчанию возвращается 00:00)
+
    {
** '''TimeDepartureTo''' – время отправления по (по умолчанию возвращается 23:59)
+
        "Key": 15,
** '''TimeArrivalFrom''' – время прибытия с (по умолчанию возвращается 00:00)
+
        "Name": "Чехия"
** '''TimeArrivalTo''' – время прибытия по (по умолчанию возвращается 23:59)
+
    },
** '''ArrivalFlightNoTransfer''' – производить поиск без пересадок в прямом направлении (true/false, по умолчанию false)
+
    {
** '''DepartureFlightNoTransfer''' – производить поиск без пересадок в обратном направлении (true/false, по умолчанию false)
+
        "Key": 76,
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
+
        "Name": "Швейцария"
** '''Tour''' – ключ программы тура
+
    },
 +
    {
 +
        "Key": 6223,
 +
        "Name": "Швеция"
 +
    },
 +
    {
 +
        "Key": 941,
 +
        "Name": "Шри Ланка"
 +
    },
 +
    {
 +
        "Key": 372,
 +
        "Name": "Эстония"
 +
    },
 +
    {
 +
        "Key": 6247,
 +
        "Name": "Южная Корея"
 +
    },
 +
    {
 +
        "Key": 6248,
 +
        "Name": "Япония"
 +
     }
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
 
 +
===Выгрузка списка всех городов (Cities)===
 +
Метод производит выгрузку всех городов (используется для регистрации частного лица).
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/Cities?
 +
* Принимаемые параметры ( * – обязательный):
 +
** '''countryKey *''' – ключ страны, по которой выгружать города (при значении ''-1'' выгружаются все города)
 +
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 +
 
 +
* Возвращаемый результат:
 +
** '''Key''' – ключ города
 +
** '''Name''' – название
 +
 
 +
<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>
 +
Вызов метода Cities
 +
<syntaxhighlight lang="java" enclose="div">
 +
http://localhost:9000/TourSearchOwin/Cities?countryKey=460&term=
 +
</syntaxhighlight>
 +
Возвращаемый результат метода Cities (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
     {
 +
        "Key": 1309,
 +
        "Name": "Алушта"
 +
    },
 +
    {
 +
        "Key": 564,
 +
        "Name": "Анапа"
 +
    },
 +
    {
 +
        "Key": 299,
 +
        "Name": "Архангельск"
 +
    },
 +
    {
 +
        "Key": 312,
 +
        "Name": "Астрахань"
 +
    },
 +
    {
 +
        "Key": 265,
 +
        "Name": "Белгород"
 +
    },
 +
    {
 +
        "Key": 329,
 +
        "Name": "Владивосток"
 +
    },
 +
    {
 +
        "Key": 258,
 +
        "Name": "Владикавказ"
 +
    },
 +
    {
 +
        "Key": 236,
 +
        "Name": "Владимир"
 +
    },
 +
     {
 +
        "Key": 358,
 +
        "Name": "Волгоград"
 +
    },
 +
     {
 +
        "Key": 1089,
 +
        "Name": "Воркута"
 +
    },
 +
     {
 +
        "Key": 1312,
 +
        "Name": "Воронеж"
 +
    },
 +
     {
 +
        "Key": 266,
 +
        "Name": "Екатеринбург"
 +
    },
 +
     {
 +
        "Key": 254,
 +
        "Name": "Иваново"
 +
     },
 +
    {
 +
        "Key": 350,
 +
        "Name": "Иркутск"
 +
    },
 +
     {
 +
        "Key": 238,
 +
        "Name": "Казань"
 +
    },
 +
     {
 +
        "Key": 306,
 +
        "Name": "Калининград"
 +
    },
 +
     {
 +
        "Key": 1308,
 +
        "Name": "Коктебель"
 +
    },
 +
    {
 +
        "Key": 313,
 +
        "Name": "Краснодар"
 +
    },
 +
    {
 +
        "Key": 269,
 +
        "Name": "Красноярск"
 +
    },
 +
    {
 +
        "Key": 1311,
 +
        "Name": "Крым"
 +
    },
 +
    {
 +
        "Key": 1,
 +
        "Name": "Москва"
 +
    },
 +
    {
 +
        "Key": 259,
 +
        "Name": "Мурманск"
 +
    },
 +
    {
 +
        "Key": 234,
 +
        "Name": "Нижний Новгород"
 +
    },
 +
    {
 +
        "Key": 1097,
 +
        "Name": "Новая Купавна"
 +
    },
 +
    {
 +
        "Key": 324,
 +
        "Name": "Новосибирск"
 +
    },
 +
    {
 +
        "Key": 1043,
 +
        "Name": "Омск"
 +
    },
 +
    {
 +
        "Key": 345,
 +
        "Name": "Оренбург"
 +
    },
 +
    {
 +
        "Key": 308,
 +
        "Name": "Пенза"
 +
    },
 +
    {
 +
        "Key": 263,
 +
        "Name": "Пермь"
 +
    },
 +
    {
 +
        "Key": 478,
 +
        "Name": "Петропавловск-Камчатский"
 +
    },
 +
    {
 +
        "Key": 271,
 +
        "Name": "Псков"
 +
    },
 +
    {
 +
        "Key": 1100,
 +
        "Name": "Пушкино"
 +
    },
 +
    {
 +
        "Key": 260,
 +
        "Name": "Ростов-на-Дону"
 +
    },
 +
    {
 +
        "Key": 235,
 +
        "Name": "Рязань"
 +
    },
 +
    {
 +
        "Key": 232,
 +
        "Name": "Самара"
 +
    },
 +
    {
 +
        "Key": 295,
 +
        "Name": "Санкт-Петербург"
 +
    },
 +
    {
 +
        "Key": 1099,
 +
        "Name": "Симферополь"
 +
    },
 +
    {
 +
        "Key": 244,
 +
        "Name": "Смоленск"
 +
    },
 +
    {
 +
        "Key": 1084,
 +
        "Name": "Снегири"
 +
    },
 +
    {
 +
        "Key": 454,
 +
        "Name": "Сочи"
 +
    },
 +
    {
 +
        "Key": 1310,
 +
        "Name": "Судак"
 +
    },
 +
    {
 +
        "Key": 1102,
 +
        "Name": "Тверь"
 +
    },
 +
    {
 +
        "Key": 1198,
 +
        "Name": "Тестовый город"
 +
    },
 +
    {
 +
        "Key": 307,
 +
        "Name": "Томск"
 +
    },
 +
    {
 +
        "Key": 246,
 +
        "Name": "Тула"
 +
    },
 +
    {
 +
        "Key": 334,
 +
        "Name": "Хабаровск"
 +
    },
 +
    {
 +
        "Key": 336,
 +
        "Name": "Якутск"
 +
    },
 +
    {
 +
        "Key": 1098,
 +
        "Name": "Ялта"
 +
    },
 +
    {
 +
        "Key": 231,
 +
        "Name": "Ярославль"
 +
    },
 +
    {
 +
        "Key": 1082,
 +
        "Name": "Ясный"
 +
    }
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
* Возвращаемый результат:
 
** '''CheckMessages''' – сообщения для логики проверки тура (не используется)
 
** '''Message''' – сообщение об ошибке
 
*** '''Key''' – код ошибки
 
*** '''Value''' – сообщение об ошибке
 
** '''Result''' – результаты поиска
 
*** '''Key''' – идентификатов программы тура
 
*** '''Name''' – название программы тура
 
*** '''TourUrl''' – ссылка на программу тура
 
*** '''BookingConditions''' – условия бронирования программы туров
 
*** '''StartDate''' – дата начала тура
 
*** '''Duration''' – продолжительность тура (в днях)
 
*** '''DurationInNight''' – продолжительность проживания (в ночах)
 
*** '''Types''' – идентификатор типа туров
 
*** '''Cost''' – цена тура
 
*** '''Rate''' – код валюты тура
 
*** '''CityDepature''' – город отправления
 
**** '''Key''' – идентификатор города отправления
 
**** '''Value''' – название города отправления
 
*** '''CountryId''' – всегда возвращается ключ 0
 
*** '''Services''' – услуги в туре
 
**** '''DepartureCity''' – город отправления
 
***** '''Key''' – идентификатор
 
***** '''Value''' – название
 
**** '''DepartureCountry''' – страна отправления
 
***** '''Key''' – идентификатор
 
***** '''Value''' – название
 
**** '''ArrivalCity''' – город прибытия
 
***** '''Key''' – идентификатор
 
***** '''Value''' – название
 
**** '''ArrivalCountry''' – страна прибытия
 
***** '''Key''' – идентификатор
 
***** '''Value''' – название
 
**** '''DepartureAirport''' – аэропорт отправления
 
***** '''Key''' – идентификатор
 
***** '''Value''' – название
 
**** '''ArrivalAirport''' – аэропорт прибытия
 
***** '''Key''' – идентификатор
 
***** '''Value''' – название
 
**** '''Airline''' – авиакомпания
 
***** '''Key''' – идентификатор
 
***** '''Value''' – название
 
**** '''Aircraft''' – воздушное судно
 
***** '''Key''' – идентификатор
 
***** '''Value''' – название
 
**** '''Flight''' – рейс
 
***** '''Key''' – идентификатор
 
***** '''Value''' – название
 
**** '''DepartureTime''' – время вылета
 
**** '''ArrivalTime''' – время прилета
 
**** '''EndDateTime''' – дата и время прилета
 
**** '''FlightDetails''' – информация об авиаперелете
 
***** '''Tariff''' – информация о тарифе перелета
 
****** '''Key''' – идентификатор
 
****** '''Code''' – код тарифа
 
****** '''Name''' – название тарифа
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''QuotaStatus''' – информация о квоте
 
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''PartnerId''' – ключ партнера
 
***** '''ByPax''' – цена за человека (true/false)
 
***** '''Partner''' – информация о партнере
 
****** '''Key''' – идентификатор
 
****** '''Value''' – название
 
**** '''FlightSetting''' – внутренняя информация о перелете из программы туров
 
***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
 
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
 
**** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров)
 
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
 
**** '''SvKey''' – ключ типа услуги
 
**** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
 
**** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
 
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
 
**** '''Day''' – день предоставления услуги
 
**** '''DurationInNight''' – продолжительность услуги в ночах
 
**** '''BeginDateTime''' – дата предоставления услуги
 
**** '''IsHooded''' – признак скрытая услуга
 
**** '''IsDeleted''' – признак удаляемая услуга
 
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
 
**** '''PacketId''' – ключ пакета
 
**** '''Index''' – порядковый номер услуги
 
*** '''NotRouteServices''' – массив коллекций немаршрутных услуг (например если две экскурсии будут являться одним элементом массива, то это будет говорить о том, что эти экскурсии можно будет выбрать в выпадающем списке)
 
**** '''ServiceName''' – название типа услуги
 
**** '''City''' – объект город
 
***** '''Key''' – ключ города
 
***** '''Value''' – название города
 
**** '''Country''' – ключ страны
 
**** '''Code''' – объект код услуги
 
***** '''Key''' – ключ услуги
 
***** '''Value''' – название услуги
 
**** '''ByScheduler''' – флаг услуга по расписанию или нет
 
**** '''Details''' – объект детализация услуги
 
***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 
****** '''Key''' – ключ доп. описания 1
 
****** '''Value''' – название доп. описания 1
 
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 
****** '''Key''' – ключ доп. описания 2
 
****** '''Value''' – название доп. описания 2
 
***** '''Date''' – дата услуги
 
***** '''IsShowTransportPlan''' – признак показывать ли план рассадки (для автобусов)
 
***** '''Cost''' – цена
 
***** '''QuotaStatus''' – объект информация по квотам
 
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''PartnerId''' – идентификатор партнера
 
***** '''ByPax''' – признак цены за человека
 
***** '''Partner''' – объект партнер (не заполняется)
 
****** '''Key''' – ключ (не заполняется)
 
****** '''Value''' – название (не заполняется)
 
**** '''ParentId''' – идентификатор родительской услуги (для вложенных услуг)
 
**** '''PartnerBasedOnServiceTemplateId''' – ключ шаблона услуги, по которой приоритетно выбирается партнер текущей услуги
 
**** '''Id''' – идентификатор услуги
 
**** '''SvKey''' – ключ типа услуги
 
**** '''IsSubCode1''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
 
**** '''IsSubCode2''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
 
**** '''IsPartnerBasedOn''' – услуга с подбором приоритетного поставщика услуги
 
**** '''Day''' – день предоставления услуги
 
**** '''DurationInNight''' – продолжительность услуги в ночах
 
**** '''BeginDateTime''' – дата предоставления услуги
 
**** '''EndDateTime''' – дата окончания услуги
 
**** '''IsHooded''' – скрытая ли услуга
 
**** '''IsDeleted''' – удаляемая ли услуга
 
**** '''IsNotCalculate''' – не рассчитываемая ли услуга
 
**** '''PacketId''' – пакет услуги
 
**** '''Index''' – индекс услуги
 
*** '''MinCostServicesComposition''' – массив состав услуг минимальной цены
 
**** '''Key''' – ключ
 
***** '''TemplateId''' – идентификатор шаблона
 
***** '''PatternId''' – идентификатор вкладки
 
***** '''SettingId''' – идентификатор услуги
 
**** '''Value''' – значение
 
***** '''ServiceType''' – тип услуги
 
***** '''Code''' – ключ услуги
 
***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 
***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
 
***** '''PacketId''' – пакет услуги
 
***** '''PartnerId''' – партнер услуги
 
***** '''CountryId''' – страна услуги
 
***** '''CityId''' – город услуги
 
***** '''Day''' – день предоставления услуги
 
***** '''DurationInNight''' – продолжительность услуги в ночах
 
**** '''COAndSpecialsInfo''' – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков
 
***** '''AppliedCostOffersKeys''' – коллекция идентификаторов всех применённых ценовых блоков к одной цене             
 
***** '''AppliedSpeciasInfo''' – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция
 
****** '''SpecialKey''' – ключ акции
 
****** '''SpecialName''' – название акции
 
****** '''SpecialType''' – тип акции
 
****** '''NewPrice''' – цена после применения акции
 
****** '''OldPrice''' – цена до применения акции
 
****** '''ShowOnline''' – нужно ли показывать акцию в поиске
 
****** '''UntilDate''' – акция действует при совершении покупки до указанной даты
 
****** '''Condition''' – json форма условия применения акции. Данное поле включает в себя следующие значения в зависимости от типа акции:
 
******* ''NightsFrom'' (для типа ''PayStay'') – ночей от
 
******* ''NightsTo'' (для типа ''PayStay'') – ночей до
 
******* ''NightValue'' (для типа ''PayStay'') – значение ночи, которое соответствует заданному периоду
 
******* ''OperationType'' (для типа ''PayStay'') – тип действия
 
******* ''SpecialNightType'' (для типа ''PayStay'') – тип бесплатной ночи
 
******* ''DurationFrom'' (для типа ''KickBack'') – ночей от
 
******* ''DurationTo'' (для типа ''KickBack'') – ночей до
 
******* ''Value'' (для типа ''KickBack'') – значение продолжительности, равное заданному периоду
 
******* ''OperationType'' (для типа ''KickBack'') – тип действия
 
******* ''NightsFrom'' (для типа ''EarlyBird'') – ночей от
 
******* ''NightsTo'' (для типа ''EarlyBird'') – ночей до
 
******* ''Discount'' (для типа ''EarlyBird'') – размер скидки
 
******* ''OperationType'' (для типа ''EarlyBird'') – тип действия
 
**** '''COBySubCode''' – список применённых идентификаторов ценовых блоков по SubCode1 и SubCode2
 
**** '''SpecialsBySubCode''' –  список применённых акций по SubCode1 и SubCode2
 
***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
 
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]             
 
*** '''FlightWeight''' –
 
*** '''LinkingFlightsRules''' – объект правил связывания
 
**** '''notCombineDifferentAirlineRule''' – объект не скрещивать авиакомпании
 
***** '''airlines''' – авиакомпании
 
***** '''flightSettings''' – массив ключей ServiceId, PatternId, FlightId
 
***** '''enabled''' – флаг включен/выключен
 
**** '''checkPlusMinus1CharterRule''' – объект Отличие номера рейса на 1
 
***** '''FlightSettingPairs''' – массив чартеров, для которых это правило будет выполняться
 
***** '''enabled''' – флаг включен/выключен
 
**** '''notCombineDifferentTariffGroupRule''' – объект не комбинировать рейсы от разных классов перелетов
 
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
 
***** '''enabled''' – флаг включен/выключен
 
**** '''notCombineDifferentPartnerRule''' – объект не комбинировать рейсы от разных партнеров
 
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
 
***** '''enabled''' – флаг включен/выключен
 
**** '''departureCityEqualsArrivalCityRule''' – объект Город вылета = городу прилета
 
***** '''FlightSettingPairs''' – чартеры, для которых это будет выполняться
 
***** '''enabled''' – флаг включен/выключен
 
**** '''combineOnlySpecificChartersRule''' – объект не комбинировать различные классы перелетов
 
***** '''settings''' – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId
 
***** '''enabled''' – флаг включен/выключен
 
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 
** '''SecondaryFiltersResult''' – результаты доп. фильтров
 
*** '''TourTypes''' – типы тура
 
**** '''Id''' – ключ типа тура
 
**** '''Name''' – название типа тура
 
**** '''ParentId''' – родительский элемент типа тура (если есть)
 
**** '''Type''' – тип справочника (используется для внутренних целей)
 
*** '''TourPrograms''' – информация по каждой турпрограмме
 
**** '''Key''' – ключ турпрограммы
 
**** '''Name''' – название турпрограммы
 
**** '''TourUrl''' – ссылка на тур
 
**** '''BookingConditions''' – условия бронирования
 
**** '''IsLandOnly''' – признак только наземное обслуживание
 
**** '''IsRestrictMultiHotels''' – ограничивать ли расчёт многоотельных туров категориями отелей
 
**** '''IsHotelTemplates''' – есть ли вообще отели в данной турпрограмме
 
**** '''IsRouteServices''' – есть ли маршрутные услуги
 
**** '''MultiHotelDelta''' – Значение отклонения звездности последующих отелей от первого отеля в многоотельном туре. По умолчанию 0. Звездность определяется числом, заданном в поле порядок при печати.
 
**** '''Rate''' – валюта тура
 
**** '''DateStart''' – нижняя граница дат заезда по программе тура
 
**** '''DateEnd''' – верхняя граница дат заеда по программе тура
 
**** '''Status''' – статус турпрограммы
 
***** '''Key''' – ключ
 
***** '''Value''' – значение
 
**** '''Templates''' – шаблоны услуг
 
***** '''$id''' – шаблон 1
 
***** '''$id''' – шаблон 2
 
**** '''Types''' – типы тура
 
***** '''Id''' – ключ типа тура
 
***** '''Name''' – название типа тура
 
***** '''ParentId''' – родительский элемент типа тура (если есть)
 
***** '''Type''' – тип справочника (используется для внутренних целей)
 
**** '''LinkingFlightsRules''' – правила связывания перелетов
 
***** '''notCombineDifferentAirlineRule''' –
 
****** '''airlines''' –
 
****** '''flightSettings''' –
 
****** '''enabled''' –
 
***** '''checkPlusMinus1CharterRule''' –
 
****** '''FlightSettingPairs''' –
 
****** '''enabled''' –
 
***** '''notCombineDifferentTariffGroupRule''' –
 
****** '''FlightSettings''' –
 
****** '''enabled''' –
 
***** '''notCombineDifferentPartnerRule''' –
 
****** '''FlightSettings''' –
 
****** '''enabled''' –
 
***** '''departureCityEqualsArrivalCityRule''' –
 
****** '''FlightSettingPairs''' –
 
****** '''enabled''' –
 
***** '''combineOnlySpecificChartersRule''' –
 
****** '''settings''' –
 
****** '''enabled''' –
 
**** '''XmlSettings''' – строка xml для актуальных фильтров
 
**** '''Type''' – тип справочника (используется для внутренних целей)
 
*** '''TourDurations''' – продолжительность тура
 
*** '''TourDates''' – список дат заездов в турпрограмме
 
**** '''HotelCities''' – город в дополнительных фильтрах
 
***** '''''' –
 
**** '''HotelResorts''' – курорты в дополнительных фильтрах
 
***** '''''' –
 
**** '''HotelCategories''' – категории отеля в дополнительных фильтрах
 
***** '''''' –
 
**** '''Hotels''' – отели в дополнительных фильтрах
 
***** '''''' –
 
**** '''Pansions''' – питания в дополнительных фильтрах
 
***** '''''' –
 
**** '''Airlines''' – авиакомпании в дополнительных фильтрах
 
***** '''''' –
 
**** '''FlightTariffs''' – класс перелета в дополнительных фильтрах
 
***** '''''' –
 
**** '''DepartureCities''' – города вылета в дополнительных фильтрах
 
***** '''''' –
 
**** '''DepartureAirports''' – аэропорты вылета в дополнительных фильтрах
 
***** '''''' –
 
**** '''ArrivalCities''' – города прибытия в дополнительных фильтрах
 
***** '''''' –
 
**** '''ArrivalAirports''' – аэропорты прибытия в дополнительных фильтрах
 
***** '''''' –
 
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах
 
***** '''''' –
 
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
===Выгрузка городов отправления в оформлении клиентов (RegistrationClientsDepartureCities)===
 +
Метод производит выгрузку городов отправления в оформлении клиентов.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/RegistrationClientsDepartureCities?
 +
* Принимаемые параметры ( * – обязательный):
 +
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 +
** '''withoutFlight''' – перевод для ключа ''-1'' (Без перелета)
 +
 
 +
* Возвращаемый результат:
 +
** '''Key''' – ключ города
 +
** '''Name''' – название
 +
** '''IsExist''' – информация о том, есть ли в этом городе отправления актуальные программы туров (true/false)
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода RegistrationClient/Search
+
Вызов метода RegistrationClientsDepartureCities
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
GET http://localhost:9000/TourSearchOwin/RegistrationClient/Search?DepartureCityKeys=1&Dates=12.02.2021&Durations=9
+
http://localhost:9000/TourSearchOwin/RegistrationClientsDepartureCities?term=&withoutFlight=Без перелета
&PageNumber=1&PageSize=20&isFromBasket=false&isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90
 
&AdultCount=2&IsRegistrationClients=false&CurrencyName=EU&AviaQuota=7&HotelQuota=7&BusTransferQuota=7
 
&TimeArrivalFrom=00:00&TimeArrivalTo=23:59&TimeDepartureFrom=00:00&TimeDepartureTo=23:59
 
&ArrivalFlightNoTransfer=false&Tour=100006755&TourDuration=&DepartureFlightNoTransfer=false&HotelScheme=
 
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода RegistrationClient/Search (в формате JSON)
+
Возвращаемый результат метода RegistrationClientsDepartureCities (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
{
+
[
  "CheckMessages": null,
+
    {
  "Message":   {
+
        "Key": -1,
      "Key": 0,
+
        "Name": "Без перелета",
      "Value": null
+
        "IsExist": true
  },
+
    },
  "Result":    [
+
    {
            {
+
        "Key": 1080,
        "Key": 100000004,
+
        "Name": "Prime travel",
        "Name": "Общая проверка системы",
+
        "IsExist": true
        "TourUrl": "www.megatec.ru",
+
    },
        "BookingConditions": "<p>Условия бронирования тура.<\/p>",
+
    {
        "StartDate": "2018-02-25T00:00:00",
+
        "Key": 1079,
        "Duration": 4,
+
        "Name": "Азимут",
        "DurationInNight": 3,
+
        "IsExist": true
        "Types": [2],
+
    },
        "Cost": 260,
+
    {
        "Rate": "EU",
+
        "Key": 1309,
        "CityDepature":         {
+
        "Name": "Алушта",
            "Key": 1,
+
        "IsExist": true
            "Value": "Москва"
+
    },
        },
+
    {
        "CountryId": 0,
+
        "Key": 56,
        "Services":          [
+
        "Name": "Москва"
                        {
+
        "IsExist": true
              "DepartureCity":                {
+
    }
                  "Key": 1,
+
]
                  "Value": "Москва"
+
</syntaxhighlight>
              },
+
</TD></TR></TABLE>
              "DepartureCountry":               {
+
</div></div><br />
                  "Key": 460,
+
 
                  "Value": "Россия"
+
 
              },
+
===Выгрузка стран в оформлении клиентов (RegistrationClientsDestination)===
              "ArrivalCity":               {
+
Метод производит выгрузку стран в оформлении клиентов.
                  "Key": 35,
+
* Формат запроса:
                  "Value": "Вена"
+
** GET .../TourSearchOwin/RegistrationClientsDestination?
              },
+
* Принимаемые параметры ( * – обязательный):
              "ArrivalCountry":                {
+
** '''departureCity *''' – ключ города отправления (из контроллера [[#Выгрузка городов отправления в оформлении клиентов (RegistrationClientsDepartureCities)|''.../TourSearchOwin/RegistrationClientsDepartureCities?'']])
                  "Key": 90,
+
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
                  "Value": "Австрия"
+
 
              },
+
* Возвращаемый результат:
              "DepartureAirport":               {
+
** '''Name''' – название
                  "Key": "SVO4",
+
** '''Key''' – ключ страны
                  "Value": "Шереметьево-24"
+
** '''DestinationType''' – тип результата (внутренний параметр, не изменяемый, всегда возвращается значение = 1)
              },
+
** '''IsExist''' – информация о том, есть ли в этой стране актуальные программы туров (true/false)
              "ArrivalAirport":                {
+
 
                  "Key": "VIE1",
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
                  "Value": "Vena1"
+
<div class="mw-collapsible-content">
              },
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
              "Airline":               {
+
Вызов метода RegistrationClientsDestination
                  "Key": "BA7",
+
<syntaxhighlight lang="java" enclose="div">
                  "Value": "BRITISH  AIRWAYS"
+
http://localhost:9000/TourSearchOwin/RegistrationClientsDestination?departureCity=1&term=
              },
+
</syntaxhighlight>
              "Aircraft":                {
+
Возвращаемый результат метода RegistrationClientsDestination (в формате JSON)
                  "Key": "319",
+
<syntaxhighlight lang="java" enclose="div">
                  "Value": "AIRBUS "
+
[
              },
+
    {
              "Flight":               {
+
        "Name": "Австрия",
                  "Key": 882,
+
        "Key": 90,
                  "Value": "4444"
+
        "DestinationType": 1,
              },
+
        "IsExist": true
              "DepartureTime": "10:00:00",
+
    },
              "ArrivalTime": "12:00:00",
+
    {
              "EndDateTime": "2018-02-25T12:00:00",
+
        "Name": "Англия",
              "FlightDetails": [               {
+
        "Key": 222,
                  "Tariff":                  {
+
        "DestinationType": 1,
                    "Key": 89,
+
        "IsExist": true
                    "Code": "Y",
+
    },
                    "Name": "Экономический класс"
+
    {
                  },
+
        "Name": "Беларусь",
                  "Cost": 10,
+
        "Key": 375,
                  "QuotaStatus":                  {
+
        "DestinationType": 1,
                    "PlacesStatus": 4,
+
        "IsExist": true
                    "FreePlaces": 0,
+
    }
                    "IsFewPlaces": false
+
]
                  },
+
</syntaxhighlight>
                  "PartnerId": 12668,
+
</TD></TR></TABLE>
                  "ByPax": true,
+
</div></div><br />
                  "Partner":                   {
+
 
                    "Key": 0,
+
 
                    "Value": null
+
===Выгрузка турпрограмм в оформлении клиентов (RegistrationClientsTourPrograms)===
                  }
+
Метод производит выгрузку турпрограмм в оформлении клиентов.
              }],
+
* Формат запроса:
              "FlightSetting":               {
+
** GET .../TourSearchOwin/RegistrationClientsTourPrograms?
                  "ServiceId": 3,
+
* Принимаемые параметры ( * – обязательный):
                  "PatternId": 13,
+
** '''departureCity *''' – ключ города отправления (из контроллера [[#Выгрузка городов отправления в оформлении клиентов (RegistrationClientsDepartureCities)|''.../TourSearchOwin/RegistrationClientsDepartureCities?'']])
                  "FlightId": 13
+
** '''destination *''' – ключ страны (из контроллера [[#Выгрузка стран в оформлении клиентов (RegistrationClientsDestination)|''.../TourSearchOwin/RegistrationClientsDestination?'']])
              },
+
** '''destinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
              "FlightSourceMode": 1,
+
** '''term *''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
              "Id": 3,
+
** '''individualTitle ''' – перевод для программы тура с ключом 0 (Индивидуально)
              "SvKey": 1,
+
 
              "IsSubCode1": true,
+
* Возвращаемый результат:
              "IsSubCode2": false,
+
** '''Key''' – ключ программы туров
              "IsPartnerBasedOn": false,
+
** '''Name''' – название программы туров
              "Day": 1,
+
** '''Rate''' – валюта тура
              "DurationInNight": 0,
+
 
              "BeginDateTime": "2018-02-25T10:00:00",
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
              "IsHooded": false,
+
<div class="mw-collapsible-content">
              "IsDeleted": false,
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
              "IsNotCalculate": false,
+
Вызов метода RegistrationClientsTourPrograms
              "PacketId": 779,
+
<syntaxhighlight lang="java" enclose="div">
              "Index": 0
+
http://localhost:9000/TourSearchOwin/RegistrationClientsTourPrograms?departureCity=1&destination=90&destinationType=1&individualTitle=Индивидуально&term=
            },
+
</syntaxhighlight>
                        {
+
Возвращаемый результат метода RegistrationClientsTourPrograms (в формате JSON)
              "Hotel":                {
+
<syntaxhighlight lang="java" enclose="div">
                  "Key": 709,
+
[
                  "Value": "Am Brilliantengrund"
+
    {
              },
+
        "Key": 0,
              "City":                {
+
        "Name": "Индивидуально",
                  "Key": 35,
+
        "Rate": ""
                  "Value": "Вена"
+
    },
              },
+
    {
              "Stars":                {
+
        "Key": 100003415,
                  "Key": -1,
+
        "Name": "Aviabooking",
                  "Value": null
+
        "Rate": "EU"
              },
+
    },
              "Resort":                {
+
    {
                  "Key": -1,
+
        "Key": 100003416,
                  "Value": null
+
        "Name": "Общая проверка системы",
              },
+
        "Rate": "EU"
              "ImageURL": "",
+
    }
              "Http": null,
+
]
              "Description": "",
+
</syntaxhighlight>
              "Country":                {
+
</TD></TR></TABLE>
                  "Key": 90,
+
</div></div><br />
                  "Value": "Австрия"
+
 
              },
+
 
              "HotelDetails": [              {
+
===Выгрузка дат заезда в оформлении клиентов (RegistrationClientsTourDate)===
                  "HotelRoom": 46463,
+
Метод производит выгрузку дат заезда в оформлении клиентов.
                  "Room":                  {
+
* Формат запроса:
                    "Key": 129,
+
** GET .../TourSearchOwin/RegistrationClientsTourDate?
                    "Value": "DBL"
+
* Принимаемые параметры ( * – обязательный):
                  },
+
** '''tourKey *''' – ключ программы тура
                  "RoomCategory":                  {
+
 
                    "Key": 3493,
+
* Возвращаемый результат:
                    "Value": "Cosy"
+
** массив дат
                  },
+
 
                  "AccomodationType":                  {
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
                    "Key": 1256,
+
<div class="mw-collapsible-content">
                    "Value": "2+1_K",
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
                    "AdultCount": 2,
+
Вызов метода RegistrationClientsTourDate
                    "ChildCount": 1
+
<syntaxhighlight lang="java" enclose="div">
                  },
+
http://localhost:9000/TourSearchOwin/RegistrationClientsTourDate?tourKey=100006755
                  "Pansion":                  {
+
</syntaxhighlight>
                    "Key": 4,
+
Возвращаемый результат метода RegistrationClientsTourDate (в формате JSON)
                    "Value": "Завтрак"
+
<syntaxhighlight lang="java" enclose="div">
                  },
+
[
                  "Cost": 19.47,
+
    "06.05.2021",
                  "QuotaStatus":                  {
+
    "07.05.2021",
                    "PlacesStatus": 4,
+
    "08.05.2021",
                    "FreePlaces": 0,
+
    "09.05.2021",
                    "IsFewPlaces": false
+
    "10.05.2021",
                  },
+
    "11.05.2021",
                  "PartnerId": 12667,
+
    "12.05.2021",
                  "ByPax": false,
+
    "13.05.2021",
                  "Partner":                  {
+
    "14.05.2021",
                    "Key": 12667,
+
    "15.05.2021"
                    "Value": "Партнер-покупатель1"
+
]
                  }
+
</syntaxhighlight>
              }],
+
</TD></TR></TABLE>
              "HotelTypes": [              {
+
</div></div><br />
                  "Key": 5,
+
 
                  "Value": "Рекомендуемые"
+
===Поиск туров в оформлении клиентов (Search)===
              }],
+
Метод возвращает наиболее дешевое предложения по определенному туру.
              "Id": 1,
+
* Формат запроса:
              "SvKey": 3,
+
** GET .../TourSearchOwin/RegistrationClient/Search?
              "IsSubCode1": true,
+
* Принимаемые параметры ( '''*''' – обязательный):
              "IsSubCode2": true,
+
** '''DepartureCityKeys *''' – ключ города отправления (из контроллера [[#Выгрузка городов отправления в оформлении клиентов (RegistrationClientsDepartureCities)|''.../TourSearchOwin/RegistrationClientsDepartureCities?'']])
              "IsPartnerBasedOn": false,
+
** '''Dates *''' – дата заезда (из контроллера [[#Выгрузка дат заезда в оформлении клиентов (RegistrationClientsTourDate)|''.../TourSearchOwin/RegistrationClientsTourDate?'']])
              "Day": 1,
+
** '''Durations *''' – продолжительность
              "DurationInNight": 3,
+
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
              "BeginDateTime": "2018-02-25T12:00:00",
+
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
              "EndDateTime": "2018-02-28T12:00:00",
+
** '''isFromBasket *''' – всегда false
              "IsHooded": false,
+
** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
              "IsDeleted": false,
+
** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
              "IsNotCalculate": false,
+
** '''DestinationKey *''' – идентификатор страны прибытия (из контроллера [[#Выгрузка стран в оформлении клиентов (RegistrationClientsDestination)|''.../TourSearchOwin/RegistrationClientsDestination?'']])
              "PacketId": 779,
+
** '''AdultCount *''' – количество взрослых
              "Index": 1
+
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
            },
+
** '''IsRegistrationClients''' – по умолчанию всегда приходит false
                        {
+
** '''CurrencyName *''' – код валюты
              "DepartureCity":                {
+
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
                  "Key": 35,
+
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
                  "Value": "Вена"
+
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
              },
+
** '''HotelScheme''' – пустой по умолчанию
              "DepartureCountry":                {
+
** '''TimeDepartureFrom''' – время отправления с (по умолчанию возвращается 00:00)
                  "Key": 90,
+
** '''TimeDepartureTo''' – время отправления по (по умолчанию возвращается 23:59)
                  "Value": "Австрия"
+
** '''TimeArrivalFrom''' – время прибытия с (по умолчанию возвращается 00:00)
              },
+
** '''TimeArrivalTo''' – время прибытия по (по умолчанию возвращается 23:59)
              "ArrivalCity":                {
+
** '''ArrivalFlightNoTransfer''' – производить поиск без пересадок в прямом направлении (true/false, по умолчанию false)
                  "Key": 1,
+
** '''DepartureFlightNoTransfer''' – производить поиск без пересадок в обратном направлении (true/false, по умолчанию false)
                  "Value": "Москва"
+
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
              },
+
** '''Tour''' – ключ программы тура
              "ArrivalCountry":                {
+
 
                  "Key": 460,
+
* Возвращаемый результат:
                  "Value": "Россия"
+
** '''CheckMessages''' – сообщения для логики проверки тура (не используется)
              },
+
** '''Message''' – сообщение об ошибке
              "DepartureAirport":                {
+
*** '''Key''' – код ошибки
                  "Key": "VIE1",
+
*** '''Value''' – сообщение об ошибке
                  "Value": "Vena1"
+
** '''Result''' – результаты поиска
              },
+
*** '''Key''' – идентификатов программы тура
              "ArrivalAirport":                {
+
*** '''Name''' – название программы тура
                  "Key": "DME",
+
*** '''TourUrl''' – ссылка на программу тура
                  "Value": "Домодедово"
+
*** '''BookingConditions''' – условия бронирования программы туров
              },
+
*** '''DefaultManagers''' – список выбранных менеджеров в туре
              "Airline":                {
+
*** '''Manager''' – ключ менеджера по умолчанию в туре
                  "Key": "7U",
+
*** '''Branches''' – список ключей филиалов бронирования
                  "Value": "Авиаэнерго"
+
*** '''DetermineTheBranchOnCity''' – признак, определять филиал в зависимости от города начала поездки
              },
+
*** '''IndividualFlightSelection''' – признак, включены ли индивидуальные настройки подбора перелетов
              "Aircraft":                {
+
*** '''RestrictionDateArrival''' – признак, ограничение даты прилета по базовому рейсу в индивидуальных настройках подбора перелетов
                  "Key": "727",
+
*** '''PriceUpdateForView''' – признак обновления цен в индивидуальных настройках подбора перелетов (true – включен, false – выключен)
                  "Value": "Boeing"
+
*** '''SelectFlightAutomatically''' – признак выбирать рейс автоматически, если не выбран пользователем в индивидуальных настройках подбора перелетов
              },
+
*** '''BaggageSearchOtherFares''' – признак поиска багажа в других тарифах в индивидуальных настройках подбора перелетов
              "Flight":                {
+
*** '''Luggage''' – значение багажа в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
                  "Key": 774,
+
*** '''LuggageForView''' – значение багажа в блоке настроек, влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
                  "Value": "222"
+
*** '''LuggageForPrice''' – значение багажа в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
              },
+
*** '''FlightClass''' – класс перелета в индивидуальных настройках подбора перелетов (economy – Эконом, premiumEconomy 2 Премиум-эконом, business – Бизнес, first – Первый)
              "DepartureTime": "00:00:00",
+
*** '''Directs''' – значение пересадок в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, onlyDirectFlights – только прямые рейсы)
              "ArrivalTime": "00:00:00",
+
*** '''DirectsForView''' – значение пересадок в блоке влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
              "EndDateTime": "2018-02-28T00:00:00",
+
*** '''DirectsForPrice''' – значение пересадок в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
              "FlightDetails": [              {
+
*** '''DepartureTimeLimit''' – ограничение времени вылета: «Вылет не позже» в формате hh:mm
                  "Tariff":                  {
+
*** '''SortingForView''' – сортировка в индивидуальных настройках подбора перелетов (cheap – сначала дешевые, fast – сначала быстрые, optimal – оптимальные)
                    "Key": 89,
+
*** '''StartDate''' – дата начала тура
                    "Code": "Y",
+
*** '''MaxConnectionTime''' – длительность пересадок в индивидуальных настройках подбора перелетов в формате hh:mm
                    "Name": "Экономический класс"
+
*** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
                  },
+
*** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
                  "Cost": 0,
+
*** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
                  "QuotaStatus":                  {
+
*** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
                    "PlacesStatus": 4,
+
*** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
                    "FreePlaces": 0,
+
*** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
                    "IsFewPlaces": false
+
*** '''Duration''' – продолжительность тура (в днях)
                  },
+
*** '''DurationInNight''' – продолжительность проживания (в ночах)
                  "PartnerId": 10760,
+
*** '''Types''' – идентификатор типа туров
                  "ByPax": true,
+
*** '''Price''' –  цена тура с учетом скидки в валюте поиска
                  "Partner":                  {
+
*** '''Cost''' – цена тура
                    "Key": 0,
+
*** '''Rate''' – код валюты тура
                    "Value": null
+
*** '''Penalties''' – внутреннее поле, не используется
                  }
+
*** '''CityDepature''' – город отправления
              }],
+
**** '''Key''' – идентификатор города отправления
              "FlightSetting":                {
+
**** '''Value''' – название города отправления
                  "ServiceId": 4,
+
*** '''CountryId''' – всегда возвращается ключ 0
                  "PatternId": 5,
+
*** '''Services''' – услуги в туре
                  "FlightId": 4
+
**** '''DepartureCity''' – город отправления
              },
+
***** '''Key''' – идентификатор
              "FlightSourceMode": 1,
+
***** '''Value''' – название
              "Id": 4,
+
**** '''DepartureCountry''' – страна отправления
              "SvKey": 1,
+
***** '''Key''' – идентификатор
              "IsSubCode1": true,
+
***** '''Value''' – название
              "IsSubCode2": false,
+
**** '''ArrivalCity''' – город прибытия
              "IsPartnerBasedOn": false,
+
***** '''Key''' – идентификатор
              "Day": 4,
+
***** '''Value''' – название
              "DurationInNight": 0,
+
**** '''ArrivalCountry''' – страна прибытия
              "BeginDateTime": "2018-02-28T00:00:00",
+
***** '''Key''' – идентификатор
              "IsHooded": false,
+
***** '''Value''' – название
              "IsDeleted": false,
+
**** '''DepartureAirport''' – аэропорт отправления
              "IsNotCalculate": false,
+
***** '''Key''' – идентификатор
              "PacketId": 779,
+
***** '''Value''' – название
              "Index": 4
+
**** '''ArrivalAirport''' – аэропорт прибытия
            }
+
***** '''Key''' – идентификатор
        ],
+
***** '''Value''' – название
        "NotRouteServices":          [
+
**** '''Airline''' – авиакомпания
            [            {
+
***** '''Key''' – идентификатор
              "ServiceName": "страховка",
+
***** '''Value''' – название
              "City": null,
+
**** '''Aircraft''' – воздушное судно
              "Country": 6245,
+
***** '''Key''' – идентификатор
              "Code":                {
+
***** '''Value''' – название
                  "Key": 297,
+
**** '''Flight''' – рейс
                  "Value": "Страховка от несчастного случая"
+
***** '''Key''' – идентификатор
              },
+
***** '''Value''' – название
              "ByScheduler": false,
+
**** '''DepartureTime''' – время вылета
              "Details": [              {
+
**** '''ArrivalTime''' – время прилета
                  "SubCode1":                  {
+
**** '''EndDateTime''' – дата и время прилета
                    "Key": 18,
+
**** '''FlightDetails''' – информация об авиаперелете
                    "Value": "2"
+
***** '''Tariff''' – информация о тарифе перелета
                  },
+
****** '''Key''' – идентификатор
                  "SubCode2":                  {
+
****** '''Code''' – код тарифа
                    "Key": null,
+
****** '''Name''' – название тарифа
                    "Value": ""
+
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
                  },
+
***** '''QuotaStatus''' – информация о квоте
                  "Date": null,
+
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
                  "IsShowTransportPlan": true,
+
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
                  "Cost": 16,
+
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
                  "QuotaStatus":                  {
+
***** '''PartnerId''' – ключ партнера
                    "PlacesStatus": 1,
+
***** '''ByPax''' – цена за человека (true/false)
                    "FreePlaces": 0,
+
***** '''Partner''' – информация о партнере
                    "IsFewPlaces": false
+
****** '''Key''' – идентификатор
                  },
+
****** '''Value''' – название
                  "PartnerId": 12668,
+
**** '''FlightSetting''' – внутренняя информация о перелете из программы туров
                  "ByPax": true,
+
***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
                  "Partner":                  {
+
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
                    "Key": 0,
+
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
                    "Value": null
+
**** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров)
                  }
+
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
              }],
+
**** '''SvKey''' – ключ типа услуги
              "ParentId": null,
+
**** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
              "PartnerBasedOnServiceTemplateId": null,
+
**** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
              "Id": 10,
+
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
              "SvKey": 6,
+
**** '''Day''' – день предоставления услуги
              "IsSubCode1": true,
+
**** '''DurationInNight''' – продолжительность услуги в ночах
              "IsSubCode2": true,
+
**** '''BeginDateTime''' – дата предоставления услуги
              "IsPartnerBasedOn": false,
+
**** '''IsHooded''' – признак скрытая услуга
              "Day": 1,
+
**** '''IsDeleted''' – признак удаляемая услуга
              "DurationInNight": 3,
+
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
              "BeginDateTime": "2018-02-25T00:00:00",
+
**** '''PacketId''' – ключ пакета
              "EndDateTime": "2018-02-28T00:00:00",
+
**** '''Index''' – порядковый номер услуги
              "IsHooded": false,
+
*** '''NotRouteServices''' – массив коллекций немаршрутных услуг (например если две экскурсии будут являться одним элементом массива, то это будет говорить о том, что эти экскурсии можно будет выбрать в выпадающем списке)
              "IsDeleted": true,
+
**** '''ServiceName''' – название типа услуги
              "IsNotCalculate": true,
+
**** '''City''' – объект город
              "PacketId": 882,
+
***** '''Key''' – ключ города
              "Index": 2
+
***** '''Value''' – название города
            }],
+
**** '''Country''' – объект страна
            [            {
+
***** '''Key''' – ключ страны
              "ServiceName": "экскурсия",
+
***** '''Value''' – название страны
              "City":                {
+
**** '''Code''' – объект код услуги
                  "Key": 1046,
+
***** '''Key''' – ключ услуги
                  "Value": "Санто-Доминго"
+
***** '''Value''' – название услуги
              },
+
**** '''ByScheduler''' – флаг услуга по расписанию или нет
              "Country": 6245,
+
**** '''Details''' – объект детализация услуги
              "Code":                {
+
***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
                  "Key": 743,
+
****** '''Key''' – ключ доп. описания 1
                  "Value": "4"
+
****** '''Value''' – название доп. описания 1
              },
+
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
              "ByScheduler": false,
+
****** '''Key''' – ключ доп. описания 2
              "Details": [              {
+
****** '''Value''' – название доп. описания 2
                  "SubCode1":                  {
+
***** '''Date''' – дата услуги
                    "Key": 37,
+
***** '''IsShowTransportPlan''' – признак показывать ли план рассадки (для автобусов)
                    "Value": "Мини-автобус 10 чел."
+
***** '''Cost''' – цена
                  },
+
***** '''QuotaStatus''' – объект информация по квотам
                  "SubCode2":                  {
+
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
                    "Key": null,
+
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
                    "Value": ""
+
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
                  },
+
***** '''PartnerId''' – идентификатор партнера
                  "Date": null,
+
***** '''ByPax''' – признак цены за человека
                  "IsShowTransportPlan": false,
+
***** '''Partner''' – объект партнер (не заполняется)
                  "Cost": 85.22,
+
****** '''Key''' – ключ (не заполняется)
                  "QuotaStatus":                  {
+
****** '''Value''' – название (не заполняется)
                    "PlacesStatus": 1,
+
**** '''ParentId''' – идентификатор родительской услуги (для вложенных услуг)
                    "FreePlaces": 0,
+
**** '''PartnerBasedOnServiceTemplateId''' – ключ шаблона услуги, по которой приоритетно выбирается партнер текущей услуги
                    "IsFewPlaces": false
+
**** '''Id''' – идентификатор услуги
                  },
+
**** '''SvKey''' – ключ типа услуги
                  "PartnerId": 12667,
+
**** '''IsSubCode1''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
                  "ByPax": true,
+
**** '''IsSubCode2''' – наличие [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
                  "Partner":                  {
+
**** '''IsPartnerBasedOn''' – услуга с подбором приоритетного поставщика услуги
                    "Key": 0,
+
**** '''Day''' – день предоставления услуги
                    "Value": null
+
**** '''DurationInNight''' – продолжительность услуги в ночах
                  }
+
**** '''BeginDateTime''' – дата предоставления услуги
              }],
+
**** '''EndDateTime''' – дата окончания услуги
              "ParentId": null,
+
**** '''IsHooded''' – скрытая ли услуга
              "PartnerBasedOnServiceTemplateId": null,
+
**** '''IsDeleted''' – удаляемая ли услуга
              "Id": 7,
+
**** '''IsNotCalculate''' – не рассчитываемая ли услуга
              "SvKey": 4,
+
**** '''PacketId''' – пакет услуги
              "IsSubCode1": true,
+
**** '''Index''' – индекс услуги
              "IsSubCode2": false,
+
*** '''MinCostServicesComposition''' – массив состав услуг минимальной цены
              "IsPartnerBasedOn": true,
+
**** '''Key''' – ключ
              "Day": 1,
+
***** '''TemplateId''' – идентификатор шаблона
              "DurationInNight": 0,
+
***** '''PatternId''' – идентификатор вкладки
              "BeginDateTime": "2018-02-25T00:00:00",
+
***** '''SettingId''' – идентификатор услуги
              "EndDateTime": "2018-02-26T00:00:00",
+
**** '''Value''' – значение
              "IsHooded": false,
+
***** '''ServiceType''' – тип услуги
              "IsDeleted": true,
+
***** '''Code''' – ключ услуги
              "IsNotCalculate": true,
+
***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
              "PacketId": 779,
+
***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
              "Index": 3
+
***** '''PacketId''' – пакет услуги
            }]
+
***** '''PartnerId''' – партнер услуги
        ],
+
***** '''CountryId''' – страна услуги
        "MinCostServicesComposition":          [
+
***** '''CityId''' – город услуги
                        {
+
***** '''Day''' – день предоставления услуги
              "Key":                {
+
***** '''DurationInNight''' – продолжительность услуги в ночах
                  "TemplateId": 3,
+
**** '''COAndSpecialsInfo''' – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков
                  "PatternId": 13,
+
***** '''AppliedCostOffersKeys''' – коллекция идентификаторов всех применённых ценовых блоков к одной цене             
                  "SettingId": 13
+
***** '''AppliedSpeciasInfo''' – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция
              },
+
****** '''SpecialKey''' – ключ акции
              "Value":                {
+
****** '''SpecialName''' – название акции
                  "ServiceType": 1,
+
****** '''SpecialType''' – тип акции
                  "Code": 882,
+
****** '''NewPrice''' – цена после применения акции
                  "SubCode1": 89,
+
****** '''OldPrice''' – цена до применения акции
                  "SubCode2": 1,
+
****** '''ShowOnline''' – нужно ли показывать акцию в поиске
                  "PacketId": 779,
+
****** '''UntilDate''' – акция действует при совершении покупки до указанной даты
                  "PartnerId": 12668,
+
****** '''Condition''' – json форма условия применения акции. Данное поле включает в себя следующие значения в зависимости от типа акции:
                  "CountryId": 90,
+
******* ''NightsFrom'' (для типа ''PayStay'') – ночей от
                  "CityId": 35,
+
******* ''NightsTo'' (для типа ''PayStay'') – ночей до
                  "Day": 1,
+
******* ''NightValue'' (для типа ''PayStay'') – значение ночи, которое соответствует заданному периоду
                  "DurationInNight": 0
+
******* ''OperationType'' (для типа ''PayStay'') – тип действия
              }
+
******* ''SpecialNightType'' (для типа ''PayStay'') – тип бесплатной ночи
            },
+
******* ''DurationFrom'' (для типа ''KickBack'') – ночей от
                        {
+
******* ''DurationTo'' (для типа ''KickBack'') – ночей до
              "Key":                {
+
******* ''Value'' (для типа ''KickBack'') – значение продолжительности, равное заданному периоду
                  "TemplateId": 1,
+
******* ''OperationType'' (для типа ''KickBack'') – тип действия
                  "PatternId": 0,
+
******* ''NightsFrom'' (для типа ''EarlyBird'') – ночей от
                  "SettingId": 0
+
******* ''NightsTo'' (для типа ''EarlyBird'') – ночей до
              },
+
******* ''Discount'' (для типа ''EarlyBird'') – размер скидки
              "Value":               {
+
******* ''OperationType'' (для типа ''EarlyBird'') – тип действия
                  "ServiceType": 3,
+
**** '''COBySubCode''' – список применённых идентификаторов ценовых блоков по SubCode1 и SubCode2
                  "Code": 709,
+
**** '''SpecialsBySubCode''' –  список применённых акций по SubCode1 и SubCode2
                  "SubCode1": 46463,
+
***** '''SubCode1''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
                  "SubCode2": 4,
+
***** '''SubCode2''' – объект [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]             
                  "PacketId": 779,
+
*** '''FlightWeight''' –
                  "PartnerId": 12667,
+
*** '''LinkingFlightsRules''' – объект правил связывания
                  "CountryId": 90,
+
**** '''notCombineDifferentAirlineRule''' – объект не скрещивать авиакомпании
                  "CityId": 35,
+
***** '''airlines''' – авиакомпании
                  "Day": 1,
+
***** '''flightSettings''' – массив ключей ServiceId, PatternId, FlightId
                  "DurationInNight": 3
+
***** '''enabled''' – флаг включен/выключен
              }
+
**** '''checkPlusMinus1CharterRule''' – объект Отличие номера рейса на 1
            },
+
***** '''FlightSettingPairs''' – массив чартеров, для которых это правило будет выполняться
                        {
+
***** '''enabled''' – флаг включен/выключен
              "Key":                {
+
**** '''notCombineDifferentTariffGroupRule''' – объект не комбинировать рейсы от разных классов перелетов
                  "TemplateId": 4,
+
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
                  "PatternId": 5,
+
***** '''enabled''' – флаг включен/выключен
                  "SettingId": 4
+
**** '''notCombineDifferentPartnerRule''' – объект не комбинировать рейсы от разных партнеров
              },
+
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
              "Value":               {
+
***** '''enabled''' – флаг включен/выключен
                  "ServiceType": 1,
+
**** '''departureCityEqualsArrivalCityRule''' – объект Город вылета = городу прилета
                  "Code": 774,
+
***** '''FlightSettingPairs''' – чартеры, для которых это будет выполняться
                  "SubCode1": 89,
+
***** '''enabled''' – флаг включен/выключен
                  "SubCode2": 35,
+
**** '''combineOnlySpecificChartersRule''' – объект не комбинировать различные классы перелетов
                  "PacketId": 779,
+
***** '''settings''' – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId
                  "PartnerId": 10760,
+
***** '''enabled''' – флаг включен/выключен
                  "CountryId": 460,
+
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
                  "CityId": 1,
+
** '''SecondaryFiltersResult''' – результаты доп. фильтров
                  "Day": 4,
+
*** '''TourTypes''' – типы тура
                  "DurationInNight": 0
+
**** '''Id''' – ключ типа тура
              }
+
**** '''Name''' – название типа тура
            }
+
**** '''ParentId''' – родительский элемент типа тура (если есть)
        ],
+
**** '''Type''' – тип справочника (используется для внутренних целей)
         "FlightWeight": 2,
+
*** '''TourPrograms''' – информация по каждой турпрограмме
         "LinkingFlightsRules":          {
+
**** '''Key''' – ключ турпрограммы
            "notCombineDifferentAirlineRule":             {
+
**** '''Name''' – название турпрограммы
              "airlines": ["AY2"],
+
**** '''TourUrl''' – ссылка на тур
              "flightSettings": [],
+
**** '''BookingConditions''' – условия бронирования
              "enabled": true
+
**** '''IsLandOnly''' – признак только наземное обслуживание
            },
+
**** '''IsRestrictMultiHotels''' – ограничивать ли расчёт многоотельных туров категориями отелей
            "checkPlusMinus1CharterRule":             {
+
**** '''IsHotelTemplates''' – есть ли вообще отели в данной турпрограмме
              "FlightSettingPairs": [],
+
**** '''IsRouteServices''' – есть ли маршрутные услуги
              "enabled": false
+
**** '''MultiHotelDelta''' – Значение отклонения звездности последующих отелей от первого отеля в многоотельном туре. По умолчанию 0. Звездность определяется числом, заданном в поле порядок при печати.
            },
+
**** '''Rate''' – валюта тура
            "notCombineDifferentTariffGroupRule":             {
+
**** '''DateStart''' – нижняя граница дат заезда по программе тура
              "FlightSettings": [],
+
**** '''DateEnd''' – верхняя граница дат заеда по программе тура
              "enabled": true
+
**** '''Status''' – статус турпрограммы
            },
+
***** '''Key''' – ключ
            "notCombineDifferentPartnerRule":             {
+
***** '''Value''' – значение
              "FlightSettings": [],
+
**** '''Templates''' – шаблоны услуг
              "enabled": false
+
***** '''$id''' – шаблон 1
            },
+
***** '''$id''' – шаблон 2
            "departureCityEqualsArrivalCityRule":             {
+
**** '''Types''' – типы тура
              "FlightSettingPairs": [],
+
***** '''Id''' – ключ типа тура
              "enabled": false
+
***** '''Name''' – название типа тура
            },
+
***** '''ParentId''' – родительский элемент типа тура (если есть)
            "combineOnlySpecificChartersRule":             {
+
***** '''Type''' – тип справочника (используется для внутренних целей)
              "settings": [],
+
**** '''LinkingFlightsRules''' – правила связывания перелетов
              "enabled": false
+
***** '''notCombineDifferentAirlineRule''' –
            }
+
****** '''airlines''' –
 +
****** '''flightSettings''' –
 +
****** '''enabled''' –
 +
***** '''checkPlusMinus1CharterRule''' –
 +
****** '''FlightSettingPairs''' –
 +
****** '''enabled''' –
 +
***** '''notCombineDifferentTariffGroupRule''' –
 +
****** '''FlightSettings''' –
 +
****** '''enabled''' –
 +
***** '''notCombineDifferentPartnerRule''' –
 +
****** '''FlightSettings''' –
 +
****** '''enabled''' –
 +
***** '''departureCityEqualsArrivalCityRule''' –
 +
****** '''FlightSettingPairs''' –
 +
****** '''enabled''' –
 +
***** '''combineOnlySpecificChartersRule''' –
 +
****** '''settings''' –
 +
****** '''enabled''' –
 +
**** '''Type''' – тип справочника (используется для внутренних целей)
 +
*** '''TourDurations''' – продолжительность тура
 +
*** '''TourDates''' – список дат заездов в турпрограмме
 +
**** '''HotelCities''' – город в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''HotelResorts''' – курорты в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''HotelCategories''' – категории отеля в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''Hotels''' – отели в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''Pansions''' – питания в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''Airlines''' – авиакомпании в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''FlightTariffs''' – класс перелета в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''DepartureCities''' – города вылета в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''DepartureAirports''' – аэропорты вылета в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''ArrivalCities''' – города прибытия в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''ArrivalAirports''' – аэропорты прибытия в дополнительных фильтрах
 +
***** '''''' –
 +
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах
 +
***** '''''' –
 +
 
 +
<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>
 +
Вызов метода RegistrationClient/Search
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/RegistrationClient/Search?DepartureCityKeys=1&Dates=12.02.2021&Durations=9
 +
&PageNumber=1&PageSize=20&isFromBasket=false&isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90
 +
&AdultCount=2&IsRegistrationClients=false&CurrencyName=EU&AviaQuota=7&HotelQuota=7&BusTransferQuota=7
 +
&TimeArrivalFrom=00:00&TimeArrivalTo=23:59&TimeDepartureFrom=00:00&TimeDepartureTo=23:59
 +
&ArrivalFlightNoTransfer=false&Tour=100006755&TourDuration=&DepartureFlightNoTransfer=false&HotelScheme=
 +
</syntaxhighlight>
 +
Возвращаемый результат метода RegistrationClient/Search (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
  "CheckMessages": null,
 +
  "Message":    {
 +
      "Key": 0,
 +
      "Value": null
 +
  },
 +
  "Result":   [
 +
            {
 +
        "Key": 100000004,
 +
        "Name": "Общая проверка системы",
 +
        "TourUrl": "www.megatec.ru",
 +
        "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",
 +
        "MaxConnectionTime": 0,
 +
        "FullPaymentPeriod": 5,
 +
        "FullPaymentCheckin": null,
 +
        "PrePaymentPeriod": null,
 +
        "PrePaymentCheckin": 5,
 +
        "PrePaymentCu": null,
 +
        "PrePaymentPercent": 10.0,
 +
        "Duration": 4,
 +
        "DurationInNight": 3,
 +
        "Types": [2],
 +
        "Price": 260,
 +
        "Cost": 260,
 +
        "Penalties": null,
 +
        "Rate": "EU",
 +
        "CityDepature":          {
 +
            "Key": 1,
 +
            "Value": "Москва"
 
         },
 
         },
         "RouteSubVariants": []
+
         "Country":               {
      }
+
                  "Key": 90,
  ],
+
                  "Value": "Австрия"
  "SecondaryFiltersResult":    {
+
},
      "TourTypes": [      {
+
         "Services":          [
        "Id": 2,
+
                        {
        "Name": "Стандартный тур",
+
              "DepartureCity":               {
         "ParentId": null,
+
                  "Key": 1,
         "Type": "TourType"
+
                  "Value": "Москва"
      }],
+
              },
      "TourPrograms":      [
+
              "DepartureCountry":                {
                      {
+
                  "Key": 460,
            "Key": 100000004,
+
                  "Value": "Россия"
            "Name": "Общая проверка системы",
+
               },
            "TourUrl": "www.megatec.ru",
+
               "ArrivalCity":                {
            "BookingConditions": "<p>Условия бронирования тура.<\/p>",
+
                  "Key": 35,
            "IsLandOnly": false,
+
                  "Value": "Вена"
            "IsRestrictMultiHotels": false,
+
               },
            "IsHotelTemplates": true,
+
               "ArrivalCountry":                {
            "IsRouteServices": true,
+
                   "Key": 90,
            "MultiHotelDelta": 0,
+
                   "Value": "Австрия"
            "Rate": "EU",
 
            "DateStart": "2018-01-30T00:00:00Z",
 
            "DateEnd": "2018-02-27T00:00:00Z",
 
            "Status":            {
 
              "Key": 3,
 
              "Value": "Доступен для продажи"
 
            },
 
            "Templates":             [
 
               {"$id": "5"},
 
              {"$id": "6"},
 
               {"$id": "7"},
 
               {"$id": "8"},
 
               {"$id": "9"}
 
            ],
 
            "Types": [            {
 
              "Id": 2,
 
              "Name": "Стандартный тур",
 
               "ParentId": null,
 
              "Type": "TourType"
 
            }],
 
            "LinkingFlightsRules":            {
 
               "notCombineDifferentAirlineRule":                {
 
                   "airlines": ["AY2"],
 
                   "flightSettings": [],
 
                  "enabled": true
 
 
               },
 
               },
               "checkPlusMinus1CharterRule":                {
+
               "DepartureAirport":                {
                   "FlightSettingPairs": [],
+
                   "Key": "SVO4",
                   "enabled": false
+
                   "Value": "Шереметьево-24"
 
               },
 
               },
               "notCombineDifferentTariffGroupRule":                {
+
               "ArrivalAirport":                {
                   "FlightSettings": [],
+
                   "Key": "VIE1",
                   "enabled": true
+
                   "Value": "Vena1"
 
               },
 
               },
               "notCombineDifferentPartnerRule":                {
+
               "Airline":                {
                   "FlightSettings": [],
+
                   "Key": "BA7",
                   "enabled": false
+
                   "Value": "BRITISH  AIRWAYS"
 
               },
 
               },
               "departureCityEqualsArrivalCityRule":                {
+
               "Aircraft":                {
                   "FlightSettingPairs": [],
+
                   "Key": "319",
                   "enabled": false
+
                   "Value": "AIRBUS "
 
               },
 
               },
               "combineOnlySpecificChartersRule":                {
+
               "Flight":                {
                   "settings": [],
+
                   "Key": 882,
                   "enabled": false
+
                   "Value": "4444"
               }
+
               },
            },
+
              "DepartureTime": "10:00:00",
            "XmlSettings": "информация о туре в формате xml",
+
              "ArrivalTime": "12:00:00",
            "Type": "TourProgram"
+
              "EndDateTime": "2018-02-25T12:00:00",
        }
+
              "FlightDetails": [               {
      ],
+
                  "Tariff":                   {
      "TourDurations": [4],
+
                    "Key": 89,
      "TourDates": ["2018-02-25T00:00:00"],
+
                    "Code": "Y",
      "HotelCities": [     {
+
                    "Name": "Экономический класс"
        "key": 35,
+
                  },
        "Country":          {
+
                  "Cost": 10,
            "key": 90,
+
                  "QuotaStatus":                   {
            "name": "Австрия",
+
                    "PlacesStatus": 4,
            "Code": "AUS",
+
                    "FreePlaces": 0,
            "CitizenName": "Австрия",
+
                    "IsFewPlaces": false
            "CitizenNameLat": "AUSTRIA",
+
                  },
            "PassportMinDurCheckFrom": 0,
+
                  "PartnerId": 12668,
            "CheckINN": false,
+
                  "ByPax": true,
            "PassportMinDur": null,
+
                  "Partner":                   {
            "INNName": "ИНН",
+
                    "Key": 0,
            "Web": 1,
+
                    "Value": null
            "WebImage": "/pics/animate/austria.gif",
+
                  }
            "WebHTTP": "",
+
              }],
            "AnkLang": 0,
+
              "FlightSetting":               {
            "Type": "Country"
+
                   "ServiceId": 3,
        },
+
                  "PatternId": 13,
        "name": "Вена",
+
                   "FlightId": 13
        "Code": "VIE",
+
              },
        "Web": 0,
+
              "FlightSourceMode": 1,
        "RSKey": 0,
+
              "Id": 3,
        "WebImage": null,
+
               "SvKey": 1,
        "IsDeparture": 1,
+
               "IsSubCode1": true,
        "Type": "City"
+
               "IsSubCode2": false,
      }],
+
               "IsPartnerBasedOn": false,
      "HotelResorts": [      {
+
               "Day": 1,
        "Key": -1,
+
               "DurationInNight": 0,
        "CountryKey": 0,
+
               "BeginDateTime": "2018-02-25T10:00:00",
        "Name": "Не указан",
+
               "IsHooded": false,
        "NameLat": null,
+
               "IsDeleted": false,
        "Type": "Resort"
+
               "IsNotCalculate": false,
      }],
+
               "PacketId": 779,
      "HotelCategories":       [
+
               "Index": 0
                   {
 
            "Key": 23,
 
            "Name": "1*",
 
            "PrintNumber": 1,
 
            "Type": "HotelCatigory"
 
        },
 
                   {
 
            "Key": 56,
 
            "Name": "2*",
 
            "PrintNumber": 2,
 
            "Type": "HotelCatigory"
 
        },
 
                  {
 
            "Key": 66,
 
            "Name": "4*Boutique",
 
            "PrintNumber": null,
 
            "Type": "HotelCatigory"
 
        }
 
      ],
 
      "Hotels":      [
 
                  {
 
            "Key": 705,
 
            "Country":            {
 
               "key": 90,
 
               "name": "Австрия",
 
               "Code": "AUS",
 
               "CitizenName": "Австрия",
 
               "CitizenNameLat": "AUSTRIA",
 
               "PassportMinDurCheckFrom": 0,
 
               "CheckINN": false,
 
              "PassportMinDur": null,
 
              "INNName": "ИНН",
 
               "Web": 1,
 
               "WebImage": "/pics/animate/austria.gif",
 
               "WebHTTP": "",
 
               "AnkLang": 0,
 
               "Type": "Country"
 
 
             },
 
             },
            "City":            {
+
                        {
               "key": 35,
+
               "Hotel":                {
              "Country":                {
+
                   "Key": 709,
                   "key": 90,
+
                   "Value": "Am Brilliantengrund"
                  "name": "Австрия",
 
                  "Code": "AUS",
 
                  "CitizenName": "Австрия",
 
                  "CitizenNameLat": "AUSTRIA",
 
                  "PassportMinDurCheckFrom": 0,
 
                  "CheckINN": false,
 
                  "PassportMinDur": null,
 
                  "INNName": "ИНН",
 
                  "Web": 1,
 
                  "WebImage": "/pics/animate/austria.gif",
 
                  "WebHTTP": "",
 
                  "AnkLang": 0,
 
                   "Type": "Country"
 
 
               },
 
               },
               "name": "Вена",
+
               "City":                {
              "Code": "VIE",
+
                  "Key": 35,
              "Web": 0,
+
                  "Value": "Вена"
              "RSKey": 0,
+
               },
              "WebImage": null,
+
               "Stars":               {
              "IsDeparture": 1,
+
                   "Key": -1,
               "Type": "City"
+
                  "Value": null
            },
+
               },
            "Resort": null,
+
               "Resort":                {
            "Name": "Continental",
+
                  "Key": -1,
            "Category":            {
+
                  "Value": null
              "Key": 23,
+
               },
              "Name": "1*",
+
               "ImageURL": "",
               "PrintNumber": 1,
+
               "Http": null,
               "Type": "HotelCatigory"
+
               "Description": "",
            },
 
            "TimeFrom": null,
 
            "TimeTo": null,
 
            "HTTP": null,
 
            "Stars": "1*",
 
            "TimeIsEmpty": true,
 
            "NameLat": "Continental",
 
            "Address": null,
 
            "IsCruise": 0,
 
            "Phone": null,
 
            "Code": null,
 
            "Type": "Hotel"
 
        },
 
                   {
 
            "Key": 178,
 
            "Country":             {
 
               "key": 90,
 
               "name": "Австрия",
 
               "Code": "AUS",
 
              "CitizenName": "Австрия",
 
              "CitizenNameLat": "AUSTRIA",
 
              "PassportMinDurCheckFrom": 0,
 
              "CheckINN": false,
 
              "PassportMinDur": null,
 
               "INNName": "ИНН",
 
               "Web": 1,
 
              "WebImage": "/pics/animate/austria.gif",
 
               "WebHTTP": "",
 
              "AnkLang": 0,
 
               "Type": "Country"
 
            },
 
            "City":            {
 
              "key": 35,
 
 
               "Country":                {
 
               "Country":                {
                   "key": 90,
+
                   "Key": 90,
                   "name": "Австрия",
+
                   "Value": "Австрия"
                  "Code": "AUS",
 
                  "CitizenName": "Австрия",
 
                  "CitizenNameLat": "AUSTRIA",
 
                  "PassportMinDurCheckFrom": 0,
 
                  "CheckINN": false,
 
                  "PassportMinDur": null,
 
                  "INNName": "ИНН",
 
                  "Web": 1,
 
                  "WebImage": "/pics/animate/austria.gif",
 
                  "WebHTTP": "",
 
                  "AnkLang": 0,
 
                  "Type": "Country"
 
 
               },
 
               },
               "name": "Вена",
+
               "HotelDetails": [              {
               "Code": "VIE",
+
                  "HotelRoom": 46463,
               "Web": 0,
+
                  "Room":                  {
               "RSKey": 0,
+
                    "Key": 129,
               "WebImage": null,
+
                    "Value": "DBL"
               "IsDeparture": 1,
+
                  },
               "Type": "City"
+
                  "RoomCategory":                  {
 +
                    "Key": 3493,
 +
                    "Value": "Cosy"
 +
                  },
 +
                  "AccomodationType":                  {
 +
                    "Key": 1256,
 +
                    "Value": "2+1_K",
 +
                    "AdultCount": 2,
 +
                    "ChildCount": 1
 +
                  },
 +
                  "Pansion":                  {
 +
                    "Key": 4,
 +
                    "Value": "Завтрак"
 +
                  },
 +
                  "Cost": 19.47,
 +
                  "QuotaStatus":                  {
 +
                    "PlacesStatus": 4,
 +
                    "FreePlaces": 0,
 +
                    "IsFewPlaces": false
 +
                  },
 +
                  "PartnerId": 12667,
 +
                  "ByPax": false,
 +
                  "Partner":                  {
 +
                    "Key": 12667,
 +
                    "Value": "Партнер-покупатель1"
 +
                  }
 +
              }],
 +
               "HotelTypes": [              {
 +
                  "Key": 5,
 +
                  "Value": "Рекомендуемые"
 +
              }],
 +
              "Id": 1,
 +
               "SvKey": 3,
 +
              "IsSubCode1": true,
 +
               "IsSubCode2": true,
 +
               "IsPartnerBasedOn": false,
 +
               "Day": 1,
 +
               "DurationInNight": 3,
 +
              "BeginDateTime": "2018-02-25T12:00:00",
 +
              "EndDateTime": "2018-02-28T12:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
              "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 1
 
             },
 
             },
            "Resort": null,
+
                        {
            "Name": "Ananas",
+
               "DepartureCity":                {
            "Category":            {
+
                   "Key": 35,
               "Key": 56,
+
                  "Value": "Вена"
               "Name": "2*",
+
               },
              "PrintNumber": 2,
+
               "DepartureCountry":                {
              "Type": "HotelCatigory"
+
                   "Key": 90,
            },
+
                   "Value": "Австрия"
            "TimeFrom": "1900-01-01T11:00:00",
+
              },
            "TimeTo": "1900-01-01T12:00:00",
+
              "ArrivalCity":               {
            "HTTP": "http://booking.panteon.ru/TourPrograms/Home/Tour/?tourKey=100000007",
+
                   "Key": 1,
            "Stars": "2*",
+
                   "Value": "Москва"
            "TimeIsEmpty": false,
 
            "NameLat": "Ananas",
 
            "Address": null,
 
            "IsCruise": 0,
 
            "Phone": "(+43/1) 546200",
 
            "Code": null,
 
            "Type": "Hotel"
 
        },
 
                   {
 
            "Key": 707,
 
            "Country":            {
 
              "key": 90,
 
              "name": "Австрия",
 
              "Code": "AUS",
 
              "CitizenName": "Австрия",
 
              "CitizenNameLat": "AUSTRIA",
 
              "PassportMinDurCheckFrom": 0,
 
              "CheckINN": false,
 
              "PassportMinDur": null,
 
              "INNName": "ИНН",
 
              "Web": 1,
 
              "WebImage": "/pics/animate/austria.gif",
 
              "WebHTTP": "",
 
               "AnkLang": 0,
 
              "Type": "Country"
 
            },
 
            "City":            {
 
               "key": 35,
 
              "Country":                {
 
                   "key": 90,
 
                   "name": "Австрия",
 
                  "Code": "AUS",
 
                  "CitizenName": "Австрия",
 
                   "CitizenNameLat": "AUSTRIA",
 
                  "PassportMinDurCheckFrom": 0,
 
                  "CheckINN": false,
 
                  "PassportMinDur": null,
 
                  "INNName": "ИНН",
 
                  "Web": 1,
 
                   "WebImage": "/pics/animate/austria.gif",
 
                  "WebHTTP": "",
 
                  "AnkLang": 0,
 
                  "Type": "Country"
 
 
               },
 
               },
               "name": "Вена",
+
               "ArrivalCountry":                {
               "Code": "VIE",
+
                  "Key": 460,
              "Web": 0,
+
                  "Value": "Россия"
              "RSKey": 0,
+
               },
              "WebImage": null,
+
               "DepartureAirport":                {
              "IsDeparture": 1,
+
                   "Key": "VIE1",
               "Type": "City"
+
                  "Value": "Vena1"
            },
+
               },
            "Resort": null,
+
               "ArrivalAirport":                {
            "Name": "Beim Theresianum",
+
                   "Key": "DME",
            "Category":            {
+
                   "Value": "Домодедово"
               "Key": 66,
 
               "Name": "4*Boutique",
 
              "PrintNumber": null,
 
              "Type": "HotelCatigory"
 
            },
 
            "TimeFrom": null,
 
            "TimeTo": null,
 
            "HTTP": null,
 
            "Stars": "4*Boutique",
 
            "TimeIsEmpty": true,
 
            "NameLat": "Beim Theresianum",
 
            "Address": null,
 
            "IsCruise": 0,
 
            "Phone": null,
 
            "Code": null,
 
            "Type": "Hotel"
 
        },
 
                   {
 
            "Key": 709,
 
            "Country":            {
 
              "key": 90,
 
              "name": "Австрия",
 
              "Code": "AUS",
 
               "CitizenName": "Австрия",
 
              "CitizenNameLat": "AUSTRIA",
 
              "PassportMinDurCheckFrom": 0,
 
              "CheckINN": false,
 
              "PassportMinDur": null,
 
              "INNName": "ИНН",
 
              "Web": 1,
 
              "WebImage": "/pics/animate/austria.gif",
 
              "WebHTTP": "",
 
              "AnkLang": 0,
 
              "Type": "Country"
 
            },
 
            "City":            {
 
              "key": 35,
 
               "Country":                {
 
                   "key": 90,
 
                  "name": "Австрия",
 
                  "Code": "AUS",
 
                  "CitizenName": "Австрия",
 
                  "CitizenNameLat": "AUSTRIA",
 
                  "PassportMinDurCheckFrom": 0,
 
                  "CheckINN": false,
 
                  "PassportMinDur": null,
 
                  "INNName": "ИНН",
 
                  "Web": 1,
 
                  "WebImage": "/pics/animate/austria.gif",
 
                  "WebHTTP": "",
 
                  "AnkLang": 0,
 
                   "Type": "Country"
 
 
               },
 
               },
               "name": "Вена",
+
               "Airline":                {
              "Code": "VIE",
+
                  "Key": "7U",
               "Web": 0,
+
                  "Value": "Авиаэнерго"
               "RSKey": 0,
+
               },
              "WebImage": null,
+
               "Aircraft":               {
              "IsDeparture": 1,
+
                  "Key": "727",
              "Type": "City"
+
                  "Value": "Boeing"
            },
+
              },
            "Resort": null,
+
              "Flight":               {
            "Name": "Am Brilliantengrund",
+
                  "Key": 774,
            "Category": null,
+
                  "Value": "222"
            "TimeFrom": null,
+
              },
            "TimeTo": null,
+
              "DepartureTime": "00:00:00",
            "HTTP": null,
+
              "ArrivalTime": "00:00:00",
            "Stars": "",
+
              "EndDateTime": "2018-02-28T00:00:00",
            "TimeIsEmpty": true,
+
              "FlightDetails": [              {
            "NameLat": "Am Brilliantengrund",
+
                  "Tariff":                   {
            "Address": null,
+
                    "Key": 89,
            "IsCruise": 0,
+
                    "Code": "Y",
            "Phone": null,
+
                    "Name": "Экономический класс"
            "Code": null,
+
                  },
            "Type": "Hotel"
+
                  "Cost": 0,
        }
+
                  "QuotaStatus":                   {
      ],
+
                    "PlacesStatus": 4,
      "Pansions":       [
+
                    "FreePlaces": 0,
                   {
+
                    "IsFewPlaces": false
            "Key": 46,
+
                  },
            "Code": "RO",
+
                  "PartnerId": 10760,
            "Name": "RO",
+
                  "ByPax": true,
            "NameLat": null,
+
                  "Partner":                   {
            "Type": "Pansion"
+
                    "Key": 0,
        },
+
                    "Value": null
                  {
+
                  }
            "Key": 4,
+
              }],
            "Code": "BB2",
+
              "FlightSetting":               {
            "Name": "Завтрак",
+
                  "ServiceId": 4,
            "NameLat": null,
+
                  "PatternId": 5,
            "Type": "Pansion"
+
                  "FlightId": 4
        },
+
              },
                  {
+
              "FlightSourceMode": 1,
            "Key": 2,
+
              "Id": 4,
            "Code": "HB",
+
              "SvKey": 1,
            "Name": "Полупансион",
+
              "IsSubCode1": true,
            "NameLat": null,
+
              "IsSubCode2": false,
            "Type": "Pansion"
+
              "IsPartnerBasedOn": false,
        }
+
              "Day": 4,
      ],
+
              "DurationInNight": 0,
      "Airlines":       [
+
              "BeginDateTime": "2018-02-28T00:00:00",
                  {
+
              "IsHooded": false,
            "Key": 8,
+
              "IsDeleted": false,
            "Code": "BA7",
+
              "IsNotCalculate": false,
            "Name": "BRITISH  AIRWAYS",
+
              "PacketId": 779,
            "NameLat": "en_BRITISH  AIRWAYS",
+
              "Index": 4
            "Type": "AirLine"
+
            }
        },
+
        ],
                  {
+
        "NotRouteServices":         [
            "Key": 3,
+
            [            {
            "Code": "7U",
+
              "ServiceName": "страховка",
            "Name": "Авиаэнерго",
+
              "City": null,
            "NameLat": "en_Авиаэнерго",
+
              "Country": 6245,
            "Type": "AirLine"
+
              "Code":                {
        }
+
                  "Key": 297,
      ],
+
                  "Value": "Страховка от несчастного случая"
      "FlightTariffs": [      {
+
              },
        "Key": 89,
+
              "ByScheduler": false,
        "Code": "Y",
+
              "Details": [              {
        "Name": "Экономический класс",
+
                  "SubCode1":                   {
        "NameLat": "Coach economy",
+
                    "Key": 18,
        "Group": null,
+
                    "Value": "2"
        "Type": "AirService"
+
                  },
      }],
+
                  "SubCode2":                   {
      "DepartureCities": [      {
+
                    "Key": null,
        "key": 1,
+
                    "Value": ""
        "Country":         {
+
                  },
            "key": 460,
+
                  "Date": null,
            "name": "Россия",
+
                  "IsShowTransportPlan": true,
            "Code": null,
+
                  "Cost": 16,
            "CitizenName": "Россия",
+
                  "QuotaStatus":                  {
            "CitizenNameLat": "Russia",
+
                    "PlacesStatus": 1,
            "PassportMinDurCheckFrom": 0,
+
                    "FreePlaces": 0,
            "CheckINN": true,
+
                    "IsFewPlaces": false
            "PassportMinDur": null,
+
                  },
            "INNName": "ИНН",
+
                  "PartnerId": 12668,
            "Web": 0,
+
                  "ByPax": true,
            "WebImage": "",
+
                  "Partner":                   {
            "WebHTTP": "",
+
                    "Key": 0,
            "AnkLang": 0,
+
                    "Value": null
            "Type": "Country"
+
                  }
        },
+
              }],
        "name": "Москва",
+
              "ParentId": null,
        "Code": "MOW",
+
              "PartnerBasedOnServiceTemplateId": null,
        "Web": 0,
+
              "Id": 10,
        "RSKey": 0,
+
              "SvKey": 6,
        "WebImage": null,
+
              "IsSubCode1": true,
        "IsDeparture": 1,
+
              "IsSubCode2": true,
        "Type": "City"
+
              "IsPartnerBasedOn": false,
      }],
+
              "Day": 1,
      "DepartureAirports": [      {
+
              "DurationInNight": 3,
        "Key": 52,
+
              "BeginDateTime": "2018-02-25T00:00:00",
        "Code": "SVO4",
+
              "EndDateTime": "2018-02-28T00:00:00",
        "Name": "Шереметьево-24",
+
              "IsHooded": false,
        "NameLat": "Шереметьево-",
+
              "IsDeleted": true,
        "CityKey": 1,
+
              "IsNotCalculate": true,
        "CountryKey": 460,
+
              "PacketId": 882,
        "Letter": "S",
+
              "Index": 2
        "Site": 0,
+
            }],
        "Type": "Airport"
+
            [            {
      }],
+
              "ServiceName": "экскурсия",
      "ArrivalCities": [      {
+
              "City":               {
        "key": 1,
+
                  "Key": 1046,
        "Country":         {
+
                  "Value": "Санто-Доминго"
            "key": 460,
+
              },
            "name": "Россия",
+
              "Country":               {
            "Code": null,
+
                  "Key": 6245,
            "CitizenName": "Россия",
+
                  "Value": "Испания"
            "CitizenNameLat": "Russia",
+
},
            "PassportMinDurCheckFrom": 0,
+
              "Code":               {
            "CheckINN": true,
+
                  "Key": 743,
            "PassportMinDur": null,
+
                  "Value": "4"
            "INNName": "ИНН",
+
              },
            "Web": 0,
+
              "ByScheduler": false,
            "WebImage": "",
+
              "Details": [              {
            "WebHTTP": "",
+
                  "SubCode1":                   {
            "AnkLang": 0,
+
                    "Key": 37,
            "Type": "Country"
+
                    "Value": "Мини-автобус 10 чел."
        },
+
                  },
        "name": "Москва",
+
                  "SubCode2":                  {
        "Code": "MOW",
+
                    "Key": null,
        "Web": 0,
+
                    "Value": ""
        "RSKey": 0,
+
                  },
        "WebImage": null,
+
                  "Date": null,
        "IsDeparture": 1,
+
                  "IsShowTransportPlan": false,
        "Type": "City"
+
                  "Cost": 85.22,
      }],
+
                  "QuotaStatus":                   {
      "ArrivalAirports": [     {
+
                    "PlacesStatus": 1,
        "Key": 12,
+
                    "FreePlaces": 0,
        "Code": "DME",
+
                    "IsFewPlaces": false
        "Name": "Домодедово",
+
                  },
        "NameLat": "Домодедово",
+
                  "PartnerId": 12667,
        "CityKey": 1,
+
                  "ByPax": true,
        "CountryKey": 460,
+
                  "Partner":                   {
        "Letter": "D",
+
                    "Key": 0,
        "Site": 0,
+
                    "Value": null
        "Type": "Airport"
+
                  }
      }],
+
              }],
      "HotelTypes":       [
+
              "ParentId": null,
                   {
+
              "PartnerBasedOnServiceTemplateId": null,
            "key": 94,
+
              "Id": 7,
            "name": "Молодежный отдых",
+
              "SvKey": 4,
             "Type": "HotelType"
+
              "IsSubCode1": true,
        },
+
              "IsSubCode2": false,
                  {
+
              "IsPartnerBasedOn": true,
            "key": 5,
+
              "Day": 1,
            "name": "Рекомендуемые",
+
              "DurationInNight": 0,
            "Type": "HotelType"
+
              "BeginDateTime": "2018-02-25T00:00:00",
        }
+
              "EndDateTime": "2018-02-26T00:00:00",
      ]
+
              "IsHooded": false,
  }
+
              "IsDeleted": true,
}
+
              "IsNotCalculate": true,
</syntaxhighlight>
+
              "PacketId": 779,
</TD></TR></TABLE>
+
              "Index": 3
</div></div><br />
+
            }]
 
+
        ],
 
+
        "MinCostServicesComposition":         [
===Поиск туров онлайн (TourForWeb)===
+
                        {
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены. В зависимости от параметров запроса, дополнительных фильтров формат запроса имеет отличия. Метод используется  при работе веб-приложения Canary.
+
              "Key":               {
* Обычный формат запроса GET:
+
                  "TemplateId": 3,
** GET .../TourSearchOwin/TourForWeb/search/simple?
+
                  "PatternId": 13,
* Принимаемые параметры ( '''*''' – обязательный):
+
                  "SettingId": 13
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
              },
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
              "Value":               {
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
                  "ServiceType": 1,
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
+
                  "Code": 882,
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
+
                  "SubCode1": 89,
** '''HotelScheme *''' – объект схемы отеля
+
                  "SubCode2": 1,
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
+
                  "PacketId": 779,
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
+
                  "PartnerId": 12668,
** '''ShowToursWithoutHotels''' – показывать ли туры без проживания
+
                  "CountryId": 90,
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false).
+
                  "CityId": 35,
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (true/false)
+
                   "Day": 1,
** '''DestinationType *''' – тип результата (параметр не изменяемый, когда результат возвращается в JSON, то значение будет = 1, когда результат возвращается в xml, то значение будет = country). Зависит от программы, которая возвращает результат.
+
                  "DurationInNight": 0
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
              }
** '''AdultCount *''' – количество взрослых
+
             },
** '''CurrencyName *''' – код валюты
+
                        {
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
              "Key":               {
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
                  "TemplateId": 1,
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
+
                  "PatternId": 0,
** '''TourType''' – тип тура
+
                  "SettingId": 0
** '''CityIds''' – идентификатор города
+
              },
** '''TimeDepartureFrom''' – время отправления с (по умолчанию возвращается 00:00)
+
              "Value":                {
** '''TimeDepartureTo''' – время отправления по (по умолчанию возвращается 23:59)
+
                  "ServiceType": 3,
** '''TimeArrivalFrom''' – время прибытия с (по умолчанию возвращается 00:00)
+
                  "Code": 709,
** '''TimeArrivalTo''' – время прибытия по (по умолчанию возвращается 23:59)
+
                  "SubCode1": 46463,
** '''SearchId''' – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5.
+
                  "SubCode2": 4,
** '''MatrixAlgoritm''' – используется ли дополнительный фильтр «Таблица цен»
+
                  "PacketId": 779,
** '''SearchMaxPriceAlgoritm''' –
+
                  "PartnerId": 12667,
** '''wrongLicenseFileUpperTitle''' – проверка файла лицензии
+
                  "CountryId": 90,
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
+
                  "CityId": 35,
* Возвращаемый результат:
+
                  "Day": 1,
** '''Result''' – результаты поиска
+
                  "DurationInNight": 3
*** '''Key''' – идентификатор программы тура
+
              }
*** '''Name''' – название программы тура
+
            },
*** '''TourUrl''' – ссылка на программу тура
+
                        {
*** '''BookingConditions''' – условия бронирования программы туров
+
              "Key":                {
*** '''DefaultManagers''' – менеджер по-умолчанию
+
                  "TemplateId": 4,
*** '''Manager''' – обозначение менеджера
+
                  "PatternId": 5,
*** '''Branches''' – филиал
+
                  "SettingId": 4
*** '''DetermineTheBranchOnCity''' – признак определения филиала в зависимости от города начала поездки
+
              },
*** '''StartDate''' – дата начала тура
+
              "Value":                {
*** '''Duration''' – продолжительность тура (в днях)
+
                  "ServiceType": 1,
*** '''DurationInNight''' – продолжительность проживания (в ночах)
+
                  "Code": 774,
*** '''Types''' – идентификатор типа туров
+
                  "SubCode1": 89,
*** '''Cost''' – цена тура
+
                  "SubCode2": 35,
*** '''Rate''' – код валюты тура
+
                  "PacketId": 779,
*** '''CityDepature''' – город отправления
+
                  "PartnerId": 10760,
**** '''Key''' – идентификатор города отправления
+
                  "CountryId": 460,
**** '''Value''' – название города отправления
+
                  "CityId": 1,
*** '''CountryId''' – всегда возвращается ключ 0
+
                  "Day": 4,
*** '''Services''' – услуги в туре
+
                  "DurationInNight": 0
**** '''DepartureCity''' – город отправления
+
              }
***** '''Key''' – идентификатор
+
            }
***** '''Value''' – название
+
        ],
**** '''DepartureCountry''' – страна отправления
+
        "FlightWeight": 2,
***** '''Key''' – идентификатор
+
        "LinkingFlightsRules":          {
***** '''Value''' – название
+
            "notCombineDifferentAirlineRule":            {
**** '''ArrivalCity''' – город прибытия
+
              "airlines": ["AY2"],
***** '''Key''' – идентификатор
+
              "flightSettings": [],
***** '''Value''' – название
+
              "enabled": true
**** '''ArrivalCountry''' – страна прибытия
+
            },
***** '''Key''' – идентификатор
+
            "checkPlusMinus1CharterRule":             {
***** '''Value''' – название
+
              "FlightSettingPairs": [],
**** '''DepartureAirport''' – аэропорт отправления
+
              "enabled": false
***** '''Key''' – идентификатор
+
            },
***** '''Value''' – название
+
            "notCombineDifferentTariffGroupRule":             {
**** '''ArrivalAirport''' – аэропорт прибытия
+
              "FlightSettings": [],
***** '''Key''' – идентификатор
+
              "enabled": true
***** '''Value''' – название
+
            },
**** '''Airline''' – авиакомпания
+
            "notCombineDifferentPartnerRule":            {
***** '''Key''' – идентификатор
+
              "FlightSettings": [],
***** '''Value''' – название
+
              "enabled": false
**** '''Aircraft''' – воздушное судно
+
            },
***** '''Key''' – идентификатор
+
            "departureCityEqualsArrivalCityRule":            {
***** '''Value''' – название
+
              "FlightSettingPairs": [],
**** '''Flight''' – рейс
+
              "enabled": false
***** '''Key''' – идентификатор
+
            },
***** '''Value''' – название
+
            "combineOnlySpecificChartersRule":            {
**** '''DepartureTime''' – время вылета
+
              "settings": [],
**** '''ArrivalTime''' – время прилета
+
              "enabled": false
**** '''TotalTimeOfFlight''' – полное время перелета
+
            }
**** '''FlightDetails''' – детали авиаперелета
+
        },
***** '''Tariff''' – информация о тарифе перелета
+
        "RouteSubVariants": []
****** '''Key''' – идентификатор
+
      }
****** '''Code''' – код тарифа
+
  ],
****** '''Name''' – наименование тарифа
+
  "SecondaryFiltersResult":    {
***** '''IsCommission''' – признак, комиссионная ли услуга
+
      "TourTypes": [      {
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
+
        "Id": 2,
***** '''QuotaStatus''' – информация о квоте
+
        "Name": "Стандартный тур",
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
+
        "ParentId": null,
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
+
        "Type": "TourType"
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
+
      }],
***** '''PartnerId''' – ключ партнера
+
      "TourPrograms":      [
***** '''ByPax''' – цена за человека (true/false)
+
                      {
***** '''Partner''' – информация о партнере
+
            "Key": 100000004,
****** '''Key''' – идентификатор
+
            "Name": "Общая проверка системы",
****** '''Value''' – наименование
+
            "TourUrl": "www.megatec.ru",
**** '''FlightSetting''' – информация о шаблоне услуги авиаперелета
+
            "BookingConditions": "<p>Условия бронирования тура.<\/p>",
***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
+
            "IsLandOnly": false,
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
+
            "IsRestrictMultiHotels": false,
***** '''FlightId''' – идентификатор внешнего перелета
+
            "IsHotelTemplates": true,
**** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров)
+
            "IsRouteServices": true,
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
+
            "MultiHotelDelta": 0,
**** '''SvKey''' – ключ типа услуги
+
            "Rate": "EU",
**** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
+
            "DateStart": "2018-01-30T00:00:00Z",
**** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
+
            "DateEnd": "2018-02-27T00:00:00Z",
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
+
            "Status":            {
**** '''Day''' – день предоставления услуги
+
              "Key": 3,
**** '''DurationInNight''' – продолжительность услуги в ночах
+
              "Value": "Доступен для продажи"
**** '''BeginDateTime''' – дата предоставления услуги
+
            },
**** '''EndDateTime''' – дата окончания услуги
+
            "Templates":            [
**** '''IsHooded''' – признак скрытая услуга
+
              {"$id": "5"},
**** '''IsDeleted''' – признак удаляемая услуга
+
              {"$id": "6"},
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
+
              {"$id": "7"},
**** '''PacketId''' – ключ пакета
+
              {"$id": "8"},
**** '''Index''' – порядковый номер услуги
+
              {"$id": "9"}
**** '''DepartureCity''' – город отправления
+
            ],
***** '''Key''' – ключ города
+
            "Types": [            {
***** '''Value''' – наименование города
+
              "Id": 2,
**** '''DepartureCountry''' – страна отправления
+
              "Name": "Стандартный тур",
***** '''Key''' – ключ страны
+
              "ParentId": null,
***** '''Value''' – наименование страны
+
              "Type": "TourType"
**** '''ArrivalCity''' – город прибытия
+
            }],
***** '''Key''' – ключ города
+
            "LinkingFlightsRules":            {
***** '''Value''' – наименование города
+
              "notCombineDifferentAirlineRule":                {
**** '''ArrivalCountry''' – страна прибытия
+
                  "airlines": ["AY2"],
***** '''Key''' – ключ страны
+
                  "flightSettings": [],
***** '''Value''' – наименование страны
+
                  "enabled": true
**** '''DepartureAirport''' – аэропорт прилета
+
              },
***** '''Key''' – ключ аэропорта
+
              "checkPlusMinus1CharterRule":                {
***** '''Value''' – наименование аэропорта
+
                  "FlightSettingPairs": [],
**** '''ArrivalAirport''' – аэропорт прилета
+
                  "enabled": false
***** '''Key''' – ключ аэропорта
+
              },
***** '''Value''' – наименование аэропорта
+
              "notCombineDifferentTariffGroupRule":               {
**** '''Airline''' – наименование авиакомпании
+
                  "FlightSettings": [],
***** '''Id''' – идентификатор авиакомпании
+
                  "enabled": true
***** '''Value''' – наименование авиакомпании
+
              },
***** '''Key''' – ключ авиакомпании
+
              "notCombineDifferentPartnerRule":                {
**** '''Aircraft''' – воздушное судно
+
                  "FlightSettings": [],
***** '''Key''' – ключ воздушного судна
+
                  "enabled": false
***** '''Value''' – наименование воздушного судна
+
              },
**** '''Flight''' – перелет
+
              "departureCityEqualsArrivalCityRule":                {
***** '''Key''' – ключ перелета
+
                  "FlightSettingPairs": [],
***** '''Value''' – наименование авиаперелета
+
                  "enabled": false
**** '''DepartureTime''' – время отправления
+
              },
**** '''ArrivalTime''' – время прилета
+
              "combineOnlySpecificChartersRule":                {
**** '''TotalTimeOfFlight''' – полное время перелета
+
                  "settings": [],
**** '''FlightDetails''' – информация об авиаперелете
+
                  "enabled": false
***** '''Tariff''' – информация о тарифе перелета
+
              }
****** '''Key''' – идентификатор
+
            },
****** '''Code''' – код тарифа
+
            "Type": "TourProgram"
****** '''Name''' – название тарифа
+
        }
***** '''IsCommission''' – признак, комиссионная ли услуга
+
      ],
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
+
      "TourDurations": [4],
***** '''QuotaStatus''' – информация о квоте
+
      "TourDates": ["2018-02-25T00:00:00"],
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
+
      "HotelCities": [      {
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
+
        "key": 35,
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
+
        "Country":          {
***** '''PartnerId''' – ключ партнера
+
            "key": 90,
***** '''ByPax''' – цена за человека (true/false)
+
            "name": "Австрия",
***** '''Partner''' – информация о партнере
+
            "Code": "AUS",
****** '''Key''' – идентификатор
+
            "CitizenName": "Австрия",
****** '''Value''' – наименование
+
            "CitizenNameLat": "AUSTRIA",
**** '''FlightSetting''' – внутренняя информация о перелете из программы туров
+
            "PassportMinDurCheckFrom": 0,
***** '''ServiceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
+
            "CheckINN": false,
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
+
            "PassportMinDur": null,
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
+
            "INNName": "ИНН",
**** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров)
+
            "Web": 1,
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
+
            "WebImage": "/pics/animate/austria.gif",
***** '''SvKey''' – ключ типа услуги
+
            "WebHTTP": "",
**** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
+
            "AnkLang": 0,
**** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
+
            "Type": "Country"
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
+
        },
**** '''Day''' – день предоставления услуги
+
        "name": "Вена",
**** '''DurationInNight''' – продолжительность услуги в ночах
+
        "Code": "VIE",
**** '''BeginDateTime''' – дата предоставления услуги
+
        "Web": 0,
**** '''EndDateTime''' – дата окончания услуги
+
        "RSKey": 0,
**** '''IsHooded''' – признак скрытая услуга
+
        "WebImage": null,
**** '''IsDeleted''' – признак удаляемая услуга
+
        "IsDeparture": 1,
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
+
        "Type": "City"
**** '''PacketId''' – ключ пакета
+
      }],
**** '''Index''' – порядковый номер услуги
+
      "HotelResorts": [      {
**** '''Hotel''' – отель
+
        "Key": -1,
***** '''Key''' – ключ отеля
+
        "CountryKey": 0,
***** '''Value''' – наименование отеля
+
        "Name": "Не указан",
**** '''City''' – город
+
        "NameLat": null,
***** '''Key''' – ключ города
+
        "Type": "Resort"
***** '''Value''' – наименование города
+
      }],
**** '''Stars''' – категория отеля
+
      "HotelCategories":      [
***** '''Key''' – ключ категории отеля
+
                  {
***** '''Value''' – наименование категории отеля
+
            "Key": 23,
**** '''StarsGlobalCode''' – глобальный код категории отеля
+
            "Name": "1*",
***** '''Key''' – глобальный ключ категории отеля
+
            "PrintNumber": 1,
***** '''Value''' – наименование категории отеля
+
            "Type": "HotelCatigory"
**** '''Resort''' – курорт
+
        },
***** '''Key''' – ключ курорта
+
                  {
***** '''Value''' – наименование курорта
+
            "Key": 56,
**** '''ImageURL''' – ссылка на лого отеля
+
            "Name": "2*",
**** '''Http''' – ссылка на сайт отеля
+
            "PrintNumber": 2,
**** '''Description''' – описание
+
            "Type": "HotelCatigory"
**** '''Latitude''' – GPS координаты: географическая широта
+
        },
**** '''Longitude''' – GPS координаты: географическая долгота
+
                  {
**** '''Country''' – страна
+
            "Key": 66,
***** '''Key''' – ключ страны
+
            "Name": "4*Boutique",
***** '''Value''' – наименование страны
+
            "PrintNumber": null,
**** '''HotelDetails''' – массив данных отель 
+
            "Type": "HotelCatigory"
***** '''HotelRoom''' – категория номера
+
        }
***** '''Room''' – номер
+
      ],
****** '''Key''' – ключ номера
+
      "Hotels":       [
****** '''Value''' – наименование номера
+
                  {
***** '''RoomCategory''' – тип номера
+
            "Key": 705,
****** '''Key''' – ключ типа номера
+
            "Country":            {
****** '''Value''' – наименование типа номера
+
              "key": 90,
***** '''AccomodationType''' – тип размещения
+
              "name": "Австрия",
****** '''Key''' – ключ типа размещения
+
              "Code": "AUS",
****** '''Value''' – наименование типа размещения
+
              "CitizenName": "Австрия",
****** '''AdultCount''' – количество взрослых
+
              "CitizenNameLat": "AUSTRIA",
****** '''ChildCount''' – количество детей
+
              "PassportMinDurCheckFrom": 0,
***** '''Pansion''' – тип питания
+
              "CheckINN": false,
****** '''Key''' – ключ типа питания
+
              "PassportMinDur": null,
****** '''Value''' – наименование типа питания
+
              "INNName": "ИНН",
***** '''PansionGlobalCode''' – глобальный код типа питания
+
              "Web": 1,
****** '''Key''' – ключ типа питания
+
              "WebImage": "/pics/animate/austria.gif",
****** '''Value''' – наименование типа питания
+
              "WebHTTP": "",
***** '''RemoteId''' – не используется
+
              "AnkLang": 0,
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
+
              "Type": "Country"
***** '''QuotaStatus''' – информация о квоте
+
            },
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
+
            "City":             {
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
+
              "key": 35,
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
+
              "Country":                {
***** '''PartnerId''' – ключ партнера
+
                  "key": 90,
***** '''ByPax''' – цена за человека (true/false)
+
                  "name": "Австрия",
***** '''Partner''' – информация о партнере
+
                  "Code": "AUS",
****** '''Key''' – идентификатор
+
                  "CitizenName": "Австрия",
****** '''Value''' – название               
+
                  "CitizenNameLat": "AUSTRIA",
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах
+
                  "PassportMinDurCheckFrom": 0,
***** '''Key''' – ключ
+
                  "CheckINN": false,
***** '''Value''' – значение
+
                  "PassportMinDur": null,
**** '''RemoteId''' – не используется
+
                  "INNName": "ИНН",
**** '''COAndSpecialsInfo''' – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков
+
                  "Web": 1,
***** '''AppliedCostOffersKeys''' – коллекция идентификаторов всех применённых ценовых блоков к одной цене             
+
                  "WebImage": "/pics/animate/austria.gif",
***** '''AppliedSpeciasInfo''' – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция
+
                  "WebHTTP": "",
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
+
                  "AnkLang": 0,
**** '''SvKey''' – ключ типа услуги
+
                  "Type": "Country"
**** '''IsSubCode1''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
+
              },
**** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
+
              "name": "Вена",
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
+
              "Code": "VIE",
**** '''Day''' – день предоставления услуги
+
              "Web": 0,
**** '''DurationInNight''' – продолжительность услуги в ночах
+
              "RSKey": 0,
**** '''BeginDateTime''' – дата предоставления услуги
+
              "WebImage": null,
**** '''EndDateTime''' – дата окончания услуги
+
              "IsDeparture": 1,
**** '''IsHooded''' – признак скрытая услуга
+
              "Type": "City"
**** '''IsDeleted''' – признак удаляемая услуга
+
            },
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
+
            "Resort": null,
**** '''PacketId''' – ключ пакета
+
            "Name": "Continental",
**** '''Index''' – порядковый номер услуги
+
            "Category":            {
*** '''NotRouteServices''' – массив коллекций немаршрутных услуг (например если две экскурсии будут являться одним элементом массива, то это будет говорить о том, что эти экскурсии можно будет выбрать в выпадающем списке)
+
              "Key": 23,
*** '''MinCostServicesComposition''' – массив состав услуг минимальной цены
+
              "Name": "1*",
**** '''Key''' – ключ
+
              "PrintNumber": 1,
***** '''TemplateId''' – идентификатор шаблона
+
              "Type": "HotelCatigory"
***** '''PatternId''' – идентификатор вкладки
+
            },
***** '''SettingId''' – идентификатор услуги
+
            "TimeFrom": null,
**** '''Value''' – значение
+
            "TimeTo": null,
***** '''ServiceType''' – тип услуги
+
            "HTTP": null,
***** '''Code''' – ключ услуги
+
            "Stars": "1*",
***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
+
            "TimeIsEmpty": true,
***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
+
            "NameLat": "Continental",
***** '''PacketId''' – пакет услуги
+
            "Address": null,
***** '''PartnerId''' – партнер услуги
+
            "IsCruise": 0,
***** '''CountryId''' – страна услуги
+
            "Phone": null,
***** '''CityId''' – город услуги
+
            "Code": null,
***** '''Day''' – день предоставления услуги
+
            "Type": "Hotel"
***** '''DurationInNight''' – продолжительность услуги в ночах
+
        },
***** '''GDSProviderId''' – ключ провайдера из внешней системы
+
                  {
***** '''COAndSpecialsInfo''' – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков
+
            "Key": 178,
****** '''AppliedCostOffersKeys''' – коллекция идентификаторов всех применённых ценовых блоков к одной цене
+
            "Country":            {
****** '''AppliedSpeciasInfo''' – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция
+
              "key": 90,
***** '''COBySubCode''' – список применённых идентификаторов ценовых блоков по SubCode1 и SubCode2
+
              "name": "Австрия",
***** '''SpecialsBySubCode''' – список применённых акций по SubCode1 и SubCode2
+
              "Code": "AUS",
*** '''FlightWeight''' – общий вес перелетов маршрута
+
              "CitizenName": "Австрия",
*** '''LinkingFlightsRules''' – объект правил связывания
+
              "CitizenNameLat": "AUSTRIA",
**** '''notCombineDifferentAirlineRule''' – объект не скрещивать авиакомпании
+
              "PassportMinDurCheckFrom": 0,
***** '''airlines''' – авиакомпании
+
              "CheckINN": false,
***** '''flightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
              "PassportMinDur": null,
***** '''enabled''' – флаг включен/выключен
+
              "INNName": "ИНН",
**** '''checkPlusMinus1CharterRule''' – объект Отличие номера рейса на 1
+
              "Web": 1,
***** '''FlightSettingPairs''' – массив чартеров, для которых это правило будет выполняться
+
              "WebImage": "/pics/animate/austria.gif",
***** '''enabled''' – флаг включен/выключен
+
              "WebHTTP": "",
**** '''notCombineDifferentTariffGroupRule''' – объект не комбинировать рейсы от разных классов перелетов
+
              "AnkLang": 0,
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
              "Type": "Country"
***** '''enabled''' – флаг включен/выключен
+
            },
**** '''notCombineDifferentPartnerRule''' – объект не комбинировать рейсы от разных партнеров
+
            "City":            {
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
              "key": 35,
***** '''enabled''' – флаг включен/выключен
+
              "Country":                {
**** '''departureCityEqualsArrivalCityRule''' – объект Город вылета = городу прилета
+
                  "key": 90,
***** '''FlightSettingPairs''' – чартеры, для которых это будет выполняться
+
                  "name": "Австрия",
***** '''enabled''' – флаг включен/выключен
+
                  "Code": "AUS",
**** '''combineOnlySpecificChartersRule''' – объект не комбинировать различные классы перелетов
+
                  "CitizenName": "Австрия",
***** '''settings''' – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId
+
                  "CitizenNameLat": "AUSTRIA",
***** '''enabled''' – флаг включен/выключен
+
                  "PassportMinDurCheckFrom": 0,
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
+
                  "CheckINN": false,
*** '''Routes''' – массив возможных маршрутов в данной программе туров
+
                  "PassportMinDur": null,
*** '''IsRemoteHotels''' – удаленные отели
+
                  "INNName": "ИНН",
** '''SecondaryFiltersResult''' – результаты доп. фильтров
+
                  "Web": 1,
*** '''TourTypes''' – типы тура
+
                  "WebImage": "/pics/animate/austria.gif",
**** '''Id''' – ключ типа тура
+
                  "WebHTTP": "",
**** '''Name''' – название типа тура
+
                  "AnkLang": 0,
**** '''ParentId''' – родительский элемент типа тура (если есть)
+
                  "Type": "Country"
**** '''Type''' – тип справочника (используется для внутренних целей)
+
              },
*** '''TourPrograms''' – информация по каждой турпрограмме
+
              "name": "Вена",
**** '''Key''' – ключ турпрограммы
+
              "Code": "VIE",
**** '''Name''' – название турпрограммы
+
              "Web": 0,
**** '''TourUrl''' – ссылка на тур
+
              "RSKey": 0,
**** '''BookingConditions''' – условия бронирования
+
              "WebImage": null,
*** '''DefaultManagers''' – менеджер по-умолчанию
+
              "IsDeparture": 1,
*** '''Manager''' – обозначение менеджера
+
              "Type": "City"
*** '''Branches''' – филиал
+
            },
*** '''DetermineTheBranchOnCity''' – признак определения филиала в зависимости от города начала поездки
+
            "Resort": null,
**** '''IsLandOnly''' – признак только наземное обслуживание
+
            "Name": "Ananas",
**** '''IsApplyMarginAddCostToRemoteService''' –
+
            "Category":            {
**** '''IsRestrictMultiHotels''' – ограничивать ли расчёт многоотельных туров категориями отелей
+
              "Key": 56,
**** '''IsHotelTemplates''' – есть ли вообще отели в данной турпрограмме
+
              "Name": "2*",
**** '''IsRouteServices''' – есть ли маршрутные услуги
+
              "PrintNumber": 2,
**** '''IsAviaBooking''' –
+
              "Type": "HotelCatigory"
**** '''MultiHotelDelta''' – Значение отклонения звездности последующих отелей от первого отеля в многоотельном туре. По умолчанию 0. Звездность определяется числом, заданном в поле порядок при печати.
+
            },
**** '''Rate''' – валюта тура
+
            "TimeFrom": "1900-01-01T11:00:00",
**** '''RateId''' – идентификатор валюты тура
+
            "TimeTo": "1900-01-01T12:00:00",
**** '''DateStart''' – нижняя граница дат заезда по программе тура
+
            "HTTP": "http://booking.panteon.ru/TourPrograms/Home/Tour/?tourKey=100000007",
**** '''DateEnd''' – верхняя граница дат заезда по программе тура
+
            "Stars": "2*",
**** '''DateList''' – список дат заездов
+
            "TimeIsEmpty": false,
**** '''UpdateDate''' – дата обновления
+
            "NameLat": "Ananas",
**** '''Status''' – статус турпрограммы
+
            "Address": null,
***** '''Key''' – ключ
+
            "IsCruise": 0,
***** '''Value''' – значение
+
            "Phone": "(+43/1) 546200",
**** '''Templates''' – шаблоны услуг
+
            "Code": null,
***** '''$id''' – шаблон 1
+
            "Type": "Hotel"
***** '''$id''' – шаблон 2
+
        },
**** '''Types''' – типы тура
+
                  {
***** '''Id''' – ключ типа тура
+
            "Key": 707,
***** '''Name''' – название типа тура
+
            "Country":            {
***** '''ParentId''' – родительский элемент типа тура (если есть)
+
              "key": 90,
***** '''Type''' – тип справочника (используется для внутренних целей)
+
              "name": "Австрия",
**** '''LinkingFlightsRules''' – правила связывания перелетов
+
              "Code": "AUS",
**** '''notCombineDifferentAirlineRule''' – объект не скрещивать авиакомпании
+
              "CitizenName": "Австрия",
***** '''airlines''' – авиакомпании
+
              "CitizenNameLat": "AUSTRIA",
***** '''flightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
              "PassportMinDurCheckFrom": 0,
***** '''enabled''' – флаг включен/выключен
+
              "CheckINN": false,
**** '''checkPlusMinus1CharterRule''' – объект Отличие номера рейса на 1
+
              "PassportMinDur": null,
***** '''FlightSettingPairs''' – массив чартеров, для которых это правило будет выполняться
+
              "INNName": "ИНН",
***** '''enabled''' – флаг включен/выключен
+
              "Web": 1,
**** '''notCombineDifferentTariffGroupRule''' – объект не комбинировать рейсы от разных классов перелетов
+
              "WebImage": "/pics/animate/austria.gif",
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
              "WebHTTP": "",
***** '''enabled''' – флаг включен/выключен
+
              "AnkLang": 0,
**** '''notCombineDifferentPartnerRule''' – объект не комбинировать рейсы от разных партнеров
+
              "Type": "Country"
***** '''FlightSettings''' – массив ключей ServiceId, PatternId, FlightId
+
            },
***** '''enabled''' – флаг включен/выключен
+
            "City":            {
**** '''departureCityEqualsArrivalCityRule''' – объект Город вылета = городу прилета
+
              "key": 35,
***** '''FlightSettingPairs''' – чартеры, для которых это будет выполняться
+
              "Country":                {
***** '''enabled''' – флаг включен/выключен
+
                  "key": 90,
**** '''combineOnlySpecificChartersRule''' – объект не комбинировать различные классы перелетов
+
                  "name": "Австрия",
***** '''settings''' – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId
+
                  "Code": "AUS",
***** '''enabled''' – флаг включен/выключен
+
                  "CitizenName": "Австрия",
**** '''XmlSettings''' – строка xml для актуальных фильтров
+
                  "CitizenNameLat": "AUSTRIA",
**** '''IsMultiHotel''' –
+
                  "PassportMinDurCheckFrom": 0,
**** '''Type''' – тип справочника (используется для внутренних целей)
+
                  "CheckINN": false,
*** '''TourDurations''' – продолжительность тура
+
                  "PassportMinDur": null,
*** '''TourDates''' – список дат заездов в турпрограмме
+
                  "INNName": "ИНН",
**** '''HotelCities''' – город в дополнительных фильтрах
+
                  "Web": 1,
***** '''key''' – ключ города
+
                  "WebImage": "/pics/animate/austria.gif",
***** '''Country''' – страна
+
                  "WebHTTP": "",
****** '''key''' – ключ страны
+
                  "AnkLang": 0,
****** '''name''' – наименование страны
+
                  "Type": "Country"
****** '''Code''' – код страны
+
              },
****** '''DigitCode''' – цифровой код
+
              "name": "Вена",
****** '''Alpha2Code''' –
+
              "Code": "VIE",
****** '''Alpha3Code''' –
+
              "Web": 0,
****** '''CitizenName''' – наименование страны
+
              "RSKey": 0,
****** '''CitizenNameLat''' – наименование страны латиницей
+
              "WebImage": null,
****** '''PassportMinDurCheckFrom''' –
+
              "IsDeparture": 1,
****** '''CheckINN''' – проверка ИНН
+
              "Type": "City"
****** '''PassportMinDur''' –
+
            },
****** '''INNName''' – наименование поля ИНН
+
            "Resort": null,
****** '''Web''' –
+
            "Name": "Beim Theresianum",
****** '''WebImage''' – логотип страны
+
            "Category":            {
****** '''WebHTTP''' – сайт
+
              "Key": 66,
****** '''AnkLang''' –
+
              "Name": "4*Boutique",
****** '''Key''' – ключ страны
+
              "PrintNumber": null,
****** '''Type''' – тип (страна)
+
              "Type": "HotelCatigory"
***** '''name''' – наименование города
+
            },
***** '''Code''' – код города
+
            "TimeFrom": null,
***** '''Web''' –
+
            "TimeTo": null,
***** '''RSKey''' –
+
            "HTTP": null,
***** '''WebImage''' –
+
            "Stars": "4*Boutique",
***** '''IsDeparture''' –
+
            "TimeIsEmpty": true,
***** '''Key''' – ключ города
+
            "NameLat": "Beim Theresianum",
***** '''Type''' – тип (город)
+
            "Address": null,
**** '''HotelResorts''' – курорты в дополнительных фильтрах
+
            "IsCruise": 0,
***** '''CountryKey''' – ключ
+
            "Phone": null,
***** '''Name''' – наименование
+
            "Code": null,
***** '''NameLat''' – наименование латиницей
+
            "Type": "Hotel"
***** '''Key''' – ключ
+
        },
***** '''Type''' – тип (курорт)
+
                  {
**** '''HotelCategories''' – категории отеля в дополнительных фильтрах
+
            "Key": 709,
***** '''Name''' – наименование категории
+
            "Country":            {
***** '''PrintNumber''' – номер для печати
+
              "key": 90,
***** '''GlobalCode''' – глобальный код
+
              "name": "Австрия",
***** '''Key''' – ключ
+
              "Code": "AUS",
***** '''Type''' – тип (категория отеоля)
+
              "CitizenName": "Австрия",
**** '''Hotels''' – отели в дополнительных фильтрах
+
              "CitizenNameLat": "AUSTRIA",
***** '''Country''' – страна
+
              "PassportMinDurCheckFrom": 0,
****** '''key''' – ключ страны
+
              "CheckINN": false,
****** '''name''' – наименование страны
+
              "PassportMinDur": null,
****** '''Code''' – код страны
+
              "INNName": "ИНН",
****** '''DigitCode''' – цифровой код
+
              "Web": 1,
****** '''Alpha2Code''' –
+
              "WebImage": "/pics/animate/austria.gif",
****** '''Alpha3Code''' –
+
              "WebHTTP": "",
****** '''CitizenName''' – наименование страны
+
              "AnkLang": 0,
****** '''CitizenNameLat''' – наименование страны латиницей
+
              "Type": "Country"
****** '''PassportMinDurCheckFrom''' –
+
            },
****** '''CheckINN''' – проверка ИНН
+
            "City":            {
****** '''PassportMinDur''' –
+
              "key": 35,
****** '''INNName''' –
+
              "Country":                {
****** '''Web''' –
+
                  "key": 90,
****** '''WebImage''' – логотип страны
+
                  "name": "Австрия",
****** '''WebHTTP''' – сайт
+
                  "Code": "AUS",
****** '''AnkLang''' –
+
                  "CitizenName": "Австрия",
****** '''Key''' – ключ страны
+
                  "CitizenNameLat": "AUSTRIA",
****** '''Type''' – тип (страна)
+
                  "PassportMinDurCheckFrom": 0,
**** '''Сity''' – город
+
                  "CheckINN": false,
***** '''key''' – ключ города
+
                  "PassportMinDur": null,
***** '''Country''' – страна
+
                  "INNName": "ИНН",
****** '''key''' – ключ страны
+
                  "Web": 1,
****** '''name''' – наименование страны
+
                  "WebImage": "/pics/animate/austria.gif",
****** '''Code''' – код страны
+
                  "WebHTTP": "",
****** '''DigitCode''' – цифровой код
+
                  "AnkLang": 0,
****** '''Alpha2Code''' –
+
                  "Type": "Country"
****** '''Alpha3Code''' –
+
              },
****** '''CitizenName''' – наименование страны
+
              "name": "Вена",
****** '''CitizenNameLat''' – наименование страны латиницей
+
              "Code": "VIE",
****** '''PassportMinDurCheckFrom''' –
+
              "Web": 0,
****** '''CheckINN''' – проверка ИНН
+
              "RSKey": 0,
****** '''PassportMinDur''' –
+
              "WebImage": null,
****** '''INNName''' –
+
              "IsDeparture": 1,
****** '''Web''' –
+
              "Type": "City"
****** '''WebImage''' – логотип страны
+
            },
****** '''WebHTTP''' – сайт
+
            "Resort": null,
****** '''AnkLang''' –
+
            "Name": "Am Brilliantengrund",
****** '''Key''' – ключ страны
+
            "Category": null,
****** '''Type''' – тип (страна)
+
            "TimeFrom": null,
***** '''name''' – наименование города
+
            "TimeTo": null,
***** '''Code''' – код города
+
            "HTTP": null,
***** '''Web''' –
+
            "Stars": "",
***** '''RSKey''' –
+
            "TimeIsEmpty": true,
***** '''WebImage''' –
+
            "NameLat": "Am Brilliantengrund",
***** '''IsDeparture''' –
+
            "Address": null,
***** '''Key''' – ключ города
+
            "IsCruise": 0,
***** '''Type''' – тип (город)
+
            "Phone": null,
**** '''Resort''' – курорт
+
            "Code": null,
***** '''ResortKey''' – ключ курорта
+
            "Type": "Hotel"
***** '''Name''' – наименование
+
        }
***** '''Category''' – категория
+
      ],
****** '''Name''' – наименование категории
+
      "Pansions":      [
****** '''PrintNumber''' – ключ для печати
+
                  {
****** '''GlobalCode''' – глобальный код
+
            "Key": 46,
****** '''Key''' – ключ
+
            "Code": "RO",
****** '''Type''' – тип (категория отеля)
+
            "Name": "RO",
***** '''CategoryKey''' – ключ категории
+
            "NameLat": null,
***** '''TimeFrom''' – время с
+
            "Type": "Pansion"
***** '''TimeTo''' – время по
+
        },
***** '''HTTP": сайт
+
                  {
***** '''Stars''' – категория
+
            "Key": 4,
***** '''TimeIsEmpty''' – вышло ли время
+
            "Code": "BB2",
***** '''NameLat''' – наименование латиницей
+
            "Name": "Завтрак",
***** '''Address''' – адрес
+
            "NameLat": null,
***** '''IsCruise''' – имеется круиз
+
            "Type": "Pansion"
***** '''Phone''' – телефон
+
        },
***** '''Email''' – E-mail
+
                  {
***** '''Fax''' – факс
+
            "Key": 2,
***** '''Code''' – код
+
            "Code": "HB",
***** '''Site''' – сайт
+
            "Name": "Полупансион",
***** '''Descript''' – описание
+
            "NameLat": null,
***** '''PayHourNote''' – час оплаты
+
            "Type": "Pansion"
***** '''EarlyCheckInSurcharge''' – доплаты за ранний заезд
+
        }
***** '''LateCheckOutSurcharge''' – доплата за поздний выезд
+
      ],
***** '''Latitude''' – GPS координаты: географическая широта (обрабатывается с релиза 15.6)
+
      "Airlines":      [
***** '''Longitude''' – GPS координаты: географическая долгота (обрабатывается с релиза 15.6)
+
                  {
***** '''DescExcur''' –
+
            "Key": 8,
***** '''DescSport''' –
+
            "Code": "BA7",
***** '''DescHealth''' –
+
            "Name": "BRITISH  AIRWAYS",
***** '''DescService''' –
+
            "NameLat": "en_BRITISH  AIRWAYS",
***** '''Key''' – ключ
+
            "Type": "AirLine"
***** '''Type''' – тип (отель)
+
        },
**** '''Pansions''' – питание
+
                  {
***** '''Code''' – код питания
+
            "Key": 3,
***** '''Name''' – наименование питания
+
            "Code": "7U",
***** '''NameLat''' – наименование питания латиницей
+
            "Name": "Авиаэнерго",
***** '''GlobalCode''' – глобальный код
+
            "NameLat": "en_Авиаэнерго",
***** '''Key''' – ключ
+
            "Type": "AirLine"
***** '''Type''' – тип (питание)
+
        }
**** '''Airlines''' – авиакомпании в дополнительных фильтрах
+
      ],
***** '''Key''' – ключ авиакомпании
+
      "FlightTariffs": [      {
***** '''Code''' – код авиакомпании
+
        "Key": 89,
***** '''ICAO''' – код ИКАО
+
        "Code": "Y",
***** '''Name''' – наименование авиакомпании
+
        "Name": "Экономический класс",
***** '''NameLat''' – наименование авиакомпании латиницей
+
        "NameLat": "Coach economy",
***** '''Type''' – тип (авиакомпания)
+
        "Group": null,
**** '''FlightTariffs''' – класс перелета в дополнительных фильтрах
+
        "Type": "AirService"
***** '''Key''' – ключ
+
      }],
***** '''Code''' – код
+
      "DepartureCities": [      {
***** '''Name''' – наименование
+
        "key": 1,
***** '''NameLat''' – наименование латиницей
+
        "Country":          {
***** '''Group''' – группа
+
            "key": 460,
***** '''Type''' – тип (авиаперелет)
+
            "name": "Россия",
**** '''DepartureCities''' – города вылета в дополнительных фильтрах
+
            "Code": null,
***** '''key''' – ключ города
+
            "CitizenName": "Россия",
***** '''Country''' – страна
+
            "CitizenNameLat": "Russia",
****** '''key''' – ключ страны
+
            "PassportMinDurCheckFrom": 0,
****** '''name''' – наименование страны
+
            "CheckINN": true,
****** '''Code''' – код страны
+
            "PassportMinDur": null,
****** '''DigitCode''' – цифровой код
+
            "INNName": "ИНН",
****** '''Alpha2Code''' –
+
            "Web": 0,
****** '''Alpha3Code''' –
+
            "WebImage": "",
****** '''CitizenName''' – наименование страны
+
            "WebHTTP": "",
****** '''CitizenNameLat''' – наименование страны латиницей
+
            "AnkLang": 0,
****** '''PassportMinDurCheckFrom''' –
+
            "Type": "Country"
****** '''CheckINN''' – проверка ИНН
+
        },
****** '''PassportMinDur''' –
+
        "name": "Москва",
****** '''INNName''' –
+
        "Code": "MOW",
****** '''Web''' –
+
        "Web": 0,
****** '''WebImage''' – логотип страны
+
        "RSKey": 0,
****** '''WebHTTP''' – сайт
+
        "WebImage": null,
****** '''AnkLang''' –
+
        "IsDeparture": 1,
****** '''Key''' – ключ страны
+
        "Type": "City"
****** '''Type''' – тип (страна)
+
      }],
***** '''name''' – наименование города
+
      "DepartureAirports": [      {
***** '''Code''' – код города
+
        "Key": 52,
***** '''Web''' –
+
        "Code": "SVO4",
***** '''RSKey''' –
+
        "Name": "Шереметьево-24",
***** '''WebImage''' –
+
        "NameLat": "Шереметьево-",
***** '''IsDeparture''' –
+
        "CityKey": 1,
***** '''Key''' – ключ города
+
        "CountryKey": 460,
***** '''Type''' – тип (город)
+
        "Letter": "S",
**** '''DepartureAirports''' – аэропорты вылета в дополнительных фильтрах
+
        "Site": 0,
***** '''Key''' – ключ
+
        "Type": "Airport"
***** '''Code''' – код аэропорта
+
      }],
***** '''Name''' – наименование аэропорта
+
      "ArrivalCities": [      {
***** '''NameLat''' – наименование аэропорта латиницей
+
        "key": 1,
***** '''CityKey''' – ключ города
+
        "Country":          {
***** '''CountryKey''' – ключ страны
+
            "key": 460,
***** '''Letter''' – присвоенный символд
+
            "name": "Россия",
***** '''Site''' – сайт
+
            "Code": null,
***** '''Type''' – тип (аэропорт)
+
            "CitizenName": "Россия",
**** '''ArrivalCities''' – города прибытия в дополнительных фильтрах
+
            "CitizenNameLat": "Russia",
***** '''key''' – ключ города
+
            "PassportMinDurCheckFrom": 0,
***** '''Country''' – страна
+
            "CheckINN": true,
****** '''key''' – ключ страны
+
            "PassportMinDur": null,
****** '''name''' – наименование страны
+
            "INNName": "ИНН",
****** '''Code''' – код страны
+
            "Web": 0,
****** '''DigitCode''' – цифровой код
+
            "WebImage": "",
****** '''Alpha2Code''' –
+
            "WebHTTP": "",
****** '''Alpha3Code''' –
+
            "AnkLang": 0,
****** '''CitizenName''' – наименование страны
+
            "Type": "Country"
****** '''CitizenNameLat''' – наименование страны латиницей
+
        },
****** '''PassportMinDurCheckFrom''' –
+
        "name": "Москва",
****** '''CheckINN''' – проверка ИНН
+
        "Code": "MOW",
****** '''PassportMinDur''' –
+
        "Web": 0,
****** '''INNName''' –
+
        "RSKey": 0,
****** '''Web''' –
+
        "WebImage": null,
****** '''WebImage''' – логотип страны
+
        "IsDeparture": 1,
****** '''WebHTTP''' – сайт
+
        "Type": "City"
****** '''AnkLang''' –
+
      }],
****** '''Key''' – ключ страны
+
      "ArrivalAirports": [      {
****** '''Type''' – тип (страна)
+
        "Key": 12,
***** '''name''' – наименование города
+
        "Code": "DME",
***** '''Code''' – код города
+
        "Name": "Домодедово",
***** '''Web''' –
+
        "NameLat": "Домодедово",
***** '''RSKey''' –
+
        "CityKey": 1,
***** '''WebImage''' –
+
        "CountryKey": 460,
***** '''IsDeparture''' –
+
        "Letter": "D",
***** '''Key''' – ключ города
+
        "Site": 0,
***** '''Type''' – тип (город)
+
        "Type": "Airport"
**** '''ArrivalAirports''' – аэропорты прибытия в дополнительных фильтрах
+
      }],
***** '''Key''' – ключ аэропорта
+
      "HotelTypes":      [
***** '''Code''' – код аэропорта
+
                  {
***** '''Name''' – наименование аэропорта
+
            "key": 94,
***** '''NameLat''' – наименование аэропорта латиницей
+
            "name": "Молодежный отдых",
***** '''CityKey''' – ключ города
+
            "Type": "HotelType"
***** '''CountryKey''' – ключ страны
+
        },
***** '''Letter''' – буква аэропорта
+
                  {
***** '''Site''' – сайт
+
            "key": 5,
***** '''Type''' – тип (аэропорт)
+
            "name": "Рекомендуемые",
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах
+
            "Type": "HotelType"
***** '''key''' – ключ
+
        }
***** '''name''' – обозначение
+
      ]
***** '''Type''' – тип (отель)
+
  }
**** '''ComplexHotelIds''' –
+
}
**** '''Message''' – сообщение
+
</syntaxhighlight>
***** '''Key''' – ключ
+
</TD></TR></TABLE>
***** '''Value''' – значение
+
</div></div><br />
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
===Поиск туров онлайн (TourForWeb)===
<div class="mw-collapsible-content">
+
Метод поиска туров использует множество параметров для поиска и фильтрации туров. Метод возвращает наиболее дешевые предложения, найденные по предоставленным параметрам и сгруппированные по отелям в порядке возрастания цены. В зависимости от параметров запроса, дополнительных фильтров формат запроса имеет отличия. Метод используется  при работе веб-приложения Canary.
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
* Обычный формат запроса GET:
Вызов метода TourForWeb
+
** GET .../TourSearchOwin/TourForWeb/search/simple?
<syntaxhighlight lang="java" enclose="div">
+
* Принимаемые параметры ( '''*''' – обязательный):
GET http://dev4-04:9000/TourSearchOwin/TourForWeb/search/simple?DepartureCityKeys=1&Dates=25.10.2021
+
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
&Durations=5&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&ShowToursWithoutHotels=-
+
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
1&isFromBasket=false&isFillSecondaryFilters=false&DestinationType=1&DestinationKey=90&AdultCount=
+
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
2&CurrencyName=%D1%80%D0%B1&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&TourType=-1&CityIds=-1&
+
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00&TimeArrivalTo=23
+
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
%3A59&SearchId=2&MatrixAlgoritm=false&wrongLicenseFileUpperTitle=Incorrect+license+file.&
+
** '''HotelScheme''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры:
RemoteHotelMode=0&_=1633953386754 HTTP/1.1
+
*** '''TemplateId''' – идентификатор шаблона услуги (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Key->TemplateId),
</syntaxhighlight>
+
*** '''DurationInNight''' – продолжительность отеля в ночах (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->DurationInNight),
Возвращаемый результат метода TourForWeb (в формате JSON)
+
*** '''Code''' – ключ отеля (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->Code),
<syntaxhighlight lang="java" enclose="div">
+
*** '''PacketKey''' – ключ пакета (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PacketId), 
{
+
*** '''PartnerKey''' – ключ партнера (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PartnerId),
  "Result": [
+
*** '''GDSProviderId''' – ключ провайдера из внешней системы (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->GDSProviderId),
    {
+
*** '''TotalTourDuration''' – общая продолжительность тура в днях (этот параметр можно взять из контроллера Tour->Result->Duration)
      "Key": 100011112,
+
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
      "Name": "EFREHolland",
+
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
      "TourUrl": null,
+
** '''ShowToursWithoutHotels''' – показывать ли туры без проживания
      "BookingConditions": null,
+
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false).
      "DefaultManagers": [],
+
** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
      "Manager": 106,
+
** '''DestinationType *''' –
      "Branches": [],
 
      "DetermineTheBranchOnCity": false,
 
      "StartDate": "2021-10-18T00:00:00",
 
      "Duration": 6,
 
      "DurationInNight": 5,
 
      "Types": [
 
        45
 
      ],
 
      "Cost": 620,
 
      "Rate": "рб",
 
      "CityDepature": {
 
        "Key": 312,
 
        "Value": "Астрахань"
 
      },
 
      "CountryId": 1,
 
      "Services": [
 
        {
 
          "DepartureCity": {
 
            "Key": 312,
 
            "Value": "Астрахань"
 
          },
 
          "DepartureCountry": {
 
            "Key": 460,
 
            "Value": "Россия"
 
          },
 
          "ArrivalCity": {
 
            "Key": 62,
 
            "Value": "Амстердам"
 
          },
 
          "ArrivalCountry": {
 
            "Key": 1,
 
            "Value": "Голландия"
 
          },
 
          "DepartureAirport": {
 
            "Key": "ASF",
 
            "Value": "Астрахань"
 
          },
 
          "ArrivalAirport": {
 
            "Key": "EH9",
 
            "Value": "AMST"
 
          },
 
          "Airline": {
 
            "Id": 43,
 
           
 
 
           },
 
           },
           "name": "Амстердам",
+
           "ArrivalCity": {
          "Code": "AMS",
+
            "Key": 62,
          "Web": 0,
+
            "Value": "Амстердам"
          "RSKey": 0,
+
           },
           "WebImage": null,
+
           "ArrivalCountry": {
           "IsDeparture": 1,
+
            "Key": 1,
          "Key": 62,
+
            "Value": "Голландия"
          "Type": "City"
+
          },
        },
+
          "DepartureAirport": {
        "Resort": null,
+
            "Key": "ASF",
        "ResortKey": 0,
+
            "Value": "Астрахань"
        "Name": "Hotel 4",
+
           },
        "Category": {
+
           "ArrivalAirport": {
          "Name": "1*++",
+
            "Key": "EH9",
           "PrintNumber": 23,
+
            "Value": "AMST"
           "GlobalCode": "1*",
+
          },
          "Key": 23,
+
          "Airline": {
          "Type": "HotelCategory"
+
            "Id": 43,
        },
+
            "Value": "МАУ",
        "CategoryKey": 23,
+
            "Key": "PS"
        "TimeFrom": null,
+
          },
        "TimeTo": null,
+
          "Aircraft": {
        "HTTP": "https://aniconrus.ru/ru/",
+
            "Key": "133",
        "Stars": "1*++",
+
            "Value": "13131313"
        "TimeIsEmpty": true,
+
          },
        "NameLat": "Hotel 4",
+
          "Flight": {
        "Address": "",
+
            "Key": 2111,
        "IsCruise": 0,
+
            "Value": "9117"
        "Phone": null,
+
          },
        "Email": "",
+
          "DepartureTime": "17:05:00",
        "Fax": null,
+
          "ArrivalTime": "20:05:00",
        "Code": null,
+
          "TotalTimeOfFlight": 420,
        "Site": 0,
+
          "FlightDetails": [
        "Descript": "",
+
            {
        "PayHourNote": null,
+
              "Tariff": {
        "EarlyCheckInSurcharge": 0,
+
                "Key": 339,
        "LateCheckOutSurcharge": 0,
+
                "Code": "14",
        "Latitude": null,
+
                "Name": "14"
        "Longitude": null,
+
              },
        "DescExcur": "",
+
              "IsCommission": true,
        "DescSport": "",
+
              "Cost": 0,
        "DescHealth": "",
+
              "QuotaStatus": {
        "DescService": "",
+
                "PlacesStatus": 4,
        "Key": 238,
+
                "FreePlaces": 0,
        "Type": "Hotel"
+
                "IsFewPlaces": false
      }
+
              },
    ],
+
              "PartnerId": 12685,
    "Pansions": [
+
              "ByPax": true,
      {
+
              "Partner": {
        "Code": "FB",
+
                "Key": 0,
        "Name": "Полный пансион",
+
                "Value": null
        "NameLat": null,
+
              }
        "GlobalCode": null,
+
            }
        "Key": 1,
+
          ],
        "Type": "Pansion"
+
          "FlightSetting": {
      }
+
            "ServiceId": 1,
    ],
+
            "PatternId": 30,
    "Airlines": [
+
            "FlightId": 30
      {
+
           },
        "Key": 43,
+
           "FlightSourceMode": 1,
        "Code": "PS",
+
           "Id": 1,
        "ICAO": null,
+
           "SvKey": 1,
        "Name": "МАУ",
+
           "IsSubCode1": true,
        "NameLat": "en_Ukrainian Airlanes",
+
           "IsSubCode2": false,
        "Type": "AirLine"
+
           "IsPartnerBasedOn": false,
      },
+
           "Day": 1,
      {
+
           "DurationInNight": 0,
        "Key": 304,
+
           "BeginDateTime": "2021-10-18T17:05:00",
        "Code": "AUF",
+
           "EndDateTime": "2021-10-18T20:05:00",
        "ICAO": null,
+
           "IsHooded": false,
        "Name": "АЭРОФЛОТ",
+
           "IsDeleted": false,
        "NameLat": null,
+
           "IsNotCalculate": false,
        "Type": "AirLine"
+
           "PacketId": 1462,
      }
+
           "Index": 0
    ],
 
    "FlightTariffs": [
 
      {
 
        "Key": 339,
 
        "Code": "14",
 
        "Name": "14",
 
        "NameLat": null,
 
        "Group": null,
 
        "Type": "AirService"
 
      }
 
    ],
 
    "DepartureCities": [
 
      {
 
        "key": 312,
 
        "Country": {
 
          "key": 460,
 
          "name": "Россия",
 
           "Code": "RU",
 
           "DigitCode": "643",
 
           "Alpha2Code": "RU",
 
           "Alpha3Code": "RUS",
 
           "CitizenName": "Россия",
 
           "CitizenNameLat": null,
 
           "PassportMinDurCheckFrom": 0,
 
           "CheckINN": true,
 
           "PassportMinDur": 0,
 
           "INNName": "ИНН",
 
           "Web": 0,
 
           "WebImage": "",
 
           "WebHTTP": "",
 
           "AnkLang": 0,
 
           "Key": 460,
 
           "Type": "Country"
 
 
         },
 
         },
         "name": "Астрахань",
+
         {
        "Code": "",
+
          "DepartureCity": {
        "Web": 0,
+
            "Key": 62,
        "RSKey": null,
+
            "Value": "Амстердам"
        "WebImage": null,
+
          },
        "IsDeparture": 1,
+
          "DepartureCountry": {
        "Key": 312,
+
            "Key": 1,
        "Type": "City"
+
            "Value": "Голландия"
      }
+
          },
    ],
+
          "ArrivalCity": {
    "DepartureAirports": [
+
            "Key": 312,
      {
+
            "Value": "Астрахань"
        "Key": 168,
+
          },
        "Code": "ASF",
+
          "ArrivalCountry": {
        "Name": "Астрахань",
+
            "Key": 460,
        "NameLat": null,
+
            "Value": "Россия"
        "CityKey": 312,
+
          },
        "CountryKey": 460,
+
          "DepartureAirport": {
        "Letter": null,
+
            "Key": "EH9",
        "Site": null,
+
            "Value": "AMST"
        "Type": "Airport"
+
          },
      }
+
          "ArrivalAirport": {
    ],
+
            "Key": "ASF",
    "ArrivalCities": [
+
            "Value": "Астрахань"
      {
+
          },
        "key": 312,
+
          "Airline": {
        "Country": {
+
            "Id": 304,
          "key": 460,
+
            "Value": "АЭРОФЛОТ",
          "name": "Россия",
+
            "Key": "AUF"
           "Code": "RU",
+
          },
          "DigitCode": "643",
+
           "Aircraft": {
          "Alpha2Code": "RU",
+
            "Key": "330",
           "Alpha3Code": "RUS",
+
            "Value": "aerobus A-330"
          "CitizenName": "Россия",
+
          },
           "CitizenNameLat": null,
+
           "Flight": {
           "PassportMinDurCheckFrom": 0,
+
            "Key": 2080,
          "CheckINN": true,
+
            "Value": "9000"
           "PassportMinDur": 0,
+
          },
           "INNName": "ИНН",
+
           "DepartureTime": "09:59:00",
          "Web": 0,
+
           "ArrivalTime": "12:59:00",
          "WebImage": "",
+
           "TotalTimeOfFlight": -60,
          "WebHTTP": "",
+
           "FlightDetails": [
          "AnkLang": 0,
+
            {
          "Key": 460,
+
              "Tariff": {
          "Type": "Country"
+
                "Key": 339,
        },
+
                "Code": "14",
        "name": "Астрахань",
+
                "Name": "14"
        "Code": "",
+
              },
        "Web": 0,
+
              "IsCommission": true,
        "RSKey": null,
+
              "Cost": 0,
        "WebImage": null,
+
              "QuotaStatus": {
        "IsDeparture": 1,
+
                "PlacesStatus": 4,
        "Key": 312,
+
                "FreePlaces": 0,
        "Type": "City"
+
                "IsFewPlaces": false
      }
+
              },
    ],
+
              "PartnerId": 12685,
    "ArrivalAirports": [
+
              "ByPax": true,
      {
+
              "Partner": {
        "Key": 168,
+
                "Key": 0,
        "Code": "ASF",
+
                "Value": null
        "Name": "Астрахань",
+
              }
        "NameLat": null,
+
            }
        "CityKey": 312,
+
          ],
        "CountryKey": 460,
+
          "FlightSetting": {
        "Letter": null,
+
            "ServiceId": 2,
        "Site": null,
+
            "PatternId": 1,
        "Type": "Airport"
+
            "FlightId": 0
      }
+
          },
    ],
+
          "FlightSourceMode": 1,
    "HotelTypes": [
+
          "Id": 2,
      {
+
          "SvKey": 1,
        "key": 290,
+
          "IsSubCode1": true,
        "name": "ALEXXZ",
+
          "IsSubCode2": false,
        "Type": "HotelType"
+
          "IsPartnerBasedOn": false,
      }
+
          "Day": 2,
    ],
+
          "DurationInNight": 0,
    "ComplexHotelIds": []
+
          "BeginDateTime": "2021-10-19T09:59:00",
  },
+
          "EndDateTime": "2021-10-19T12:59:00",
  "Message": {
+
          "IsHooded": false,
    "Key": 0,
+
          "IsDeleted": false,
    "Value": null
+
          "IsNotCalculate": false,
  }
+
          "PacketId": 1462,
}
+
          "Index": 1
</syntaxhighlight>
+
        },
</TD></TR></TABLE>
+
        {
</div></div><br />
+
          "Hotel": {
 
+
            "Key": 238,
* Формат запроса GET с таблицей цен:
+
            "Value": "Hotel 4"
** GET .../TourSearchOwin/TourForWeb/search/matrix?
+
          },
* Принимаемые параметры ( '''*''' – обязательный):
+
          "City": {
Аналогичны стандартному запросу (simple)
+
            "Key": 62,
* Возвращаемый результат:
+
            "Value": "Амстердам"
** '''CellsForMatrix''' – ячейки таблицы
+
          },
*** '''Key''' – ключ
+
          "Stars": {
*** '''StartDate''' – дата начала
+
            "Key": 23,
*** '''Duration''' – продолжительность
+
            "Value": "1*++"
*** '''DurationInNight''' – количество ночей
+
          },
*** '''Cost''' – цена
+
          "StarsGlobalCode": {
** '''CitiesWithMinimalCosts''' – города с минимальной ценой
+
            "Key": 23,
*** '''DepartureCityKey''' – ключ города отправления
+
            "Value": "1*"
*** '''ArrivalCityKey''' – ключ города прибытия
+
          },
*** '''DepartureCityName''' – наименование города отправления
+
          "Resort": {
*** '''ArrivalCityName''' – наименование города прибытия
+
            "Key": -1,
*** '''RouteMinimalPrice''' – минимальная цена маршрута
+
            "Value": null
** '''TourMinimalAndMaximalCost''' – минимальная и максимальная цены тура
+
          },
*** '''MinimalPrice''' – минимальная цена
+
          "ImageURL": "",
*** '''MaximalPrice''' – максимальная цена
+
          "Http": "https://aniconrus.ru/ru/",
 
+
          "Description": "",
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
          "Latitude": null,
<div class="mw-collapsible-content">
+
          "Longitude": null,
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
          "Country": {
Вызов метода TourForWeb
+
            "Key": 1,
<syntaxhighlight lang="java" enclose="div">
+
            "Value": "Голландия"
GET http://localhost:9000/TourSearchOwin/TourForWeb/search/matrix?DepartureCityKeys=1&Dates=18.10.2021
+
          },
&Durations=6&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&ShowToursWithoutHotels=
+
          "HotelDetails": [
-1&isFromBasket=false&isFillSecondaryFilters=false&DestinationType=1&DestinationKey=90&AdultCount=
+
            {
2&CurrencyName=%D1%80%D0%B1&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&TourType=-1&CityIds=35&
+
              "HotelRoom": 1085918,
TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00&TimeArrivalTo=23%3A59&
+
              "Room": {
SearchId=1&MatrixAlgoritm=true&wrongLicenseFileUpperTitle=Incorrect+license+file.&RemoteHotelMode=0&_
+
                "Key": 141,
=1634028589340
+
                "Value": "2AD"
</syntaxhighlight>
+
              },
Возвращаемый результат метода TourForWeb (в формате JSON)
+
              "RoomCategory": {
<syntaxhighlight lang="java" enclose="div">
+
                "Key": 2905,
{
+
                "Value": "Double"
  "CellsForMatrix": [
+
              },
    {
+
              "AccomodationType": {
      "Key": 100011079,
+
                "Key": 1172,
      "StartDate": "2021-10-18T00:00:00",
+
                "Value": "2AD",
      "Duration": 6,
+
                "AdultCount": 2,
      "DurationInNight": 5,
+
                "ChildCount": 0
      "Cost": 1218
+
              },
    }
+
              "Pansion": {
  ],
+
                "Key": 1,
  "CitiesWithMinimalCosts": [
+
                "Value": "Полный пансион"
    {
+
              },
      "DepartureCityKey": 1,
+
              "PansionGlobalCode": {
      "ArrivalCityKey": 35,
+
                "Key": 1,
      "DepartureCityName": "Москва",
+
                "Value": null
      "ArrivalCityName": "Вена",
+
              },
      "RouteMinimalPrice": 1218
+
              "RemoteId": null,
    }
+
              "Cost": 0,
  ],
+
              "QuotaStatus": {
  "TourMinimalAndMaximalCost": {
+
                "PlacesStatus": 4,
    "MinimalPrice": 1218,
+
                "FreePlaces": 0,
    "MaximalPrice": 53227
+
                "IsFewPlaces": false
  }
+
              },
}
+
              "PartnerId": 12685,
</syntaxhighlight>
+
              "ByPax": true,
</TD></TR></TABLE>
+
              "Partner": {
</div></div><br />
+
                "Key": 12685,
 
+
                "Value": " ПКЦ"
* Формат запроса GET с минимальной и максимальной ценой:
+
              }
** GET .../TourSearchOwin/TourForWeb/search/minMaxPrices?
+
            }
* Принимаемые параметры ( '''*''' – обязательный):
+
          ],
Аналогичны стандартному запросу (simple)
+
          "HotelTypes": [
* Возвращаемый результат:
+
            {
** '''MinimalPrice''' – минимальная цена
+
              "Key": 290,
** '''MaximalPrice''' – максимальная цена
+
              "Value": "ALEXXZ"
 
+
            }
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
          ],
<div class="mw-collapsible-content">
+
          "RemoteId": null,
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
          "COAndSpecialsInfo": {
Вызов метода TourForWeb
+
            "AppliedCostOffersKeys": [
<syntaxhighlight lang="java" enclose="div">
+
              21706
GET http://localhost:9000/TourSearchOwin/TourForWeb/search/minMaxPrices?DepartureCityKeys=1&Dates=18.10.2021
+
            ],
&Durations=6&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&ShowToursWithoutHotels=
+
            "AppliedSpeciasInfo": null
-1&isFromBasket=false&isFillSecondaryFilters=false&DestinationType=1&DestinationKey=90&AdultCount=
+
          },
2&CurrencyName=%D1%80%D0%B1&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&TourType=-1&CityIds=35&Time
+
          "Id": 3,
DepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00&TimeArrivalTo=23%3A59&SearchId
+
          "SvKey": 3,
=1&SearchMaxPriceAlgoritm=false&MatrixAlgoritm=true&wrongLicenseFileUpperTitle=Incorrect+license+file.
+
          "IsSubCode1": true,
&RemoteHotelMode=0&_
+
          "IsSubCode2": true,
=1634028589340
+
          "IsPartnerBasedOn": false,
</syntaxhighlight>
+
          "Day": 2,
Возвращаемый результат метода TourForWeb (в формате JSON)
+
          "DurationInNight": 4,
<syntaxhighlight lang="java" enclose="div">
+
          "BeginDateTime": "2021-10-19T12:59:00",
{
+
          "EndDateTime": "2021-10-23T12:59:00",
  "MinimalPrice": 1218,
+
          "IsHooded": false,
  "MaximalPrice": 285618
+
          "IsDeleted": false,
}
+
          "IsNotCalculate": false,
</syntaxhighlight>
+
          "PacketId": 1462,
</TD></TR></TABLE>
+
          "Index": 2
</div></div><br />
+
        }
 
+
      ],
===Проверка дублирующих туристов (CheckDoubleDogovor)===
+
      "NotRouteServices": [],
Метод проверяет есть ли дублирующие туристы в существующих путевках. Проверка на дублирование регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки#Общие настройки|Предупреждать при дублировании туристов]].
+
      "MinCostServicesComposition": [
* Формат запроса POST:
+
        {
** POST .../TourSearchOwin/CheckDoubleDogovor
+
          "Key": {
* Принимаемые параметры ( '''*''' – обязательный):
+
            "TemplateId": 1,
** '''TourProgramId''' – ключ турпрограммы
+
            "PatternId": 30,
** '''BeginDate''' – дата начала тура
+
            "SettingId": 30
** '''Duration''' – продолжительность тура
+
          },
** '''Currency''' – код валюты
+
          "Value": {
** '''Services''' – массив услуг авиаперелетов для получения доплат
+
            "ServiceType": 1,
*** '''Service''' – объект услуга авиаперелет
+
            "Code": 2111,
**** '''ServiceType''' – тип услуги
+
            "SubCode1": 339,
**** '''Code''' – код услуги
+
            "SubCode2": 312,
**** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] услуги
+
            "PacketId": 1462,
**** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] услуги
+
            "PartnerId": 12685,
**** '''Packet''' – ключ пакета услуги
+
            "CountryId": 1,
**** '''Partner''' – ключ партнера услуги
+
            "CityId": 62,
**** '''Day''' – день предоставления услуги
+
            "Day": 1,
**** '''DurationInNight''' – продолжительность услуги в ночах
+
            "DurationInNight": 0,
**** '''City''' – ключ города
+
            "GDSProviderId": null,
**** '''Country''' – страна услуги
+
            "COAndSpecialsInfo": {
**** '''Attributes''' – битовая маска атрибутов услуг
+
              "AppliedCostOffersKeys": null,
**** '''IsRemovable''' – (не обрабатывается)
+
              "AppliedSpeciasInfo": null
**** '''Type''' – тип услуги в путевке (базовая дополнительная)
+
            },
**** '''IsHooded''' – признак скрытая услуга
+
            "COBySubCode": [
**** '''IsNotCalculated''' – признак не рассчитываемая услуга
+
              21756
**** '''BeginDateTimeString''' – дата и время начала услуги
+
            ],
**** '''EndDateTimeString''' – дата и время окончания услуги
+
            "SpecialsBySubCode": null
**** '''TemplateId''' – шаблон услуги
+
          }
**** '''Cost''' – цена услуги
+
        },
**** '''ByPax''' – цена за человека
+
        {
**** '''QuotaStatus''' – объект статус квотирования
+
          "Key": {
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)
+
            "TemplateId": 2,
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
+
            "PatternId": 1,
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
+
            "SettingId": 0
**** '''Index''' – индекс услуги
+
          },
**** '''IsRoute''' – признак маршрутная услуга
+
          "Value": {
**** '''ServiceTemplateIndex''' – индекс шаблона услуги
+
            "ServiceType": 1,
**** '''RemoteId''' – информация об услуге во внешней системе
+
            "Code": 2080,
**** '''IsCommission''' – признак, комиссионная ли услуга
+
            "SubCode1": 339,
**** '''BaseFlightsParams''' – параметры рассчитанных авиаперелетов
+
            "SubCode2": 62,
***** '''CityArrival''' – ключ города прибытия прямого перелета
+
            "PacketId": 1462,
***** '''FlightCode''' – ключ прямого авиаперелета
+
            "PartnerId": 12685,
***** '''TariffKey''' – ключ тарифа прямого авиаперелета
+
            "CountryId": 460,
***** '''PartnerId''' – ключ партнера прямого авиаперелета
+
            "CityId": 312,
*** '''TouristNumbersList''' – массив туристов, привязанных к услуге
+
            "Day": 2,
** '''Tourists''' – массив туристов
+
            "DurationInNight": 0,
*** '''IsMain''' – главный турист
+
            "GDSProviderId": null,
*** '''Number''' – порядковый номер туриста
+
            "COAndSpecialsInfo": {
*** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
+
              "AppliedCostOffersKeys": null,
*** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
+
              "AppliedSpeciasInfo": null
*** '''FirstName''' – имя (лат)
+
            },
*** '''LastName''' – фамилия (лат)
+
            "COBySubCode": [
*** '''Patronymic''' – отчество (лат)
+
              21705
*** '''FirstNameRus''' – имя (рус)
+
            ],
*** '''LastNameRus''' – фамилия (рус)
+
            "SpecialsBySubCode": null
*** '''PatronymicRus''' – отчество (рус)
+
          }
*** '''InternationalPassportSeries''' – серия загранпаспорта
+
        },
*** '''InternationalPassportNumber''' – номер загранпаспорта
+
        {
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
+
          "Key": {
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY)
+
            "TemplateId": 3,
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
+
            "PatternId": 0,
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY)
+
            "SettingId": 0
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
+
          },
*** '''PassportSeries''' – серия паспорта
+
          "Value": {
*** '''PassportNumber''' – номер паспорта
+
            "ServiceType": 3,
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
+
            "Code": 238,
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строковом формате (DD.MM.YYYY)
+
            "SubCode1": 1085918,
*** '''PassportByWhom''' – кем выдан паспорт
+
            "SubCode2": 1,
*** '''Citizenship''' – название страны
+
            "PacketId": 1462,
*** '''Phone''' – телефон
+
            "PartnerId": 12685,
*** '''Email''' – e-mail
+
            "CountryId": 1,
*** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
+
            "CityId": 62,
*** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
+
            "Day": 2,
*** '''BirthPlace''' – место рождения
+
            "DurationInNight": 4,
*** '''CitizenID''' – ID туриста (задается в карточке постоянного клиента)
+
            "GDSProviderId": null,
*** '''Age''' – количество полных лет на момент окончания тура
+
            "COAndSpecialsInfo": {
** '''TechnicalProblemsDuringUpdateFlights''' – технические проблемы при обновлении рейсов
+
              "AppliedCostOffersKeys": null,
** '''TimeLimit''' – лимит времени
+
              "AppliedSpeciasInfo": null
** '''CountryKey''' – ключ страны
+
            },
** '''OwnerId''' – ключ ведущего менеджера (начиная с релиза 15.3). Если 0, то берется по умолчанию. Если по умолчанию не указан, то берется создатель тура.
+
            "COBySubCode": [
** '''Day''' – день
+
              21706
** '''Day2''' – дня
+
            ],
** '''Days''' – дней
+
            "SpecialsBySubCode": null
** '''Night''' – ночь
+
          }
** '''Night2''' – ночи
+
        }
** '''Nights''' – ночей
+
      ],
** '''adultsCountOverServiceLimit''' – Количество взрослых туристов превышает лимит услуги
+
      "FlightWeight": 2,
** '''incorrectChildrenInf''' – Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)
+
      "LinkingFlightsRules": {
* Возвращаемый результат:
+
        "notCombineDifferentAirlineRule": {
** '''Errors''' – описание ошибки
+
          "airlines": [],
** '''Warnings''' – предупреждение
+
          "flightSettings": [],
** '''States''' – статус
+
          "enabled": false
** '''IsValid''' – результат проверки подключения (true/false)
+
        },
 
+
        "checkPlusMinus1CharterRule": {
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
          "FlightSettingPairs": [],
<div class="mw-collapsible-content">
+
          "enabled": false
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
         },
Вызов метода CheckDoubleDogovor
+
         "notCombineDifferentTariffGroupRule": {
<syntaxhighlight lang="java" enclose="div">
+
          "FlightSettings": [],
POST http://localhost:9000/TourSearchOwin/CheckDoubleDogovor
+
          "enabled": false
{
+
         },
  "TourProgramId": 100011112,
+
         "notCombineDifferentPartnerRule": {
  "BeginDate": "2021-10-18T17:05:00",
+
          "FlightSettings": [],
  "Duration": 6,
+
          "enabled": false
  "Currency": "рб",
+
         },
  "Services": [
+
         "departureCityEqualsArrivalCityRule": {
    {
+
          "FlightSettingPairs": [],
      "Service": {
+
           "enabled": false
         "ServiceType": 3,
 
         "Code": 238,
 
        "SubCode1": 1085918,
 
        "SubCode2": 1,
 
         "Packet": 1462,
 
         "Partner": 12685,
 
        "Day": 2,
 
        "DurationInNight": 4,
 
         "City": 62,
 
         "Country": 1,
 
        "Attributes": 0,
 
        "IsRemovable": false,
 
        "Type": 1,
 
        "IsHooded": false,
 
        "IsNotCalculated": false,
 
        "BeginDateTimeString": "2021-10-19T14:59:00",
 
        "EndDateTimeString": "2021-10-23T14:59:00",
 
        "TemplateId": 3,
 
        "Cost": 0,
 
        "ByPax": true,
 
        "QuotaStatus": {
 
          "PlacesStatus": 4,
 
          "FreePlaces": 0,
 
           "IsFewPlaces": false
 
 
         },
 
         },
         "Index": 2,
+
         "combineOnlySpecificChartersRule": {
        "IsRoute": true,
+
          "settings": [],
        "ServiceTemplateIndex": 2,
+
           "enabled": false
        "RemoteId": null,
+
        }
        "IsCommission": true,
 
        "BaseFlightsParams": [
 
          {
 
            "CityArrival": 62,
 
            "FlightCode": 2111,
 
            "TariffKey": 339,
 
            "PartnerId": 12685
 
           },
 
          {
 
            "CityArrival": 312,
 
            "FlightCode": 2080,
 
            "TariffKey": 339,
 
            "PartnerId": 12685
 
          }
 
        ]
 
 
       },
 
       },
       "TouristNumbersList": [
+
       "RouteSubVariants": [],
         1,
+
      "Routes": 15,
         2
+
      "IsRemoteHotels": false
       ]
+
],
     },
+
  "SecondaryFiltersResult": {
     {
+
    "TourTypes": [
      "Service": {
+
      {
         "ServiceType": 1,
+
         "Id": 45,
         "Code": 2111,
+
        "Name": "Индивидуальный тур",
         "SubCode1": 339,
+
        "ParentId": null,
         "SubCode2": 312,
+
         "Type": "TourType"
         "Packet": 1462,
+
       }
         "Partner": 12685,
+
     ],
         "Day": 1,
+
     "TourPrograms": [
         "DurationInNight": 0,
+
      {
         "City": 62,
+
        "Key": 100011112,
         "Country": 1,
+
        "Name": "EFREHolland",
         "Attributes": 0,
+
         "TourUrl": null,
         "IsRemovable": false,
+
         "BookingConditions": null,
         "Type": 1,
+
         "DefaultManagers": [],
         "IsHooded": false,
+
         "Manager": 106,
         "IsNotCalculated": false,
+
         "Branches": [],
         "BeginDateTimeString": "2021-10-18T17:10:00",
+
         "DetermineTheBranchOnCity": false,
         "EndDateTimeString": "2021-10-18T20:20:00",
+
         "IsLandOnly": false,
         "TemplateId": 1,
+
         "IsApplyMarginAddCostToRemoteService": true,
         "Cost": 0,
+
         "IsRestrictMultiHotels": false,
        "ByPax": true,
+
         "IsHotelTemplates": true,
         "QuotaStatus": {
+
         "IsRouteServices": true,
           "PlacesStatus": 4,
+
         "IsAviaBooking": false,
           "FreePlaces": 0,
+
         "MultiHotelDelta": 0,
          "IsFewPlaces": false
+
         "Rate": "рб",
 +
         "RateId": 14,
 +
         "DateStart": "2021-08-01T00:00:00Z",
 +
         "DateEnd": "2021-12-31T00:00:00Z",
 +
         "DateList": [],
 +
         "UpdateDate": "2021-10-01T14:56:14.44",
 +
         "Status": {
 +
           "Key": 3,
 +
           "Value": "Доступен для продажи"
 
         },
 
         },
         "Index": 0,
+
         "Templates": [
        "IsRoute": true,
 
        "ServiceTemplateIndex": 0,
 
        "IsCommission": true,
 
        "BaseFlightsParams": [
 
 
           {
 
           {
             "CityArrival": 62,
+
             "$id": "1"
            "FlightCode": 2111,
 
            "TariffKey": 339,
 
            "PartnerId": 12685
 
 
           },
 
           },
 
           {
 
           {
             "CityArrival": 312,
+
             "$id": "2"
            "FlightCode": 2080,
 
            "TariffKey": 339,
 
            "PartnerId": 12685
 
          }
 
        ]
 
      },
 
      "TouristNumbersList": [
 
        1,
 
        2
 
      ]
 
    },
 
    {
 
      "Service": {
 
        "ServiceType": 1,
 
        "Code": 2080,
 
        "SubCode1": 339,
 
        "SubCode2": 62,
 
        "Packet": 1462,
 
        "Partner": 12685,
 
        "Day": 2,
 
        "DurationInNight": 0,
 
        "City": 312,
 
        "Country": 460,
 
        "Attributes": 0,
 
        "IsRemovable": false,
 
        "Type": 1,
 
        "IsHooded": false,
 
        "IsNotCalculated": false,
 
        "BeginDateTimeString": "2021-10-19T09:59:00",
 
        "EndDateTimeString": "2021-10-19T12:59:00",
 
        "TemplateId": 2,
 
        "Cost": 0,
 
        "ByPax": true,
 
        "QuotaStatus": {
 
          "PlacesStatus": 4,
 
          "FreePlaces": 0,
 
          "IsFewPlaces": false
 
        },
 
        "Index": 1,
 
        "IsRoute": true,
 
        "ServiceTemplateIndex": 1,
 
        "IsCommission": true,
 
        "BaseFlightsParams": [
 
          {
 
            "CityArrival": 62,
 
            "FlightCode": 2111,
 
            "TariffKey": 339,
 
            "PartnerId": 12685
 
 
           },
 
           },
 
           {
 
           {
             "CityArrival": 312,
+
             "$id": "3"
            "FlightCode": 2080,
 
            "TariffKey": 339,
 
            "PartnerId": 12685
 
 
           }
 
           }
         ]
+
         ],
      },
+
         "Types": [
      "TouristNumbersList": [
+
          {
        1,
+
            "Id": 45,
         2
+
            "Name": "Индивидуальный тур",
      ]
+
            "ParentId": null,
    }
+
            "Type": "TourType"
  ],
+
          }
  "Tourists": [
+
        ],
    {
+
        "LinkingFlightsRules": {
      "IsMain": true,
+
          "notCombineDifferentAirlineRule": {
      "Number": 1,
+
            "airlines": [],
      "AgeType": 0,
+
            "flightSettings": [],
      "MaleFemaleSex": 0,
+
            "enabled": false
      "FirstName": "ETYETY",
+
          },
      "LastName": "REYERYETY",
+
          "checkPlusMinus1CharterRule": {
      "Patronymic": "",
+
            "FlightSettingPairs": [],
      "FirstNameRus": "ETYETY",
+
            "enabled": false
      "LastNameRus": "REYERYETY",
+
          },
      "PatronymicRus": "",
+
          "notCombineDifferentTariffGroupRule": {
      "InternationalPassportSeries": "",
+
            "FlightSettings": [],
      "InternationalPassportNumber": "",
+
            "enabled": false
      "InternationalPassportDateOfIssue": "",
+
          },
      "InternationalPassportDateOfIssueString": "",
+
          "notCombineDifferentPartnerRule": {
      "InternationalPassportDateOfExpiry": "",
+
            "FlightSettings": [],
      "InternationalPassportDateOfExpiryString": "",
+
            "enabled": false
      "internationalPassportByWhom": "",
+
          },
      "PassportSeries": "",
+
          "departureCityEqualsArrivalCityRule": {
      "PassportNumber": "",
+
            "FlightSettingPairs": [],
      "PassportDateOfIssue": "",
+
            "enabled": false
      "PassportDateOfIssueString": "",
+
          },
      "PassportByWhom": "",
+
          "combineOnlySpecificChartersRule": {
      "Citizenship": "",
+
            "settings": [],
       "Phone": "",
+
            "enabled": false
      "Email": "",
+
          }
       "BirthDay": "1987-04-09T19:00:00.000Z",
+
        },
      "BirthDayString": "10.04.1987",
+
        "IsMultiHotel": false,
      "BirthPlace": "",
+
        "Type": "TourProgram"
      "CitizenID": "",
+
      }
      "Age": 34
+
    ],
    },
+
    "TourDurations": [
    {
+
      6
      "IsMain": false,
+
    ],
      "Number": 2,
+
    "TourDates": [
      "AgeType": 0,
+
       "2021-10-18T00:00:00"
      "MaleFemaleSex": 0,
+
    ],
      "FirstName": "ETYETY",
+
    "HotelCities": [
      "LastName": "ETYTY",
+
       {
      "Patronymic": "",
+
        "key": 62,
      "FirstNameRus": "ETYETY",
+
        "Country": {
      "LastNameRus": "ETYTY",
+
          "key": 1,
      "PatronymicRus": "",
+
          "name": "Голландия",
      "InternationalPassportSeries": "",
+
          "Code": "Hol",
      "InternationalPassportNumber": "",
+
          "DigitCode": "528",
      "InternationalPassportDateOfIssue": "",
+
          "Alpha2Code": "NL",
      "InternationalPassportDateOfIssueString": "",
+
          "Alpha3Code": "NLD",
      "InternationalPassportDateOfExpiry": "",
+
          "CitizenName": "Голландия",
      "InternationalPassportDateOfExpiryString": "",
+
          "CitizenNameLat": "Holland",
      "internationalPassportByWhom": "",
+
          "PassportMinDurCheckFrom": 0,
      "PassportSeries": "",
+
          "CheckINN": false,
      "PassportNumber": "",
+
          "PassportMinDur": 0,
      "PassportDateOfIssue": "",
+
          "INNName": "ИНН",
      "PassportDateOfIssueString": "",
+
          "Web": 0,
      "PassportByWhom": "",
+
          "WebImage": "ыяфаыуа",
       "Citizenship": "",
+
          "WebHTTP": "",
      "Phone": "",
+
          "AnkLang": 0,
      "Email": "",
+
          "Key": 1,
      "BirthDay": "1987-04-09T19:00:00.000Z",
+
          "Type": "Country"
      "BirthDayString": "10.04.1987",
+
        },
      "BirthPlace": "",
+
        "name": "Амстердам",
       "CitizenID": "",
+
        "Code": "AMS",
      "Age": 34
+
        "Web": 0,
    }
+
        "RSKey": 0,
  ],
+
        "WebImage": null,
  "TechnicalProblemsDuringUpdateFlights": false,
+
        "IsDeparture": 1,
  "TimeLimit": null,
+
        "Key": 62,
  "CountryKey": 1,
+
        "Type": "City"
  "OwnerId": 106,
+
      }
  "Day": "день",
+
    ],
  "Day2": "дня",
+
    "HotelResorts": [
  "Days": "дней",
+
       {
  "Night": "ночь",
+
        "CountryKey": -1,
  "Night2": "ночи",
+
        "Name": "Не указан",
  "Nights": "ночей",
+
        "NameLat": null,
  "adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги",
+
        "Key": -1,
  "incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)"
+
        "Type": "Resort"
}
+
      }
</syntaxhighlight>
+
    ],
Возвращаемый результат метода CheckDoubleDogovor (в формате JSON)
+
    "HotelCategories": [
<syntaxhighlight lang="java" enclose="div">
+
       {
{
+
        "Name": "1*++",
  "Errors": [],
+
        "PrintNumber": 23,
  "Warnings": null,
+
        "GlobalCode": "1*",
  "States": null,
+
        "Key": 23,
  "IsValid": true
+
        "Type": "HotelCategory"
}
+
      }
</syntaxhighlight>
+
    ],
</TD></TR></TABLE>
+
    "Hotels": [
</div></div><br />
+
      {
 
+
        "Country": {
==Дополнительные методы==
+
          "key": 1,
 
+
          "name": "Голландия",
===Выгрузка измененных турпрограмм (TourProgram) начиная с релиза 15.3===
+
          "Code": "Hol",
Метод производит выгрузку измененных турпрограмм, в которых были сделаны изменения с указанной даты и времени и повлияли на маршруты в турпрограмме. К таким изменениям относятся изменения страны и города начала поездки, страны и города по туру, типа тура. Изменения цен  по услугам не приводят к обновлению турпрограмме, такие турпрограммы в ответе не будут указаны. Турпрограммы, по которым статус ''Доступен для продажи'' сменился на другой за период, указанный в запросе, в ответе тоже не будут указаны.
+
          "DigitCode": "528",
* Формат запроса:
+
          "Alpha2Code": "NL",
** GET .../TourSearchOwin/TourProgram?
+
          "Alpha3Code": "NLD",
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
+
          "CitizenName": "Голландия",
** '''fromDateTime''' – дата (в формате ''dd.MM.yyyy HH:mm:ss''), начиная с которой будут выгружаться изменения,  
+
          "CitizenNameLat": "Holland",
 
+
          "PassportMinDurCheckFrom": 0,
* Возвращаемый результат:
+
          "CheckINN": false,
** '''Key''' – ключ программы туров
+
          "PassportMinDur": 0,
** '''Name''' – название программы туров
+
          "INNName": "ИНН",
** '''UpdateDate''' – дата последнего изменения программы туров (или связанных с ней компонентов)
+
          "Web": 0,
** '''routes''' – массив возможных маршрутов в данной программе туров
+
          "WebImage": "ыяфаыуа",
*** '''departureCountryKey''' – страна начала поездки (для каждой страны начала поездки в одной программе тура будет отдельный маршрут)
+
          "WebHTTP": "",
*** '''departureCityKey''' – город начала поездки (для каждого города начала поездки в одной программе тура будет отдельный маршрут)
+
          "AnkLang": 0,
*** '''destinationCountryKeys''' – страны по туру (если в туре несколько услуг класса отель и они в разных странах, то будут возвращаться все страны отелей)
+
          "Key": 1,
*** '''destinationCityKeys''' – города по туру (если в туре отели в нескольких городах, то будут возвращаться все города отелей)
+
          "Type": "Country"
*** '''tourTypeKeys''' – типы туров для данной программы туров
+
        },
 
+
        "City": {
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
          "key": 62,
<div class="mw-collapsible-content">
+
          "Country": {
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
            "key": 1,
Вызов метода TourProgram
+
            "name": "Голландия",
<syntaxhighlight lang="java" enclose="div">
+
            "Code": "Hol",
GET http://localhost:9000/TourSearchOwin/TourProgram?fromDateTime=20.08.2022 00:00:00
+
            "DigitCode": "528",
</syntaxhighlight>
+
            "Alpha2Code": "NL",
Возвращаемый результат метода TourProgram (в формате JSON)
+
            "Alpha3Code": "NLD",
<syntaxhighlight lang="java" enclose="div">
+
            "CitizenName": "Голландия",
[{
+
            "CitizenNameLat": "Holland",
"key": 100002353,
+
            "PassportMinDurCheckFrom": 0,
"name": "Турпрограмма в Австрию",
+
            "CheckINN": false,
"updateDate": "2018-09-25T13:48:13.847",
+
            "PassportMinDur": 0,
"routes": [{
+
            "INNName": "ИНН",
"departureCountryKey": 5,
+
            "Web": 0,
"departureCityKey": 218,
+
            "WebImage": "ыяфаыуа",
"destinationCountryKeys": [80],
+
            "WebHTTP": "",
"destinationCityKeys": [19,
+
            "AnkLang": 0,
1051,
+
            "Key": 1,
113],
+
            "Type": "Country"
"tourTypeKeys": [52]
+
          },
},
+
          "name": "Амстердам",
{
+
          "Code": "AMS",
"departureCountryKey": 5,
+
          "Web": 0,
"departureCityKey": 766,
+
          "RSKey": 0,
"destinationCountryKeys": [80],
+
          "WebImage": null,
"destinationCityKeys": [19,
+
          "IsDeparture": 1,
1051,
+
          "Key": 62,
113],
+
          "Type": "City"
"tourTypeKeys": [52]
+
        },
}]
+
        "Resort": null,
},
+
        "ResortKey": 0,
{
+
        "Name": "Hotel 4",
"Key": 100004452,
+
        "Category": {
"Name": "Турпрограмма в Англию"
+
          "Name": "1*++",
"UpdateDate": "2018-06-30T10:09:35.22"
+
          "PrintNumber": 23,
"routes": [{
+
          "GlobalCode": "1*",
"departureCountryKey": -1,
+
          "Key": 23,
"departureCityKey": -1,
+
          "Type": "HotelCategory"
"destinationCountryKeys": [80],
+
        },
"destinationCityKeys": [19],
+
        "CategoryKey": 23,
"tourTypeKeys": [52,
+
        "TimeFrom": null,
                35]
+
        "TimeTo": null,
}]
+
        "HTTP": "https://aniconrus.ru/ru/",
}]
+
        "Stars": "1*++",
</syntaxhighlight>
+
        "TimeIsEmpty": true,
</TD></TR></TABLE>
+
        "NameLat": "Hotel 4",
</div></div><br />
+
        "Address": "",
 
+
        "IsCruise": 0,
===Проверка построения маршрутов турпрограммы (CheckTourProgram)===
+
        "Phone": null,
Метод производит построение маршрутов турпрограмм (вызывается из проверки тура). Метод проверяет маршруты по турпрограммам с любым статусом (не только по статусу Доступен для подажи).
+
        "Email": "",
* Формат запроса:
+
        "Fax": null,
** GET .../TourSearchOwin/CheckTourProgram?
+
        "Code": null,
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
+
        "Site": 0,
** '''tourKey''' – ключ турпрограммы
+
        "Descript": "",
 
+
        "PayHourNote": null,
* Возвращаемый результат:
+
        "EarlyCheckInSurcharge": 0,
** '''Message''' – сообщение ''Начинаем строить маршрут.''
+
        "LateCheckOutSurcharge": 0,
** '''Message''' – сообщение ''Маршрутов по данной программе тура построилось'' – количество
+
        "Latitude": null,
** '''Message''' – сообщение ''Построено каркасов маршрутов (без конкретных отелей)'' – количество
+
        "Longitude": null,
 
+
        "DescExcur": "",
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
        "DescSport": "",
<div class="mw-collapsible-content">
+
        "DescHealth": "",
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
         "DescService": "",
Вызов метода CheckTourProgram
+
         "Key": 238,
<syntaxhighlight lang="java" enclose="div">
+
         "Type": "Hotel"
GET http://localhost:9000/TourSearchOwin/CheckTourProgram?tourKey=100007837
+
      }
</syntaxhighlight>
+
     ],
Возвращаемый результат метода CheckTourProgram (в формате JSON)
+
     "Pansions": [
<syntaxhighlight lang="java" enclose="div">
+
      {
[
+
         "Code": "FB",
    {
+
         "Name": "Полный пансион",
        "Message": "[startingMakingRouteUpper]",
+
        "NameLat": null,
         "MessageType": 0
+
        "GlobalCode": null,
    },
+
        "Key": 1,
    {
+
        "Type": "Pansion"
         "Message": "[routeCarcassesBuildWithoutSpecificHotelsUpper] - 10",
+
      }
         "MessageType": 1
+
    ],
     },
+
    "Airlines": [
     {
+
      {
         "Message": "[routesMadeByThisTourProgrammUpper] - 10",
+
        "Key": 43,
         "MessageType": 1
+
        "Code": "PS",
    }
+
        "ICAO": null,
]
+
        "Name": "МАУ",
</syntaxhighlight>
+
        "NameLat": "en_Ukrainian Airlanes",
</TD></TR></TABLE>
+
        "Type": "AirLine"
</div></div><br />
+
      },
 
+
      {
===Получение разметки формы для новой формы быстрого поиска (GetJavascriptFile)===
+
        "Key": 304,
Метод получает разметку формы для новой формы быстрого поиска.
+
        "Code": "AUF",
* Формат запроса:
+
        "ICAO": null,
** GET .../TourSearchOwin/GetJavascriptFile/Get?
+
        "Name": "АЭРОФЛОТ",
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
+
        "NameLat": null,
** '''name''' – имя файла
+
        "Type": "AirLine"
 
+
      }
* Возвращаемый результат:
+
    ],
** '''полученный файл'''
+
    "FlightTariffs": [
 
+
      {
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
        "Key": 339,
<div class="mw-collapsible-content">
+
        "Code": "14",
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
        "Name": "14",
Вызов метода GetJavascriptFile/Get
+
        "NameLat": null,
<syntaxhighlight lang="java" enclose="div">
+
        "Group": null,
GET http://localhost:9000/TourSearchOwin/GetJavascriptFile/Get?name=demoSearch.js
+
        "Type": "AirService"
</syntaxhighlight>
+
      }
Возвращаемый результат метода GetJavascriptFile/Get (в формате JSON)
+
    ],
<syntaxhighlight lang="java" enclose="div">
+
    "DepartureCities": [
[
+
      {
полученный файл demoSearch.js
+
        "key": 312,
]
+
        "Country": {
</syntaxhighlight>
+
          "key": 460,
</TD></TR></TABLE>
+
          "name": "Россия",
</div></div><br />
+
          "Code": "RU",
 
+
          "DigitCode": "643",
===Проверка подключения к внешним системам (GDSCheckConnection)===
+
          "Alpha2Code": "RU",
Метод производит проверку подключения к внешней системе.
+
          "Alpha3Code": "RUS",
* Формат запроса:
+
          "CitizenName": "Россия",
** POST .../TourSearchOwin/GDSCheckConnection?
+
          "CitizenNameLat": null,
 
+
          "PassportMinDurCheckFrom": 0,
* Принимаемые параметры headers ( '''*''' – обязательный):
+
          "CheckINN": true,
** '''Content-Type *''' – application/json
+
          "PassportMinDur": 0,
 
+
          "INNName": "ИНН",
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
+
          "Web": 0,
** '''adapterTypeName''' – адаптер
+
          "WebImage": "",
** '''id''' – ключ адаптера
+
          "WebHTTP": "",
** '''apiAddress''' – api-адрес
+
          "AnkLang": 0,
** '''settings''' – набор настроек (у каждого адаптера индивидуальный)
+
          "Key": 460,
*** '''Key''' – _Login
+
          "Type": "Country"
*** '''Value''' – логин
+
        },
*** '''Key''' – _Password
+
        "name": "Астрахань",
*** '''Value''' – пароль
+
        "Code": "",
*** '''Key''' – _UserID
+
        "Web": 0,
*** '''Value''' – ID пользователя
+
        "RSKey": null,
** '''licenseDateExpiry''' – дата окончания лицензии
+
        "WebImage": null,
 
+
         "IsDeparture": 1,
* Возвращаемый результат:
+
         "Key": 312,
** '''Errors''' – описание ошибки
+
        "Type": "City"
** '''Warnings''' – предупреждение
+
      }
** '''States''' – статус
 
** '''IsValid''' – результат проверки подключения (true/false)
 
 
 
<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>
 
Вызов метода GDSCheckConnection
 
<syntaxhighlight lang="java" enclose="div">
 
POST http://localhost:9000/TourSearchOwin/GDSCheckConnection? HTTP/1.1
 
Content-Type: application/json
 
{
 
    "adapterTypeName": "TravelBoxAdapter",
 
    "id": 5565,
 
    "apiAddress": "http://dev24.desertadventur.com/",
 
    "settings": [{
 
            "Key": "TravelBox_Login",
 
            "Value": "Login"
 
         }, {
 
            "Key": "TravelBox_Password",
 
            "Value": "Password"
 
         }, {
 
            "Key": "TravelBox_UserID",
 
            "Value": "12345"
 
        }, {
 
            "Key": "TravelBox_CompanyCode",
 
            "Value": "DA_UAE"
 
        }, {
 
            "Key": "TravelBox_Division",
 
            "Value": "FIT_UAE"
 
        }, {
 
            "Key": "TravelBox_Department",
 
            "Value": "FIT- Local"
 
        }, {
 
            "Key": "TravelBox_TouroperatorCode",
 
            "Value": "54321"
 
        }, {
 
            "Key": "TravelBox_MaxResponses",
 
            "Value": "200"
 
        }, {
 
            "Key": "TravelBox_AvailRatesOnly",
 
            "Value": "AvailRatesOnly"
 
        }, {
 
            "Key": "TravelBox_CacheTimelife",
 
            "Value": "10"
 
        }
 
 
     ],
 
     ],
     "licenseDateExpiry": "01.01.2022"
+
     "DepartureAirports": [
}
+
      {
</syntaxhighlight>
+
        "Key": 168,
Возвращаемый результат метода GDSCheckConnection (в формате JSON)
+
        "Code": "ASF",
<syntaxhighlight lang="java" enclose="div">
+
        "Name": "Астрахань",
[{
+
        "NameLat": null,
     "Errors": [],
+
        "CityKey": 312,
    "Warnings": null,
+
        "CountryKey": 460,
    "States": null,
+
        "Letter": null,
     "IsValid": true
+
        "Site": null,
 +
        "Type": "Airport"
 +
      }
 +
    ],
 +
    "ArrivalCities": [
 +
      {
 +
        "key": 312,
 +
        "Country": {
 +
          "key": 460,
 +
          "name": "Россия",
 +
          "Code": "RU",
 +
          "DigitCode": "643",
 +
          "Alpha2Code": "RU",
 +
          "Alpha3Code": "RUS",
 +
          "CitizenName": "Россия",
 +
          "CitizenNameLat": null,
 +
          "PassportMinDurCheckFrom": 0,
 +
          "CheckINN": true,
 +
          "PassportMinDur": 0,
 +
          "INNName": "ИНН",
 +
          "Web": 0,
 +
          "WebImage": "",
 +
          "WebHTTP": "",
 +
          "AnkLang": 0,
 +
          "Key": 460,
 +
          "Type": "Country"
 +
        },
 +
        "name": "Астрахань",
 +
        "Code": "",
 +
        "Web": 0,
 +
        "RSKey": null,
 +
        "WebImage": null,
 +
        "IsDeparture": 1,
 +
        "Key": 312,
 +
        "Type": "City"
 +
      }
 +
    ],
 +
    "ArrivalAirports": [
 +
      {
 +
        "Key": 168,
 +
        "Code": "ASF",
 +
        "Name": "Астрахань",
 +
        "NameLat": null,
 +
        "CityKey": 312,
 +
        "CountryKey": 460,
 +
        "Letter": null,
 +
        "Site": null,
 +
        "Type": "Airport"
 +
      }
 +
    ],
 +
    "HotelTypes": [
 +
      {
 +
        "key": 290,
 +
        "name": "ALEXXZ",
 +
        "Type": "HotelType"
 +
      }
 +
    ],
 +
    "ComplexHotelIds": []
 +
  },
 +
  "Message": {
 +
    "Key": 0,
 +
    "Value": null
 +
  }
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
* Формат запроса GET с таблицей цен:
 +
** GET .../TourSearchOwin/TourForWeb/search/matrix?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
Аналогичны стандартному запросу (simple)
 +
* Возвращаемый результат:
 +
** '''CellsForMatrix''' – ячейки таблицы
 +
*** '''Key''' – ключ
 +
*** '''StartDate''' – дата начала
 +
*** '''Duration''' – продолжительность
 +
*** '''DurationInNight''' – количество ночей
 +
*** '''Cost''' – цена
 +
** '''CitiesWithMinimalCosts''' – города с минимальной ценой
 +
*** '''DepartureCityKey''' – ключ города отправления
 +
*** '''ArrivalCityKey''' – ключ города прибытия
 +
*** '''DepartureCityName''' – наименование города отправления
 +
*** '''ArrivalCityName''' – наименование города прибытия
 +
*** '''RouteMinimalPrice''' – минимальная цена маршрута
 +
** '''TourMinimalAndMaximalCost''' – минимальная и максимальная цены тура
 +
*** '''MinimalPrice''' – минимальная цена
 +
*** '''MaximalPrice''' – максимальная цена
 +
 
 +
<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>
 +
Вызов метода TourForWeb
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/TourForWeb/search/matrix?DepartureCityKeys=1&Dates=18.10.2021
 +
&Durations=6&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&ShowToursWithoutHotels=
 +
-1&isFromBasket=false&isFillSecondaryFilters=false&DestinationType=1&DestinationKey=90&AdultCount=
 +
2&CurrencyName=%D1%80%D0%B1&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&TourType=-1&CityIds=35&
 +
TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00&TimeArrivalTo=23%3A59&
 +
SearchId=1&MatrixAlgoritm=true&wrongLicenseFileUpperTitle=Incorrect+license+file.&RemoteHotelMode=0&_
 +
=1634028589340
 +
</syntaxhighlight>
 +
Возвращаемый результат метода TourForWeb (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
  "CellsForMatrix": [
 +
    {
 +
      "Key": 100011079,
 +
      "StartDate": "2021-10-18T00:00:00",
 +
      "Duration": 6,
 +
      "DurationInNight": 5,
 +
      "Cost": 1218
 +
    }
 +
  ],
 +
  "CitiesWithMinimalCosts": [
 +
    {
 +
      "DepartureCityKey": 1,
 +
      "ArrivalCityKey": 35,
 +
      "DepartureCityName": "Москва",
 +
      "ArrivalCityName": "Вена",
 +
      "RouteMinimalPrice": 1218
 +
    }
 +
  ],
 +
  "TourMinimalAndMaximalCost": {
 +
    "MinimalPrice": 1218,
 +
    "MaximalPrice": 53227
 +
  }
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
* Формат запроса GET с минимальной и максимальной ценой:
 +
** GET .../TourSearchOwin/TourForWeb/search/minMaxPrices?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
Аналогичны стандартному запросу (simple)
 +
* Возвращаемый результат:
 +
** '''MinimalPrice''' – минимальная цена
 +
** '''MaximalPrice''' – максимальная цена
 +
 
 +
<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>
 +
Вызов метода TourForWeb
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/TourForWeb/search/minMaxPrices?DepartureCityKeys=1&Dates=18.10.2021
 +
&Durations=6&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&ShowToursWithoutHotels=
 +
-1&isFromBasket=false&isFillSecondaryFilters=false&DestinationType=1&DestinationKey=90&AdultCount=
 +
2&CurrencyName=%D1%80%D0%B1&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&TourType=-1&CityIds=35&Time
 +
DepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00&TimeArrivalTo=23%3A59&SearchId
 +
=1&SearchMaxPriceAlgoritm=false&MatrixAlgoritm=true&wrongLicenseFileUpperTitle=Incorrect+license+file.
 +
&RemoteHotelMode=0&_
 +
=1634028589340
 +
</syntaxhighlight>
 +
Возвращаемый результат метода TourForWeb (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
  "MinimalPrice": 1218,
 +
  "MaximalPrice": 285618
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Проверка дублирующих туристов (CheckDoubleDogovor)===
 +
Метод проверяет есть ли дублирующие туристы в существующих путевках. Проверка на дублирование регулируется настройкой [[Мастер-Тур(15):Программа туров. Настройки#Общие настройки|Предупреждать при дублировании туристов]].
 +
* Формат запроса POST:
 +
** POST .../TourSearchOwin/CheckDoubleDogovor
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''TourProgramId *''' – ключ турпрограммы
 +
** '''BeginDate *''' – дата начала тура
 +
** '''Duration *''' – продолжительность тура
 +
** '''Currency *''' – код валюты
 +
** '''Services *''' – массив услуг авиаперелетов для получения доплат
 +
*** '''Service *''' – объект услуга авиаперелет
 +
**** '''ServiceType *''' – тип услуги
 +
**** '''Code *''' – код услуги
 +
**** '''SubCode1 *''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]] услуги
 +
**** '''SubCode2 *''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]] услуги
 +
**** '''Packet *''' – ключ пакета услуги
 +
**** '''Partner *''' – ключ партнера услуги
 +
**** '''Day *''' – день предоставления услуги
 +
**** '''DurationInNight *''' – продолжительность услуги в ночах
 +
**** '''City *''' – ключ города
 +
**** '''Country *''' – страна услуги
 +
**** '''Attributes *''' – битовая маска атрибутов услуг
 +
**** '''IsRemovable *''' – (не обрабатывается)
 +
**** '''Type *''' – тип услуги в путевке (базовая дополнительная)
 +
**** '''IsHooded *''' – признак скрытая услуга
 +
**** '''IsNotCalculated *''' – признак не рассчитываемая услуга
 +
**** '''BeginDateTimeString *''' – дата и время начала услуги
 +
**** '''EndDateTimeString *''' – дата и время окончания услуги
 +
**** '''TemplateId *''' – шаблон услуги
 +
**** '''Cost *''' – цена услуги
 +
**** '''ByPax *''' – цена за человека
 +
**** '''QuotaStatus *''' – объект статус квотирования
 +
***** '''PlacesStatus *''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 +
***** '''FreePlaces *''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 +
***** '''IsFewPlaces *''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
**** '''Index *''' – индекс услуги
 +
**** '''IsRoute *''' – признак маршрутная услуга
 +
**** '''ServiceTemplateIndex *''' – индекс шаблона услуги
 +
**** '''RemoteId *''' – информация об услуге во внешней системе
 +
**** '''IsCommission *''' – признак, комиссионная ли услуга
 +
**** '''BaseFlightsParams *''' – параметры рассчитанных авиаперелетов
 +
***** '''CityArrival *''' – ключ города прибытия прямого перелета
 +
***** '''FlightCode *''' – ключ прямого авиаперелета
 +
***** '''TariffKey *''' – ключ тарифа прямого авиаперелета
 +
***** '''PartnerId *''' – ключ партнера прямого авиаперелета
 +
*** '''TouristNumbersList *''' – массив туристов, привязанных к услуге
 +
** '''Tourists *''' – массив туристов
 +
*** '''IsMain *''' – главный турист
 +
*** '''Number *''' – порядковый номер туриста
 +
*** '''AgeType *''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
 +
*** '''MaleFemaleSex *''' – пол (0 – мужской, 1 – женский)
 +
*** '''FirstName *''' – имя (лат)
 +
*** '''LastName *''' – фамилия (лат)
 +
*** '''Patronymic *''' – отчество (лат)
 +
*** '''FirstNameRus *''' – имя (рус)
 +
*** '''LastNameRus *''' – фамилия (рус)
 +
*** '''PatronymicRus *''' – отчество (рус)
 +
*** '''InternationalPassportSeries *''' – серия загранпаспорта
 +
*** '''InternationalPassportNumber *''' – номер загранпаспорта
 +
*** '''InternationalPassportDateOfIssue *''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''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 *''' – ID туриста (задается в карточке постоянного клиента)
 +
*** '''Age *''' – количество полных лет на момент окончания тура
 +
** '''TechnicalProblemsDuringUpdateFlights *''' – технические проблемы при обновлении рейсов
 +
** '''TimeLimit *''' – лимит времени
 +
** '''CountryKey *''' – ключ страны
 +
** '''OwnerId *''' – ключ ведущего менеджера (начиная с релиза 15.3). Если 0, то берется по умолчанию. Если по умолчанию не указан, то берется создатель тура.
 +
** '''Day *''' – день ''Может быть с пустым значением''
 +
** '''Day2 *''' – дня ''Может быть с пустым значением''
 +
** '''Days *''' – дней ''Может быть с пустым значением''
 +
** '''Night *''' – ночь ''Может быть с пустым значением''
 +
** '''Night2 *''' – ночи ''Может быть с пустым значением''
 +
** '''Nights *''' – ночей ''Может быть с пустым значением''
 +
** '''adultsCountOverServiceLimit *''' – Количество взрослых туристов превышает лимит услуги ''Может быть с пустым значением''
 +
** '''at *''' – на (перевод) ''Может быть с пустым значением''
 +
** '''incorrectChildrenInf *''' – Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание) ''Может быть с пустым значением''
 +
* Возвращаемый результат:
 +
** '''Errors''' – описание ошибки
 +
** '''Warnings''' – предупреждение
 +
** '''States''' – статус
 +
** '''IsValid''' – результат проверки подключения (true/false)
 +
 
 +
<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>
 +
Вызов метода CheckDoubleDogovor
 +
<syntaxhighlight lang="java" enclose="div">
 +
POST http://localhost:9000/TourSearchOwin/CheckDoubleDogovor
 +
{
 +
  "TourProgramId": 100011112,
 +
  "BeginDate": "2021-10-18T17:05:00",
 +
  "Duration": 6,
 +
  "Currency": "рб",
 +
  "Services": [
 +
     {
 +
      "Service": {
 +
        "ServiceType": 3,
 +
        "Code": 238,
 +
        "SubCode1": 1085918,
 +
        "SubCode2": 1,
 +
        "Packet": 1462,
 +
        "Partner": 12685,
 +
        "Day": 2,
 +
        "DurationInNight": 4,
 +
        "City": 62,
 +
        "Country": 1,
 +
        "Attributes": 0,
 +
        "IsRemovable": false,
 +
        "Type": 1,
 +
        "IsHooded": false,
 +
        "IsNotCalculated": false,
 +
        "BeginDateTimeString": "2021-10-19T14:59:00",
 +
        "EndDateTimeString": "2021-10-23T14:59:00",
 +
        "TemplateId": 3,
 +
        "Cost": 0,
 +
        "ByPax": true,
 +
        "QuotaStatus": {
 +
          "PlacesStatus": 4,
 +
          "FreePlaces": 0,
 +
          "IsFewPlaces": false
 +
        },
 +
        "Index": 2,
 +
        "IsRoute": true,
 +
        "ServiceTemplateIndex": 2,
 +
        "RemoteId": null,
 +
        "IsCommission": true,
 +
        "BaseFlightsParams": [
 +
          {
 +
            "CityArrival": 62,
 +
            "FlightCode": 2111,
 +
            "TariffKey": 339,
 +
            "PartnerId": 12685
 +
          },
 +
          {
 +
            "CityArrival": 312,
 +
            "FlightCode": 2080,
 +
            "TariffKey": 339,
 +
            "PartnerId": 12685
 +
          }
 +
        ]
 +
      },
 +
      "TouristNumbersList": [
 +
        1,
 +
        2
 +
      ]
 +
    },
 +
    {
 +
      "Service": {
 +
        "ServiceType": 1,
 +
        "Code": 2111,
 +
        "SubCode1": 339,
 +
        "SubCode2": 312,
 +
        "Packet": 1462,
 +
        "Partner": 12685,
 +
        "Day": 1,
 +
        "DurationInNight": 0,
 +
        "City": 62,
 +
        "Country": 1,
 +
        "Attributes": 0,
 +
        "IsRemovable": false,
 +
        "Type": 1,
 +
        "IsHooded": false,
 +
        "IsNotCalculated": false,
 +
        "BeginDateTimeString": "2021-10-18T17:10:00",
 +
        "EndDateTimeString": "2021-10-18T20:20:00",
 +
        "TemplateId": 1,
 +
        "Cost": 0,
 +
        "ByPax": true,
 +
        "QuotaStatus": {
 +
          "PlacesStatus": 4,
 +
          "FreePlaces": 0,
 +
          "IsFewPlaces": false
 +
        },
 +
        "Index": 0,
 +
        "IsRoute": true,
 +
        "ServiceTemplateIndex": 0,
 +
        "IsCommission": true,
 +
        "BaseFlightsParams": [
 +
          {
 +
            "CityArrival": 62,
 +
            "FlightCode": 2111,
 +
            "TariffKey": 339,
 +
            "PartnerId": 12685
 +
          },
 +
          {
 +
            "CityArrival": 312,
 +
            "FlightCode": 2080,
 +
            "TariffKey": 339,
 +
            "PartnerId": 12685
 +
          }
 +
        ]
 +
      },
 +
      "TouristNumbersList": [
 +
        1,
 +
        2
 +
      ]
 +
    },
 +
    {
 +
      "Service": {
 +
        "ServiceType": 1,
 +
        "Code": 2080,
 +
        "SubCode1": 339,
 +
        "SubCode2": 62,
 +
        "Packet": 1462,
 +
        "Partner": 12685,
 +
        "Day": 2,
 +
        "DurationInNight": 0,
 +
        "City": 312,
 +
        "Country": 460,
 +
        "Attributes": 0,
 +
        "IsRemovable": false,
 +
        "Type": 1,
 +
        "IsHooded": false,
 +
        "IsNotCalculated": false,
 +
        "BeginDateTimeString": "2021-10-19T09:59:00",
 +
        "EndDateTimeString": "2021-10-19T12:59:00",
 +
        "TemplateId": 2,
 +
        "Cost": 0,
 +
        "ByPax": true,
 +
        "QuotaStatus": {
 +
          "PlacesStatus": 4,
 +
          "FreePlaces": 0,
 +
          "IsFewPlaces": false
 +
        },
 +
        "Index": 1,
 +
        "IsRoute": true,
 +
        "ServiceTemplateIndex": 1,
 +
        "IsCommission": true,
 +
        "BaseFlightsParams": [
 +
          {
 +
            "CityArrival": 62,
 +
            "FlightCode": 2111,
 +
            "TariffKey": 339,
 +
            "PartnerId": 12685
 +
          },
 +
          {
 +
            "CityArrival": 312,
 +
            "FlightCode": 2080,
 +
            "TariffKey": 339,
 +
            "PartnerId": 12685
 +
          }
 +
        ]
 +
      },
 +
      "TouristNumbersList": [
 +
        1,
 +
        2
 +
      ]
 +
    }
 +
  ],
 +
  "Tourists": [
 +
    {
 +
      "IsMain": true,
 +
      "Number": 1,
 +
      "AgeType": 0,
 +
      "MaleFemaleSex": 0,
 +
      "FirstName": "ETYETY",
 +
      "LastName": "REYERYETY",
 +
      "Patronymic": "",
 +
      "FirstNameRus": "ETYETY",
 +
      "LastNameRus": "REYERYETY",
 +
      "PatronymicRus": "",
 +
      "InternationalPassportSeries": "",
 +
      "InternationalPassportNumber": "",
 +
      "InternationalPassportDateOfIssue": "",
 +
      "InternationalPassportDateOfIssueString": "",
 +
      "InternationalPassportDateOfExpiry": "",
 +
      "InternationalPassportDateOfExpiryString": "",
 +
      "internationalPassportByWhom": "",
 +
      "PassportSeries": "",
 +
      "PassportNumber": "",
 +
      "PassportDateOfIssue": "",
 +
      "PassportDateOfIssueString": "",
 +
      "PassportByWhom": "",
 +
      "Citizenship": "",
 +
      "Phone": "",
 +
      "Email": "",
 +
      "BirthDay": "1987-04-09T19:00:00.000Z",
 +
      "BirthDayString": "10.04.1987",
 +
      "BirthPlace": "",
 +
      "CitizenID": "",
 +
      "Age": 34
 +
    },
 +
    {
 +
      "IsMain": false,
 +
      "Number": 2,
 +
      "AgeType": 0,
 +
      "MaleFemaleSex": 0,
 +
      "FirstName": "ETYETY",
 +
      "LastName": "ETYTY",
 +
      "Patronymic": "",
 +
      "FirstNameRus": "ETYETY",
 +
      "LastNameRus": "ETYTY",
 +
      "PatronymicRus": "",
 +
      "InternationalPassportSeries": "",
 +
      "InternationalPassportNumber": "",
 +
      "InternationalPassportDateOfIssue": "",
 +
      "InternationalPassportDateOfIssueString": "",
 +
      "InternationalPassportDateOfExpiry": "",
 +
      "InternationalPassportDateOfExpiryString": "",
 +
      "internationalPassportByWhom": "",
 +
      "PassportSeries": "",
 +
      "PassportNumber": "",
 +
      "PassportDateOfIssue": "",
 +
      "PassportDateOfIssueString": "",
 +
      "PassportByWhom": "",
 +
      "Citizenship": "",
 +
      "Phone": "",
 +
      "Email": "",
 +
      "BirthDay": "1987-04-09T19:00:00.000Z",
 +
      "BirthDayString": "10.04.1987",
 +
      "BirthPlace": "",
 +
      "CitizenID": "",
 +
      "Age": 34
 +
    }
 +
  ],
 +
  "TechnicalProblemsDuringUpdateFlights": false,
 +
  "TimeLimit": null,
 +
  "CountryKey": 1,
 +
  "OwnerId": 106,
 +
  "Day": "день",
 +
  "Day2": "дня",
 +
  "Days": "дней",
 +
  "Night": "ночь",
 +
  "Night2": "ночи",
 +
  "Nights": "ночей",
 +
  "adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги",
 +
  "incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)"
 +
}
 +
</syntaxhighlight>
 +
Возвращаемый результат метода CheckDoubleDogovor (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
  "Errors": [],
 +
  "Warnings": null,
 +
  "States": null,
 +
  "IsValid": true
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Получение активных оснований для скидки (GetActiveCauseDiscounts)===
 +
Метод возвращает список активных оснований для скидок (дисконтных карт) на указанную дату.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/PromocodesAndDiscounts/GetActiveCauseDiscounts?
 +
* Принимаемые параметры headers ('''*''' – обязательный):
 +
** '''Accept *''' – application/json, text/plain, */*
 +
** '''Authorization *''' – Bearer токен авторизации который получается в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Авторизация (Token)|Token]]
 +
 
 +
 
 +
* Принимаемые параметры GET запроса ('''*''' – обязательный):
 +
** '''dateIn *''' – дата заезда, формат: "дд.мм.гггг" (например, "01.06.2025")
 +
 
 +
* Возвращаемый результат:
 +
Массив объектов, содержащих активные основания для скидки.
 +
** '''Key''' – ключ основания для скидки
 +
** '''Name''' – наименование скидки
 +
 
 +
<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>
 +
Вызов метода GetActiveCauseDiscounts
 +
<syntaxhighlight lang="java" enclose="div">
 +
Get http://localhost:9000/TourSearchOwin/PromocodesAndDiscounts/GetActiveCauseDiscounts?dateIn=%2201.06.2025%22
 +
</syntaxhighlight>
 +
Возвращаемый результат метода GetActiveCauseDiscounts (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
  {
 +
     "Key": 95,
 +
    "Name": "РЖД бонус"
 +
  }
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
===Проверка основания для скидки (CheckCauseDiscount)===
 +
Метод проверяет корректность и применимость основания для скидки (дисконтной карты) с учётом параметров.
 +
 
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/PromocodesAndDiscounts/CheckCauseDiscount?
 +
 
 +
* Принимаемые параметры headers ('''*''' – обязательный):
 +
** '''Accept *''' – application/json, text/plain, */*
 +
** '''Authorization *''' – Bearer токен авторизации который получается в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Авторизация (Token)|Token]]
 +
 
 +
* Принимаемые параметры GET запроса ('''*''' – обязательный):
 +
** '''key *''' – ключ основания для скидки
 +
** '''symbolsNumber *''' – количество символов номера дисконтной карты
 +
** '''dateIn *''' – дата заезда, формат: "дд.мм.гггг" (например, "01.06.2025")
 +
 
 +
* Возвращаемый результат:
 +
** '''Key''' – ключ ID основания для скидки, если скидочная карта была введена верно
 +
** '''null''' – если скидочная карта была введена неверно
 +
 
 +
 
 +
<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>
 +
Вызов метода CheckCauseDiscount
 +
<syntaxhighlight lang="java" enclose="div">
 +
Get http://localhost:9000/TourSearchOwin/PromocodesAndDiscounts/CheckCauseDiscount?key=95&symbolsNumber=6&dateIn=^%^2201.06.2025^%^22
 +
</syntaxhighlight>
 +
Возвращаемый результат метода CheckCauseDiscount (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
"95"
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Проверка промокода (CheckPromocode)===
 +
Метод проверяет валидность промокода в контексте определённой страны и программы тура.
 +
 
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/PromocodesAndDiscounts/CheckPromocode?
 +
 
 +
* Принимаемые параметры headers ('''*''' – обязательный):
 +
** '''Accept *''' – application/json, text/plain, */*
 +
** '''Authorization *''' – Bearer токен авторизации который получается в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Авторизация (Token)|Token]]
 +
 
 +
 
 +
* Принимаемые параметры GET запроса ('''*''' – обязательный):
 +
** '''promocode *''' – строка промокода в зашифрованном виде
 +
** '''TPKey *''' – ключ программы тура
 +
** '''countryKey *''' – ключ страны (используется для определения доступности промокода)
 +
 
 +
* Возвращаемый результат:
 +
** '''Key''' – ключ ID промокода, если промокод найден и применим
 +
** '''null''' – если промокод не найден или не подходит по условиям
 +
 
 +
 
 +
<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>
 +
Вызов метода CheckPromocode
 +
<syntaxhighlight lang="java" enclose="div">
 +
Get http://localhost:9000/TourSearchOwin/PromocodesAndDiscounts/CheckPromocode?promocode=%D0%A0%D0%96%D0%94%D0%9F%D0%A0%D0%9E%D0%9C%D0%9E&TPKey=100011745&countryKey=460
 +
</syntaxhighlight>
 +
Возвращаемый результат метода CheckPromocode (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
"295"
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
 
 +
===Проверка загрузки кеша службы поиска (CacheReady)===
 +
Метод проверяет загрузку кэша службы поиска.
 +
 
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/CacheReady
 +
 
 +
* Принимаемые параметры ('''*''' – обязательный):
 +
** нет принимаемых параметров
 +
 
 +
* Возвращаемый результат:
 +
** '''false''' – инициализация кешей не завершена, '''true''' – инициализация кешей завершена
 +
 
 +
<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>
 +
Вызов метода CacheReady
 +
<syntaxhighlight lang="java" enclose="div">
 +
Get http://localhost:9000/TourSearchOwin/CacheReady
 +
</syntaxhighlight>
 +
Возвращаемый результат метода CacheReady (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
true
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Получение предупреждений по партнеру (GetWarnings)===
 +
Метод позволяет получить список предупреждений по ключу партнера.
 +
* Формат запроса:
 +
** POST .../TourSearchOwin/GetWarnings?
 +
 
 +
* Принимаемые параметры ('''*''' – обязательный):
 +
** '''partnerKey*''' – ключ партнера
 +
 
 +
* Возвращаемый результат:
 +
** '''First''' – ключ предупреждения
 +
** '''Second''' – описание предупреждения
 +
<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>
 +
Вызов метода GetWarnings
 +
<syntaxhighlight lang="java" enclose="div">
 +
POST http://localhost:9000/TourSearchOwin/GetWarnings?partnerKey=10762
 +
</syntaxhighlight>
 +
Возвращаемый результат метода GetWarnings (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
  {
 +
    "First": 2,
 +
    "Second": "ВНИМАНИЕ!!!!"
 +
  }
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Получение всех типов заказчика (DogovorCustomers)===
 +
Метод позволяет получить список всех типов заказчика.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/DogovorCustomers
 +
 
 +
* Принимаемые параметры ('''*''' – обязательный):
 +
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''key''' – наименование типа заказчика
 +
** '''value''' – идентификатор типа заказчика
 +
 
 +
<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>
 +
Вызов метода DogovorCustomers
 +
<syntaxhighlight lang="java" enclose="div">
 +
Get http://localhost:9000/TourSearchOwin/DogovorCustomers
 +
</syntaxhighlight>
 +
Возвращаемый результат метода DogovorCustomers (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
  {
 +
    "key": "TravelAgent",
 +
    "value": 1
 +
  },
 +
  {
 +
    "key": "ReservationTourist",
 +
    "value": 2
 +
  },
 +
  {
 +
    "key": "PhysicalPerson",
 +
    "value": 3
 +
  },
 +
  {
 +
    "key": "IndividualEntrepreneur",
 +
    "value": 4
 +
  },
 +
  {
 +
    "key": "LegalPerson",
 +
    "value": 5
 +
  }
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Получение описания полей для заказчика (GetDogovorCustomerFields)===
 +
Метод позволяет получить список описания полей для заказчика.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/GetDogovorCustomerFields?
 +
* Принимаемые параметры ('''*''' – обязательный):
 +
** '''customerType*''' – числовое значение типа заказчика из метода DogovorCustomers
 +
** '''userName''' – логин пользователя
 +
 
 +
* Возвращаемый результат:
 +
** '''PropertyName''' – наименование типа
 +
** '''Value''' – идентификатор типа
 +
** '''IsRequired''' – признак обязательности заполнения поля
 +
** '''Priority''' – приоритет
 +
** '''MaxLength''' – максимальное количество символов
 +
 
 +
<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>
 +
Вызов метода GetDogovorCustomerFields
 +
<syntaxhighlight lang="java" enclose="div">
 +
Get http://localhost:9000/TourSearchOwin/GetDogovorCustomerFields?customerType=1&userName=test
 +
</syntaxhighlight>
 +
Возвращаемый результат метода GetDogovorCustomerFields (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
  {
 +
    "PropertyName": "LegalName",
 +
    "Value": "Партнер18",
 +
    "IsRequired": false,
 +
    "Priority": 1,
 +
    "MaxLength": 100
 +
  },
 +
  {
 +
    "PropertyName": "Address",
 +
    "Value": "sdf",
 +
    "IsRequired": false,
 +
    "Priority": 2,
 +
    "MaxLength": 200
 +
  },
 +
  {
 +
    "PropertyName": "Phone",
 +
    "Value": "(888)3015062598",
 +
    "IsRequired": false,
 +
    "Priority": 3,
 +
    "MaxLength": 60
 +
  },
 +
  {
 +
    "PropertyName": "FullNameDirector",
 +
    "Value": "Иванов И.И.",
 +
    "IsRequired": false,
 +
    "Priority": 4,
 +
    "MaxLength": 110
 +
  },
 +
  {
 +
    "PropertyName": "Email",
 +
    "Value": "test@test.ru",
 +
    "IsRequired": false,
 +
    "Priority": 8,
 +
    "MaxLength": 50
 +
  },
 +
  {
 +
    "PropertyName": "CountryKey",
 +
    "Value": 90,
 +
    "IsRequired": false,
 +
    "Priority": 9,
 +
    "MaxLength": null
 +
  },
 +
  {
 +
    "PropertyName": "INN",
 +
    "Value": "0336032328",
 +
    "IsRequired": false,
 +
    "Priority": 10,
 +
    "MaxLength": 20
 +
  },
 +
  {
 +
    "PropertyName": "ContractDate",
 +
    "Value": null,
 +
    "IsRequired": false,
 +
    "Priority": 11,
 +
    "MaxLength": null
 +
  },
 +
  {
 +
    "PropertyName": "ContractNumber",
 +
    "Value": null,
 +
    "IsRequired": false,
 +
    "Priority": 12,
 +
    "MaxLength": 100
 +
  },
 +
  {
 +
    "PropertyName": "ContractPrice",
 +
    "Value": null,
 +
    "IsRequired": false,
 +
    "Priority": 13,
 +
    "MaxLength": null
 +
  }
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Получение всех типов возможных договоров (GetCustomerDocumentTypes)===
 +
Метод позволяет получить список всех типов возможных договоров.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/GetCustomerDocumentTypes
 +
* Принимаемые параметры ('''*''' – обязательный):
 +
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''key''' – наименование типа договора
 +
** '''value''' – идентификатор типа договора
 +
 
 +
<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>
 +
Вызов метода GetCustomerDocumentTypes
 +
<syntaxhighlight lang="java" enclose="div">
 +
Get http://localhost:9000/TourSearchOwin/GetCustomerDocumentTypes
 +
</syntaxhighlight>
 +
Возвращаемый результат метода GetCustomerDocumentTypes (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
  {
 +
    "key": "Other",
 +
    "value": 0
 +
  },
 +
  {
 +
    "key": "Passport",
 +
    "value": 1
 +
  },
 +
  {
 +
    "key": "ForeignPassport",
 +
    "value": 2
 +
  },
 +
  {
 +
    "key": "BirthCertificate",
 +
    "value": 3
 +
  },
 +
  {
 +
    "key": "ServicePassport",
 +
    "value": 4
 +
  },
 +
  {
 +
    "key": "DiplomaticPassport",
 +
    "value": 5
 +
  },
 +
  {
 +
    "key": "IdCard",
 +
    "value": 6
 +
  }
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
==Дополнительные методы==
 +
 
 +
===Выгрузка измененных турпрограмм (TourProgram) начиная с релиза 15.3===
 +
Метод производит выгрузку измененных турпрограмм, в которых были сделаны изменения с указанной даты и времени и повлияли на маршруты в турпрограмме. К таким изменениям относятся изменения страны и города начала поездки, страны и города по туру, типа тура. Изменения цен  по услугам не приводят к обновлению турпрограмме, такие турпрограммы в ответе не будут указаны. Турпрограммы, по которым статус ''Доступен для продажи'' сменился на другой за период, указанный в запросе, в ответе тоже не будут указаны.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/TourProgram?
 +
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
 +
** '''fromDateTime''' – дата (в формате ''dd.MM.yyyy HH:mm:ss''), начиная с которой будут выгружаться изменения,
 +
 
 +
* Возвращаемый результат:
 +
** '''Key''' – ключ программы туров
 +
** '''Name''' – название программы туров
 +
** '''UpdateDate''' – дата последнего изменения программы туров (или связанных с ней компонентов)
 +
** '''routes''' – массив возможных маршрутов в данной программе туров
 +
*** '''departureCountryKey''' – страна начала поездки (для каждой страны начала поездки в одной программе тура будет отдельный маршрут)
 +
*** '''departureCityKey''' – город начала поездки (для каждого города начала поездки в одной программе тура будет отдельный маршрут)
 +
*** '''destinationCountryKeys''' – страны по туру (если в туре несколько услуг класса отель и они в разных странах, то будут возвращаться все страны отелей)
 +
*** '''destinationCityKeys''' – города по туру (если в туре отели в нескольких городах, то будут возвращаться все города отелей)
 +
*** '''tourTypeKeys''' – типы туров для данной программы туров
 +
 
 +
<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>
 +
Вызов метода TourProgram
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/TourProgram?fromDateTime=20.08.2022 00:00:00
 +
</syntaxhighlight>
 +
Возвращаемый результат метода TourProgram (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[{
 +
"key": 100002353,
 +
"name": "Турпрограмма в Австрию",
 +
"updateDate": "2018-09-25T13:48:13.847",
 +
"routes": [{
 +
"departureCountryKey": 5,
 +
"departureCityKey": 218,
 +
"destinationCountryKeys": [80],
 +
"destinationCityKeys": [19,
 +
1051,
 +
113],
 +
"tourTypeKeys": [52]
 +
},
 +
{
 +
"departureCountryKey": 5,
 +
"departureCityKey": 766,
 +
"destinationCountryKeys": [80],
 +
"destinationCityKeys": [19,
 +
1051,
 +
113],
 +
"tourTypeKeys": [52]
 +
}]
 +
},
 +
{
 +
"Key": 100004452,
 +
"Name": "Турпрограмма в Англию"
 +
"UpdateDate": "2018-06-30T10:09:35.22"
 +
"routes": [{
 +
"departureCountryKey": -1,
 +
"departureCityKey": -1,
 +
"destinationCountryKeys": [80],
 +
"destinationCityKeys": [19],
 +
"tourTypeKeys": [52,
 +
                35]
 +
}]
 
}]
 
}]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 +
===Проверка построения маршрутов турпрограммы (CheckTourProgram)===
 +
Метод производит построение маршрутов турпрограмм (вызывается из проверки тура). Метод проверяет маршруты по турпрограммам с любым статусом (не только по статусу Доступен для подажи).
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/CheckTourProgram?
 +
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
 +
** '''tourKey''' – ключ турпрограммы
 +
 +
* Возвращаемый результат:
 +
** '''Message''' – сообщение ''Начинаем строить маршрут.''
 +
** '''Message''' – сообщение ''Маршрутов по данной программе тура построилось'' – количество
 +
** '''Message''' – сообщение ''Построено каркасов маршрутов (без конкретных отелей)'' – количество
 +
 +
<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>
 +
Вызов метода CheckTourProgram
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/CheckTourProgram?tourKey=100007837
 +
</syntaxhighlight>
 +
Возвращаемый результат метода CheckTourProgram (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
    {
 +
        "Message": "[startingMakingRouteUpper]",
 +
        "MessageType": 0
 +
    },
 +
    {
 +
        "Message": "[routeCarcassesBuildWithoutSpecificHotelsUpper] - 10",
 +
        "MessageType": 1
 +
    },
 +
    {
 +
        "Message": "[routesMadeByThisTourProgrammUpper] - 10",
 +
        "MessageType": 1
 +
    }
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 +
===Получение разметки формы для новой формы быстрого поиска (GetJavascriptFile)===
 +
Метод получает разметку формы для новой формы быстрого поиска.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/GetJavascriptFile/Get?
 +
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
 +
** '''name''' – имя файла
 +
 +
* Возвращаемый результат:
 +
** '''полученный файл'''
 +
 +
<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>
 +
Вызов метода GetJavascriptFile/Get
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/GetJavascriptFile/Get?name=demoSearch.js
 +
</syntaxhighlight>
 +
Возвращаемый результат метода GetJavascriptFile/Get (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
полученный файл demoSearch.js
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 +
===Проверка подключения к внешним системам (GDSCheckConnection)===
 +
Метод производит проверку подключения к внешней системе.
 +
* Формат запроса:
 +
** POST .../TourSearchOwin/GDSCheckConnection?
 +
 +
* Принимаемые параметры headers ( '''*''' – обязательный):
 +
** '''Content-Type *''' – application/json
 +
 +
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
** '''adapterTypeName''' – адаптер
 +
** '''id''' – ключ адаптера
 +
** '''apiAddress''' – api-адрес
 +
** '''settings''' – набор настроек (у каждого адаптера индивидуальный)
 +
*** '''Key''' – _Login
 +
*** '''Value''' – логин
 +
*** '''Key''' – _Password
 +
*** '''Value''' – пароль
 +
*** '''Key''' – _UserID
 +
*** '''Value''' – ID пользователя
 +
** '''licenseDateExpiry''' – дата окончания лицензии
 +
 +
* Возвращаемый результат:
 +
** '''Errors''' – описание ошибки
 +
** '''Warnings''' – предупреждение
 +
** '''States''' – статус
 +
** '''IsValid''' – результат проверки подключения (true/false)
 +
 +
<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>
 +
Вызов метода GDSCheckConnection
 +
<syntaxhighlight lang="java" enclose="div">
 +
POST http://localhost:9000/TourSearchOwin/GDSCheckConnection? HTTP/1.1
 +
Content-Type: application/json
 +
{
 +
    "adapterTypeName": "TravelBoxAdapter",
 +
    "id": 5565,
 +
    "apiAddress": "http://dev24.desertadventur.com/",
 +
    "settings": [{
 +
            "Key": "TravelBox_Login",
 +
            "Value": "Login"
 +
        }, {
 +
            "Key": "TravelBox_Password",
 +
            "Value": "Password"
 +
        }, {
 +
            "Key": "TravelBox_UserID",
 +
            "Value": "12345"
 +
        }, {
 +
            "Key": "TravelBox_CompanyCode",
 +
            "Value": "DA_UAE"
 +
        }, {
 +
            "Key": "TravelBox_Division",
 +
            "Value": "FIT_UAE"
 +
        }, {
 +
            "Key": "TravelBox_Department",
 +
            "Value": "FIT- Local"
 +
        }, {
 +
            "Key": "TravelBox_TouroperatorCode",
 +
            "Value": "54321"
 +
        }, {
 +
            "Key": "TravelBox_MaxResponses",
 +
            "Value": "200"
 +
        }, {
 +
            "Key": "TravelBox_AvailRatesOnly",
 +
            "Value": "AvailRatesOnly"
 +
        }, {
 +
            "Key": "TravelBox_CacheTimelife",
 +
            "Value": "10"
 +
        }
 +
    ],
 +
    "licenseDateExpiry": "01.01.2022"
 +
}
 +
</syntaxhighlight>
 +
Возвращаемый результат метода GDSCheckConnection (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[{
 +
    "Errors": [],
 +
    "Warnings": null,
 +
    "States": null,
 +
    "IsValid": true
 +
}]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 +
===Подтверждения оплаты полиса в ЕВРОИНС===
 +
Для подтверждения оплаты метод будет обращаться к внешним службам для подтверждения платежа.<br />
 +
[[Мастер-Тур(15):Программа туров. Внешние системы. Страховая компания ЕВРОИНС|Страховая компания ЕВРОИНС]]
 +
 +
* Формат запроса:
 +
** POST .../TourSearchOwin/EuroinsConfirmPay
 +
 +
* Принимаемые параметры headers ( '''*''' – обязательный):
 +
** '''Content-Type *''' – application/json
 +
 +
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
** '''policyId *''' – ID полиса
 +
** '''code *''' – код партнера
 +
 +
* Возвращаемый результат:
 +
** '''success: true''' – подтверждено (''код 200'')
 +
** '''error''' – описание ошибки (''код 400'')
 +
 +
<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>
 +
Вызов метода EuroinsConfirmPay
 +
 +
<syntaxhighlight lang="java" enclose="div">
 +
POST localhost:9000/TourSearchOwin/EuroinsConfirmPay
 +
</syntaxhighlight>
 +
Content-Type: application/json
 +
 +
{
 +
    "policyId": "134574",
 +
    "code": "oqxKQXlOInSJqLl"
 +
}
 +
 +
</syntaxhighlight>
 +
Возвращаемый результат метода EuroinsConfirmPay (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
Код 200:
 +
{
 +
"success": true
 +
}
 +
 +
Код 400:
 +
{
 +
"error": "Не удалось выполнить действие"
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
===Получение информации о наличии квот на перелёты по датам (GetQuotedPlaces)===
 +
Метод возвращает статусы наличия квот на перелёты по дням. Регулируется настройкой [[Мастер-Тур(15):Canary#Остальные общие настройки Canary|getQuotaDates]] в settings.js
 +
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/GetQuotedPlaces?
 +
 +
* Принимаемые параметры headers ( '''*''' – обязательный):
 +
** '''Authorization*''' – Bearer <token>
 +
** '''Accept''' – application/json
 +
** '''TourSearchClient2''' – TourSearchClient2 (для клиентских приложений Canary)
 +
 +
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
 +
** '''departureCity *''' – ключ города вылета
 +
** '''destinationCity *''' – ключ города прилёта (допускается ''-1'' – все города)
 +
** '''Key *''' – ключ выбранного объекта фильтра «Куда» (страна/курорт/город)
 +
** '''Type *''' – тип объекта ''Key'' (например, ''1'' – страна; остальные значения см. документацию по фильтру «Куда»)
 +
** '''tourTypes *''' – список ключей типов туров через запятую; ''-1'' – все типы туров
 +
 +
* Возвращаемый результат:
 +
** Массив объектов с датами и статусами квот:
 +
*** '''Key''' – дата в формате ''dd.MM.yyyy''
 +
*** '''Value''' – код статуса:
 +
**** '''1''' – есть много квот (больше минимального порога услуги)
 +
**** '''2''' – есть мало квот (меньше минимального порога услуги)
 +
**** '''3''' – внешний перелёт (GDS) и отсутствие квот
 +
**** '''4''' – на дату не найдено туров с перелётами
 +
 +
 +
<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>
 +
Вызов метода GetQuotedPlaces
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/GetQuotedPlaces?departureCity=187&destinationCity=448&Key=375&Type=1&tourTypes=-1
 +
</syntaxhighlight>
 +
 +
 +
Возвращаемый результат (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
  { "Key": "15.12.2025", "Value": 1 },
 +
  { "Key": "16.12.2025", "Value": 2 },
 +
  { "Key": "17.12.2025", "Value": 3 },
 +
  { "Key": "18.12.2025", "Value": 4 }
 +
]
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>

Текущая версия на 12:08, 19 февраля 2026

Версия статьи от 19-02-2026.

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


Содержание

Введение

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

Установка

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

Swagger

Работу методов можно проверить с помощью Swagger по пути: http://localhost:9000/TourSearchOwin/SwaggerUI

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

Последовательность вызова методов сервиса
Последовательность вызова методов сервиса

Информация о состоянии службы поиска (statusCache)

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

  • Формат запроса:
    • GET .../TourSearchOwin/statusCache?
  • Принимаемые параметры:
    • нет принимаемых параметров
  • Возвращаемый результат:
    • Initialized – информация о том, загружена ли служба или нет (false – инициализация кешей не завершена, true – инициализация кешей завершена)
    • Status – состояние службы. Возможные значения: Запущена инициализация кэшей, Инициализация кэшей завершена
    • CacheName – информация о том, какой именно кеш сейчас считается (название)
    • Iteration – порядковый номер считаемого справочника кеша
    • CacheCount – общее количество кешей
    • ProcessMessage – детализация. Информацию можно разделить на 3 блока:
      • Загрузка всех справочных данных, кроме расчета маршрутов и актуальных фильтров. В этом случае сообщение будет Загрузка кэшей из БД
      • Расчет маршрутов. CacheNameHotelScheme, сообщение будет tours load: 956 / 1234
      • Расчет актуальных фильтров. CacheNameActualFilters, сообщение будет Actual filter processed: 783012 / 3865687"
Пример

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

GET http://localhost:9000/TourSearchOwin/statusCache

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

{
    "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
}


Авторизация (Token)

Метод производит получение авторизационного токена (описание стандарта).

  • Формат запроса:
    • POST .../TourSearchOwin/Token?
  • Принимаемые параметры headers ( * – обязательный):
    • Content-Type * – application/x-www-form-urlencoded
  • Принимаемые параметры POST запроса ( * – обязательный):
    • grant_type * – текст password
    • username * – логин представителя партнера или частного лица
    • password * – пароль представителя партнера или частного лица
  • Возвращаемый результат:
    • access_token – токен
    • token_type – тип токена
    • expires_in – код
    • userKey – ключ пользователя
    • userType – тип пользователя (0 – представитель партнера, 1 – частное лицо)
    • .issued – дата получения
    • .expires – дата действия до
Пример

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

POST http://localhost:9000/TourSearchOwin/Token HTTP/1.1
Content-Type: application/x-www-form-urlencoded

grant_type=password&username=test&password=1

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

{
	"access_token": "AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA-
EqAAAAAASAAACgAAAAEAAAAO4S-VrqBhQuhqliqrAKKfIgAQAAn-gfgP-rYjk-Krr1Ck2A-IGCw6FBhamUOzFxgTtk1hR-
GLMryFIH8VK5GmHdHubZWj4S7XcazGL1Kn5-VlbiYdW2ZVWpYlk638aV-XS2kpZ9YrKgViiM_x8RH5TPo4-
9LhE7V-SjiB_CP_qs58DRKcyohq3Tz9QaiFgH1Ko7O2XKjTBG7SHyQPDPYjaqg9kDxmzq0UcIT6Fm4YkDxmm9-
CW7u3cEFWcpiqKOc2VvZFKPPHc07uDOO4w9FXPhpXZwOqrJBxzhbr73RuhzPs_e-hgxKaIlsMaK5b0v5ReAMy1kuY0ebXA",",
	"token_type": "bearer",
	"expires_in": 1209599,
	"userKey": "333",
        "userType": "0",
	".issued": "Thu, 05 Apr 2018 12:05:31 GMT",
	".expires": "Thu, 19 Apr 2018 12:05:31 GMT"
}


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

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

  • Формат запроса:
    • GET .../TourSearchOwin/Settings?
  • Принимаемые параметры:
    • нет принимаемых параметров
  • Возвращаемый результат:
    • ChildAgesSetting – регулируется настройкой максимальный возраст ребенка (массив возрастов, при которых турист будет считаться ребенком
    • DurationSetting – регулируется настройкой максимальная продолжительность тура (массив продолжительностей, доступных в фильтрах для поиска)
    • RoundServiceSetting – признак округления цены (количество знаков после запятой)
    • CacheReady – статус готовности службы поиска к работе (true/false)
    • EnableFiterTree – устаревшая настройка, будет убрана (по умолчанию всегда false)
    • EnableActualFilters – включены ли актуальные фильтры (true/false)
    • CorrectLicense – проверка лицензии (true/false)
    • CorrectLicenseMessage – сообщение, если проверка лицензии не прошла
    • IsCorrectUser – проверка наличия пользователя в таблице Userlist, под которым запущена служба поиска (true/false)
    • IsShowCitizenAuthTourist – настройка запрашивать гражданство при регистрации частного лица (true/false)
    • IsShowFewCountPlaces – настройка отображения числового значения оставшихся мест, когда достигнуто значение «Мало» (true/false)
    • IsShowBusTransferPlaces – использовать фильтр наличие мест на автобусный переезд в поиске (true/false)
    • UseBusSeatChecks – план рассадки автобусного переезда (0 – не отображать, 1 – отображать без проверки, 2 – отображать с проверкой)
    • UseTransferSeatChecks – план рассадки трансфера (0 – не отображать, 1 – отображать без проверки, 2 – отображать с проверкой)
    • IsShowFiltersByCity – отображать фильтр по городам на главной странице поиска (true/false)
    • CheckRealCourses – включена ли проверка курсов реальных валют при поиске (true/false)
    • CommonImagesFolderPath – путь к папке для хранения изображений
    • UseApplyFiltersButton – отображать кнопку «Применить фильтры» (true/false)
    • AutoSearchFiltersTimeout – задержка между выбором дополнительных фильтров и выводом результатов (в секундах)
    • UseFastSearchAlgoritm – использовать быстрый алгоритм поиска (true/false)
    • MaxSearchDatesCountClient – максимальное количество дат, которое будет обрабатываться в клиенте поиска
    • MaxDurationsCountClient – максимальное количество продолжительностей, которое будет обрабатываться в клиенте поиска
    • UseHotelCategoryGlobalCodeInDopFilter – использовать глобальные коды категорий отелей в поиске
    • UsePansionGlobalCodeInDopFilter – использовать глобальные коды питаний в поиске
    • CheckTouristDataInBasket – проверять корректность данных туристов
    • SimpleRegistration – упрощенная регистрация частного лица
    • ShowHotelImagesInSearch – показывать описание и изображения отелей в поиске
    • CacheReadyMessage – сообщение о готовности службы поиска или службы расчета актуальных фильтров. Варианты возвращаемых значений:
      • <add key="enableActualFilters" value="true" /> - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован"
      • <add key="enableActualFilters" value="false" /> - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован".
    • nodeId – уникальный идентификатор узла в кластере балансировки нагрузки HaProxy
    • FullPaymentPeriod – полная оплата с даты бронирования (может быть null)
    • FullPaymentCheckin – полная оплата до даты заезда (может быть null)
    • PrePaymentPeriod – предоплата с даты бронирования (может быть null)
    • PrePaymentCheckin – предоплата до даты заезда (может быть null)
    • PrePaymentCu" – значение предоплаты в y.e. (может быть null)
    • PrePaymentPercent – значение предоплаты в процентах (может быть null)
Пример

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

GET http://localhost:9000/TourSearchOwin/Settings

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

{
   "ChildAgesSetting":    [
      1, 
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      11,
      12,
      13,
      14,
      15,
      16
   ],
   "DurationSetting":    [
      1,
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      11,
      12,
      13,
      14,
      15,
      16,
      17,
      18,
      19,
      20
   ],
   "RoundServiceSetting": 2,
   "CacheReady": true,
   "EnableFiterTree": false,
   "EnableActualFilters": true,
   "CorrectLicense": true,
   "CorrectLicenseMessage": "0deb1f882da1ec6301c961780507a180",
   "IsCorrectUser": true,
   "IsShowCitizenAuthTourist": true,
   "IsShowFewCountPlaces": true,
   "IsShowBusTransferPlaces": true,
   "UseBusSeatChecks": 1,
   "UseTransferSeatChecks": 2,
   "IsShowFiltersByCity": true,
   "CheckRealCourses": true,
   "CommonImagesFolderPath": "\\\\server\\Icons",
   "UseApplyFiltersButton": false,
   "AutoSearchFiltersTimeout": 1,
   "UseFastSearchAlgoritm": true,
   "MaxSearchDatesCountClient": 10,
   "MaxDurationsCountClient": 14
   "UseHotelCategoryGlobalCodeInDopFilter": false
   "UsePansionGlobalCodeInDopFilter": false
   "CheckTouristDataInBasket": true
   "SimpleRegistration": false
   "ShowHotelImagesInSearch": true
   "CacheReadyMessage":	"Кеш инициализирован"
    "nodeId": 2147483647,
    "FullPaymentPeriod": null,
    "FullPaymentCheckin": 5,
    "PrePaymentPeriod": null,
    "PrePaymentCheckin": 10,
    "PrePaymentPercent": 50.0,
    "PrePaymentCu": null
}


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

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

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


Пример

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

GET http://localhost:9000/TourSearchOwin/Currency

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

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



Выгрузка курсов валют (CurrencyRates) начиная с 15.7

Полный аналог метода Выгрузка курсов валют (GetCurrencyRates)
Метод возвращает список курсов валют, актуальных на дату запроса. Курсы отображаются только для тех валют, которые отмечены в справочнике признаком Отображать в онлайне

  • Формат запроса:
    • GET .../TourSearchOwin/CurrencyRates
  • Принимаемые параметры:
    • dateFrom – начальная дата, от которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
    • dateTo – конечная дата, до которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
    • otherBaseCurrencyId – идентификатор любой валюты, эмулирующей работу национальной валюты, необязательный параметр. Если заполнен, то в результатах выдачи параметр baseCurrencyId будет заменяться на валюту из параметра otherBaseCurrencyId (обрабатывается с релиза 15.9).
  • Возвращаемый результат:
    • baseCurrencyId – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке basketCurrency в конфигурационном файле (обрабатывается с релиза 15.6)
    • currencyId – идентификатор валюты, курс которой приводится
    • rate – курс валюты (отношение currencyId к baseCurrencyId)
    • date – дата, на которую был зарегистрирован выводимый курс валюты
Пример

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

http://localhost:9000/TourSearchOwin/CurrencyRates?dateFrom=18.09.2024&dateTo=19.09.2024

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

[
    {
        "BaseCurrencyId": 14,
        "CurrencyId": 1,
        "Rate": 91.429200,
        "Date": "18.09.2024"
    },
    {
        "BaseCurrencyId": 14,
        "CurrencyId": 2,
        "Rate": 101.505700,
        "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"
    }
]


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

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

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

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

GET http://localhost:9000/TourSearchOwin/AllCurencies/getAllCurrencies

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

[
      {
      "Code": "EU",
      "Name": "Euro",
      "IsMain": false,
      "IsNational": false,
      "IsoCode": "EUR",
      "IsShowInSearch": true,
      "Symbol": "€",
      "Key": 2
   },
      {
      "Code": "рб",
      "Name": "Рубль",
      "IsMain": false,
      "IsNational": true,
      "IsoCode": "RUR",
      "IsShowInSearch": true,
      "Symbol": "₽",
      "Key": 14
   },
      {
      "Code": "$",
      "Name": "US Dollar",
      "IsMain": true,
      "IsNational": false,
      "IsoCode": "USD",
      "IsShowInSearch": true,
      "Symbol": "$",
      "Key": 1
   },
   {
       "Code": "гр",
       "Name": "Гривна",
       "IsMain": false,
       "IsNational": false,
       "IsoCode": "UAH",
       "IsShowInSearch": true,
       "Symbol": "₴",
       "Key": 6
   }
]



Получение сконвертированных цен (convertFilterPrice)

Метод возвращает сконвертированные цен для допфильтра Цена (используется в canary)

  • Формат запроса:
    • GET .../TourSearchOwin/AllCurencies/convertFilterPrice
  • Принимаемые параметры ( * – обязательный):
    • SourceRateKey * – ключ исходной валюты конвертации
    • TargetRateKey * – ключ валюты, в которую будет произведена конвертация
    • MinPrice * – значение минимальной цены, которое будет участвовать в конвертации
    • MaxPrice * – значение максимальной цены, которое будет участвовать в конвертации
  • Возвращаемый результат:
    • m_Item1 – сконвертированная минимальная цена
    • m_Item12 – сконвертированная максимальная цена
Пример

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

GET http://localhost:9000/TourSearchOwin/AllCurencies/convertFilterPrice?SourceRateKey=2&TargetRateKey=1&MinPrice=10&MaxPrice=200

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

{
    "m_Item1": 12.035142616440004814057046576,
    "m_Item2": 240.70285232880009628114093152
}


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

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

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

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

GET http://localhost:9000/TourSearchOwin/QuotedServices

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

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


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

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

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

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

GET http://localhost:9000/TourSearchOwin/departureCities

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

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


Выгрузка актуальных стран (Destination)

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

  • Формат запроса:
    • GET .../TourSearchOwin/Destination?
  • Принимаемые параметры ( * – обязательный):
    • departureCities * – идентификатор города(ов) отправления (из контроллера .../TourSearchOwin/departureCities?)
    • type – настройка easySearchFilter (0/не указано - настройка выключена, 1 - настройка включена)
    • term – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
  • Возвращаемый результат:
    • Name – название страны
    • Key – идентификатор страны
    • DestinationType – тип результата (внутренний параметр, не изменяемый, всегда возвращается значение = 1)
    • IsExist – не используется
    • Data – массив данных для контекстного поиска
      • CityKey – код города
      • CityName – Название
      • HotelKey – код отеля
      • HotelName – название отеля
      • ResortKey – код курорта
      • ResortName – название курорта


Пример

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

GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1

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

[
      {
      "Data": null,
      "DestinationType": 1,
      "IsExist": false,
      "Key": 90,
      "Name": "Австрия"
    
     
   },
      {
      "Data": null,
      "DestinationType": 1,
      "IsExist": false,
      "Key": 53,
      "Name": "Тайланд"
      
      
   },
      {
      "Data": null,
      "DestinationType": 1,
      "IsExist": false,
      "Key": 460,
      "Name": "Россия"
      
      
   }
]
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1&type=1

Возвращаемый результат метода Destination (в формате JSON) с включенной настройкой easySearchFilter

[
 {
  "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": ""
          },
       ],
 }
]


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

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

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

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

GET http://localhost:9000/TourSearchOwin/ActualizeCities?cityKeys=1&Key=90

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

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


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

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

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

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

GET http://localhost:9000/TourSearchOwin/ActualizeTourType?departureCityKeys=1&Key=90&Type=1&destinationCity=-1

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

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


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

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

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

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

GET http://localhost:9000/TourSearchOwin/TourDate?departureCity=1&destinationCity=-1&Key=90&Type=1&tourTypes=-1

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

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


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

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

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

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

GET http://localhost:9000/TourSearchOwin/Duration?departureCity=1&destinationCity=-1
&Key=90&Type=1&tourDate=25.02.2018&tourDate=26.02.2018&tourTypes=-1

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

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


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

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

  • Формат запроса:
    • GET .../TourSearchOwin/Tour?
  • Принимаемые параметры ( * – обязательный):
    • DepartureCityKeys * – идентификатор города(ов) отправления (полученный из метода .../TourSearchOwin/departureCities?)
    • Dates * – массив дат заезда (полученные из метода .../TourSearchOwin/TourDate?). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
    • Durations * – массив продолжительностей (полученные из метода .../TourSearchOwin/Duration?). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
    • PageNumber * – номер возвращаемой страницы (по умолчанию возвращается 1)
    • PageSize * – количество возвращаемых результатов на одной странице (возвращается 20)
    • isFromBasket * – происходит ли обращение из корзины или из поиска туров (true/false)
    • isFillSecondaryFilters – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
    • DestinationType * – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
    • DestinationKey * – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/Destination?)
    • AdultCount * – количество взрослых
    • ChildAges – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
    • CurrencyName * – код валюты
    • AviaQuota * – информация о квотах на авиаперелет (значения параметров: "1" — фильтр "Есть", "5" — фильтр "Есть+запрос", "7" — фильтр "Все")
    • HotelQuota * – информация о квотах на отель (значения параметров: "1" — фильтр "Есть", "5" — фильтр "Есть+запрос", "7" — фильтр "Все")
    • BusTransferQuota – информация о квотах на автобусный переезд (значения параметров: "1" — фильтр "Есть", "5" — фильтр "Есть+запрос", "7" — фильтр "Все")
    • MinPrice * – минимальная цена (по умолчанию не задана, передается NaN)
    • MaxPrice – максимальная цена (по умолчанию не передается)
    • Groups – группировка результатов (2 – по названию тура, 4 – по дате тура, 8 – по продолжительности тура, 16 – по городу вылета, 32 – по отелю, 64 – по городу отеля, 128 – по курорту отеля, 256 – по категории отеля)
    • HotelScheme – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры:
      • TemplateId – идентификатор шаблона услуги (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Key->TemplateId),
      • DurationInNight – продолжительность отеля в ночах (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->DurationInNight),
      • Code – ключ отеля (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->Code),
      • PacketKey – ключ пакета (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PacketId),
      • PartnerKey – ключ партнера (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PartnerId),
      • GDSProviderId – ключ провайдера из внешней системы (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->GDSProviderId),
      • TotalTourDuration – общая продолжительность тура в днях (этот параметр можно взять из контроллера Tour->Result->Duration)
    • BusTransferPointKeys – данный признак проставляется в true в том случае, когда происходит запрос вариантов проживания (кнопка Варианты) в автобусных переездах
    • TourKey – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
    • TourDuration – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
    • TourType – идентификатор типа(ов) тура (полученный из метода .../TourSearchOwin/ActualizeTourType?), по умолчанию передается -1, то есть все типы тура в рамках данной страны. Возможна множественная передача параметров.
    • Tour – ключ программы тура (дополнительный фильтр)
    • Duration – продолжительность тура (дополнительный фильтр)
    • DateTour – дата тура (дополнительный фильтр)
    • HotelResort – ключ курорта отеля (дополнительный фильтр)
    • HotelCity – ключ города отеля (дополнительный фильтр)
    • HotelType – ключ признака отеля (дополнительный фильтр)
    • HotelStars – ключ категории отеля (дополнительный фильтр)
    • Hotel – ключ отеля (дополнительный фильтр)
    • Pansions – ключ питания (дополнительный фильтр)
    • Airline – ключ авиакомпании (дополнительный фильтр)
    • AirportDeparture – ключ аэропорта вылета (дополнительный фильтр)
    • AirportArrival – ключ аэропорта прилета (дополнительный фильтр)
    • CityIds – идентификатор города(ов) прибытия (полученный из метода .../TourSearchOwin/ActualizeCities?), по умолчанию передается -1, то есть все города в рамках данной страны. Возможна множественная передача параметров.
    • TimeDepartureFrom – время отправления с (по умолчанию возвращается 00:00)
    • TimeDepartureTo – время отправления по (по умолчанию возвращается 23:59)
    • TimeArrivalFrom – время прибытия с (по умолчанию возвращается 00:00)
    • TimeArrivalTo – время прибытия по (по умолчанию возвращается 23:59)
    • ArrivalFlightNoTransfer – производить поиск без пересадок в прямом направлении (true/false, по умолчанию false)
    • DepartureFlightNoTransfer – производить поиск без пересадок в обратном направлении (true/false, по умолчанию false)
    • DepartureFlightNumberTransfer – наличие пересадок в прямом направлении (1 – одна пересадка, 2 – две пересадки и более, 3 – одна пересадка совместно с двумя пересадками и более). Обрабатывается начиная с релиза 15.3.
    • ArrivalFlightNumberTransfer – наличие пересадок в обратном направлении (1 – одна пересадка, 2 – две пересадки и более, 3 – одна пересадка совместно с двумя пересадками и более). Обрабатывается начиная с релиза 15.3.
    • Tariff – ключ класса авиаперелета (дополнительный фильтр)
    • CombineAirlines — разрешить комбинировать авиаперелеты (дополнительный фильтр). Параметр применяется только при наличии параметра airline. Обрабатывается начиная с релиза 15.3.
    • CombineTariffs — разрешить комбинировать классы перелета (дополнительный фильтр). Параметр применяется только при наличии параметра tariff. Обрабатывается начиная с релиза 15.3.
    • FlightCityDeparture – ключ город вылета в параметрах авиаперелета (дополнительный фильтр)
    • CityDeparture – ключ города начала поездки (дополнительный фильтр)
    • RemoteHotelMode – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
    • GroupGuid – используется для получения турпрограмм по уникальному ключу из кэша при использовании группировки. Примеры использования. GroupGuid=00000000-0000-0000-0000-000000000000 – при первом запросе от локальной системы. GroupGuid=936DA01F-9ABD-4d9d-80C7-02AF85C822A8 (уникальный ключ) – передается на клиент от первого запроса из внешней системы. С данным уникальным ключом осуществляется второй запрос от внешней системы. Далее происходит получение значений по данному уникальному ключу. Обрабатывается начиная с релиза 15.4.
    • IsGroupingTourAlreadyMerge – определяет слияние данных турпрограмм от локальной системы с данными от внешней системы при использовании группировки. Примеры использования. IsGroupingTourAlreadyMerge=false – полученные данные от локальной системы не объединены с данными от внешней системы. На клиенте осуществляется объединение данных турпрограмм с последующей сортировкой по минимальной цене. IsGroupingTourAlreadyMerge=true – полученные данные от локальной системы уже объединены с данными от внешней системы. На клиенте осуществляется только сортировка по минимальной цене. Обрабатывается начиная с релиза 15.4.
    • SearchId – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5.
    • nodeId – уникальный идентификатор узла в кластере балансировки нагрузки HaProxy


  • Возвращаемый результат:
    • CheckMessages – сообщения для логики проверки тура (не используется)
    • Message – сообщение об ошибке
      • Key – код ошибки
      • Value – сообщение об ошибке
    • Result – результаты поиска
      • Key – идентификатов программы тура
      • Name – название программы тура
      • TourUrl – ссылка на программу тура
      • 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 – дата начала тура
      • MaxConnectionTime – длительность пересадок в индивидуальных настройках подбора перелетов в формате hh:mm
      • FullPaymentPeriod – полная оплата с даты бронирования (может быть null)
      • FullPaymentCheckin – полная оплата до даты заезда (может быть null)
      • PrePaymentPeriod – предоплата с даты бронирования (может быть null)
      • PrePaymentCheckin – предоплата до даты заезда (может быть null)
      • PrePaymentCu" – значение предоплаты в y.e. (может быть null)
      • PrePaymentPercent – значение предоплаты в процентах (может быть null)
      • Duration – продолжительность тура (в днях)
      • DurationInNight – продолжительность проживания (в ночах)
      • Types – идентификатор типа туров
      • Price – цена тура с учетом скидки в валюте поиска
      • Cost – цена тура в валюте поиска
      • Rate – код валюты тура
      • Penalties – внутреннее поле, не используется
      • CityDepature – город отправления
        • Key – идентификатор города отправления
        • Value – название города отправления
      • CountryId – всегда возвращается ключ 0
      • Services – услуги в туре
        • DepartureCity – город отправления
          • Key – идентификатор
          • Value – название
        • DepartureCountry – страна отправления
          • Key – идентификатор
          • Value – название
        • ArrivalCity – город прибытия
          • Key – идентификатор
          • Value – название
        • ArrivalCountry – страна прибытия
          • Key – идентификатор
          • Value – название
        • DepartureAirport – аэропорт отправления
          • Key – идентификатор
          • Value – название
        • ArrivalAirport – аэропорт прибытия
          • Key – идентификатор
          • Value – название
        • Airline – авиакомпания
          • Key – идентификатор
          • Value – название
        • Aircraft – воздушное судно
          • Key – идентификатор
          • Value – название
        • Flight – рейс
          • Key – идентификатор
          • Value – название
        • DepartureTime – время вылета
        • ArrivalTime – время прилета
        • EndDateTime – дата и время прилета
        • FlightDetails – информация об авиаперелете
          • Tariff – информация о тарифе перелета
            • Key – идентификатор
            • Code – код тарифа
            • Name – название тарифа
          • Cost – разница в стоимости с самым дешевым вариантом
          • QuotaStatus – информация о квоте
            • PlacesStatus – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
            • FreePlaces – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
            • IsFewPlaces – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
          • PartnerId – ключ партнера
          • ByPax – цена за человека (true/false)
          • Partner – информация о партнере
            • Key – идентификатор
            • Value – название
        • FlightSetting – внутренняя информация о перелете из программы туров
          • ServiceId – идентификатор класса услуги (внутренняя информация из программы туров)
          • PatternId – идентификатор паттерна услуги (внутренняя информация из программы туров)
          • FlightId – идентификатор перелета (внутренняя информация из программы туров)
        • FlightSourceMode – локальный или внешний перелет (внутренняя информация из программы туров)
        • Id – идентификатор базового шаблона услуги (внутренняя информация из программы туров)
        • SvKey – ключ типа услуги
        • IsSubCode1 – признак наличия доп. описания 1
        • IsSubCode2 – признак наличия доп. описания 2
        • IsPartnerBasedOn – признак услуга с приоритетным подбором поставщика
        • Day – день предоставления услуги
        • DurationInNight – продолжительность услуги в ночах
        • BeginDateTime – дата предоставления услуги
        • IsHooded – признак скрытая услуга
        • IsDeleted – признак удаляемая услуга
        • IsNotCalculate – признак не рассчитываемая услуга
        • PacketId – ключ пакета
        • Index – порядковый номер услуги
      • NotRouteServices – массив коллекций немаршрутных услуг (например если две экскурсии будут являться одним элементом массива, то это будет говорить о том, что эти экскурсии можно будет выбрать в выпадающем списке)
        • ServiceName – название типа услуги
        • City – объект город
          • Key – ключ города
          • Value – название города
        • Country – объект страна
          • Key – ключ страны
          • Value – название страны
        • Code – объект код услуги
          • Key – ключ услуги
          • Value – название услуги
        • ByScheduler – флаг услуга по расписанию или нет
        • Details – объект детализация услуги
          • SubCode1 – объект доп. описание 1
            • Key – ключ доп. описания 1
            • Value – название доп. описания 1
          • SubCode2 – объект доп. описание 2
            • Key – ключ доп. описания 2
            • Value – название доп. описания 2
          • Date – дата услуги
          • IsShowTransportPlan – признак показывать ли план рассадки (для автобусов)
          • Cost – цена
          • QuotaStatus – объект информация по квотам
            • PlacesStatus – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
            • FreePlaces – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
            • IsFewPlaces – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
          • PartnerId – идентификатор партнера
          • ByPax – признак цены за человека
          • Partner – объект партнер (не заполняется)
            • Key – ключ (не заполняется)
            • Value – название (не заполняется)
        • ParentId – идентификатор родительской услуги (для вложенных услуг)
        • PartnerBasedOnServiceTemplateId – ключ шаблона услуги, по которой приоритетно выбирается партнер текущей услуги
        • Id – идентификатор услуги
        • SvKey – ключ типа услуги
        • IsSubCode1 – наличие доп. описания 1
        • IsSubCode2 – наличие доп. описания 2
        • IsPartnerBasedOn – услуга с подбором приоритетного поставщика услуги
        • Day – день предоставления услуги
        • DurationInNight – продолжительность услуги в ночах
        • BeginDateTime – дата предоставления услуги
        • EndDateTime – дата окончания услуги
        • IsHooded – скрытая ли услуга
        • IsDeleted – удаляемая ли услуга
        • IsNotCalculate – не рассчитываемая ли услуга
        • PacketId – пакет услуги
        • Index – индекс услуги
      • MinCostServicesComposition – массив состав услуг минимальной цены
        • Key – ключ
          • TemplateId – идентификатор шаблона
          • PatternId – идентификатор вкладки
          • SettingId – идентификатор услуги
        • Value – значение
          • ServiceType – тип услуги
          • Code – ключ услуги
          • SubCode1доп. описание 1
          • SubCode2доп. описание 2
          • PacketId – пакет услуги
          • PartnerId – партнер услуги
          • CountryId – страна услуги
          • CityId – город услуги
          • Day – день предоставления услуги
          • DurationInNight – продолжительность услуги в ночах
        • COAndSpecialsInfo – формирует, фильтрует и выдаёт списки применённых акций и ценовых блоков
          • AppliedCostOffersKeys – коллекция идентификаторов всех применённых ценовых блоков к одной цене
          • AppliedSpeciasInfo – коллекция всех применённых акций к одной цене, содержит информацию об условиях, с которыми применилась каждая акция
            • SpecialKey – ключ акции
            • SpecialName – название акции
            • SpecialType – тип акции
            • NewPrice – цена после применения акции
            • OldPrice – цена до применения акции
            • ShowOnline – нужно ли показывать акцию в поиске
            • UntilDate – акция действует при совершении покупки до указанной даты
            • Condition – json форма условия применения акции. Данное поле включает в себя следующие значения в зависимости от типа акции:
              • NightsFrom (для типа PayStay) – ночей от
              • NightsTo (для типа PayStay) – ночей до
              • NightValue (для типа PayStay) – значение ночи, которое соответствует заданному периоду
              • OperationType (для типа PayStay) – тип действия
              • SpecialNightType (для типа PayStay) – тип бесплатной ночи
              • DurationFrom (для типа KickBack) – ночей от
              • DurationTo (для типа KickBack) – ночей до
              • Value (для типа KickBack) – значение продолжительности, равное заданному периоду
              • OperationType (для типа KickBack) – тип действия
              • NightsFrom (для типа EarlyBird) – ночей от
              • NightsTo (для типа EarlyBird) – ночей до
              • Discount (для типа EarlyBird) – размер скидки
              • OperationType (для типа EarlyBird) – тип действия
        • COBySubCode – список применённых идентификаторов ценовых блоков по SubCode1 и SubCode2
        • SpecialsBySubCode – список применённых акций по SubCode1 и SubCode2
      • FlightWeight
      • LinkingFlightsRules – объект правил связывания
        • notCombineDifferentAirlineRule – объект не скрещивать авиакомпании
          • airlines – авиакомпании
          • flightSettings – массив ключей ServiceId, PatternId, FlightId
          • enabled – флаг включен/выключен
        • checkPlusMinus1CharterRule – объект Отличие номера рейса на 1
          • FlightSettingPairs – массив чартеров, для которых это правило будет выполняться
          • enabled – флаг включен/выключен
        • notCombineDifferentTariffGroupRule – объект не комбинировать рейсы от разных классов перелетов
          • FlightSettings – массив ключей ServiceId, PatternId, FlightId
          • enabled – флаг включен/выключен
        • notCombineDifferentPartnerRule – объект не комбинировать рейсы от разных партнеров
          • FlightSettings – массив ключей ServiceId, PatternId, FlightId
          • enabled – флаг включен/выключен
        • departureCityEqualsArrivalCityRule – объект Город вылета = городу прилета
          • FlightSettingPairs – чартеры, для которых это будет выполняться
          • enabled – флаг включен/выключен
        • combineOnlySpecificChartersRule – объект не комбинировать различные классы перелетов
          • settings – массив ключей чартеров CharterIds и ServiceId, PatternId, FlightId
          • enabled – флаг включен/выключен
      • RouteSubVariants – подварианты услуг (используется в основном поиске)
      • Routes – количество маршрутов для данного варианта поиска (к примеру, если будет несколько вариантов
      • IsRemoteHotels – признак, есть ли внешние отели в данном варианте
      • IsTourImages – признак, есть ли картинки тура
      • MaskKeys – маска фильтра категории номеров
    • SecondaryFiltersResult – результаты доп. фильтров
      • TourTypes – типы тура
        • Id – ключ типа тура
        • Name – название типа тура
        • ParentId – родительский элемент типа тура (если есть)
        • Type – тип справочника (используется для внутренних целей)
      • TourPrograms – информация по каждой турпрограмме
        • Key – ключ турпрограммы
        • Name – название турпрограммы
        • TourUrl – ссылка на тур
        • BookingConditions – условия бронирования
        • IsLandOnly – признак только наземное обслуживание
        • IsRestrictMultiHotels – ограничивать ли расчёт многоотельных туров категориями отелей
        • IsHotelTemplates – есть ли вообще отели в данной турпрограмме
        • IsRouteServices – есть ли маршрутные услуги
        • MultiHotelDelta – Значение отклонения звездности последующих отелей от первого отеля в многоотельном туре. По умолчанию 0. Звездность определяется числом, заданном в поле порядок при печати.
        • Rate – валюта тура
        • DateStart – нижняя граница дат заезда по программе тура
        • DateEnd – верхняя граница дат заеда по программе тура
        • Status – статус турпрограммы
          • Key – ключ
          • Value – значение
        • Templates – шаблоны услуг
          • $id – шаблон 1
          • $id – шаблон 2
        • Types – типы тура
          • Id – ключ типа тура
          • Name – название типа тура
          • ParentId – родительский элемент типа тура (если есть)
          • Type – тип справочника (используется для внутренних целей)
        • LinkingFlightsRules – правила связывания перелетов
          • notCombineDifferentAirlineRule
            • airlines
            • flightSettings
            • enabled
          • checkPlusMinus1CharterRule
            • FlightSettingPairs
            • enabled
          • notCombineDifferentTariffGroupRule
            • FlightSettings
            • enabled
          • notCombineDifferentPartnerRule
            • FlightSettings
            • enabled
          • departureCityEqualsArrivalCityRule
            • FlightSettingPairs
            • enabled
          • combineOnlySpecificChartersRule
            • settings
            • enabled
        • Type – тип справочника (используется для внутренних целей)
      • TourDurations – продолжительность тура
      • TourDates – список дат заездов в турпрограмме
        • HotelCities – город в дополнительных фильтрах
          • '
        • HotelResorts – курорты в дополнительных фильтрах
          • '
        • HotelCategories – категории отеля в дополнительных фильтрах
          • '
        • Hotels – отели в дополнительных фильтрах
          • '
        • Pansions – питания в дополнительных фильтрах
          • '
        • Airlines – авиакомпании в дополнительных фильтрах
          • '
        • FlightTariffs – класс перелета в дополнительных фильтрах
          • '
        • DepartureCities – города вылета в дополнительных фильтрах
          • '
        • DepartureAirports – аэропорты вылета в дополнительных фильтрах
          • '
        • ArrivalCities – города прибытия в дополнительных фильтрах
          • '
        • ArrivalAirports – аэропорты прибытия в дополнительных фильтрах
          • '
        • HotelTypes – признаки отелей в дополнительных фильтрах
          • '
    • nodeId – уникальный идентификатор узла в кластере балансировки нагрузки HaProxy
Пример

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

GET http://localhost:9000/TourSearchOwin/Tour?DepartureCityKeys=1&Dates=25.02.2018&Durations=4
&PageNumber=1&PageSize=20&HotelScheme=&TourKey=&TourDuration=&isFromBasket=false
&isFillSecondaryFilters=true&DestinationType=1&DestinationKey=90&AdultCount=2&ChildAges=2
&ChildAges=2&CurrencyName=EU&AviaQuota=5&HotelQuota=5&BusTransferQuota=5&MinPrice=NaN&TourType=-1
&CityIds=-1&TimeDepartureFrom=00%3A00&TimeDepartureTo=23%3A59&TimeArrivalFrom=00%3A00
&TimeArrivalTo=23%3A59&ArrivalFlightNoTransfer=false&DepartureFlightNoTransfer=false

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

{
   "CheckMessages": null,
   "Message":    {
      "Key": 0,
      "Value": null
   },
   "Result":    [
            {
         "Key": 100000004,
         "Name": "Общая проверка системы",
         "TourUrl": "www.megatec.ru",
         "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",
         "MaxConnectionTime": 0
         "FullPaymentPeriod": 5,
         "FullPaymentCheckin": null,
         "PrePaymentPeriod": null,
         "PrePaymentCheckin": 5,
         "PrePaymentCu": null,
         "PrePaymentPercent": 10.0,
         "Duration": 4,
         "DurationInNight": 3,
         "Types": [2],
         "Price": 260,
         "Cost": 260,
         "Penalties": null,
         "Rate": "EU",
         "CityDepature":          {
            "Key": 1,
            "Value": "Москва"
         },
         "CountryId": 0,
         "Services":          [
                        {
               "DepartureCity":                {
                  "Key": 1,
                  "Value": "Москва"
               },
               "DepartureCountry":                {
                  "Key": 460,
                  "Value": "Россия"
               },
               "ArrivalCity":                {
                  "Key": 35,
                  "Value": "Вена"
               },
               "ArrivalCountry":                {
                  "Key": 90,
                  "Value": "Австрия"
               },
               "DepartureAirport":                {
                  "Key": "SVO4",
                  "Value": "Шереметьево-24"
               },
               "ArrivalAirport":                {
                  "Key": "VIE1",
                  "Value": "Vena1"
               },
               "Airline":                {
                  "Key": "BA7",
                  "Value": "BRITISH  AIRWAYS"
               },
               "Aircraft":                {
                  "Key": "319",
                  "Value": "AIRBUS "
               },
               "Flight":                {
                  "Key": 882,
                  "Value": "4444"
               },
               "DepartureTime": "10:00:00",
               "ArrivalTime": "12:00:00",
               "EndDateTime": "2018-02-25T12:00:00",
               "FlightDetails": [               {
                  "Tariff":                   {
                     "Key": 89,
                     "Code": "Y",
                     "Name": "Экономический класс"
                  },
                  "Cost": 10,
                  "QuotaStatus":                   {
                     "PlacesStatus": 4,
                     "FreePlaces": 0,
                     "IsFewPlaces": false
                  },
                  "PartnerId": 12668,
                  "ByPax": true,
                  "Partner":                   {
                     "Key": 0,
                     "Value": null
                  }
               }],
               "FlightSetting":                {
                  "ServiceId": 3,
                  "PatternId": 13,
                  "FlightId": 13
               },
               "FlightSourceMode": 1,
               "Id": 3,
               "SvKey": 1,
               "IsSubCode1": true,
               "IsSubCode2": false,
               "IsPartnerBasedOn": false,
               "Day": 1,
               "DurationInNight": 0,
               "BeginDateTime": "2018-02-25T10:00:00",
               "IsHooded": false,
               "IsDeleted": false,
               "IsNotCalculate": false,
               "PacketId": 779,
               "Index": 0
            },
                        {
               "Hotel":                {
                  "Key": 709,
                  "Value": "Am Brilliantengrund"
               },
               "City":                {
                  "Key": 35,
                  "Value": "Вена"
               },
               "Stars":                {
                  "Key": -1,
                  "Value": null
               },
               "Resort":                {
                  "Key": -1,
                  "Value": null
               },
               "ImageURL": "",
               "Http": null,
               "Description": "",
               "Country":                {
                  "Key": 90,
                  "Value": "Австрия"
               },
               "HotelDetails": [               {
                  "HotelRoom": 46463,
                  "Room":                   {
                     "Key": 129,
                     "Value": "DBL"
                  },
                  "RoomCategory":                   {
                     "Key": 3493,
                     "Value": "Cosy"
                  },
                  "AccomodationType":                   {
                     "Key": 1256,
                     "Value": "2+1_K",
                     "AdultCount": 2,
                     "ChildCount": 1
                  },
                  "Pansion":                   {
                     "Key": 4,
                     "Value": "Завтрак"
                  },
                  "AbsolutePenalties": null,
                  "Cost": 19.47,
                  "QuotaStatus":                   {
                     "PlacesStatus": 4,
                     "FreePlaces": 0,
                     "IsFewPlaces": false
                  },
                  "PartnerId": 12667,
                  "ByPax": false,
                  "Partner":                   {
                     "Key": 12667,
                     "Value": "Партнер-покупатель1"
                  }
               }],
               "HotelTypes": [               {
                  "Key": 5,
                  "Value": "Рекомендуемые"
               }],
               "Id": 1,
               "SvKey": 3,
               "IsSubCode1": true,
               "IsSubCode2": true,
               "IsPartnerBasedOn": false,
               "Day": 1,
               "DurationInNight": 3,
               "BeginDateTime": "2018-02-25T12:00:00",
               "EndDateTime": "2018-02-28T12:00:00",
               "IsHooded": false,
               "IsDeleted": false,
               "IsNotCalculate": false,
               "PacketId": 779,
               "Index": 1
            },
                        {
               "DepartureCity":                {
                  "Key": 35,
                  "Value": "Вена"
               },
               "DepartureCountry":                {
                  "Key": 90,
                  "Value": "Австрия"
               },
               "ArrivalCity":                {
                  "Key": 1,
                  "Value": "Москва"
               },
               "ArrivalCountry":                {
                  "Key": 460,
                  "Value": "Россия"
               },
               "DepartureAirport":                {
                  "Key": "VIE1",
                  "Value": "Vena1"
               },
               "ArrivalAirport":                {
                  "Key": "DME",
                  "Value": "Домодедово"
               },
               "Airline":                {
                  "Key": "7U",
                  "Value": "Авиаэнерго"
               },
               "Aircraft":                {
                  "Key": "727",
                  "Value": "Boeing"
               },
               "Flight":                {
                  "Key": 774,
                  "Value": "222"
               },
               "DepartureTime": "00:00:00",
               "ArrivalTime": "00:00:00",
               "EndDateTime": "2018-02-28T00:00:00",
               "FlightDetails": [               {
                  "Tariff":                   {
                     "Key": 89,
                     "Code": "Y",
                     "Name": "Экономический класс"
                  },
                  "Cost": 0,
                  "QuotaStatus":                   {
                     "PlacesStatus": 4,
                     "FreePlaces": 0,
                     "IsFewPlaces": false
                  },
                  "PartnerId": 10760,
                  "ByPax": true,
                  "Partner":                   {
                     "Key": 0,
                     "Value": null
                  }
               }],
               "FlightSetting":                {
                  "ServiceId": 4,
                  "PatternId": 5,
                  "FlightId": 4
               },
               "FlightSourceMode": 1,
               "Id": 4,
               "SvKey": 1,
               "IsSubCode1": true,
               "IsSubCode2": false,
               "IsPartnerBasedOn": false,
               "Day": 4,
               "DurationInNight": 0,
               "BeginDateTime": "2018-02-28T00:00:00",
               "IsHooded": false,
               "IsDeleted": false,
               "IsNotCalculate": false,
               "PacketId": 779,
               "Index": 4
            }
         ],
         "NotRouteServices":          [
            [            {
               "ServiceName": "страховка",
               "City": null,
               "Country":                {
                  "Key": 90,
                  "Value": "Австрия"
               },
               "Code":                {
                  "Key": 297,
                  "Value": "Страховка от несчастного случая"
               },
               "ByScheduler": false,
               "Details": [               {
                  "SubCode1":                   {
                     "Key": 18,
                     "Value": "2"
                  },
                  "SubCode2":                   {
                     "Key": null,
                     "Value": ""
                  },
                  "Date": null,
                  "IsShowTransportPlan": true,
                  "Cost": 16,
                  "QuotaStatus":                   {
                     "PlacesStatus": 1,
                     "FreePlaces": 0,
                     "IsFewPlaces": false
                  },
                  "PartnerId": 12668,
                  "ByPax": true,
                  "Partner":                   {
                     "Key": 0,
                     "Value": null
                  }
               }],
               "ParentId": null,
               "PartnerBasedOnServiceTemplateId": null,
               "Id": 10,
               "SvKey": 6,
               "IsSubCode1": true,
               "IsSubCode2": true,
               "IsPartnerBasedOn": false,
               "Day": 1,
               "DurationInNight": 3,
               "BeginDateTime": "2018-02-25T00:00:00",
               "EndDateTime": "2018-02-28T00:00:00",
               "IsHooded": false,
               "IsDeleted": true,
               "IsNotCalculate": true,
               "PacketId": 882,
               "Index": 2
            }],
            [            {
               "ServiceName": "экскурсия",
               "City":                {
                  "Key": 1046,
                  "Value": "Санто-Доминго"
               },
               "Country":                {
                  "Key": 90,
                  "Value": "Австрия"
               },
               "Code":                {
                  "Key": 743,
                  "Value": "4"
               },
               "ByScheduler": false,
               "Details": [               {
                  "SubCode1":                   {
                     "Key": 37,
                     "Value": "Мини-автобус 10 чел."
                  },
                  "SubCode2":                   {
                     "Key": null,
                     "Value": ""
                  },
                  "Date": null,
                  "IsShowTransportPlan": false,
                  "Cost": 85.22,
                  "QuotaStatus":                   {
                     "PlacesStatus": 1,
                     "FreePlaces": 0,
                     "IsFewPlaces": false
                  },
                  "PartnerId": 12667,
                  "ByPax": true,
                  "Partner":                   {
                     "Key": 0,
                     "Value": null
                  }
               }],
               "ParentId": null,
               "PartnerBasedOnServiceTemplateId": null,
               "Id": 7,
               "SvKey": 4,
               "IsSubCode1": true,
               "IsSubCode2": false,
               "IsPartnerBasedOn": true,
               "Day": 1,
               "DurationInNight": 0,
               "BeginDateTime": "2018-02-25T00:00:00",
               "EndDateTime": "2018-02-26T00:00:00",
               "IsHooded": false,
               "IsDeleted": true,
               "IsNotCalculate": true,
               "PacketId": 779,
               "Index": 3
            }]
         ],
         "MinCostServicesComposition":          [
                        {
               "Key":                {
                  "TemplateId": 3,
                  "PatternId": 13,
                  "SettingId": 13
               },
               "Value":                {
                  "ServiceType": 1,
                  "Code": 882,
                  "SubCode1": 89,
                  "SubCode2": 1,
                  "PacketId": 779,
                  "PartnerId": 12668,
                  "CountryId": 90,
                  "CityId": 35,
                  "Day": 1,
                  "DurationInNight": 0
               }
            },
                        {
               "Key":                {
                  "TemplateId": 1,
                  "PatternId": 0,
                  "SettingId": 0
               },
               "Value":                {
                  "ServiceType": 3,
                  "Code": 709,
                  "SubCode1": 46463,
                  "SubCode2": 4,
                  "PacketId": 779,
                  "PartnerId": 12667,
                  "CountryId": 90,
                  "CityId": 35,
                  "Day": 1,
                  "DurationInNight": 3
               }
            },
                        {
               "Key":                {
                  "TemplateId": 4,
                  "PatternId": 5,
                  "SettingId": 4
               },
               "Value":                {
                  "ServiceType": 1,
                  "Code": 774,
                  "SubCode1": 89,
                  "SubCode2": 35,
                  "PacketId": 779,
                  "PartnerId": 10760,
                  "CountryId": 460,
                  "CityId": 1,