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

Материал из Megatec
Перейти к: навигация, поиск
[непроверенная версия][досмотренная версия]
(Выгрузка услуг доплат к отелям (GetHotelsAdditionalServices))
(Установка)
 
(не показана 141 промежуточная версия 7 участников)
Строка 12: Строка 12:
 
Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
 
Для работы с web-сервисом необходимо на отдающей стороне установить [[Мастер-Тур(15):Установка#Установка службы поиска|службу поиска]].<br />
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'')
 
После установки web-сервис будет доступен по адресу ''<nowiki>http://значение настройки "serviceAddress" в TourSearchOwin/"название метода"</nowiki>'' (пример: ''http://localhost:9000/TourSearchOwin/Settings'')
 +
 +
==Swagger==
 +
Работу методов можно проверить с помощью Swagger по пути: ''http://localhost:9000/TourSearchOwin/SwaggerUI''
  
 
==Список методов==
 
==Список методов==
Строка 17: Строка 20:
 
Последовательность вызова методов сервиса<br />
 
Последовательность вызова методов сервиса<br />
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
 
[[Файл:mb_273.png|1000px|Последовательность вызова методов сервиса]]
 +
 +
===Информация о состоянии службы поиска (statusCache)===
 +
Метод выводит информацию о состоянии службы поиска при ее загрузке.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/statusCache?
 +
* Принимаемые параметры:
 +
** нет принимаемых параметров
 +
* Возвращаемый результат:
 +
** '''Initialized''' – информация о том, загружена ли служба или нет ('''false''' – инициализация кешей не завершена, '''true''' – инициализация кешей завершена)
 +
** '''Status''' – состояние службы. Возможные значения: ''Запущена инициализация кэшей'', ''Инициализация кэшей завершена''
 +
** '''CacheName''' – информация о том, какой именно кеш сейчас считается (название)
 +
** '''Iteration''' – порядковый номер считаемого справочника кеша
 +
** '''CacheCount''' – общее количество кешей
 +
** '''ProcessMessage''' – детализация. Информацию можно разделить на 3 блока:
 +
*** Загрузка всех справочных данных, кроме расчета маршрутов и актуальных фильтров. В этом случае сообщение будет ''Загрузка кэшей из БД''
 +
*** Расчет маршрутов. ''CacheName'' – ''HotelScheme'', сообщение будет ''tours load: 956 / 1234''
 +
*** Расчет актуальных фильтров. ''CacheName'' – ''ActualFilters'', сообщение будет ''Actual filter processed: 783012 / 3865687"''
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода Settings
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/statusCache
 +
</syntaxhighlight>
 +
Возвращаемый результат метода statusCache (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "ToursSearchView",
 +
    "Iteration": 10,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "Загрузка кэшей из БД"
 +
}
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "HotelScheme",
 +
    "Iteration": 109,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "tours load: 956 / 1234"
 +
}
 +
{
 +
    "Initialized": false,
 +
    "Status": "Запущена инициализация кэшей",
 +
    "CacheName": "ActualFilters",
 +
    "Iteration": 112,
 +
    "CacheCount": 112,
 +
    "ProcessMessage": "Actual filter processed: 783012 / 3865687"
 +
}
 +
{
 +
    "Initialized": true,
 +
    "Status": "Инициализация кэшей завершена",
 +
    "CacheName": null,
 +
    "Iteration": 0,
 +
    "CacheCount": 0,
 +
    "ProcessMessage": null
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
 
===Авторизация (Token)===
 
===Авторизация (Token)===
Строка 105: Строка 170:
 
*** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован"
 
*** ''<add key="enableActualFilters" value="true" />'' - CacheReady: true = CacheReadyMessage: "Кеш инициализирован"; CacheReady: false = CacheReadyMessage: "Кеш еще не инициализирован"
 
*** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован".
 
*** ''<add key="enableActualFilters" value="false" />'' - Служба актуальных фильтров недоступна (выключена, неверно указана ссылка на нее и т.п.) CacheReadyMessage: "Служба актуальных фильтров недоступна"; Служба актуальных фильтров доступна но не готова - CacheReadyMessage: "Кеш службы актуальных фильтров не инициализирован"; Служба актуальных фильтров готова, а основная служба не готова - CacheReadyMessage: "Кеш ещё не инициализирован"; Служба актуальных фильтров готова, и основная служба готова - CacheReadyMessage: "Кеш ещё инициализирован".
 
+
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
 +
** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
 +
** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
 +
** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
 +
** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
 +
** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
Строка 182: Строка 253:
 
   "ShowHotelImagesInSearch": true
 
   "ShowHotelImagesInSearch": true
 
   "CacheReadyMessage": "Кеш инициализирован"
 
   "CacheReadyMessage": "Кеш инициализирован"
 +
    "nodeId": 2147483647,
 +
    "FullPaymentPeriod": null,
 +
    "FullPaymentCheckin": 5,
 +
    "PrePaymentPeriod": null,
 +
    "PrePaymentCheckin": 10,
 +
    "PrePaymentPercent": 50.0,
 +
    "PrePaymentCu": null
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
 
  
 
===Выгрузка списка валют в онлайне (Currency)===
 
===Выгрузка списка валют в онлайне (Currency)===
Строка 257: Строка 334:
 
** GET .../TourSearchOwin/CurrencyRates
 
** GET .../TourSearchOwin/CurrencyRates
 
* Принимаемые параметры:
 
* Принимаемые параметры:
** нет принимаемых параметров
+
** '''dateFrom''' – начальная дата, от которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''dateTo''' – конечная дата, до которой вывести список курсов валют, в формате DD.MM.YYYY, необязательный параметр (если не указан, берется за текущий день)
 +
** '''otherBaseCurrencyId''' – идентификатор любой валюты, эмулирующей работу национальной валюты, необязательный параметр. Если заполнен, то в результатах выдачи параметр ''baseCurrencyId'' будет заменяться на валюту из параметра ''otherBaseCurrencyId'' (обрабатывается с релиза 15.9).
 +
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''baseCurrencyId''' – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке ''basketCurrency'' в конфигурационном файле (обрабатывается с релиза 15.6)
 
** '''baseCurrencyId''' – идентификатор национальной валюты, либо произвольной валюты, указанной в настройке ''basketCurrency'' в конфигурационном файле (обрабатывается с релиза 15.6)
 
** '''currencyId''' – идентификатор валюты, курс которой приводится
 
** '''currencyId''' – идентификатор валюты, курс которой приводится
 
** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''')
 
** '''rate''' – курс валюты (отношение '''currencyId''' к '''baseCurrencyId''')
 +
** '''date''' – дата, на которую был зарегистрирован выводимый курс валюты
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 268: Строка 349:
 
Вызов метода CurrencyRates
 
Вызов метода CurrencyRates
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/CurrencyRates
+
http://localhost:9000/TourSearchOwin/CurrencyRates?dateFrom=18.09.2024&dateTo=19.09.2024
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Возвращаемый результат метода CurrencyRates (в формате JSON)
 
Возвращаемый результат метода CurrencyRates (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
{
+
[
  "version": "1.08",
+
    {
  "currencyRates":   [
+
        "BaseCurrencyId": 14,
            {
+
        "CurrencyId": 1,
        "baseCurrencyId": 2,
+
        "Rate": 91.429200,
        "currencyId": 1,
+
        "Date": "18.09.2024"
        "rate": 65.256054
+
    },
      },
+
    {
            {
+
        "BaseCurrencyId": 14,
        "baseCurrencyId": 2,
+
        "CurrencyId": 2,
        "currencyId": 3,
+
        "Rate": 101.505700,
        "rate": 71.168955
+
        "Date": "18.09.2024"
      }
+
    },
  ]
+
    {
}
+
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 1,
 +
        "Rate": 91.671200,
 +
        "Date": "19.09.2024"
 +
    },
 +
    {
 +
        "BaseCurrencyId": 14,
 +
        "CurrencyId": 2,
 +
        "Rate": 102.039000,
 +
        "Date": "19.09.2024"
 +
    }
 +
]
  
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 503: Строка 595:
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
 
** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']])
 
** '''departureCities *''' – идентификатор города(ов) отправления (из контроллера [[#Выгрузка актуальных городов отправления (departureCities)|''.../TourSearchOwin/departureCities?'']])
 +
** '''type''' – настройка easySearchFilter (0/не указано - настройка выключена, 1 - настройка включена)
 
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
** '''term''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''Name''' – название страны
 
** '''Name''' – название страны
 
** '''Key''' – идентификатор страны
 
** '''Key''' – идентификатор страны
** '''DestinationType''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''DestinationType''' – тип результата (внутренний параметр, не изменяемый, всегда возвращается значение = 1)
 +
** '''IsExist''' – не используется
 +
** '''Data''' – массив данных для контекстного поиска
 +
*** '''CityKey''' – код города
 +
*** '''CityName''' – Название
 +
*** '''HotelKey''' – код отеля
 +
*** '''HotelName''' – название отеля
 +
*** '''ResortKey''' – код курорта
 +
*** '''ResortName''' – название курорта
 +
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 514: Строка 616:
 
Вызов метода Destination
 
Вызов метода Destination
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 +
 
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1
 
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 520: Строка 623:
 
[
 
[
 
       {
 
       {
       "Name": "Болгария",
+
       "Data": null,
       "Key": 359,
+
      "DestinationType": 1,
       "DestinationType": 1
+
      "IsExist": false,
 +
       "Key": 90,
 +
       "Name": "Австрия"
 +
   
 +
   
 
   },
 
   },
 
       {
 
       {
       "Name": "Индия",
+
       "Data": null,
       "Key": 26,
+
      "DestinationType": 1,
       "DestinationType": 1
+
      "IsExist": false,
 +
       "Key": 53,
 +
       "Name": "Тайланд"
 +
     
 +
     
 
   },
 
   },
 
       {
 
       {
       "Name": "Финляндия",
+
       "Data": null,
       "Key": 64,
+
      "DestinationType": 1,
       "DestinationType": 1
+
      "IsExist": false,
 +
       "Key": 460,
 +
       "Name": "Россия"
 +
     
 +
     
 
   }
 
   }
 +
]
 +
GET http://localhost:9000/TourSearchOwin/Destination?departureCities=1&type=1
 +
</syntaxhighlight>
 +
Возвращаемый результат метода Destination (в формате JSON) с включенной настройкой easySearchFilter
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
{
 +
  "Name": "Австрия",
 +
  "Key": 90,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
        {
 +
          "CityKey": 35,
 +
          "CityName": "Вена",
 +
          "HotelKey": 178,
 +
          "HotelName": "Ananas, 5+++*",
 +
          "ResortKey": 232,
 +
          "ResortName": "Малина"
 +
        },
 +
        {
 +
          "CityKey": 35,
 +
          "CityName": "Вена",
 +
          "HotelKey": 20748,
 +
          "HotelName": "Dev, 1-4*Boutique",
 +
          "ResortKey": 0,
 +
          "ResortName": ""
 +
        },
 +
      ],
 +
}
 +
{
 +
  "Name": "Тайланд",
 +
  "Key": 53,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
            "CityKey": 415,
 +
            "CityName": "Пхукет",
 +
            "HotelKey": 5263,
 +
            "HotelName": "7Q Hotel, HV",
 +
            "ResortKey": 123,
 +
            "ResortName": "Пхукет"
 +
          }
 +
        ],
 +
},
 +
{
 +
  "Name": "Россия",
 +
  "Key": 460,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
            "CityKey": 295,
 +
            "CityName": "Санкт-Петербург",
 +
            "HotelKey": 20365,
 +
            "HotelName": "Бристоль, 3*",
 +
            "ResortKey": 0,
 +
            "ResortName": ""
 +
          }
 +
        ],
 +
},
 +
{
 +
  "Name": "ОАЭ",
 +
  "Key": 2,
 +
  "DestinationType": 1,
 +
  "IsExist": false,
 +
  "Data":
 +
        [
 +
          {
 +
          "CityKey": 12,
 +
          "CityName": "ДУБАЙ",
 +
          "HotelKey": 1257,
 +
          "HotelName": "Avari, APTH3",
 +
          "ResortKey": 0,
 +
          "ResortName": ""
 +
          },
 +
      ],
 +
}
 
]
 
]
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 585: Строка 782:
 
** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 
** '''departureCityKeys *''' – идентификатор города(ов) отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
 
** '''terms''' – фильтрация результатов по контекстному поиску (по умолчанию параметр пустой)
Строка 591: Строка 788:
 
** '''Key''' – идентификатор типа тура
 
** '''Key''' – идентификатор типа тура
 
** '''Name''' – название типа тура
 
** '''Name''' – название типа тура
** '''ParentId''' – идентификатор группы, к которой относится данный типа тура (если тип тура не относится к группе, то возвращается ''null'')
+
** '''ParentId''' – идентификатор группы, к которой относится данный тип тура (если тип тура не относится к группе, то возвращается ''null'')
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 631: Строка 828:
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
** '''tourTypes *''' – идентификатор типа тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
* Возвращаемый результат:
 
* Возвращаемый результат:
Строка 667: Строка 864:
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''destinationCity *''' – идентификатор города(ов) прибытия (полученный из метода ''.../TourSearchOwin/ActualizeCities?''), по умолчанию передается ''-1'', то есть все города в рамках данной страны
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''Key *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
** '''Type *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''Type *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''tourDate *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''tourDate *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''tourTypes *''' – идентификатор типа(ов) тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
 
** '''tourTypes *''' – идентификатор типа(ов) тура (полученный из метода ''.../TourSearchOwin/ActualizeTourType?''), по умолчанию передается ''-1'', то есть все типы тура в рамках данной страны
Строка 706: Строка 903:
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false)
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false)
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true)
+
** '''isFillSecondaryFilters''' – заполнены ли дополнительные фильтры (по умолчанию всегда приходит true). Служебный внутренний параметр. При работе с API не используется.
** '''DestinationType *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''DestinationType *''' – тип результата (внутренний параметр, не изменяемый, всегда указывать значение = 1)
 
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
 
** '''AdultCount *''' – количество взрослых
 
** '''AdultCount *''' – количество взрослых
Строка 719: Строка 916:
 
** '''Groups''' – группировка результатов (2 – по названию тура, 4 – по дате тура, 8 – по продолжительности тура, 16 – по городу вылета, 32 – по отелю, 64 – по городу отеля, 128 – по курорту отеля, 256 – по категории отеля)
 
** '''Groups''' – группировка результатов (2 – по названию тура, 4 – по дате тура, 8 – по продолжительности тура, 16 – по городу вылета, 32 – по отелю, 64 – по городу отеля, 128 – по курорту отеля, 256 – по категории отеля)
 
** '''HotelScheme''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры:  
 
** '''HotelScheme''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля. Передаются следующие параметры:  
*** '''TemplateId''' – идентификатор шаблона услуги,  
+
*** '''TemplateId''' – идентификатор шаблона услуги (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Key->TemplateId),  
*** '''DurationInNight''' – продолжительность отеля в ночах,  
+
*** '''DurationInNight''' – продолжительность отеля в ночах (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->DurationInNight),  
*** '''Code''' – ключ отеля,  
+
*** '''Code''' – ключ отеля (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->Code),  
*** '''PacketKey''' – ключ пакета,  
+
*** '''PacketKey''' – ключ пакета (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PacketId),
*** '''PartnerKey''' – ключ партнера
+
*** '''PartnerKey''' – ключ партнера (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->PartnerId),
*** '''GDSProviderId''' – ключ провайдера из внешней системы
+
*** '''GDSProviderId''' – ключ провайдера из внешней системы (этот параметр можно взять из контроллера Tour->Result->MinCostServicesComposition->Value->GDSProviderId),
*** '''TotalTourDuration''' – общая продолжительность тура в днях
+
*** '''TotalTourDuration''' – общая продолжительность тура в днях (этот параметр можно взять из контроллера Tour->Result->Duration)
 
** '''BusTransferPointKeys''' – данный признак проставляется в ''true'' в том случае, когда происходит запрос вариантов проживания (кнопка ''Варианты'') в автобусных переездах
 
** '''BusTransferPointKeys''' – данный признак проставляется в ''true'' в том случае, когда происходит запрос вариантов проживания (кнопка ''Варианты'') в автобусных переездах
 
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
 
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
Строка 757: Строка 954:
 
** '''CityDeparture''' – ключ города начала поездки (дополнительный фильтр)
 
** '''CityDeparture''' – ключ города начала поездки (дополнительный фильтр)
 
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
 
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
** '''GroupGuid''' – используется для получения турпрограмм по уникальному ключу из кэша при использовании группировки. Примеры использования. ''GroupGuid=00000000-0000-0000-0000-000000000000'' – при первом запросе от локальной системы. ''GroupGuid=936DA01F-9ABD-4d9d-80C7-02AF85C822A8'' (уникальный ключ) – передается на клиент от первого запроса из внешней системы. С данным уникальным ключом осуществляется второй запрос от удаленной внешней системы. Далее происходит получение значений по данному уникальному ключу. Обрабатывается начиная с релиза 15.4.
+
** '''GroupGuid''' – используется для получения турпрограмм по уникальному ключу из кэша при использовании группировки. Примеры использования. ''GroupGuid=00000000-0000-0000-0000-000000000000'' – при первом запросе от локальной системы. ''GroupGuid=936DA01F-9ABD-4d9d-80C7-02AF85C822A8'' (уникальный ключ) – передается на клиент от первого запроса из внешней системы. С данным уникальным ключом осуществляется второй запрос от внешней системы. Далее происходит получение значений по данному уникальному ключу. Обрабатывается начиная с релиза 15.4.
** '''IsGroupingTourAlreadyMerge''' – определяет слияние данных турпрограмм от локальной системы с данными от внешней системы при использовании группировки. Примеры использования. ''IsGroupingTourAlreadyMerge=false'' – полученные данные от локальной системы не объединены с данными от внешней удаленной системы. На клиенте осуществляется объединение данных турпрограмм с последующей сортировкой по минимальной цене. ''IsGroupingTourAlreadyMerge=true'' – полученные данные от локальной системы уже объединены с данными от внешней удаленной системы. На клиенте осуществляется только сортировка по минимальной цене. Обрабатывается начиная с релиза 15.4.
+
** '''IsGroupingTourAlreadyMerge''' – определяет слияние данных турпрограмм от локальной системы с данными от внешней системы при использовании группировки. Примеры использования. ''IsGroupingTourAlreadyMerge=false'' – полученные данные от локальной системы не объединены с данными от внешней системы. На клиенте осуществляется объединение данных турпрограмм с последующей сортировкой по минимальной цене. ''IsGroupingTourAlreadyMerge=true'' – полученные данные от локальной системы уже объединены с данными от внешней системы. На клиенте осуществляется только сортировка по минимальной цене. Обрабатывается начиная с релиза 15.4.
 
** '''SearchId''' – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5.
 
** '''SearchId''' – уникальный идентификатор запроса поиска, передаваемый с клиентской части. Возвращается в ответе без изменений. Обрабатывается начиная с релиза 15.5.
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 
   
 
   
  
Строка 772: Строка 970:
 
*** '''TourUrl''' – ссылка на программу тура
 
*** '''TourUrl''' – ссылка на программу тура
 
*** '''BookingConditions''' – условия бронирования программы туров
 
*** '''BookingConditions''' – условия бронирования программы туров
 +
*** '''DefaultManagers''' – список выбранных менеджеров в туре
 +
*** '''Manager''' – ключ менеджера по умолчанию в туре
 +
*** '''Branches''' – список ключей филиалов бронирования
 +
*** '''DetermineTheBranchOnCity''' – признак, определять филиал в зависимости от города начала поездки
 +
*** '''IndividualFlightSelection''' – признак, включены ли индивидуальные настройки подбора перелетов
 +
*** '''RestrictionDateArrival''' – признак, ограничение даты прилета по базовому рейсу в индивидуальных настройках подбора перелетов
 +
*** '''PriceUpdateForView''' – признак обновления цен в индивидуальных настройках подбора перелетов (true – включен, false – выключен)
 +
*** '''SelectFlightAutomatically''' – признак выбирать рейс автоматически, если не выбран пользователем в индивидуальных настройках подбора перелетов
 +
*** '''BaggageSearchOtherFares''' – признак поиска багажа в других тарифах в индивидуальных настройках подбора перелетов
 +
*** '''Luggage''' – значение багажа в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''LuggageForView''' – значение багажа в блоке настроек, влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''LuggageForPrice''' – значение багажа в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, withLuggage – багаж и ручная кладь, withoutLuggage – без багажа)
 +
*** '''FlightClass''' – класс перелета в индивидуальных настройках подбора перелетов (economy – Эконом, premiumEconomy 2 Премиум-эконом, business – Бизнес, first – Первый)
 +
*** '''Directs''' – значение пересадок в блоке настроек, влияющих на формирование запроса в индивидуальных настройках подбора перелетов (all – все, onlyDirectFlights – только прямые рейсы)
 +
*** '''DirectsForView''' – значение пересадок в блоке влияющих на отображение информации в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
 +
*** '''DirectsForPrice''' – значение пересадок в блоке фильтров для обновления цен в индивидуальных настройках подбора перелетов (all – все, без пересадок – withoutDirect, с 1 пересадкой – oneDirect, с 2 пересадками и более – twoOrMoreDirect)
 +
*** '''DepartureTimeLimit''' – ограничение времени вылета: «Вылет не позже» в формате hh:mm
 +
*** '''SortingForView''' – сортировка в индивидуальных настройках подбора перелетов (cheap – сначала дешевые, fast – сначала быстрые, optimal – оптимальные)
 
*** '''StartDate''' – дата начала тура
 
*** '''StartDate''' – дата начала тура
 +
*** '''MaxConnectionTime''' – длительность пересадок в индивидуальных настройках подбора перелетов в формате hh:mm
 +
*** '''FullPaymentPeriod''' – полная оплата с даты бронирования (может быть null)
 +
*** '''FullPaymentCheckin''' – полная оплата до даты заезда (может быть null)
 +
*** '''PrePaymentPeriod''' – предоплата с даты бронирования (может быть null)
 +
*** '''PrePaymentCheckin''' – предоплата до даты заезда (может быть null)
 +
*** '''PrePaymentCu"''' – значение предоплаты в y.e. (может быть null)
 +
*** '''PrePaymentPercent''' – значение предоплаты в процентах (может быть null)
 
*** '''Duration''' – продолжительность тура (в днях)
 
*** '''Duration''' – продолжительность тура (в днях)
 
*** '''DurationInNight''' – продолжительность проживания (в ночах)
 
*** '''DurationInNight''' – продолжительность проживания (в ночах)
 
*** '''Types''' – идентификатор типа туров
 
*** '''Types''' – идентификатор типа туров
*** '''Cost''' – цена тура
+
*** '''Price''' –  цена тура с учетом скидки в валюте поиска
 +
*** '''Cost''' – цена тура в валюте поиска
 
*** '''Rate''' – код валюты тура
 
*** '''Rate''' – код валюты тура
 +
*** '''Penalties''' – внутреннее поле, не используется
 
*** '''CityDepature''' – город отправления
 
*** '''CityDepature''' – город отправления
 
**** '''Key''' – идентификатор города отправления
 
**** '''Key''' – идентификатор города отправления
Строка 820: Строка 1045:
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''Cost''' – разница в стоимости с самым дешевым вариантом
 
***** '''QuotaStatus''' – информация о квоте
 
***** '''QuotaStatus''' – информация о квоте
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)  
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 832: Строка 1057:
 
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 
***** '''PatternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
 
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
 
***** '''FlightId''' – идентификатор перелета (внутренняя информация из программы туров)
**** '''FlightSourceMode''' – локальный или удаленный перелет (внутренняя информация из программы туров)
+
**** '''FlightSourceMode''' – локальный или внешний перелет (внутренняя информация из программы туров)
 
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)  
 
**** '''Id''' – идентификатор базового шаблона услуги (внутренняя информация из программы туров)  
 
**** '''SvKey''' – ключ типа услуги
 
**** '''SvKey''' – ключ типа услуги
Строка 851: Строка 1076:
 
***** '''Key''' – ключ города
 
***** '''Key''' – ключ города
 
***** '''Value''' – название города
 
***** '''Value''' – название города
**** '''Country''' – ключ страны
+
**** '''Country''' – объект страна
 +
***** '''Key''' – ключ страны
 +
***** '''Value''' – название страны
 
**** '''Code''' – объект код услуги
 
**** '''Code''' – объект код услуги
 
***** '''Key''' – ключ услуги
 
***** '''Key''' – ключ услуги
Строка 867: Строка 1094:
 
***** '''Cost''' – цена
 
***** '''Cost''' – цена
 
***** '''QuotaStatus''' – объект информация по квотам
 
***** '''QuotaStatus''' – объект информация по квотам
****** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
****** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
****** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 957: Строка 1184:
 
***** '''enabled''' – флаг включен/выключен
 
***** '''enabled''' – флаг включен/выключен
 
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 
*** '''RouteSubVariants''' – подварианты услуг (используется в основном поиске)
 +
*** '''Routes''' – количество маршрутов для данного варианта поиска (к примеру, если будет несколько вариантов
 +
*** '''IsRemoteHotels''' – признак, есть ли внешние отели в данном варианте
 +
*** '''IsTourImages''' – признак, есть ли картинки тура
 +
*** '''MaskKeys''' – маска фильтра категории номеров
 
** '''SecondaryFiltersResult''' – результаты доп. фильтров
 
** '''SecondaryFiltersResult''' – результаты доп. фильтров
 
*** '''TourTypes''' – типы тура
 
*** '''TourTypes''' – типы тура
Строка 1007: Строка 1238:
 
****** '''settings''' –
 
****** '''settings''' –
 
****** '''enabled''' –
 
****** '''enabled''' –
**** '''XmlSettings''' – строка xml для актуальных фильтров
 
 
**** '''Type''' – тип справочника (используется для внутренних целей)
 
**** '''Type''' – тип справочника (используется для внутренних целей)
 
*** '''TourDurations''' – продолжительность тура
 
*** '''TourDurations''' – продолжительность тура
Строка 1035: Строка 1265:
 
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах  
 
**** '''HotelTypes''' – признаки отелей в дополнительных фильтрах  
 
***** '''''' –  
 
***** '''''' –  
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
Строка 1062: Строка 1293:
 
         "TourUrl": "www.megatec.ru",
 
         "TourUrl": "www.megatec.ru",
 
         "BookingConditions": "<p>Условия бронирования тура.<\/p>",
 
         "BookingConditions": "<p>Условия бронирования тура.<\/p>",
 +
        "DefaultManagers": [],
 +
        "Manager": 169,
 +
        "Branches": [],
 +
        "DetermineTheBranchOnCity": false,
 +
        "IndividualFlightSelection": true,
 +
        "RestrictionDateArrival": false,
 +
        "PriceUpdateForView": false,
 +
        "SelectFlightAutomatically": false,
 +
        "BaggageSearchOtherFares": false,
 +
        "Luggage": "withoutLuggage",
 +
        "LuggageForView": "all",
 +
        "LuggageForPrice": "all",
 +
        "FlightClass": "economy",
 +
        "Directs": "all",
 +
        "DirectsForView": "all",
 +
        "DirectsForPrice": "all",
 +
        "DepartureTimeLimit": "",
 +
        "SortingForView": "cheap",
 
         "StartDate": "2018-02-25T00:00:00",
 
         "StartDate": "2018-02-25T00:00:00",
 +
        "MaxConnectionTime": 0
 +
        "FullPaymentPeriod": 5,
 +
        "FullPaymentCheckin": null,
 +
        "PrePaymentPeriod": null,
 +
        "PrePaymentCheckin": 5,
 +
        "PrePaymentCu": null,
 +
        "PrePaymentPercent": 10.0,
 
         "Duration": 4,
 
         "Duration": 4,
 
         "DurationInNight": 3,
 
         "DurationInNight": 3,
 
         "Types": [2],
 
         "Types": [2],
 +
        "Price": 260,
 
         "Cost": 260,
 
         "Cost": 260,
 +
        "Penalties": null,
 
         "Rate": "EU",
 
         "Rate": "EU",
 
         "CityDepature":          {
 
         "CityDepature":          {
Строка 1197: Строка 1455:
 
                     "Value": "Завтрак"
 
                     "Value": "Завтрак"
 
                   },
 
                   },
 +
                  "AbsolutePenalties": null,
 
                   "Cost": 19.47,
 
                   "Cost": 19.47,
 
                   "QuotaStatus":                  {
 
                   "QuotaStatus":                  {
Строка 1313: Строка 1572:
 
               "ServiceName": "страховка",
 
               "ServiceName": "страховка",
 
               "City": null,
 
               "City": null,
               "Country": 6245,
+
               "Country":               {
               "Code":                {
+
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
               "Code":                {
 
                   "Key": 297,
 
                   "Key": 297,
 
                   "Value": "Страховка от несчастного случая"
 
                   "Value": "Страховка от несчастного случая"
Строка 1366: Строка 1628:
 
                   "Value": "Санто-Доминго"
 
                   "Value": "Санто-Доминго"
 
               },
 
               },
               "Country": 6245,
+
               "Country":               {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 
               "Code":                {
 
               "Code":                {
 
                   "Key": 743,
 
                   "Key": 743,
Строка 1501: Строка 1766:
 
             }
 
             }
 
         },
 
         },
         "RouteSubVariants": []
+
         "RouteSubVariants": [],
 +
        "Routes": 1,
 +
        "IsRemoteHotels": false,
 +
        "IsTourImages": false,
 +
        "MaskKeys": null
 
       }
 
       }
 
   ],
 
   ],
Строка 1569: Строка 1838:
 
               }
 
               }
 
             },
 
             },
            "XmlSettings": "информация о туре в формате xml",
 
 
             "Type": "TourProgram"
 
             "Type": "TourProgram"
 
         }
 
         }
Строка 2020: Строка 2288:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка транспортного плана (TransportPlan)===
+
* Детализация параметра serviceDescriptions из url:
 +
** '''TemplateId''' – идентификатор шаблона услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->TemplateId)
 +
** '''PatternId''' – идентификатор паттерна услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->PatternId)
 +
** '''SettingId''' – идентификатор услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Key->SettingId)
 +
** '''ServiceType''' – тип услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->ServiceType)
 +
** '''Code''' – код услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->Code)
 +
** '''SubCode1''' – доп. описание 1 услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->SubCode1)
 +
** '''SubCode2''' – доп. описание 2 услуги (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->SubCode2)
 +
** '''CountryId''' – ключ страны (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->CountryId)
 +
** '''CityId''' – ключ города (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->CityId)
 +
** '''PacketId''' – ключ пакета (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->PacketId)
 +
** '''PartnerId''' – ключ партнера (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->PartnerId)
 +
** '''Day''' – день предоставления (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->Day)
 +
** '''DurationInNight''' – продолжительность в ночах (этот параметр можно взять из контроллера Tour->Result->RouteSubVariants->CostServicesComposition->Value->DurationInNight)
 +
 
 +
Пример: serviceDescriptions=1_0_0_3_107274_1400134_1526_460_1_1830_14752_1_8
 +
 
 +
===Выгрузка транспортного плана (TransportPlan) до релиза 15.7 включительно===
 
Метод производит выгрузку транспортного плана.
 
Метод производит выгрузку транспортного плана.
 
* Формат запроса:
 
* Формат запроса:
Строка 2108: Строка 2393:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка первоначального варианта в корзину для бронирования (Tour)===
+
===Выгрузка транспортного плана (TransportPlan) начиная с релиза 15.8===
Метод поиска, который возвращает варианты только по данной турпрограмме и схеме отеля.
+
Метод производит выгрузку транспортного плана.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/Tour?
+
** GET .../TourSearchOwin/TransportPlan?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''DepartureCityKeys *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/departureCities?'')
+
** '''code''' – код услуги
** '''DestinationType *''' – тип результата (всегда возвращается в JSON = 1, в xml = country)
+
** '''dateBegin''' – дата услуги
** '''DestinationKey *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/Destination?'')
+
** '''serviceType''' – тип услуги
** '''Dates *''' – массив дат заезда (полученные из метода ''.../TourSearchOwin/TourDate?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
+
** '''transportKey''' – ключ справочника транспорт
** '''Durations *''' – массив продолжительностей (полученные из метода ''.../TourSearchOwin/Duration?''). Если параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''AdultCount *''' – количество взрослых
 
** '''ChildAges''' – возраст детей. Если детей несколько, и параметры передаются через url, то каждое значение необходимо передавать отдельным параметром.
 
** '''CurrencyName *''' – код валюты
 
** '''HotelQuota *''' – информация о квотах на отель (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''AviaQuota *''' – информация о квотах на авиаперелет (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''BusTransferQuota''' – информация о квотах на автобусный переезд (значения параметров: ''"1"'' — фильтр "Есть", ''"5"'' — фильтр "Есть+запрос", ''"7"'' — фильтр "Все")
 
** '''HotelScheme *''' – объект схемы отеля
 
*** '''TemplateId''' – идентификатор шаблона услуги
 
*** '''DurationInNight''' – продолжительность отеля в ночах
 
*** '''Code''' – ключ отеля
 
*** '''PacketKey''' – ключ пакета
 
*** '''PartnerKey''' – ключ партнера
 
*** '''GDSProviderId''' – ключ провайдера из внешней системы
 
*** '''TotalTourDuration''' – общая продолжительность тура в днях, обрабатывается начиная с релиза 15.6, обязательный параметр. Изменения связаны с возможностью работы поиска в ночах проживания в отеле, для перехода в корзину необходимо знать общую продолжительность тура. Взять значение для параметра ''TotalTourDuration'' для HotelScheme можно из свойства ''Duration'', пришедшего для данной цены в ответе метода поиск туров (''Tour'')
 
** '''PageNumber *''' – номер возвращаемой страницы (по умолчанию возвращается 1)
 
** '''PageSize *''' – количество возвращаемых результатов на одной странице (возвращается 20)
 
** '''isFromBasket *''' – происходит ли обращение из корзины или из поиска туров (true/false).
 
** '''isFillSecondaryFilters *''' – заполнены ли дополнительные фильтры (true/false)
 
** '''TourKey''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: ключ программы тура
 
** '''TourDuration''' – пустой по умолчанию. Заполняется при вызове вариантов размещений в рамках одного отеля: продолжительность тура в днях
 
** '''RemoteHotelMode''' – признак того, производится поиск только локальных отелей или и от внешних поставщиков тоже (только локальные отели – 0, только внешние отели – 2, локальные и внешние отели – 1). Если признак отсутствует – поиск будет только по локальным отелям. Обрабатывается начиная с релиза 15.4.
 
  
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''CheckMessages''' – сообщения для логики проверки тура (не используется)
+
** '''VehiclePlans''' – массив параметров зон плана
** '''Message''' – сообщение об ошибке
+
*** '''Key''' – ключ зоны
*** '''Key''' – код ошибки
+
*** '''TransportKey''' – ключ из справочника транспорт
*** '''Value''' – сообщение об ошибке
+
*** '''Row''' – количество рядов
** '''Result''' – результаты поиска
+
*** '''AreaNumber''' – номер уровня
*** '''Key''' – идентификатор программы тура
+
*** '''Name''' – название уровня
*** '''Name''' – название программы тура
+
*** '''PlanOrientation''' – ориентация плана (''false'' - горизонтальная, ''true'' - вертикальная)
*** '''TourUrl''' – ссылка на программу тура
+
*** '''Column''' – количество столбцов
*** '''BookingConditions''' – условия бронирования программы туров
+
*** '''IsAirCraft''' – является ли планом самолета (''false'' - нет, ''true'' - является)
*** '''StartDate''' – дата начала тура
+
*** '''Type''' – не используется
*** '''Duration''' – продолжительность тура (в днях)
+
** '''Seats''' – массив параметров посадочного места
*** '''DurationInNight''' – продолжительность проживания (в ночах)
+
*** '''Key''' – ключ места
*** '''Types''' – идентификатор типа туров
+
*** '''SeatType''' – тип места (None = 0, Seat = 1, Pass/comment = 2, Block = 4, Busy = 5)
*** '''Cost''' – цена тура
+
*** '''Index''' – индекс места
*** '''Rate''' – код валюты тура
+
*** '''Number''' – название ячейки с местом
*** '''CityDepature''' – город отправления
+
*** '''Type''' – тип "место"
**** '''Key''' – идентификатор города отправления
+
*** '''VPKey''' – ключ зоны
**** '''Value''' – название города отправления
+
*** '''Border''' – обводка границы (комбинация цифр, где 0 - нет обводки, 1 - обводка в 1 px, 2 - обводка в 2 px)
*** '''CountryId''' – всегда возвращается ключ 0
+
 
*** '''Services''' – услуги в туре
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
**** '''DepartureCity''' – город отправления
+
<div class="mw-collapsible-content">
***** '''Key''
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода TransportPlan
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/TransportPlan?code=1776&dateBegin=28.03.2022&serviceType=14&transportKey=35
 +
</syntaxhighlight>
 +
Возвращаемый результат метода TransportPlan (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
"VehiclePlans":
 +
[
 +
  {
 +
    "Key": 291,
 +
    "TransportKey": 35,
 +
    "Row": 2,
 +
    "AreaNumber": 1,
 +
    "Name": "Зона 1",
 +
    "PlanOrientation": false,
 +
    "Column": 3,
 +
    "IsAirCraft": false,
 +
    "Type": "VehiclePlans"
 +
  },
 +
  {
 +
    "Key": 292,
 +
    "TransportKey": 35,
 +
    "Row": 3,
 +
    "AreaNumber": 2,
 +
    "Name": "Зона 2",
 +
    "PlanOrientation": true,
 +
    "Column": 2,
 +
    "IsAirCraft": false,
 +
    "Type": "VehiclePlans"
 +
  }
 +
],
 +
"Seats":
 +
[
 
               },
 
               },
               "HotelDetails":                [
+
               "ArrivalAirport":                {
                                    {
+
                  "Key": "VIE1",
                    "HotelRoom": 10468,
+
                  "Value": "Vena1"
                    "Room":                     {
+
              },
                        "Key": 2,
+
              "Airline":               {
                        "Value": "Double"
+
                  "Key": "3G",
                    },
+
                  "Value": "Атлант Союз_d;kgmdlfkgnfdlkhndlfkhnlkfnh"
                    "RoomCategory":                     {
+
              },
                        "Key": 776,
+
              "Aircraft":               {
                        "Value": "Standart133"
+
                  "Key": "319",
                    },
+
                  "Value": "AIRBUS "
                    "AccomodationType":                     {
+
              },
                        "Key": 328,
+
              "Flight":               {
                        "Value": "2Ad",
+
                  "Key": 858,
                        "AdultCount": 2,
+
                  "Value": "1111"
                        "ChildCount": 0
+
              },
                    },
+
              "DepartureTime": "10:00:00",
                    "Pansion":                     {
+
              "ArrivalTime": "11:59:00",
                        "Key": 4,
+
              "EndDateTime": "2018-03-31T11:59:00",
                        "Value": "Завтрак"
+
              "FlightDetails": [              {
                    },
+
                  "Tariff":                   {
                    "Cost": 112.96,
+
                    "Key": 67,
                    "QuotaStatus":                     {
+
                    "Code": "C",
                        "PlacesStatus": 4,
+
                    "Name": "Бизнес класс"
                        "FreePlaces": 0,
+
                  },
                        "IsFewPlaces": false
+
                  "Cost": 6.45,
                    },
+
                  "QuotaStatus":                   {
                    "PartnerId": 12667,
+
                     "PlacesStatus": 4,
                    "ByPax": false,
+
                     "FreePlaces": 0,
                     "Partner":                      {
+
                    "IsFewPlaces": false
                        "Key": 12667,
 
                        "Value": "Партнер-покупатель1"
 
                    }
 
 
                   },
 
                   },
                                     {
+
                  "PartnerId": 10760,
                     "HotelRoom": 38636,
+
                  "ByPax": true,
                     "Room":                      {
+
                  "Partner":                  {
                         "Key": 2,
+
                    "Key": 0,
                         "Value": "Double"
+
                    "Value": null
                     },
+
                  }
                     "RoomCategory":                      {
+
              }],
                         "Key": 3764,
+
              "FlightSetting":                {
                         "Value": "Standart Without window"
+
                  "ServiceId": 3,
                     },
+
                  "PatternId": 14,
                     "AccomodationType":                      {
+
                  "FlightId": 14
 +
              },
 +
              "FlightSourceMode": 1,
 +
              "Id": 3,
 +
              "SvKey": 1,
 +
              "IsSubCode1": true,
 +
              "IsSubCode2": false,
 +
              "IsPartnerBasedOn": false,
 +
              "Day": 1,
 +
              "DurationInNight": 0,
 +
              "BeginDateTime": "2018-03-31T10:00:00",
 +
              "IsHooded": false,
 +
              "IsDeleted": false,
 +
              "IsNotCalculate": false,
 +
              "PacketId": 779,
 +
              "Index": 0
 +
            },
 +
                        {
 +
              "Hotel":                {
 +
                  "Key": 707,
 +
                  "Value": "Beim Theresianum"
 +
              },
 +
              "City":                {
 +
                  "Key": 35,
 +
                  "Value": "Вена"
 +
              },
 +
              "Stars":                {
 +
                  "Key": 66,
 +
                  "Value": "4*Boutique"
 +
              },
 +
              "Resort":                {
 +
                  "Key": -1,
 +
                  "Value": null
 +
              },
 +
              "ImageURL": "",
 +
              "Http": null,
 +
              "Description": "",
 +
              "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
              },
 +
              "HotelDetails":                [
 +
                                     {
 +
                     "HotelRoom": 10468,
 +
                     "Room":                      {
 +
                         "Key": 2,
 +
                         "Value": "Double"
 +
                     },
 +
                     "RoomCategory":                      {
 +
                         "Key": 776,
 +
                         "Value": "Standart133"
 +
                     },
 +
                     "AccomodationType":                      {
 
                         "Key": 328,
 
                         "Key": 328,
 
                         "Value": "2Ad",
 
                         "Value": "2Ad",
Строка 2532: Строка 3190:
 
                         "Value": "Завтрак"
 
                         "Value": "Завтрак"
 
                     },
 
                     },
                     "Cost": 338.9,
+
                     "Cost": 112.96,
 
                     "QuotaStatus":                      {
 
                     "QuotaStatus":                      {
 
                         "PlacesStatus": 4,
 
                         "PlacesStatus": 4,
Строка 2544: Строка 3202:
 
                         "Value": "Партнер-покупатель1"
 
                         "Value": "Партнер-покупатель1"
 
                     }
 
                     }
                   }
+
                  },
               ],
+
                                    {
 +
                    "HotelRoom": 38636,
 +
                    "Room":                      {
 +
                        "Key": 2,
 +
                        "Value": "Double"
 +
                    },
 +
                    "RoomCategory":                      {
 +
                        "Key": 3764,
 +
                        "Value": "Standart Without window"
 +
                    },
 +
                    "AccomodationType":                      {
 +
                        "Key": 328,
 +
                        "Value": "2Ad",
 +
                        "AdultCount": 2,
 +
                        "ChildCount": 0
 +
                    },
 +
                    "Pansion":                      {
 +
                        "Key": 4,
 +
                        "Value": "Завтрак"
 +
                    },
 +
                    "Cost": 338.9,
 +
                    "QuotaStatus":                      {
 +
                        "PlacesStatus": 4,
 +
                        "FreePlaces": 0,
 +
                        "IsFewPlaces": false
 +
                    },
 +
                    "PartnerId": 12667,
 +
                    "ByPax": false,
 +
                    "Partner":                      {
 +
                        "Key": 12667,
 +
                        "Value": "Партнер-покупатель1"
 +
                    }
 +
                   }
 +
               ],
 
               "HotelTypes": [],
 
               "HotelTypes": [],
 
               "Id": 1,
 
               "Id": 1,
Строка 2799: Строка 3490:
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
 
** '''countryId *''' – ключ страны, для которой будут выгружаться настройки
 
** '''countryId *''' – ключ страны, для которой будут выгружаться настройки
 +
** '''nodeId''' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
 +
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''TouristFieldsSettings''' – массив полей с информацией о туристах (из админки Мастер-Web)  
 
** '''TouristFieldsSettings''' – массив полей с информацией о туристах (из админки Мастер-Web)  
 
*** '''lastname''' – объект фамилия туриста (лат)
 
*** '''lastname''' – объект фамилия туриста (лат)
 +
**** '''Index''' – порядковый индекс элемента
 
**** '''Code''' – код поля
 
**** '''Code''' – код поля
 +
**** '''ApiCode''' – имя поля, которое будет использоваться при бронировании (например при вызове метода CreateReservation)
 
**** '''HeaderText''' – название поля
 
**** '''HeaderText''' – название поля
**** '''IsVisible''' – видимость поля
+
**** '''IsEdit''' – признак редактируемости поля
 
**** '''IsRequired''' – признак обязательности заполнения поля
 
**** '''IsRequired''' – признак обязательности заполнения поля
**** '''IsEdit''' – признак редактируемости поля
+
**** '''IsVisible''' – видимость поля (видимое)
 +
**** '''IsDisabled''' – служебный внутренний параметр. При работе с API не используется
 
**** '''Translit''' – настройки транслитерации (0 – нет, 1 – транслитерация, 2 – латиница)  
 
**** '''Translit''' – настройки транслитерации (0 – нет, 1 – транслитерация, 2 – латиница)  
 
**** '''LetterCase''' – настройки регистра (0 – по умолчанию, 1 – с заглавной, 2 – большие, 3 – маленькие)
 
**** '''LetterCase''' – настройки регистра (0 – по умолчанию, 1 – с заглавной, 2 – большие, 3 – маленькие)
Строка 2835: Строка 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">Пример
Строка 2846: Строка 3543:
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
  "TouristFieldsSettings":   {
+
  "TouristFieldsSettings": {
      "lastname":       {
+
        "number": {
        "Code": "lastname",
+
            "Index": 0,
        "HeaderText": "Фамилия<font color=\"red\">*<\/font>",
+
            "Code": "number",
        "IsVisible": true,
+
            "ApiCode": "Number",
        "IsRequired": true,
+
            "HeaderText": "",
        "IsEdit": true,
+
            "IsEdit": false,
        "Translit": 1,
+
            "IsRequired": false,
        "LetterCase": 2
+
            "IsVisible": false,
      },
+
            "IsDisabled": false,
      "patronymic":       {
+
            "Translit": 0,
        "Code": "patronymic",
+
            "LetterCase": 0
        "HeaderText": "Отчество",
+
        },
        "IsVisible": false,
+
        "ismain": {
        "IsRequired": false,
+
            "Index": 1,
        "IsEdit": true,
+
            "Code": "ismain",
        "Translit": 0,
+
            "ApiCode": "IsMain",
        "LetterCase": 2
+
            "HeaderText": "<img src=\"images/mw_main_tourist.gif\" border=\"0\" alt=\"Главный турист\" />",
      },
+
            "IsEdit": false,
      "sex":      {
+
            "IsRequired": true,
        "Code": "sex",
+
            "IsVisible": true,
        "HeaderText": "Пол<font color=\"red\">*<\/font>",
+
            "IsDisabled": true,
        "IsVisible": true,
+
            "Translit": 0,
        "IsRequired": false,
+
            "LetterCase": 0
        "IsEdit": true,
+
        },
        "Translit": 0,
+
        "sex": {
        "LetterCase": 0
+
            "Index": 2,
      },
+
            "Code": "sex",
      "firstname":       {
+
            "ApiCode": "Sex",
        "Code": "firstname",
+
            "HeaderText": "Пол<font color=\"red\">*</font>",
        "HeaderText": "Имя<font color=\"red\">*<\/font>",
+
            "IsEdit": true,
        "IsVisible": true,
+
            "IsRequired": false,
        "IsRequired": true,
+
            "IsVisible": true,
        "IsEdit": true,
+
            "IsDisabled": false,
        "Translit": 1,
+
            "Translit": 0,
        "LetterCase": 2
+
            "LetterCase": 0
      },
+
        },
      "passportbywhom":       {
+
        "birthdate": {
        "Code": "passportbywhom",
+
            "Index": 3,
        "HeaderText": "Кем выдан",
+
            "Code": "birthdate",
        "IsVisible": false,
+
            "ApiCode": "BirthDay",
        "IsRequired": false,
+
            "HeaderText": "Дата рождения<br />(dd.MM.yyyy)",
        "IsEdit": false,
+
            "IsEdit": false,
        "Translit": 0,
+
            "IsRequired": false,
        "LetterCase": 0
+
            "IsVisible": true,
      },
+
            "IsDisabled": false,
      "birthplace":       {
+
            "Translit": 0,
        "Code": "birthplace",
+
            "LetterCase": 0
        "HeaderText": "Место рождения",
+
        },
        "IsVisible": false,
+
        "birthplace": {
        "IsRequired": false,
+
            "Index": 4,
        "IsEdit": false,
+
            "Code": "birthplace",
        "Translit": 0,
+
            "ApiCode": "BirthPlace",
        "LetterCase": 0
+
            "HeaderText": "Место рождения",
      },
+
            "IsEdit": false,
      "birthdate":       {
+
            "IsRequired": false,
        "Code": "birthdate",
+
            "IsVisible": false,
        "HeaderText": "Дата рождения<br />(dd.MM.yyyy)",
+
            "IsDisabled": false,
        "IsVisible": true,
+
            "Translit": 0,
        "IsRequired": false,
+
            "LetterCase": 0
        "IsEdit": true,
+
        },
        "Translit": 0,
+
        "citizenship": {
        "LetterCase": 0
+
            "Index": 5,
      },
+
            "Code": "citizenship",
      "patronymicrus":       {
+
            "ApiCode": "Citizenship",
        "Code": "patronymicrus",
+
            "HeaderText": "Гражданство",
        "HeaderText": "Отчество",
+
            "IsEdit": false,
        "IsVisible": false,
+
            "IsRequired": false,
        "IsRequired": false,
+
            "IsVisible": true,
        "IsEdit": true,
+
            "IsDisabled": false,
        "Translit": 0,
+
            "Translit": 0,
        "LetterCase": 3
+
            "LetterCase": 0
      },
+
        },
      "lastnamerus":       {
+
        "lastname": {
        "Code": "lastnamerus",
+
            "Index": 6,
        "HeaderText": "Нац. паспорт: Фамилия",
+
            "Code": "lastname",
        "IsVisible": false,
+
            "ApiCode": "LastName",
        "IsRequired": true,
+
            "HeaderText": "Фамилия<font color=\"red\">*</font>",
        "IsEdit": true,
+
            "IsEdit": true,
        "Translit": 0,
+
            "IsRequired": true,
        "LetterCase": 0
+
            "IsVisible": true,
      },
+
            "IsDisabled": false,
      "citizenid":       {
+
            "Translit": 1,
        "Code": "citizenid",
+
            "LetterCase": 2
        "HeaderText": "ID туриста1",
+
        },
        "IsVisible": false,
+
        "firstname": {
        "IsRequired": false,
+
            "Index": 7,
        "IsEdit": true,
+
            "Code": "firstname",
        "Translit": 2,
+
            "ApiCode": "FirstName",
        "LetterCase": 2
+
            "HeaderText": "Имя<font color=\"red\">*</font>",
      },
+
            "IsEdit": true,
      "passport":       {
+
            "IsRequired": true,
        "Code": "passport",
+
            "IsVisible": true,
        "HeaderText": "Загран-паспорт: Паспорт<br />(серия/номер)",
+
            "IsDisabled": false,
        "IsVisible": true,
+
            "Translit": 1,
        "IsRequired": false,
+
            "LetterCase": 2
        "IsEdit": true,
+
        },
        "Translit": 0,
+
        "patronymic": {
        "LetterCase": 2
+
            "Index": 8,
      },
+
            "Code": "patronymic",
      "passportrus":       {
+
            "ApiCode": "Patronymic",
        "Code": "passportrus",
+
            "HeaderText": "Отчество",
        "HeaderText": "серия/номер",
+
            "IsEdit": false,
        "IsVisible": false,
+
            "IsRequired": false,
        "IsRequired": false,
+
            "IsVisible": false,
        "IsEdit": false,
+
            "IsDisabled": false,
        "Translit": 0,
+
            "Translit": 1,
        "LetterCase": 0
+
            "LetterCase": 2
      },
+
        },
      "ismain":       {
+
        "passport": {
        "Code": "ismain",
+
            "Index": 9,
        "HeaderText": "<img src=\"images/mw_main_tourist.gif\" border=\"0\" alt=\"Главный турист\" />",
+
            "Code": "passport",
        "IsVisible": true,
+
            "ApiCode": "InternationalPassportSeries/InternationalPassportNumber",
        "IsRequired": true,
+
            "HeaderText": "Загран-паспорт: Паспорт<br />(серия/номер)",
        "IsEdit": false,
+
            "IsEdit": false,
        "Translit": 0,
+
            "IsRequired": false,
        "LetterCase": 0
+
            "IsVisible": true,
      },
+
            "IsDisabled": false,
      "passportdate":       {
+
            "Translit": 1,
        "Code": "passportdate",
+
            "LetterCase": 2
        "HeaderText": "Загран-паспорт: дата выдачи",
+
        },
        "IsVisible": false,
+
        "passportdate": {
        "IsRequired": false,
+
            "Index": 10,
        "IsEdit": false,
+
            "Code": "passportdate",
        "Translit": 0,
+
            "ApiCode": "InternationalPassportDateOfIssue",
        "LetterCase": 0
+
            "HeaderText": "Загран-паспорт: дата выдачи",
      },
+
            "IsEdit": false,
      "firstnamerus":       {
+
            "IsRequired": false,
        "Code": "firstnamerus",
+
            "IsVisible": false,
        "HeaderText": "Нац. паспорт: Имя",
+
            "IsDisabled": false,
        "IsVisible": false,
+
            "Translit": 0,
        "IsRequired": true,
+
            "LetterCase": 0
        "IsEdit": true,
+
        },
        "Translit": 0,
+
        "passportdateend": {
        "LetterCase": 0
+
            "Index": 11,
      },
+
            "Code": "passportdateend",
      "passportbywhomrus":       {
+
            "ApiCode": "InternationalPassportDateOfExpiry",
        "Code": "passportbywhomrus",
+
            "HeaderText": "Действителен до<br />(dd.MM.yyyy)",
        "HeaderText": "Паспорт: кем выдан",
+
            "IsEdit": false,
        "IsVisible": false,
+
            "IsRequired": false,
        "IsRequired": false,
+
            "IsVisible": true,
        "IsEdit": false,
+
            "IsDisabled": false,
        "Translit": 0,
+
            "Translit": 0,
        "LetterCase": 0
+
            "LetterCase": 0
      },
+
        },
      "citizenship":       {
+
        "passportbywhom": {
        "Code": "citizenship",
+
            "Index": 12,
        "HeaderText": "Гражданство",
+
            "Code": "passportbywhom",
        "IsVisible": true,
+
            "ApiCode": "internationalPassportByWhom",
        "IsRequired": false,
+
            "HeaderText": "Кем выдан",
        "IsEdit": true,
+
            "IsEdit": false,
        "Translit": 0,
+
            "IsRequired": false,
        "LetterCase": 0
+
            "IsVisible": false,
      },
+
            "IsDisabled": false,
      "passportdaterus":       {
+
            "Translit": 0,
        "Code": "passportdaterus",
+
            "LetterCase": 0
        "HeaderText": "Нац. паспорт:дата выдачи",
+
        },
        "IsVisible": false,
+
        "lastnamerus": {
        "IsRequired": false,
+
            "Index": 13,
        "IsEdit": false,
+
            "Code": "lastnamerus",
        "Translit": 0,
+
            "ApiCode": "LastNameRus",
        "LetterCase": 0
+
            "HeaderText": "Нац. паспорт: Фамилия",
      },
+
            "IsEdit": false,
      "phone":      {
+
            "IsRequired": false,
        "Code": "phone",
+
            "IsVisible": false,
        "HeaderText": "Телефон",
+
            "IsDisabled": false,
        "IsVisible": false,
+
            "Translit": 0,
        "IsRequired": false,
+
            "LetterCase": 2
        "IsEdit": false,
+
        },
        "Translit": 0,
+
        "firstnamerus": {
        "LetterCase": 0
+
            "Index": 14,
      },
+
            "Code": "firstnamerus",
      "number":       {
+
            "ApiCode": "FirstNameRus",
        "Code": "number",
+
            "HeaderText": "Нац. паспорт: Имя",
        "HeaderText": "",
+
            "IsEdit": false,
        "IsVisible": false,
+
            "IsRequired": false,
        "IsRequired": false,
+
            "IsVisible": false,
        "IsEdit": false,
+
            "IsDisabled": false,
        "Translit": 0,
+
            "Translit": 0,
        "LetterCase": 0
+
            "LetterCase": 2
      },
+
        },
      "passportdateend":       {
+
        "patronymicrus": {
        "Code": "passportdateend",
+
            "Index": 15,
        "HeaderText": "Действителен до<br />(dd.MM.yyyy)",
+
            "Code": "patronymicrus",
        "IsVisible": true,
+
            "ApiCode": "PatronymicRus",
        "IsRequired": false,
+
            "HeaderText": "Нац. Отчество",
        "IsEdit": true,
+
            "IsEdit": false,
        "Translit": 0,
+
            "IsRequired": false,
        "LetterCase": 0
+
            "IsVisible": false,
      },
+
            "IsDisabled": false,
      "email":       {
+
            "Translit": 0,
        "Code": "email",
+
            "LetterCase": 2
        "HeaderText": "Email",
+
        },
        "IsVisible": false,
+
        "passportrus": {
        "IsRequired": false,
+
            "Index": 16,
        "IsEdit": false,
+
            "Code": "passportrus",
        "Translit": 0,
+
            "ApiCode": "PassportSeries/PassportNumber",
        "LetterCase": 0
+
            "HeaderText": "серия/номер",
      }
+
            "IsEdit": false,
  },
+
            "IsRequired": false,
  "PassportDurationOfExpiry":   {
+
            "IsVisible": false,
      "StartPoint": 0,
+
            "IsDisabled": false,
      "Duration": null
+
            "Translit": 0,
  },
+
            "LetterCase": 0
  "ChildAgeSetting": 16,
+
        },
  "InfantAgeSetting": 24
+
        "passportdaterus": {
 +
            "Index": 17,
 +
            "Code": "passportdaterus",
 +
            "ApiCode": "PassportDateOfIssue",
 +
            "HeaderText": "Нац. паспорт:дата выдачи",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "passportbywhomrus": {
 +
            "Index": 18,
 +
            "Code": "passportbywhomrus",
 +
            "ApiCode": "PassportByWhom",
 +
            "HeaderText": "Паспорт: кем выдан",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "phone": {
 +
            "Index": 19,
 +
            "Code": "phone",
 +
            "ApiCode": "Phone",
 +
            "HeaderText": "Телефон",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": true,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "email": {
 +
            "Index": 20,
 +
            "Code": "email",
 +
            "ApiCode": "Email",
 +
            "HeaderText": "Email",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": true,
 +
            "IsDisabled": false,
 +
            "Translit": 0,
 +
            "LetterCase": 0
 +
        },
 +
        "citizenid": {
 +
            "Index": 21,
 +
            "Code": "citizenid",
 +
            "ApiCode": "CitizenID",
 +
            "HeaderText": "ID туриста1",
 +
            "IsEdit": false,
 +
            "IsRequired": false,
 +
            "IsVisible": false,
 +
            "IsDisabled": false,
 +
            "Translit": 2,
 +
            "LetterCase": 2
 +
        }
 +
    },
 +
    "PassportDurationOfExpiry": {
 +
        "StartPoint": 0,
 +
        "Duration": 0
 +
    },
 +
    "ChildAgeSetting": 16,
 +
    "InfantAgeSetting": 24
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 3060: Строка 3823:
 
Метод производит выгрузку услуг доплат к авиаперелетам.
 
Метод производит выгрузку услуг доплат к авиаперелетам.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/GetFlightsAdditionalServices?
+
** POST .../TourSearchOwin/GetFlightsAdditionalServices?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 3093: Строка 3857:
 
**** '''ByPax''' – цена за человека
 
**** '''ByPax''' – цена за человека
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3113: Строка 3877:
 
*** '''InternationalPassportSeries''' – серия загранпаспорта
 
*** '''InternationalPassportSeries''' – серия загранпаспорта
 
*** '''InternationalPassportNumber''' – номер загранпаспорта
 
*** '''InternationalPassportNumber''' – номер загранпаспорта
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта
+
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке
+
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY)
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта
+
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке
+
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY)
 
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 
*** '''PassportSeries''' – серия паспорта
 
*** '''PassportSeries''' – серия паспорта
 
*** '''PassportNumber''' – номер паспорта
 
*** '''PassportNumber''' – номер паспорта
*** '''PassportDateOfIssue''' – дата выдачи паспорта
+
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке
+
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строковом формате (DD.MM.YYYY)
 
*** '''PassportByWhom''' – кем выдан паспорт
 
*** '''PassportByWhom''' – кем выдан паспорт
 
*** '''Citizenship''' – название страны
 
*** '''Citizenship''' – название страны
Строка 3136: Строка 3900:
 
*** '''ServiceName''' – название услуги
 
*** '''ServiceName''' – название услуги
 
*** '''City''' – объект город
 
*** '''City''' – объект город
*** '''Country''' – ключ страны
+
*** '''Country''' – объект страна
 +
**** '''Key''' – ключ страны
 +
**** '''Value''' – название страны
 
*** '''Code''' – объект код услуги
 
*** '''Code''' – объект код услуги
 
**** '''Key''' – ключ услуги
 
**** '''Key''' – ключ услуги
Строка 3152: Строка 3918:
 
**** '''Cost''' – цена
 
**** '''Cost''' – цена
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3185: Строка 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
 
{
 
{
Строка 3326: Строка 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,
Строка 3388: Строка 4157:
 
Метод производит выгрузку услуг доплат к отелям.
 
Метод производит выгрузку услуг доплат к отелям.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/GetHotelsAdditionalServices?
+
** POST .../TourSearchOwin/GetHotelsAdditionalServices?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 3416: Строка 4186:
 
**** '''IsNotCalculated''' – признак не рассчитываемая услуга
 
**** '''IsNotCalculated''' – признак не рассчитываемая услуга
 
**** '''BeginDateTimeString''' – дата и время начала услуги (YYYY-MM-DDThh:mm:ss)
 
**** '''BeginDateTimeString''' – дата и время начала услуги (YYYY-MM-DDThh:mm:ss)
**** '''EndDateTimeString''' – дата и время окончания услуги (YYYY-MM-DDThh:mm:ssz)
+
**** '''EndDateTimeString''' – дата и время окончания услуги (YYYY-MM-DDThh:mm:ss)
 
**** '''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''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3503: Строка 4273:
 
**** '''Cost''' – цена
 
**** '''Cost''' – цена
 
**** '''QuotaStatus''' – объект статус квотирования
 
**** '''QuotaStatus''' – объект статус квотирования
***** '''PlacesStatus''' – статус по квотам (есть места / нет мест / под запрос)  
+
***** '''PlacesStatus''' – статус по квотам (есть места-1 / нет мест-2 / под запрос-4)
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''FreePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 
***** '''IsFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
Строка 3536: Строка 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
  
Строка 3672: Строка 4442:
 
"ServiceName": "Доплаты к отелям",
 
"ServiceName": "Доплаты к отелям",
 
"City": null,
 
"City": null,
"Country": 90,
+
                "Country":                {
 +
                  "Key": 90,
 +
                  "Value": "Австрия"
 +
},
 
"Code": {
 
"Code": {
 
"Key": 364,
 
"Key": 364,
Строка 3730: Строка 4503:
 
Метод производит расчет услуг с индивидуальным выбором у туристов.
 
Метод производит расчет услуг с индивидуальным выбором у туристов.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/CalculateIndividualServiceCosts?
+
** POST .../TourSearchOwin/CalculateIndividualServiceCosts?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 3792: Строка 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">Пример
Строка 3798: Строка 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
  
Строка 3878: Строка 4653:
  
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 +
<font style="color:red">''Внимание!''</font> Если в туре используется перелет из GDS, то в параметр '''flightSettings''' передается ответ из секции '''flightGDSRequest''' метода API [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Актуализация тура (ActualizeTour)|ActualizeTour]]. Далее для получения цены выполняем методы [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)|RebuidFlights]] и [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Расчет путевки (CalculateReservation)|CalculateReservation]]. <br />
 
** '''flightSettings''' – информация о шаблоне услуги авиаперелета
 
** '''flightSettings''' – информация о шаблоне услуги авиаперелета
 
*** '''templateId''' – идентификатор шаблона услуги
 
*** '''templateId''' – идентификатор шаблона услуги
Строка 3918: Строка 4694:
 
*** '''InternationalPassportSeries''' – серия загранпаспорта
 
*** '''InternationalPassportSeries''' – серия загранпаспорта
 
*** '''InternationalPassportNumber''' – номер загранпаспорта
 
*** '''InternationalPassportNumber''' – номер загранпаспорта
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта
+
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке
+
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке (DD.MM.YYYY)
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта
+
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке
+
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY)
 
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
 
*** '''PassportSeries''' – серия паспорта
 
*** '''PassportSeries''' – серия паспорта
 
*** '''PassportNumber''' – номер паспорта
 
*** '''PassportNumber''' – номер паспорта
*** '''PassportDateOfIssue''' – дата выдачи паспорта
+
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке
+
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке (DD.MM.YYYY)
 
*** '''PassportByWhom''' – кем выдан паспорт
 
*** '''PassportByWhom''' – кем выдан паспорт
 
*** '''Citizenship''' – название страны
 
*** '''Citizenship''' – название страны
Строка 4134: Строка 4910:
 
     "key": 0,
 
     "key": 0,
 
     "tourDurationByDays": "11",
 
     "tourDurationByDays": "11",
     "langueCode": "ru"
+
     "langueCode": "ru",
 +
    "isCanary": "false"
 
}
 
}
  
Строка 4589: Строка 5366:
 
</div></div><br />
 
</div></div><br />
  
===Получение семейств тарифов авиаперелетов из внешней системы (GetGDSFlightFareFamilies)===
+
===Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)===
Метод получает семейства тарифов для авиаперелетов из внешней системы.
+
<font style="color:red">''Внимание!''</font> Если в туре используется перелет из GDS, то перед этим методом вызывается [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Поиск рейсов из внешней системы (GetGDSFlights)|GetGDSFlights]] в принимаемые параметры которого передается ответ из секции flightGDSRequest метода API [[Мастер-Тур(15):API для отдачи цен в поисковые системы#Актуализация тура (ActualizeTour)|ActualizeTour]]. Далее текущий метод [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка информации от внешнего поставщика по перелету (RebuildFlights)|RebuidFlights]] и далее [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Расчет путевки (CalculateReservation)|CalculateReservation]]. <br />
 +
Метод возвращает информацию по выбранному перелету от внешнего поставщика.  
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/GetGDSFlightFareFamilies?
+
** POST .../TourSearchOwin/RebuildFlights
 
 
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
** '''Content-Type *''' – application/json
 
** '''Content-Type *''' – application/json
  
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
 
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
** '''flightId''' – ID внешнего перелета
+
** '''flights''' – перелеты
** '''providerId''' – ID внешнего провайдера
+
*** '''direction''' –  
** '''languageCode''' – код локализации
+
*** '''commonPrice''' – общая стоимость перелета
** '''passengers''' – информация о пассажирах
+
*** '''remotePriceSource''' – данные расчета локального перелета
*** '''IsMain''' – главный турист
+
**** '''providerId''' – ID внешнего поставщика
*** '''Number''' – порядковый номер туриста
+
**** '''flightId''' – идентификатор внешнего перелета
*** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
+
*** '''localPriceSource''' – данные расчета локального перелета
*** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
+
**** '''packetId''' – ключ пакета
*** '''FirstName''' – имя (лат)
+
**** '''partnerId''' – идентификатор партнера
*** '''LastName''' – фамилия (лат)
+
*** '''flightsSequenceSettings''' – описание параметров последовательности перелетов для которых действуют замены 
*** '''Patronymic''' – отчество (лат)
+
**** '''templateId''' – идентификатор шаблона услуги
*** '''FirstNameRus''' – имя (рус)
+
**** '''patternId''' – идентификатор паттерна услуги
*** '''LastNameRus''' – фамилия (рус)
+
**** '''serviceId''' – идентификатор класса услуги
*** '''PatronymicRus''' – отчество (рус)
+
*** '''segments''' – сегменты авиаперелета
*** '''InternationalPassportSeries''' – серия загранпаспорта
+
**** '''segmentNumber''' – номер сегмента
*** '''InternationalPassportNumber''' – номер загранпаспорта
+
**** '''depratureCity''' – город отправления
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта
+
***** '''gdsItem''' – справочная информация внешней системы
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке
+
****** '''serviceId''' – идентификатор системы
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта
+
****** '''languageId''' – идентификатор языка
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке
+
****** '''id''' – идентификатор в системе внешнего поставщика
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
+
****** '''code''' – код в системе внешнего поставщика
*** '''PassportSeries''' – серия паспорта
+
****** '''name''' – имя в системе внешнего поставщика
*** '''PassportNumber''' – номер паспорта
+
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
*** '''PassportDateOfIssue''' – дата выдачи паспорта
+
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
*** '''PassportByWhom''' – кем выдан паспорт
+
****** '''dependencies''' – список зависимых сущностей
*** '''Citizenship''' – название страны
+
******* '''dictionaryId''' – идентификатор справочника
*** '''Phone''' – телефон
+
******* '''itemId''' –  
*** '''Email''' – e-mail
+
****** '''columnValues''' – наименование города и страны
*** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
+
***** '''mtItem''' – справочная информации локальной системы
*** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
+
****** '''id''' – идентификатор в локальной системе
*** '''BirthPlace''' – место рождения
+
****** '''code''' – код в локальной системе
*** '''CitizenID''' – гражданство
+
****** '''name''' – имя в локальной системе
*** '''Age''' – количество полных лет на момент окончания тура
+
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
** '''currency''' – валюта
+
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
** '''price''' – стоимость
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
** '''param''' – параметры перелета
+
****** '''dependencies''' – список зависимых сущностей
*** '''flightsSource''' – параметры перелета
+
******* '''dictionaryId''' – идентификатор справочника
**** '''flightSettings''' – информация о шаблоне услуги авиаперелета
+
******* '''itemId''' –  
***** '''templateId''' – идентификатор шаблона услуги
+
****** '''columnValues''' – наименование страны и города
***** '''patternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
+
***** '''mapping''' – связка
***** '''serviceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
+
****** '''id''' – Id маппинга
**** '''service''' – информация об услуге авиаперелета
+
****** '''providerId''' – Id провайдера
***** '''ServiceType''' – тип услуги
+
****** '''dictionaryId''' – Id справочника
***** '''Code''' – ключ услуги
+
****** '''providerDictionaryItemId''' – Id справочника внешнего поставщика
***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
+
****** '''providerDictionaryItemName''' – обозначение справочника внешнего поставщика
***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
+
****** '''mtDictionaryItemId''' – Id справочника МТ
***** '''CountryId''' – страна услуги
+
****** '''mtDictionaryItemName''' – обозначение справочника MT
***** '''CityId''' – город услуги
+
**** '''arrivalCity''' – город прибытия
***** '''PacketId''' – пакет услуги
+
***** '''gdsItem''' – справочная информация внешней системы
***** '''PartnerId''' – партнер услуги
+
****** '''serviceId''' – идентификатор системы
***** '''Day''' – день предоставления услуги
+
****** '''languageId''' – идентификатор языка
***** '''DurationInNight''' – продолжительность услуги в ночах
+
****** '''id''' – идентификатор в системе внешнего поставщика
**** '''price''' – стоимость перелета
+
****** '''code''' – код в системе внешнего поставщика
**** '''quotaInfo''' – объект информация по квотам
+
****** '''name''' – имя в системе внешнего поставщика
***** '''status''' – статус по квотам (есть места / нет мест / под запрос)
+
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
***** '''freePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
+
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
***** '''isFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
**** '''flightDateTimeLimitationInterval''' –  
+
****** '''dependencies''' – список зависимых сущностей
***** '''startLimitation''' – начало тайм-лимита
+
******* '''dictionaryId''' – идентификатор справочника
***** '''finishLimitation''' – объект тайм-лимита
+
******* '''itemId''' –  
****** '''dateTimeString''' – дата окончания тайм-лимита
+
****** '''columnValues''' – наименование города и страны
****** '''serviceType''' – тип услуги
+
***** '''mtItem''' – справочная информации локальной системы
****** '''serviceCode''' – код услуги
+
****** '''id''' – идентификатор в локальной системе
**** '''flightSourceMode''' – тип перелета (1 – локальный, 2 – из внешний системы)
+
****** '''code''' – код в локальной системе
*** '''passengers''' – информация о пассажирах
+
****** '''name''' – имя в локальной системе
**** '''IsMain''' – главный турист
+
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
**** '''Number''' – порядковый номер туриста
+
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
**** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
**** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
+
****** '''dependencies''' – список зависимых сущностей
**** '''FirstName''' – имя (лат)
+
******* '''dictionaryId''' – идентификатор справочника
**** '''LastName''' – фамилия (лат)
+
******* '''itemId''' –  
**** '''Patronymic''' – отчество (лат)
+
****** '''columnValues''' – наименование страны и города
**** '''FirstNameRus''' – имя (рус)
+
***** '''mapping''' – связка
**** '''LastNameRus''' – фамилия (рус)
+
****** '''id''' – Id маппинга
**** '''PatronymicRus''' – отчество (рус)
+
****** '''providerId''' – Id провайдера
**** '''InternationalPassportSeries''' – серия загранпаспорта
+
****** '''dictionaryId''' – Id справочника
**** '''InternationalPassportNumber''' – номер загранпаспорта
+
****** '''providerDictionaryItemId''' – Id справочника внешнего поставщика
**** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта
+
****** '''providerDictionaryItemName''' – обозначение справочника внешнего поставщика
**** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке
+
****** '''mtDictionaryItemId''' – Id справочника МТ
**** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта
+
****** '''mtDictionaryItemName''' – обозначение справочника MT
**** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке
+
**** '''departureAirport''' – аэропорт вылета
**** '''internationalPassportByWhom''' – кем выдан загранпаспорт
+
**** '''arrivalAirport''' – аэропорт прилета
**** '''PassportSeries''' – серия паспорта
+
***** '''gdsItem''' –справочная информация внешней системы
**** '''PassportNumber''' – номер паспорта
+
****** '''serviceId''' – идентификатор системы
**** '''PassportDateOfIssue''' – дата выдачи паспорта
+
****** '''languageId''' – идентификатор языка
**** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке
+
****** '''id''' – идентификатор аэропорта вылета
**** '''PassportByWhom''' – кем выдан паспорт
+
****** '''code''' – код аэропорта вылета
**** '''Citizenship''' – название страны
+
****** '''name''' – наименование аэропорта
**** '''Phone''' – телефон
+
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
**** '''Email''' – e-mail
+
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
**** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
**** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
+
****** '''dependencies''' – список зависимых сущностей
**** '''BirthPlace''' – место рождения
+
******* '''dictionaryId''' – идентификатор справочника
**** '''CitizenID''' – гражданство
+
******* '''itemId''' –  
**** '''Age''' – количество полных лет на момент окончания тура
+
****** '''columnValues''' – наименование аэропорта города страны
*** '''tourDate''' – дата тура
+
***** '''mtItem''' – справочная информации из локальной системы
*** '''tourCurrency''' – валюта тура
+
****** '''id''' – идентификатор аэропорта в локальной системе
*** '''tourId''' – ключ программы тура
+
****** '''code''' – код аэропорта в локальной системе
*** '''filterTariff''' – информация о тарифах
+
****** '''name''' – имя аэропорта в локальной системе
*** '''filterDeptime''' – информация о времени вылета
+
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
*** '''isCommission''' – признак комиссионной цены
+
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
*** '''baseFlightsParams''' – параметра авиаперелета
+
****** '''displayedValue''' – значение поля справочника который используется для отображения
**** '''CityArrival''' – город прибытия
+
****** '''dependencies''' – список зависимых сущностей
**** '''FlightCode''' – код авиаперелета
+
******* '''dictionaryId''' – идентификатор справочника
**** '''TariffKey''' – ключ тарифа
+
******* '''itemId''' –  
**** '''PartnerId''' – ключ партнера
+
****** '''columnValues''' – наименование страны и города
*** '''isUpdated''' – информация об обновлении перелета
+
***** '''mapping''' – связка
*** '''key''' – ключ запроса
+
****** '''id''' – Id маппинга аэропорта
*** '''tourDurationByDays''' – продолжительность перелета
+
****** '''providerId''' – Id провайдера аэропорта
*** '''langueCode''' – локализация
+
****** '''dictionaryId''' – Id справочника аэропорта
 +
****** '''providerDictionaryItemId''' – Id справочника аэропорта внешнего поставщика
 +
****** '''providerDictionaryItemName''' – обозначение справочника аэропорта внешнего поставщика
 +
****** '''mtDictionaryItemId''' – Id справочника аэропорта МТ
 +
****** '''mtDictionaryItemName''' – обозначение справочника аэропорта MT
 +
**** '''airline''' – авиакомпания
 +
***** '''gdsItem''' – справочная информация внешней системы
 +
****** '''serviceId''' – идентификатор авиакомпании внешней системы
 +
****** '''languageId''' – идентификатор языка
 +
****** '''id''' – идентификатор авиакомпании
 +
****** '''code''' – код авиакомпании
 +
****** '''name''' – наименование авиакомпании
 +
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
****** '''columnValues''' – наименование авиакомпании
 +
***** '''mtItem''' – справочная информация из локальной системы
 +
****** '''id''' – идентификатор авиакомпании в локальной системе
 +
****** '''code''' – код авиакомпании в локальной системе
 +
****** '''name''' – наименование авиакомпании в локальной системе
 +
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
****** '''columnValues''' – наименование авиакомпании
 +
***** '''mapping''' – связка
 +
****** '''id''' – Id маппинга авиакомпании
 +
****** '''providerId''' – Id провайдера авиакомпании
 +
****** '''dictionaryId''' – Id справочника авиакомпании
 +
****** '''providerDictionaryItemId''' – Id справочника авиакомпании внешнего поставщика
 +
****** '''providerDictionaryItemName''' – обозначение справочника авиакомпании внешнего поставщика
 +
****** '''mtDictionaryItemId''' – Id справочника авиакомпании МТ
 +
****** '''mtDictionaryItemName''' – обозначение справочника авиакомпании MT
 +
**** '''aircraft''' – воздушное судно
 +
***** '''gdsItem''' – справочная информация внешней системы
 +
****** '''serviceId''' – идентификатор воздушного судна внешней системы
 +
****** '''languageId''' – идентификатор языка
 +
****** '''id''' – идентификатор воздушного судна
 +
****** '''code''' – код воздушного судна
 +
****** '''name''' – наименование воздушного судна
 +
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
****** '''columnValues''' – наименование воздушного судна
 +
***** '''mtItem''' – справочная информация из локальной системы
 +
****** '''id''' – идентификатор воздушного судна в локальной системе
 +
****** '''code''' – код воздушного судна в локальной системе
 +
****** '''name''' – наименование воздушного судна в локальной системе
 +
****** '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
****** '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
****** '''columnValues''' – наименование воздушного судна
 +
***** '''mapping''' – связка
 +
****** '''id''' – Id маппинга воздушного судна
 +
****** '''providerId''' – Id провайдера воздушного судна
 +
****** '''dictionaryId''' – Id справочника воздушного судна
 +
****** '''providerDictionaryItemId''' – Id справочника воздушного судна внешнего поставщика
 +
****** '''providerDictionaryItemName''' – обозначение справочника воздушного судна внешнего поставщика
 +
****** '''mtDictionaryItemId''' – Id справочника воздушного судна МТ
 +
****** '''mtDictionaryItemName''' – обозначение справочника воздушного судна MT
 +
**** '''tariff''' – тариф
 +
***** '''gdsItem''' – справочная информация внешней системы
 +
****** '''id''' – идентификатор тарифа
 +
****** '''code''' – код тарифа
 +
****** '''name''' – наименование тарифа
 +
******* '''automaticallyMappingValue''' – выражение используемое для автоматического маппинга
 +
******* '''requestValue''' – значение поля справочника которое используется в запросе к внешнему поставщику
 +
****** '''displayedValue''' – значение поля справочника который используется для отображения
 +
****** '''dependencies''' – список зависимых сущностей
 +
****** '''columnValues''' – наименование тарифа
 +
***** '''mtItem''' – справочная информация из локальной системы
 +
***** '''mapping''' – связка
 +
**** '''flightNumber''' – номер перелета
 +
**** '''baggageRestriction''' – ограничение провоза багажа
 +
**** '''caryyOncarry''' – ограничение ручной клади
 +
**** '''departureDate''' – дата вылета
 +
**** '''arrivalDate''' – дата прилета
 +
**** '''quotaInfo''' – объект информация по квотам
 +
***** '''status''' – статус по квотам (есть места / нет мест / под запрос)
 +
***** '''freePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре PlacesStatus.
 +
***** '''isFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": true – если заданы условия количества мест "Мало" и данные условия выполнены, false – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
 +
** '''tourDate''' – дата тура
 +
 
 +
* Возвращаемый результат:
 +
** '''flights''' – информация о рейсах
 +
*** '''remoteFlightId''' – идентификатор внешнего перелета
 +
*** '''flightsSettings''' – внутренняя информация о перелете
 +
**** '''templateId''' – идентификатор шаблона услуги
 +
**** '''patternId''' – идентификатор паттерна услуги
 +
**** '''serviceId''' – идентификатор класса услуги
 +
*** '''flightsPlains''' – планы полетов
 +
**** '''DepartureCity''' – город вылета
 +
***** '''Key''' – ключ города
 +
***** '''Value''' – наименование города
 +
**** '''DepartureCountry''' – страна вылета
 +
***** '''Key''' – ключ страны
 +
***** '''Value''' – наименование страны
 +
**** '''ArrivalCity''' – город прибытия
 +
***** '''Key''' – ключ города
 +
***** '''Value''' – наименование города
 +
**** '''ArrivalCountry''' – страна прибытия
 +
***** '''Key''' – ключ страны
 +
***** '''Value''' – наименование страны
 +
**** '''DepartureAirport''' – аэропорт вылета
 +
***** '''Key''' – ключ аэропорта
 +
***** '''Value''' – наименование аэропорта
 +
**** '''ArrivalAirport''' – аэропорт прилета
 +
***** '''Key''' – ключ аэропорта
 +
***** '''Value''' – наименование аэропорта
 +
**** '''Airline''' – авиакомпания
 +
***** '''Id''' – идентификатор авиакомпании
 +
***** '''"Value''' – наименование авиакомпании
 +
***** '''"Key''' – ключ авиакомпании
 +
**** '''Aircraft''' – воздушное судно
 +
***** '''Key''' – ключ воздушного судна
 +
***** '''Value''' – наименование воздушного судна
 +
**** '''Flight''' – рейс
 +
***** '''Key''' – ключ рейса
 +
***** '''Value''' – наименование рейса
 +
**** '''DepartureTime''' – время отправления
 +
**** '''ArrivalTime''' – время прибытия
 +
**** '''TotalTimeOfFlight''' – полное время перелета
 +
**** '''FlightDetails''' – детали авиаперелета
 +
***** '''Tariff''' – информация о тарифе перелета
 +
****** '''Key''' – идентификатор
 +
****** '''Code''' – код тарифа
 +
****** '''Name''' – наименование тарифа
 +
***** '''IsCommission''' – признак, комиссионная ли услуга
 +
***** '''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: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 1]]
 +
**** '''IsSubCode2''' – признак наличия [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описания 2]]
 +
**** '''IsPartnerBasedOn''' – признак услуга с приоритетным подбором поставщика
 +
**** '''Day''' – день предоставления услуги
 +
**** '''DurationInNight''' – продолжительность услуги в ночах
 +
**** '''BeginDateTime''' – дата предоставления услуги
 +
**** '''EndDateTime''' – дата окончания услуги
 +
**** '''IsHooded''' – признак скрытая услуга
 +
**** '''IsDeleted''' – признак удаляемая услуга
 +
**** '''IsNotCalculate''' – признак не рассчитываемая услуга
 +
**** '''PacketId''' – ключ пакета
 +
**** '''Index''' – порядковый номер услуги
 +
 
 +
<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>
 +
Вызов метода RebuildFlights
 +
<syntaxhighlight lang="java" enclose="div">
 +
POST http://localhost:9000/TourSearchOwin/RebuildFlights HTTP/1.1
 +
Content-Type: application/json
 +
{
 +
  "flights": [
 +
    {
 +
      "remotePriceSource": {
 +
        "providerId": 1,
 +
        "flightId": "111397601080000"
 +
      },
 +
      "localPriceSource": {
 +
        "packetId": 197,
 +
        "partnerId": 10767
 +
      },
 +
      "flightsSequenceSettings": [
 +
        {
 +
          "templateId": 1,
 +
          "patternId": 0,
 +
          "serviceId": 0
 +
        }
 +
      ],
 +
      "segments": [
 +
        {
 +
          "segmentNumber": 1,
 +
          "depratureCity": {
 +
            "gdsItem": {
 +
              "id": "524901",
 +
              "code": "MOW",
 +
              "name": "Moscow",
 +
              "requestValue": "MOW",
 +
              "displayedValue": "Moscow",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "643"
 +
                }
 +
              ]
 +
            },
 +
            "mtItem": {
 +
              "id": "1",
 +
              "code": "MOW",
 +
              "name": "Москва",
 +
              "requestValue": "",
 +
              "displayedValue": "Москва",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "460"
 +
                }
 +
              ]
 +
            },
 +
            "mapping": {
 +
              "id": 143,
 +
              "providerId": 1,
 +
              "dictionaryId": 2,
 +
              "providerDictionaryItemId": "524901",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "arrivalCity": {
 +
            "gdsItem": {
 +
              "id": "2761369",
 +
              "code": "VIE",
 +
              "name": "Vienna",
 +
              "requestValue": "VIE",
 +
              "displayedValue": "Vienna",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "40"
 +
                }
 +
              ]
 +
            },
 +
            "mtItem": {
 +
              "id": "35",
 +
              "code": "VIE",
 +
              "name": "Вена",
 +
              "requestValue": "",
 +
              "displayedValue": "Вена",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "90"
 +
                }
 +
              ]
 +
            },
 +
            "mapping": {
 +
              "id": 41,
 +
              "providerId": 1,
 +
              "dictionaryId": 2,
 +
              "providerDictionaryItemId": "2761369",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "departureAirport": {
 +
            "gdsItem": {
 +
              "id": "5135",
 +
              "code": "SVO",
 +
              "name": "Moscow, Sheremetyevo",
 +
              "requestValue": "SVO",
 +
              "displayedValue": "SVO Moscow, Sheremetyevo",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "643"
 +
                },
 +
                {
 +
                  "dictionaryId": 2,
 +
                  "itemId": "524901"
 +
                }
 +
              ]
 +
            },
 +
            "mtItem": {
 +
              "id": "52",
 +
              "code": "SVO",
 +
              "name": "Шереметьево-2",
 +
              "requestValue": "",
 +
              "displayedValue": "SVO Шереметьево-2",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "460"
 +
                },
 +
                {
 +
                  "dictionaryId": 2,
 +
                  "itemId": "1"
 +
                }
 +
              ]
 +
            },
 +
            "mapping": {
 +
              "id": 1619,
 +
              "providerId": 1,
 +
              "dictionaryId": 5,
 +
              "providerDictionaryItemId": "5135",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "arrivalAirport": {
 +
            "gdsItem": {
 +
              "id": "6625",
 +
              "code": "VIE",
 +
              "name": "Vienna International Airport",
 +
              "requestValue": "VIE",
 +
              "displayedValue": "VIE Vienna International Airport",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "40"
 +
                },
 +
                {
 +
                  "dictionaryId": 2,
 +
                  "itemId": "2761369"
 +
                }
 +
              ]
 +
            },
 +
            "mtItem": {
 +
              "id": "58",
 +
              "code": "VIE",
 +
              "name": "Vena",
 +
              "requestValue": "",
 +
              "displayedValue": "VIE Vena",
 +
              "dependencies": [
 +
                {
 +
                  "dictionaryId": 1,
 +
                  "itemId": "90"
 +
                },
 +
                {
 +
                  "dictionaryId": 2,
 +
                  "itemId": "35"
 +
                }
 +
              ]
 +
            },
 +
            "mapping": {
 +
              "id": 259,
 +
              "providerId": 1,
 +
              "dictionaryId": 5,
 +
              "providerDictionaryItemId": "6625",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "airline": {
 +
            "gdsItem": {
 +
              "id": "5",
 +
              "code": "SU",
 +
              "name": "Aeroflot",
 +
              "requestValue": "SU",
 +
              "displayedValue": "SU Aeroflot",
 +
              "dependencies": []
 +
            },
 +
            "mtItem": {
 +
              "id": "31",
 +
              "code": "SU",
 +
              "name": "Aeroflot-Russian International AirLines",
 +
              "requestValue": "",
 +
              "displayedValue": "SU Aeroflot-Russian International AirLines",
 +
              "dependencies": []
 +
            },
 +
            "mapping": {
 +
              "id": 265,
 +
              "providerId": 1,
 +
              "dictionaryId": 5,
 +
              "providerDictionaryItemId": "5",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "aircraft": {
 +
            "gdsItem": {
 +
              "id": "97",
 +
              "code": "73H",
 +
              "name": "Boeing 737",
 +
              "requestValue": "73H",
 +
              "displayedValue": "73H Boeing 737",
 +
              "dependencies": []
 +
            },
 +
            "mtItem": {
 +
              "id": "27",
 +
              "code": "73H",
 +
              "name": "73H",
 +
              "requestValue": "",
 +
              "displayedValue": "73H 73H",
 +
              "dependencies": []
 +
            },
 +
            "mapping": {
 +
              "id": 323,
 +
              "providerId": 1,
 +
              "dictionaryId": 5,tour
 +
              "providerDictionaryItemId": "97",
 +
              "providerDictionaryItemName": null
 +
            }
 +
          },
 +
          "tariff": {
 +
            "gdsItem": {
 +
              "id": "0",
 +
              "code": "N",
 +
              "name": "Экономический класс",
 +
              "requestValue": "",
 +
              "displayedValue": "",
 +
              "dependencies": []
 +
            },
 +
            "mtItem": null,
 +
            "mapping": null
 +
          },
 +
          "flightNumber": "2184",
 +
          "baggageRestriction": [],
 +
          "departureDate": "2021-10-25T09:00:00",
 +
          "arrivalDate": "2021-10-25T11:00:00",
 +
          "quotaInfo": {
 +
            "status": 1,
 +
            "freePlaces": 0,
 +
            "isFewPlaces": false
 +
          }
 +
        }
 +
      ],
 +
      "commonPrice": 313
 +
    }
 +
  ],
 +
  "tourDate": "2021-10-25T00:00:00"
 +
}
 +
</syntaxhighlight>
 +
Возвращаемый результат метода RebuildFlights (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
  "flights": [
 +
    {
 +
      "remoteFlightId": "111397601080000",
 +
      "flightsSettings": [
 +
        {
 +
          "templateId": 1,
 +
          "patternId": 0,
 +
          "serviceId": 0
 +
        }
 +
      ],
 +
      "flightsPlains": [
 +
        {
 +
          "DepartureCity": {
 +
            "Key": 1,
 +
            "Value": "Москва"
 +
          },
 +
          "DepartureCountry": {
 +
            "Key": 460,
 +
            "Value": "Россия"
 +
          },
 +
          "ArrivalCity": {
 +
            "Key": 35,
 +
            "Value": "Вена"
 +
          },
 +
          "ArrivalCountry": {
 +
            "Key": 90,
 +
            "Value": "Австрия"
 +
          },
 +
          "DepartureAirport": {
 +
            "Key": "SVO",
 +
            "Value": "Шереметьево-2"
 +
          },
 +
          "ArrivalAirport": {
 +
            "Key": "VIE",
 +
            "Value": "Vena"
 +
          },
 +
          "Airline": {
 +
            "Id": 31,
 +
            "Value": "Aeroflot-Russian International AirLines",
 +
            "Key": "SU"
 +
          },
 +
          "Aircraft": {
 +
            "Key": "73H",
 +
            "Value": "73H"
 +
          },
 +
          "Flight": {
 +
            "Key": 621,
 +
            "Value": "2184"
 +
          },
 +
          "DepartureTime": "09:00:00",
 +
          "ArrivalTime": "11:00:00",
 +
          "TotalTimeOfFlight": null,
 +
          "FlightDetails": [
 +
            {
 +
              "Tariff": {
 +
                "Key": 113,
 +
                "Code": "NSU",
 +
                "Name": "Экономический класс(внешняя система)"
 +
              },
 +
              "IsCommission": false,
 +
              "Cost": 313,
 +
              "QuotaStatus": {
 +
                "PlacesStatus": 1,
 +
                "FreePlaces": 0,
 +
                "IsFewPlaces": false
 +
              },
 +
              "PartnerId": 10767,
 +
              "ByPax": false,
 +
              "Partner": {
 +
                "Key": 0,
 +
                "Value": null
 +
              }
 +
            }
 +
          ],
 +
          "FlightSetting": {
 +
            "ServiceId": 1,
 +
            "PatternId": 0,
 +
            "FlightId": 0
 +
          },
 +
          "FlightSourceMode": 0,
 +
          "Id": 0,
 +
          "SvKey": 1,
 +
          "IsSubCode1": true,
 +
          "IsSubCode2": false,
 +
          "IsPartnerBasedOn": false,
 +
          "Day": 1,
 +
          "DurationInNight": 0,
 +
          "BeginDateTime": "2021-10-25T09:00:00",
 +
          "EndDateTime": "2021-10-25T11:00:00",
 +
          "IsHooded": false,
 +
          "IsDeleted": false,
 +
          "IsNotCalculate": false,
 +
          "PacketId": 197,
 +
          "Index": 0
 +
        }
 +
      ]
 +
    }
 +
  ]
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Получение семейств тарифов авиаперелетов из внешней системы (GetGDSFlightFareFamilies)===
 +
Метод получает семейства тарифов для авиаперелетов из внешней системы.
 +
* Формат запроса:
 +
** POST .../TourSearchOwin/GetGDSFlightFareFamilies?
  
* Возвращаемый результат:
+
* Принимаемые параметры headers ( '''*''' – обязательный):
** '''validationResult''' – информация о валидации
+
** '''Content-Type *''' – application/json
*** '''Errors''' – ошибки
 
*** '''Warnings''' – предупреждения
 
*** '''States''' – статус
 
*** '''IsValid''' – информация о результате
 
** '''tariffSequencies''' – информация тарифах
 
*** '''flightId''' – идентификатор перелета
 
*** '''universalParametrsSequence''' – параметры тарифов
 
**** '''universalParametrs''' – массив параметров
 
***** '''code''' – описание параметра тарифа
 
***** '''priority''' – приоритет показа
 
***** '''needToPay''' – нужна ли доплата
 
***** '''shortDescriptions''' – краткое описание
 
****** '''code''' – код
 
****** '''value''' – значение
 
*** '''price''' – стоимость
 
*** '''deltaPrice''' – разница в цене
 
*** '''timeLimit''' – тайм-лимит
 
*** '''segments''' – сегменты
 
*** '''depAirportCode''' – код аэропорта отправления
 
*** '''depCityCode''' – код города отправления
 
*** '''arrAirportCode''' – код аэропорта прибытия
 
*** '''arrCityCode''' – код города прибытия
 
  
 
+
* Принимаемые параметры POST запроса ( '''*''' – обязательный):
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
** '''flightId''' – ID внешнего перелета
<div class="mw-collapsible-content">
+
** '''providerId''' – ID внешнего провайдера
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
** '''languageCode''' – код локализации
Вызов метода GetGDSFlightFareFamilies
+
** '''passengers''' – информация о пассажирах
<syntaxhighlight lang="java" enclose="div">
+
*** '''IsMain''' – главный турист
POST http://localhost:9000/TourSearchOwin/GetGDSFlightFareFamilies? HTTP/1.1
+
*** '''Number''' – порядковый номер туриста
Content-Type: application/json
+
*** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
 
+
*** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
{
+
*** '''FirstName''' – имя (лат)
    "flightId": "17554943020000",
+
*** '''LastName''' – фамилия (лат)
    "providerId": 82,
+
*** '''Patronymic''' – отчество (лат)
    "languageCode": "ru",
+
*** '''FirstNameRus''' – имя (рус)
    "passengers": [{
+
*** '''LastNameRus''' – фамилия (рус)
            "IsMain": true,
+
*** '''PatronymicRus''' – отчество (рус)
            "Number": 1,
+
*** '''InternationalPassportSeries''' – серия загранпаспорта
            "AgeType": 0,
+
*** '''InternationalPassportNumber''' – номер загранпаспорта
            "MaleFemaleSex": 0,
+
*** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
            "FirstName": "",
+
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке (DD.MM.YYYY)
            "LastName": "",
+
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
            "Patronymic": "",
+
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY)
            "FirstNameRus": "",
+
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
            "LastNameRus": "",
+
*** '''PassportSeries''' – серия паспорта
            "PatronymicRus": "",
+
*** '''PassportNumber''' – номер паспорта
            "InternationalPassportSeries": "",
+
*** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
            "InternationalPassportNumber": "",
+
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке (DD.MM.YYYY)
            "InternationalPassportDateOfIssue": "",
+
*** '''PassportByWhom''' – кем выдан паспорт
            "InternationalPassportDateOfIssueString": "",
+
*** '''Citizenship''' – название страны
            "InternationalPassportDateOfExpiry": "",
+
*** '''Phone''' – телефон
            "InternationalPassportDateOfExpiryString": "",
+
*** '''Email''' – e-mail
            "internationalPassportByWhom": "",
+
*** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
            "PassportSeries": "",
+
*** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
            "PassportNumber": "",
+
*** '''BirthPlace''' – место рождения
            "PassportDateOfIssue": "",
+
*** '''CitizenID''' – гражданство
            "PassportDateOfIssueString": "",
+
*** '''Age''' – количество полных лет на момент окончания тура
            "PassportByWhom": "",
+
** '''currency''' – валюта
            "Citizenship": "",
+
** '''price''' – стоимость
            "Phone": "",
+
** '''param''' – параметры перелета
            "Email": "",
+
*** '''flightsSource''' – параметры перелета
            "BirthDay": "",
+
**** '''flightSettings''' – информация о шаблоне услуги авиаперелета
            "BirthDayString": "",
+
***** '''templateId''' – идентификатор шаблона услуги
            "BirthPlace": "",
+
***** '''patternId''' – идентификатор паттерна услуги (внутренняя информация из программы туров)
            "CitizenID": "",
+
***** '''serviceId''' – идентификатор класса услуги (внутренняя информация из программы туров)
            "Age": 17
+
**** '''service''' – информация об услуге авиаперелета
        }, {
+
***** '''ServiceType''' – тип услуги
            "IsMain": false,
+
***** '''Code''' – ключ услуги
            "Number": 2,
+
***** '''SubCode1''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 1]]
            "AgeType": 0,
+
***** '''SubCode2''' – [[#Приложение 1: параметры услуги (ServiceType, Code, SubCode1, SubCode2)|доп. описание 2]]
            "MaleFemaleSex": 0,
+
***** '''CountryId''' – страна услуги
            "FirstName": "",
+
***** '''CityId''' – город услуги
            "LastName": "",
+
***** '''PacketId''' – пакет услуги
            "Patronymic": "",
+
***** '''PartnerId''' – партнер услуги
            "FirstNameRus": "",
+
***** '''Day''' – день предоставления услуги
            "LastNameRus": "",
+
***** '''DurationInNight''' – продолжительность услуги в ночах
            "PatronymicRus": "",
+
**** '''price''' – стоимость перелета
            "InternationalPassportSeries": "",
+
**** '''quotaInfo''' – объект информация по квотам
            "InternationalPassportNumber": "",
+
***** '''status''' – статус по квотам (есть места / нет мест / под запрос)
            "InternationalPassportDateOfIssue": "",
+
***** '''freePlaces''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
            "InternationalPassportDateOfIssueString": "",
+
***** '''isFewPlaces''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
            "InternationalPassportDateOfExpiry": "",
+
**** '''flightDateTimeLimitationInterval''' –
            "InternationalPassportDateOfExpiryString": "",
+
***** '''startLimitation''' – начало тайм-лимита
            "internationalPassportByWhom": "",
+
***** '''finishLimitation''' – объект тайм-лимита
            "PassportSeries": "",
+
****** '''dateTimeString''' – дата окончания тайм-лимита
            "PassportNumber": "",
+
****** '''serviceType''' – тип услуги
            "PassportDateOfIssue": "",
+
****** '''serviceCode''' – код услуги
            "PassportDateOfIssueString": "",
+
**** '''flightSourceMode''' – тип перелета (1 – локальный, 2 – из внешний системы)
            "PassportByWhom": "",
+
*** '''passengers''' – информация о пассажирах
            "Citizenship": "",
+
**** '''IsMain''' – главный турист
            "Phone": "",
+
**** '''Number''' – порядковый номер туриста
            "Email": "",
+
**** '''AgeType''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
            "BirthDay": "",
+
**** '''MaleFemaleSex''' – пол (0 – мужской, 1 – женский)
            "BirthDayString": "",
+
**** '''FirstName''' – имя (лат)
            "BirthPlace": "",
+
**** '''LastName''' – фамилия (лат)
            "CitizenID": "",
+
**** '''Patronymic''' – отчество (лат)
            "Age": 17
+
**** '''FirstNameRus''' – имя (рус)
        }
+
**** '''LastNameRus''' – фамилия (рус)
    ],
+
**** '''PatronymicRus''' – отчество (рус)
    "currency": "$",
+
**** '''InternationalPassportSeries''' – серия загранпаспорта
    "price": 147,
+
**** '''InternationalPassportNumber''' – номер загранпаспорта
    "param": {
+
**** '''InternationalPassportDateOfIssue''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
        "flightsSource": [{
+
**** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY)
                "flightSettings": {
+
**** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
                    "templateId": 1,
+
**** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY)
                    "patternId": 0,
+
**** '''internationalPassportByWhom''' – кем выдан загранпаспорт
                    "serviceId": 0
+
**** '''PassportSeries''' – серия паспорта
                },
+
**** '''PassportNumber''' – номер паспорта
                "service": {
+
**** '''PassportDateOfIssue''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
                    "serviceType": 1,
+
**** '''PassportDateOfIssueString''' – дата выдачи паспорта в строковом формате (DD.MM.YYYY)
                    "code": 1084,
+
**** '''PassportByWhom''' – кем выдан паспорт
                    "subCode1": 67,
+
**** '''Citizenship''' – название страны
                    "subCode2": 1,
+
**** '''Phone''' – телефон
                    "countryId": 90,
+
**** '''Email''' – e-mail
                    "cityId": 35,
+
**** '''BirthDay''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
                    "packetId": 1037,
+
**** '''BirthDayString''' – дата рождения в строковом формате (DD.MM.YYYY)
                    "partnerId": 12792,
+
**** '''BirthPlace''' – место рождения
                    "day": 1,
+
**** '''CitizenID''' – гражданство
                    "durationInNight": 0
+
**** '''Age''' – количество полных лет на момент окончания тура
                },
+
*** '''tourDate''' – дата тура
                "price": 146.44,
+
*** '''tourCurrency''' – валюта тура
                "quotaInfo": {
+
*** '''tourId''' – ключ программы тура
                    "status": 4,
+
*** '''filterTariff''' – информация о тарифах
                    "freePlaces": 0,
+
*** '''filterDeptime''' – информация о времени вылета
                    "isFewPlaces": false
+
*** '''isCommission''' – признак комиссионной цены
                },
+
*** '''baseFlightsParams''' – параметра авиаперелета
                "flightDateTimeLimitationInterval": {
+
**** '''CityArrival''' – город прибытия
                    "startLimitation": null,
+
**** '''FlightCode''' – код авиаперелета
                    "finishLimitation": {
+
**** '''TariffKey''' – ключ тарифа
                        "dateTimeString": "2021-01-30T21:40:00",
+
**** '''PartnerId''' – ключ партнера
                        "serviceType": 3,
+
*** '''isUpdated''' – информация об обновлении перелета
                        "serviceCode": 178
+
*** '''key''' – ключ запроса
                    }
+
*** '''tourDurationByDays''' – продолжительность перелета
                },
+
*** '''langueCode''' – локализация
                "flightSourceMode": 2
+
 
            }
+
* Возвращаемый результат:
        ],
+
** '''validationResult''' – информация о валидации
        "passengers": [{
+
*** '''Errors''' – ошибки
                "IsMain": true,
+
*** '''Warnings''' – предупреждения
                "Number": 1,
+
*** '''States''' – статус
                "AgeType": 0,
+
*** '''IsValid''' – информация о результате
                "MaleFemaleSex": 0,
+
** '''tariffSequencies''' – информация тарифах
                "FirstName": "",
+
*** '''flightId''' – идентификатор перелета
                "LastName": "",
+
*** '''universalParametrsSequence''' – параметры тарифов
                "Patronymic": "",
+
**** '''universalParametrs''' – массив параметров
                "FirstNameRus": "",
+
***** '''code''' – описание параметра тарифа
                "LastNameRus": "",
+
***** '''priority''' – приоритет показа
                "PatronymicRus": "",
+
***** '''needToPay''' – нужна ли доплата
                "InternationalPassportSeries": "",
+
***** '''shortDescriptions''' – краткое описание
                "InternationalPassportNumber": "",
+
****** '''code''' – код
                "InternationalPassportDateOfIssue": "",
+
****** '''value''' – значение
                "InternationalPassportDateOfIssueString": "",
+
*** '''price''' – стоимость
                "InternationalPassportDateOfExpiry": "",
+
*** '''deltaPrice''' – разница в цене
                "InternationalPassportDateOfExpiryString": "",
+
*** '''timeLimit''' – тайм-лимит
                "internationalPassportByWhom": "",
+
*** '''segments''' – сегменты
                "PassportSeries": "",
+
*** '''depAirportCode''' – код аэропорта отправления
                "PassportNumber": "",
+
*** '''depCityCode''' – код города отправления
                "PassportDateOfIssue": "",
+
*** '''arrAirportCode''' – код аэропорта прибытия
                "PassportDateOfIssueString": "",
+
*** '''arrCityCode''' – код города прибытия
                "PassportByWhom": "",
+
 
                "Citizenship": "",
+
 
                "Phone": "",
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
                "Email": "",
+
<div class="mw-collapsible-content">
                "BirthDay": "",
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
                "BirthDayString": "",
+
Вызов метода GetGDSFlightFareFamilies
                "BirthPlace": "",
+
<syntaxhighlight lang="java" enclose="div">
                "CitizenID": "",
+
POST http://localhost:9000/TourSearchOwin/GetGDSFlightFareFamilies? HTTP/1.1
                "Age": 17
+
Content-Type: application/json
             }, {
+
 
                "IsMain": false,
+
{
                "Number": 2,
+
    "flightId": "17554943020000",
                "AgeType": 0,
+
    "providerId": 82,
                "MaleFemaleSex": 0,
+
    "languageCode": "ru",
                "FirstName": "",
+
    "passengers": [{
                "LastName": "",
+
            "IsMain": true,
                "Patronymic": "",
+
            "Number": 1,
                "FirstNameRus": "",
+
            "AgeType": 0,
                "LastNameRus": "",
+
            "MaleFemaleSex": 0,
                "PatronymicRus": "",
+
            "FirstName": "",
                "InternationalPassportSeries": "",
+
            "LastName": "",
                "InternationalPassportNumber": "",
+
            "Patronymic": "",
                "InternationalPassportDateOfIssue": "",
+
            "FirstNameRus": "",
                "InternationalPassportDateOfIssueString": "",
+
            "LastNameRus": "",
                "InternationalPassportDateOfExpiry": "",
+
            "PatronymicRus": "",
                "InternationalPassportDateOfExpiryString": "",
+
            "InternationalPassportSeries": "",
                "internationalPassportByWhom": "",
+
            "InternationalPassportNumber": "",
                "PassportSeries": "",
+
            "InternationalPassportDateOfIssue": "",
                "PassportNumber": "",
+
            "InternationalPassportDateOfIssueString": "",
                "PassportDateOfIssue": "",
+
            "InternationalPassportDateOfExpiry": "",
                "PassportDateOfIssueString": "",
+
            "InternationalPassportDateOfExpiryString": "",
                "PassportByWhom": "",
+
            "internationalPassportByWhom": "",
                "Citizenship": "",
+
            "PassportSeries": "",
                "Phone": "",
+
            "PassportNumber": "",
                "Email": "",
+
            "PassportDateOfIssue": "",
                "BirthDay": "",
+
            "PassportDateOfIssueString": "",
                "BirthDayString": "",
+
            "PassportByWhom": "",
                "BirthPlace": "",
+
             "Citizenship": "",
                "CitizenID": "",
+
            "Phone": "",
                "Age": 17
+
            "Email": "",
             }
+
            "BirthDay": "",
        ],
+
            "BirthDayString": "",
        "tourDate": "2021-01-30T00:00:00",
+
            "BirthPlace": "",
        "tourCurrency": "$",
+
            "CitizenID": "",
        "tourId": 100008958,
+
            "Age": 17
        "filterTariff": {},
+
        }, {
        "filterDeptime": ["all"],
+
            "IsMain": false,
        "isCommission": true,
+
            "Number": 2,
        "baseFlightsParams": [{
+
            "AgeType": 0,
                "CityArrival": 35,
+
            "MaleFemaleSex": 0,
                "FlightCode": 1084,
+
            "FirstName": "",
                "TariffKey": 67,
+
            "LastName": "",
                "PartnerId": 12792
+
            "Patronymic": "",
            }
+
            "FirstNameRus": "",
        ],
+
            "LastNameRus": "",
        "isUpdated": false,
+
            "PatronymicRus": "",
        "key": 0,
+
            "InternationalPassportSeries": "",
        "tourDurationByDays": "11",
+
            "InternationalPassportNumber": "",
        "langueCode": "ru"
+
            "InternationalPassportDateOfIssue": "",
    }
+
            "InternationalPassportDateOfIssueString": "",
}
+
            "InternationalPassportDateOfExpiry": "",
 
+
            "InternationalPassportDateOfExpiryString": "",
</syntaxhighlight>
+
            "internationalPassportByWhom": "",
Возвращаемый результат метода GetGDSFlightFareFamilies (в формате JSON)
+
            "PassportSeries": "",
<syntaxhighlight lang="java" enclose="div">
+
            "PassportNumber": "",
[
+
            "PassportDateOfIssue": "",
{
+
            "PassportDateOfIssueString": "",
    "validationResult": {
+
             "PassportByWhom": "",
        "Errors": [],
+
            "Citizenship": "",
        "Warnings": null,
+
            "Phone": "",
        "States": null,
+
            "Email": "",
        "IsValid": true
+
            "BirthDay": "",
    },
+
            "BirthDayString": "",
    "tariffSequencies": [{
+
            "BirthPlace": "",
            "flightId": "17554961000000",
+
            "CitizenID": "",
            "universalParametrsSequence": [{
+
            "Age": 17
                    "universalParametrs": [{
+
        }
                            "code": "description",
+
    ],
                            "priority": 0,
+
    "currency": "$",
                            "needToPay": "Free",
+
    "price": 147,
                            "shortDescriptions": [{
+
    "param": {
                                    "code": "RU",
+
        "flightsSource": [{
                                    "value": "Минимум"
+
                "flightSettings": {
                                }
+
                    "templateId": 1,
                            ]
+
                    "patternId": 0,
                         }, {
+
                    "serviceId": 0
                            "code": "carry_on",
+
                },
                            "priority": 1,
+
                "service": {
                            "needToPay": "Free",
+
                    "serviceType": 1,
                            "shortDescriptions": [{
+
                    "code": 1084,
                                    "code": "RU",
+
                    "subCode1": 67,
                                    "value": "5 кг (40x30x20 см)"
+
                    "subCode2": 1,
                                }
+
                    "countryId": 90,
                            ]
+
                    "cityId": 35,
                        }, {
+
                    "packetId": 1037,
                            "code": "carry_on",
+
                    "partnerId": 12792,
                            "priority": 2,
+
                    "day": 1,
                            "needToPay": "Charge",
+
                    "durationInNight": 0
                            "shortDescriptions": [{
+
                },
                                    "code": "RU",
+
                "price": 146.44,
                                    "value": "10 кг (55x40x25 см)"
+
                "quotaInfo": {
                                }
+
                    "status": 4,
                            ]
+
                    "freePlaces": 0,
                        }, {
+
                    "isFewPlaces": false
                            "code": "baggage",
+
                },
                            "priority": 3,
+
                "flightDateTimeLimitationInterval": {
                            "needToPay": "Charge",
+
                    "startLimitation": null,
                            "shortDescriptions": [{
+
                    "finishLimitation": {
                                    "code": "RU",
+
                         "dateTimeString": "2021-01-30T21:40:00",
                                    "value": "платный"
+
                        "serviceType": 3,
                                }
+
                        "serviceCode": 178
                            ]
+
                    }
                        }, {
+
                },
                            "code": "exchangeable",
+
                "flightSourceMode": 2
                            "priority": 4,
+
            }
                            "needToPay": "Charge",
+
        ],
                            "shortDescriptions": [{
+
        "passengers": [{
                                    "code": "RU",
+
                "IsMain": true,
                                    "value": "Обмен разрешен со сбором"
+
                "Number": 1,
                                }
+
                "AgeType": 0,
                            ]
+
                "MaleFemaleSex": 0,
                        }, {
+
                "FirstName": "",
                            "code": "refundable",
+
                "LastName": "",
                            "priority": 5,
+
                "Patronymic": "",
                            "needToPay": "NotAvailable",
+
                "FirstNameRus": "",
                            "shortDescriptions": [{
+
                "LastNameRus": "",
                                    "code": "RU",
+
                "PatronymicRus": "",
                                    "value": "Возврат запрещен"
+
                "InternationalPassportSeries": "",
                                }
+
                "InternationalPassportNumber": "",
                            ]
+
                "InternationalPassportDateOfIssue": "",
                        }
+
                "InternationalPassportDateOfIssueString": "",
                    ]
+
                "InternationalPassportDateOfExpiry": "",
                 }
+
                "InternationalPassportDateOfExpiryString": "",
            ],
+
                "internationalPassportByWhom": "",
            "price": 147,
+
                "PassportSeries": "",
            "deltaPrice": 0,
+
                "PassportNumber": "",
            "timeLimit": "22.01.2021 4:08:00",
+
                "PassportDateOfIssue": "",
            "segments": [{
+
                "PassportDateOfIssueString": "",
                    "depAirportCode": "VKO",
+
                "PassportByWhom": "",
                    "depCityCode": "MOW",
+
                "Citizenship": "",
                    "arrAirportCode": "VIE",
+
                "Phone": "",
                    "arrCityCode": "VIE"
+
                "Email": "",
                 }
+
                "BirthDay": "",
            ]
+
                 "BirthDayString": "",
        }
+
                "BirthPlace": "",
    ],
+
                "CitizenID": "",
    "isDone": true
+
                "Age": 17
 +
            }, {
 +
                "IsMain": false,
 +
                "Number": 2,
 +
                "AgeType": 0,
 +
                "MaleFemaleSex": 0,
 +
                "FirstName": "",
 +
                "LastName": "",
 +
                 "Patronymic": "",
 +
                "FirstNameRus": "",
 +
                "LastNameRus": "",
 +
                "PatronymicRus": "",
 +
                "InternationalPassportSeries": "",
 +
                "InternationalPassportNumber": "",
 +
                "InternationalPassportDateOfIssue": "",
 +
                "InternationalPassportDateOfIssueString": "",
 +
                "InternationalPassportDateOfExpiry": "",
 +
                "InternationalPassportDateOfExpiryString": "",
 +
                "internationalPassportByWhom": "",
 +
                "PassportSeries": "",
 +
                "PassportNumber": "",
 +
                "PassportDateOfIssue": "",
 +
                "PassportDateOfIssueString": "",
 +
                "PassportByWhom": "",
 +
                "Citizenship": "",
 +
                "Phone": "",
 +
                "Email": "",
 +
                "BirthDay": "",
 +
                "BirthDayString": "",
 +
                "BirthPlace": "",
 +
                "CitizenID": "",
 +
                "Age": 17
 +
            }
 +
        ],
 +
        "tourDate": "2021-01-30T00:00:00",
 +
        "tourCurrency": "$",
 +
        "tourId": 100008958,
 +
        "filterTariff": {},
 +
        "filterDeptime": ["all"],
 +
        "isCommission": true,
 +
        "baseFlightsParams": [{
 +
                "CityArrival": 35,
 +
                "FlightCode": 1084,
 +
                "TariffKey": 67,
 +
                "PartnerId": 12792
 +
            }
 +
        ],
 +
        "isUpdated": false,
 +
        "key": 0,
 +
        "tourDurationByDays": "11",
 +
        "langueCode": "ru"
 +
    }
 
}
 
}
]
+
 
</syntaxhighlight>
+
</syntaxhighlight>
</TD></TR></TABLE>
+
Возвращаемый результат метода GetGDSFlightFareFamilies (в формате JSON)
</div></div><br />
+
<syntaxhighlight lang="java" enclose="div">
 
+
[
===Загрузка филиалов (Branches) начиная с релиза 15.3===
+
{
Метод производит выгрузку филиалов бронирования.
+
    "validationResult": {
* Формат запроса:
+
        "Errors": [],
** GET .../TourSearchOwin/Branches?
+
        "Warnings": null,
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
+
        "States": null,
** '''ids''' – массив ключей филиалов
+
        "IsValid": true
** '''cityKey''' – фильтр по городу филиала (если 0 или не задан, то выбираются все филиалы)
+
    },
 
+
    "tariffSequencies": [{
* Возвращаемый результат:
+
            "flightId": "17554961000000",
** '''Key''' – ключ филиала (ключ партнера)
+
            "universalParametrsSequence": [{
** '''Value''' – название филиала (название партнера)
+
                    "universalParametrs": [{
 
+
                            "code": "description",
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
                            "priority": 0,
<div class="mw-collapsible-content">
+
                            "needToPay": "Free",
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
                            "shortDescriptions": [{
Вызов метода Branches
+
                                    "code": "RU",
<syntaxhighlight lang="java" enclose="div">
+
                                    "value": "Минимум"
GET http://localhost:9000/TourSearchOwin/Branches?
+
                                }
</syntaxhighlight>
+
                            ]
Возвращаемый результат метода Branches (в формате JSON)
+
                        }, {
<syntaxhighlight lang="java" enclose="div">
+
                            "code": "carry_on",
[{
+
                            "priority": 1,
"Key": 12848,
+
                            "needToPay": "Free",
"Value": "Филиал 1"
+
                            "shortDescriptions": [{
},
+
                                    "code": "RU",
{
+
                                    "value": "5 кг (40x30x20 см)"
"Key": 12849,
+
                                }
"Value": "Филиал 2"
+
                            ]
},
+
                        }, {
{
+
                            "code": "carry_on",
"Key": 12850,
+
                            "priority": 2,
"Value": "Филиал 3"
+
                            "needToPay": "Charge",
}]
+
                            "shortDescriptions": [{
 +
                                    "code": "RU",
 +
                                    "value": "10 кг (55x40x25 см)"
 +
                                }
 +
                            ]
 +
                        }, {
 +
                            "code": "baggage",
 +
                            "priority": 3,
 +
                            "needToPay": "Charge",
 +
                            "shortDescriptions": [{
 +
                                    "code": "RU",
 +
                                    "value": "платный"
 +
                                }
 +
                            ]
 +
                        }, {
 +
                            "code": "exchangeable",
 +
                            "priority": 4,
 +
                            "needToPay": "Charge",
 +
                            "shortDescriptions": [{
 +
                                    "code": "RU",
 +
                                    "value": "Обмен разрешен со сбором"
 +
                                }
 +
                            ]
 +
                        }, {
 +
                            "code": "refundable",
 +
                            "priority": 5,
 +
                            "needToPay": "NotAvailable",
 +
                            "shortDescriptions": [{
 +
                                    "code": "RU",
 +
                                    "value": "Возврат запрещен"
 +
                                }
 +
                            ]
 +
                        }
 +
                    ]
 +
                }
 +
            ],
 +
            "price": 147,
 +
            "deltaPrice": 0,
 +
            "timeLimit": "22.01.2021 4:08:00",
 +
            "segments": [{
 +
                    "depAirportCode": "VKO",
 +
                    "depCityCode": "MOW",
 +
                    "arrAirportCode": "VIE",
 +
                    "arrCityCode": "VIE"
 +
                }
 +
            ]
 +
        }
 +
    ],
 +
    "isDone": true
 +
}
 +
]
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
 
+
===Загрузка филиалов (Branches) начиная с релиза 15.3===
===Загрузка ведущих менеджеров (Users) начиная с релиза 15.3===
+
Метод производит выгрузку филиалов бронирования.
Метод производит выгрузку ведущих менеджеров.
 
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/Users?
+
** GET .../TourSearchOwin/Branches?
 
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
 
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
** '''ids''' – массив ключей ведущих менеджеров
+
** '''ids''' – массив ключей филиалов
** '''branchKey''' – ключ филиала бронирования, к которому они привязаны
+
** '''cityKey''' – фильтр по городу филиала (если 0 или не задан, то выбираются все филиалы)
  
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''Key''' – ключ ведущего менеджера
+
** '''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>
 +
Вызов метода Branches
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/Branches?
 +
</syntaxhighlight>
 +
Возвращаемый результат метода Branches (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[{
 +
"Key": 12848,
 +
"Value": "Филиал 1"
 +
},
 +
{
 +
"Key": 12849,
 +
"Value": "Филиал 2"
 +
},
 +
{
 +
"Key": 12850,
 +
"Value": "Филиал 3"
 +
}]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
 
 +
===Загрузка ведущих менеджеров (Users) начиная с релиза 15.3===
 +
Метод производит выгрузку ведущих менеджеров.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/Users?
 +
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
 +
** '''ids''' – массив ключей ведущих менеджеров
 +
** '''branchKey''' – ключ филиала бронирования, к которому они привязаны
 +
 
 +
* Возвращаемый результат:
 +
** '''Key''' – ключ ведущего менеджера
 
** '''Value''' – полное имя ведущего менеджера
 
** '''Value''' – полное имя ведущего менеджера
  
Строка 5100: Строка 6526:
 
Метод производит расчет стоимости путевки.
 
Метод производит расчет стоимости путевки.
 
* Формат запроса:
 
* Формат запроса:
** POST .../TourSearchOwin/CalculateReservation?
+
** POST .../TourSearchOwin/CalculateReservation?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 5106: Строка 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''' – дата выдачи загранпаспорта
+
**** '''EndDateTimeString *''' – дата и время окончания услуги
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке
+
**** '''TemplateId *''' – порядок расположения шаблона услуги в внутри самой услуги в программе тура
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта
+
[[Файл: Ea_491.png|600px|индекс шаблона услуги]]</br>
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке
+
**** '''Cost *''' – цена услуги
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
+
**** '''ByPax *''' – цена за человека
*** '''PassportSeries''' – серия паспорта
+
**** '''QuotaStatus *''' – объект статус квотирования
*** '''PassportNumber''' – номер паспорта
+
***** '''PlacesStatus *''' – статус по квотам (есть места / нет мест / под запрос)
*** '''PassportDateOfIssue''' – дата выдачи паспорта
+
***** '''FreePlaces *''' – количество свободных мест, если удовлетворяются условия, заданные в настройке "Мало" и включена настройка "Отображать числовое значение оставшихся мест". Иначе возвращается 0. Если в данном параметре 0, то руководствоваться следует значением, полученном в параметре '''PlacesStatus'''.
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке
+
***** '''IsFewPlaces *''' – выполнены ли условия, заданные в настройке "Мало": '''true''' – если заданы условия количества мест "Мало" и данные условия выполнены, '''false''' – если не заданы условия количества мест "Мало" или они заданы, но не выполнены.
*** '''PassportByWhom''' – кем выдан паспорт
+
**** '''Index *''' – индекс услуги
*** '''Citizenship''' – название страны
+
**** '''IsRoute *''' – признак маршрутная услуга (Перелет, автобусный переезд, жд переезд, трансфер, экскурсия)
*** '''Phone''' – телефон
+
**** '''ServiceTemplateIndex *''' – индекс шаблона услуги (Порядок расположения услуги в программе тура. Не отображается в программе туров,это просто порядковый номер услуги в путевке)
*** '''Email''' – e-mail
+
[[Файл: Ea_490.png|600px|индекс шаблона услуги]]</br>
*** '''BirthDay''' – дата рождения
+
**** '''RemoteId *''' – информация об услуге во внешней системе
*** '''BirthDayString''' – дата рождения в строковом формате
+
**** '''IsCommission *''' – признак, комиссионная ли услуга
*** '''BirthPlace''' – место рождения
+
**** '''BaseFlightsParams *''' – параметры рассчитанных авиаперелетов ''Обязательный параметр, если в путевке есть услуга авиаперелета''
*** '''CitizenID''' – гражданство
+
***** '''CityArrival *''' – ключ города прибытия прямого перелета
*** '''Age''' – количество полных лет на момент окончания тура
+
***** '''FlightCode *''' – ключ прямого авиаперелета
** '''Day''' – день (перевод)
+
***** '''TariffKey *''' – ключ тарифа прямого авиаперелета
** '''Day2''' – дня (перевод)
+
***** '''PartnerId *''' – ключ партнера прямого авиаперелета
** '''Days''' – дней (перевод)
+
***** '''CityArrival *''' – ключ города прибытия обратного перелета
** '''Night''' – ночь (перевод)
+
***** '''FlightCode *''' – ключ обратного авиаперелета
** '''Night2''' – ночи (перевод)
+
***** '''TariffKey *''' – ключ тарифа обратного авиаперелета
** '''Nights''' – ночей (перевод)
+
***** '''PartnerId *''' – ключ партнера обратного авиаперелета
** '''adultsCountOverServiceLimit''' – Количество взрослых туристов превышает лимит услуги (перевод)
+
*** '''TouristNumbersList *''' – массив туристов, привязанных к услуге
** '''at''' – на (перевод)
+
** '''Tourists *''' – массив туристов. Для того, чтобы узнать, какие поля обязательные для туриста, мы можем обратиться к методу [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка настройки отображения полей по туристам (TouristDataSettings)|TouristDataSettings]] по определенной стране. В каждом объекте есть поле '''IsRequired''', которое отвечает за то, будет ли оно обязательным для заполнения или его можно оставить с пустым значением.
** '''incorrectChildrenInf''' – Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание) (перевод)
+
*** '''IsMain *''' – главный турист
 
+
*** '''Number *''' – порядковый номер туриста
* Возвращаемый результат:
+
*** '''AgeType *''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
** '''IsValid''' – признак валидности путевки
+
*** '''MaleFemaleSex *''' – пол (0 – мужской, 1 – женский)
** '''ErrorMessage''' – сообщение об ошибке, если есть
+
*** '''FirstName *''' – имя (лат)
** '''CalculatedReservation''' – объект рассчитанной путевки  
+
*** '''LastName *''' – фамилия (лат)
*** '''TourKey''' – ключ тура  
+
*** '''Patronymic *''' – отчество (лат)
*** '''BeginDate''' – дата начала тура
+
*** '''FirstNameRus *''' – имя (рус)
*** '''Duration''' – продолжительность путевки в днях
+
*** '''LastNameRus *''' – фамилия (рус)
*** '''Currency''' – код валюты тура  
+
*** '''PatronymicRus *''' – отчество (рус)
*** '''CalculatedServicesPrice''' – сумма обязательных услуг, входящих в состав тура  
+
*** '''InternationalPassportSeries *''' – серия загранпаспорта
*** '''ChangedPrice''' – сумма, на которую изменилась итоговая стоимость '''TotalPrice''' в результате добавления обязательных и дополнительных услуг
+
*** '''InternationalPassportNumber *''' – номер загранпаспорта
*** '''Price''' – итоговая стоимость тура для агентства, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг - партнерская комиссия (в валюте тура)
+
*** '''InternationalPassportDateOfIssue *''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''TotalPrice''' – итоговая стоимость тура для туриста, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг (в валюте тура)
+
*** '''InternationalPassportDateOfIssueString *''' – дата выдачи загранпаспорта в строке (DD.MM.YYYY)
 +
*** '''InternationalPassportDateOfExpiry *''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''InternationalPassportDateOfExpiryString *''' – дата окончания действия загранпаспорта в строке (DD.MM.YYYY)
 +
*** '''internationalPassportByWhom *''' – кем выдан загранпаспорт
 +
*** '''PassportSeries *''' – серия паспорта
 +
*** '''PassportNumber *''' – номер паспорта
 +
*** '''PassportDateOfIssue *''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
 +
*** '''PassportDateOfIssueString *''' – дата выдачи паспорта  строковом формате (DD.MM.YYYY)
 +
*** '''PassportByWhom *''' – кем выдан паспорт
 +
*** '''Citizenship *''' – название страны
 +
*** '''Phone *''' – телефон
 +
*** '''Email *''' – e-mail
 +
*** '''BirthDay *''' – дата рождения (YYYY-MM-DDThh:mm:ssz)
 +
*** '''BirthDayString *''' – дата рождения в строковом формате (DD.MM.YYYY)
 +
*** '''BirthPlace *''' – место рождения
 +
*** '''CitizenID *''' – гражданство
 +
*** '''Age *''' – количество полных лет на момент окончания тура
 +
** '''Day *''' – день (перевод) ''Может быть с пустым значением''
 +
** '''Day2 *''' – дня (перевод) ''Может быть с пустым значением''
 +
** '''Days *''' – дней (перевод) ''Может быть с пустым значением''
 +
** '''Night *''' – ночь (перевод) ''Может быть с пустым значением''
 +
** '''Night2 *''' – ночи (перевод) ''Может быть с пустым значением''
 +
** '''Nights *''' – ночей (перевод) ''Может быть с пустым значением''
 +
** '''adultsCountOverServiceLimit *''' – Количество взрослых туристов превышает лимит услуги (перевод) ''Может быть с пустым значением''
 +
** '''at *''' – на (перевод) ''Может быть с пустым значением''
 +
** '''incorrectChildrenInf *''' – Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание) (перевод) ''Может быть с пустым значением''
 +
** '''DiscountCardId *''' – ID основания для скидки (дисконтной карты) полученное в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Проверка основания для скидки (CheckCauseDiscount)|CheckCauseDiscount]] ''Может быть с пустым значением''
 +
** '''PromocodeId *''' – ID промокода полученное в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Проверка промокода (CheckPromocode)|CheckPromocode]] ''Может быть с пустым значением''
 +
 
 +
 
 +
* Возвращаемый результат:
 +
** '''IsValid''' – признак валидности путевки
 +
** '''ErrorMessage''' – сообщение об ошибке, если есть
 +
** '''CalculatedReservation''' – объект рассчитанной путевки  
 +
*** '''TourKey''' – ключ тура  
 +
*** '''BeginDate''' – дата начала тура
 +
*** '''Duration''' – продолжительность путевки в днях
 +
*** '''Currency''' – код валюты тура  
 +
*** '''CalculatedServicesPrice''' – сумма обязательных услуг, входящих в состав тура  
 +
*** '''ChangedPrice''' – сумма, на которую изменилась итоговая стоимость '''TotalPrice''' в результате добавления обязательных и дополнительных услуг
 +
*** '''Price''' – итоговая стоимость тура для агентства, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг - партнерская комиссия (в валюте тура)
 +
*** '''TotalPrice''' – итоговая стоимость тура для туриста, рассчитывается как стоимость обязательных услуг, входящих в состав тура + стоимость обязательных услуг, не входящих в состав тура + стоимость дополнительных услуг (в валюте тура)
 
*** '''IsDiscountIsPercent''' – признак, в процентах ли дается партнерская комиссия или в y.e.
 
*** '''IsDiscountIsPercent''' – признак, в процентах ли дается партнерская комиссия или в y.e.
 
*** '''NationalChangedPrice''' – сумма, на которую изменилась итоговая стоимость '''TotalPrice''' в результате добавления обязательных и дополнительных услуг (в национальной валюте)
 
*** '''NationalChangedPrice''' – сумма, на которую изменилась итоговая стоимость '''TotalPrice''' в результате добавления обязательных и дополнительных услуг (в национальной валюте)
Строка 5232: Строка 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">Пример
Строка 5238: Строка 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
  
Строка 5412: Строка 6888:
 
"at": "на",
 
"at": "на",
 
"incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)"
 
"incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)"
 +
        "PromocodeId":"",
 +
        "DiscountCardId":"95"
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 5436: Строка 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,
Строка 5491: Строка 6973:
  
 
* Формат запроса:
 
* Формат запроса:
** PUT .../TourSearchOwin/CreateReservation/1?
+
** PUT .../TourSearchOwin/CreateReservation/1?nodeId=2147483647
 +
, где ''nodeId'' – уникальный идентификатор узла в кластере балансировки нагрузки [[Мастер-Тур(15):Балансировщик нагрузки HaProxy|HaProxy]]
  
 
* Принимаемые параметры headers ( '''*''' – обязательный):
 
* Принимаемые параметры headers ( '''*''' – обязательный):
Строка 5498: Строка 6981:
  
 
* Принимаемые параметры PUT запроса:
 
* Принимаемые параметры PUT запроса:
** '''TourProgramId''' – ключ турпрограммы
+
** '''TourProgramId *''' – ключ турпрограммы
** '''BeginDate''' – дата начала тура
+
** '''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''' – дата выдачи загранпаспорта
+
*** '''InternationalPassportDateOfIssue *''' – дата выдачи загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfIssueString''' – дата выдачи загранпаспорта в строке
+
*** '''InternationalPassportDateOfIssueString *''' – дата выдачи загранпаспорта в строковом формате (DD.MM.YYYY)
*** '''InternationalPassportDateOfExpiry''' – дата окончания действия загранпаспорта
+
*** '''InternationalPassportDateOfExpiry *''' – дата окончания действия загранпаспорта (YYYY-MM-DDThh:mm:ssz)
*** '''InternationalPassportDateOfExpiryString''' – дата окончания действия загранпаспорта в строке
+
*** '''InternationalPassportDateOfExpiryString *''' – дата окончания действия загранпаспорта в строковом формате (DD.MM.YYYY)
*** '''internationalPassportByWhom''' – кем выдан загранпаспорт
+
*** '''internationalPassportByWhom *''' – кем выдан загранпаспорт
*** '''PassportSeries''' – серия паспорта
+
*** '''PassportSeries *''' – серия паспорта
*** '''PassportNumber''' – номер паспорта
+
*** '''PassportNumber *''' – номер паспорта
*** '''PassportDateOfIssue''' – дата выдачи паспорта
+
*** '''PassportDateOfIssue *''' – дата выдачи паспорта (YYYY-MM-DDThh:mm:ssz)
*** '''PassportDateOfIssueString''' – дата выдачи паспорта в строке
+
*** '''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''' – код путевки
Строка 5605: Строка 7094:
 
*** '''Discount''' – величина скидки на одного человека
 
*** '''Discount''' – величина скидки на одного человека
 
*** '''DiscountSum''' – абсолютная величина скидки
 
*** '''DiscountSum''' – абсолютная величина скидки
*** '''SORCode''' – ключ статус путевки
+
*** '''SORCode''' – ключ статус путевки, возможные значения: 0-в работе, 1-не определён, 2-аннулирован, 3-wait лист, 7-ок.
 
*** '''CrDate''' – дата и время создания путевки
 
*** '''CrDate''' – дата и время создания путевки
 
*** '''Rate''' – код валюты путевки
 
*** '''Rate''' – код валюты путевки
Строка 5658: Строка 7147:
 
**** '''SubCode2''' – ключ доп.описания 2 услуги
 
**** '''SubCode2''' – ключ доп.описания 2 услуги
 
**** '''Men''' – количество человек, пользующихся услугой по путевке
 
**** '''Men''' – количество человек, пользующихся услугой по путевке
**** '''Days''' – количество дней услуги
+
**** '''Days''' – количество дней услуги (для услуги Отель ("SVKey": 3) количество ночей услуги)
 
**** '''CNKey''' – ключ страны услуги
 
**** '''CNKey''' – ключ страны услуги
 
**** '''CTKey''' – ключ города услуги
 
**** '''CTKey''' – ключ города услуги
Строка 5668: Строка 7157:
 
**** '''Control''' – ключ статуса услуги (ссылка на таблицу Controls),
 
**** '''Control''' – ключ статуса услуги (ссылка на таблицу Controls),
 
**** '''Attribute''' – атрибут услуги
 
**** '''Attribute''' – атрибут услуги
**** '''DateBeg''' – дата начала действия услуги
+
**** '''DateBeg''' – дата начала действия услуги в днях (для отеля - в ночах)
**** '''DateEnd''' – дата окончания действия услуги
+
**** '''DateEnd''' – дата окончания действия услуги в днях (для отеля - в ночах)
 
**** '''Discount''' – размер скидки по услуге
 
**** '''Discount''' – размер скидки по услуге
 
**** '''Comment''' – комментарий к услуге
 
**** '''Comment''' – комментарий к услуге
Строка 5756: Строка 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-
Строка 5932: Строка 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": "Москва",
Строка 5963: Строка 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": "Москва",
Строка 5980: Строка 7469:
 
     "Nights": "ночей",
 
     "Nights": "ночей",
 
     "adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги",
 
     "adultsCountOverServiceLimit": "Количество взрослых туристов превышает лимит услуги",
     "incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)"
+
     "incorrectChildrenInf": "Возраст детей не соответствует допустимому в выбранном варианте размещения (см. Услуги: Проживание)",
 +
    "OrderInfoUrl": "http://localhost/MasterWeb/OrderInfo.aspx",
 +
    "DogovorComment": ""
 +
    "PromocodeId":"301",
 +
    "DiscountCardId":""
 +
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 6400: Строка 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?)
 +
 
 +
*Принимаемые параметры PUT запроса:
 +
** '''BeginDate *''' – дата начала тура (YYYY-MM-DDThh:mm)
 +
** '''Duration *''' – продолжительность тура в днях
 +
** '''Currency *''' – код валюты
 +
** '''TourProgramId''' – идентификатор турпрограммы (необязательный, по умолчанию 0)
 +
** '''Services *''' – массив услуг, в данном случае будет содержать только услугу отель
 +
*** '''Code *''' – идентификатор отеля во внешней системе, сравниваются с промежуточной базой данных статического адаптера [[Megatec Integration Service:Индивидуальные особенности адаптеров TravelLine (Россия)|MIS TravelLine (Россия)]]
 +
*** '''Cost *''' – стоимость проживания за весь период
 +
*** '''Packet *''' – идентификатор пакета, сравниваются с промежуточной базой данных статического адаптера [[Megatec Integration Service:Индивидуальные особенности адаптеров TravelLine (Россия)|MIS TravelLine (Россия)]]
 +
*** '''SubCode1 *''' – идентификатор типа номера, сравниваются с промежуточной базой данных статического адаптера [[Megatec Integration Service:Индивидуальные особенности адаптеров TravelLine (Россия)|MIS TravelLine (Россия)]]
 +
** '''Tourists *''' – массив туристов
 +
*** '''FirstName *''' – имя туриста
 +
*** '''LastName *''' – фамилия туриста
 +
*** '''Patronymic *''' – отчество туриста
 +
*** '''MaleFemaleSex *''' – пол (0 – мужской, 1 – женский)
 +
*** '''AgeType *''' – тип туриста (0 – взрослый, 1 – ребенок, 2 – инфант)
 +
*** '''Age *''' – количество полных лет на момент окончания тура
 +
*** '''Phone *''' – телефон (обязателен для первого туриста)
 +
*** '''Email *''' – e-mail (обязателен для первого туриста)
 +
** '''DogovorComment *''' – комментарий к путевке (ограничение 254 символа, при превышении разбивается на части)
 +
[[Файл:Am 063.png|left]]<br />
 +
1. В случае, если в теле запроса указываются ID несинхронизированных отелей, пакета, типа номера, то создаются фиктивные данные, которые необходимо изменить в услуге экрана ''Путевка'' (пример: Отель – ApiHotel, пакет – ApiPacket, тип номера – ApiRoom(ApiRoomCategory),ApiAccmdmen)<br />
 +
2. Тип питания всегда будет создаваться фиктивный и его необходимо изменить в услуге экрана ''Путевка'' (пример: Тип питания – ApiPansion)<br /><br /><br />
 +
*Возвращаемый результат:
 +
** '''Reservation''' – объект путевки
 +
*** '''$id''' – внутренний идентификатор для установки связей между сущностями,
 +
*** '''Code''' – код путевки
 +
*** '''TurDate''' – дата начала тура
 +
*** '''TRKey''' – идентификатор тура
 +
*** '''CNKey''' – идентификатор страны
 +
*** '''CTKey''' – идентификатор города
 +
*** '''NMen''' – количество туристов
 +
*** '''Price''' – стоимость путевки
 +
*** '''Payed''' – оплаченная сумма
 +
*** '''NDay''' – продолжительность тура в днях
 +
*** '''MainMan''' – контактное лицо
 +
*** '''MainManPhone''' – телефон контактного лица
 +
*** '''MainManAddress''' – адрес лица, заключившего договор
 +
*** '''MainManPassport''' – паспортные данные контактного лица
 +
*** '''PartnerKey''' – идентификатор партнера
 +
*** '''Operator''' – оператор, оформивший путевку
 +
*** '''Discount''' – размер скидки
 +
*** '''DiscountSum''' – сумма скидки
 +
*** '''SORCode''' – ключ статус путевки, возможные значения: 0-в работе, 1-не определён, 2-аннулирован, 3-wait лист, 7-ок.
 +
*** '''CrDate''' – дата создания путевки
 +
*** '''Rate''' – код валюты путевки
 +
*** '''Advertise''' – идентификатор рекламного источника
 +
*** '''Locked''' – статус блокировки путевки
 +
*** '''CauseDisc''' – код основания скидки
 +
*** '''PPaymentDate''' – дата предоплаты
 +
*** '''PaymentDate''' – максимальная дата полной оплаты
 +
*** '''Procent''' – предоплата в %
 +
*** '''TurDateBfrAnnul''' – дата начала тура до аннуляции
 +
*** '''ARKey''' – идентификатор причины аннуляции
 +
*** '''Key''' – идентификатор договора
 +
*** '''CodePartner''' – идентификатор партнера
 +
*** '''FilialKey''' – идентификатор филиала
 +
*** '''IsOutDoc''' – статус выдачи документов
 +
*** '''Notes''' – примечания
 +
*** '''DiscSumBfrAnn''' – сумма скидки перед аннуляцией
 +
*** '''PriceBfrAnn''' – цена путевки перед аннуляцией
 +
*** '''RazmerP''' – размер предоплаты
 +
*** '''LeadDepartment''' – идентификатор ведущего отдела
 +
*** '''MainManEmail''' – e-mail контактного лица
 +
*** '''MainManComment''' – комментарий контактного лица
 +
*** '''DupUserKey''' – идентификатор представителя агента
 +
*** '''BTKey''' – идентификатор системы бронирования
 +
*** '''ConfirmedDate''' – дата подтверждения путевки
 +
*** '''PrtDogKey''' – идентификатор договора партнера
 +
*** '''CTDepartureKey''' – идентификатор города отправления
 +
*** '''PDTType''' – тип договора путевки
 +
*** '''NationalCurrencyPrice''' – цена в национальной валюте
 +
*** '''NationalCurrencyDiscountSum''' – сумма скидки в национальной валюте
 +
*** '''NationalCurrencyPayed''' – оплаченная сумма в национальной валюте
 +
*** '''CurrencyKey''' – идентификатор валюты
 +
*** '''CurrencyRate''' – курс валюты
 +
*** '''ClientKey''' – идентификатор клиента
 +
*** '''AgencyPrice''' – цена для агентства
 +
*** '''Partner''' – информация о партнере
 +
**** '''$id''' – идентификатор записи
 +
**** '''Key''' – идентификатор партнера
 +
**** '''FullName''' – полное название партнера
 +
**** '''Name''' – краткое название партнера
 +
*** '''Services''' – список услуг
 +
**** '''$id''' – внутренний идентификатор для установки связей между сущностями
 +
**** '''DGCod''' – номер путевки
 +
**** '''TurDate''' – дата начала тура
 +
**** '''Key''' – ключ услуги
 +
**** '''PaketKey''' – ключ пакета
 +
**** '''TRKey''' – клют тура
 +
**** '''SVKey''' – ключ типа услуги
 +
**** '''Name''' – наименование услуги
 +
**** '''Day''' – порядковый номер дня тура, в который предоставляется услуга
 +
**** '''Code''' – ключ кода услуги
 +
**** '''SubCode1''' – ключ доп.описания 1 услуги
 +
**** '''SubCode2''' – ключ доп.описания 2 услуги
 +
**** '''Men''' – количество человек, пользующихся услугой по путевке
 +
**** '''Days''' – количество дней услуги
 +
**** '''CNKey''' – ключ страны услуги
 +
**** '''CTKey''' – ключ города услуги
 +
**** '''PartnerKey''' – ключ партнера, предоставляющего услугу
 +
**** '''Brutto''' – стоимость услуги брутто
 +
**** '''Wait''' – признак услуги ''Снимать квоту при бронировании''
 +
**** '''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''
 +
** '''ValidationResultSummary''' – объект статус результата бронирования
 +
*** '''ValidationResult''' – объект с ошибками и флагом валидности путевки
 +
**** '''Errors''' – массив ошибок бронирования
 +
**** '''IsValid''' – признак валидности бронирования
 +
*** '''ValidationResultAttributes''' – атрибут результата бронирования
 +
 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:1200px">Пример запроса
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода CreateReservationExternalSystem
 +
<syntaxhighlight lang="java" enclose="div">
 +
PUT http://localhost:9000/TourSearchOwin/CreateReservationExternalSystem/1?
 +
Content-Type: application/json
 +
Authorization: Bearer AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAObjhnb1q7EOpYmBFLH9T4AAAAAACAAAAAAAQZgAAAAEAACAAAACi2OgeCgKM2UVjnd-_y7WK9Tp90D7uiyDzOpQNy2PUrQAAAAAOgAAAAAIAACAAAABBwMz7N-
 +
lZMFS0R9BqYXrNkVEL0ORSd2IpZ95J78cBHDABAABoZQCpqlwdHPASxLfQj-sRBv1S-kkGRC3g6wMlF_UjzI4PGIv_x5SdDwdIqoveXSyxshY88VidzcMRZjk2HJFjUJrcG_e8FfKpzUZUuFvq1dASzSm83JNgdqNaPjnjqSpffBEfD-zA1L77wMgN9_d70lVTh8PlxXkx_fxQI3D0Dcymqz-Q7ymsWM9HMDlmQ2BllmjBisc8UaYLT3VvmAvI1uDL08FFT1Rx9LFMi2B36OGZQgUoona0KuY48x5Xhbx5yeLAKdvqqEDViG35z7H8_gVU8T5TR08PDJvxvAe24lV1rBGidGNZqPL4meuSrh1hUl9j2vmFfhdGIyBhz7B9Z1Q2iDNfL6j-YfNEcuj8SGTMm5pfObAdcjH5CKI4T-
 +
QWcvE6HUfRs0UzAf2eF1bXQAAAAGMNV8S-M1ckRYpUCIVNPCLWi4g9HR0oIIJIRCMpu3hAJPM1xlNSaaYabu-il-PwoOthHujA2PZXtXj9-o3wpEA
 +
{
 +
    "BeginDate": "2024-12-16T14:00",
 +
    "Duration": 4,
 +
    "Currency": "рб",
 +
    "TourProgramId": 0,
 +
    "Services": [
 +
        {
 +
            "Code": "8746",
 +
            "Cost": 9900,
 +
            "Packet": "359679",
 +
            "SubCode1": "356847"
 +
        }
 +
    ],
 +
    "Tourists": [
 +
        {
 +
            "FirstName": "Иван",
 +
            "LastName": "Иванов",
 +
            "Patronymic": "Иванович",
 +
            "MaleFemaleSex": 0,
 +
            "AgeType": 0,
 +
            "Age": 18,
 +
            "Phone": "79876543232",
 +
            "Email": "emailqwerty123@example.com"
 +
        },
 +
        {
 +
            "FirstName": "Петр",
 +
            "LastName": "Петров",
 +
            "Patronymic": "Петрович",
 +
            "MaleFemaleSex": 0,
 +
            "AgeType": 0,
 +
            "Age": 18
 +
        }
 +
    ],
 +
    "DogovorComment": "Это тестовая путевка. Клиент указывает детали отеля и размещения."
 +
}
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
 
** '''dgCode *''' – номер путевки:
 
 
* Возвращаемый результат:
 
** '''$id''' – внутренний идентификатор для установки связей между сущностями,
 
** '''Code''' – код путевки
 
** '''TurDate''' – дата заезда
 
** '''TRKey''' – ключ тура
 
** '''CNKey''' – ключ страны
 
** '''CTKey''' – ключ города
 
** '''NMen''' – количество туристов по путевке
 
** '''Price''' – стоимость путевки за вычетом скидки (комиссии)
 
** '''Payed''' – оплаченная сумма по путевке
 
** '''NDay''' – продолжительность тура в днях
 
** '''MainMan''' – ФИО лица, заключившего договор
 
** '''MainManPhone''' – номер телефона лица, заключившего договор
 
** '''MainManAddress''' – адрес лица, заключившего договор
 
** '''MainManPassport''' – паспортные данные лица, заключившего договор
 
** '''PartnerKey''' – ключ партнера, оформившего договор
 
** '''Operator''' – ФИО создателя договора
 
** '''Discount''' – величина скидки на одного человека
 
** '''DiscountSum''' – абсолютная величина скидки
 
** '''SORCode''' – ключ статус путевки
 
** '''CrDate''' – дата и время создания путевки
 
** '''Rate''' – код валюты путевки
 
** '''Advertise''' – ключ источника рекламы
 
** '''Locked''' – блокировка путевки: ''1'' – если заблокирована
 
** '''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''' – дата начала тура
 
*** '''Key''' – ключ услуги
 
*** '''PaketKey''' – ключ пакета
 
*** '''TRKey''' – клют тура
 
*** '''SVKey''' – ключ типа услуги
 
*** '''Name''' – наименование услуги
 
*** '''Day''' – порядковый номер дня тура, в который предоставляется услуга
 
*** '''Code''' – ключ кода услуги
 
*** '''SubCode1''' – ключ доп.описания 1 услуги
 
*** '''SubCode2''' – ключ доп.описания 2 услуги
 
*** '''Men''' – количество человек, пользующихся услугой по путевке
 
*** '''Days''' – количество дней услуги
 
*** '''CNKey''' – ключ страны услуги
 
*** '''CTKey''' – ключ города услуги
 
*** '''PartnerKey''' – ключ партнера, предоставляющего услугу
 
*** '''Brutto''' – стоимость услуги брутто
 
*** '''Wait''' – признак услуги ''Снимать квоту при бронировании''
 
*** '''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="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 (в формате JSON)
<syntaxhighlight lang="java" enclose="div">
 
GET http://localhost:9000/TourSearchOwin/GetReservation?dgCode=AU10101003
 
Content-Type: application/json
 
Authorization: Bearer AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA-
 
EqAAAAAASAAACgAAAAEAAAAO4S-VrqBhQuhqliqrAKKfIgAQAAn-gfgP-rYjk-Krr1Ck2A-IGCw6FBhamUOzFxgTtk1hR-
 
GLMryFIH8VK5GmHdHubZWj4S7XcazGL1Kn5-VlbiYdW2ZVWpYlk638aV-XS2kpZ9YrKgViiM_x8RH5TPo4-
 
9LhE7V-SjiB_CP_qs58DRKcyohq3Tz9QaiFgH1Ko7O2XKjTBG7SHyQPDPYjaqg9kDxmzq0UcIT6Fm4YkDxmm9-
 
CW7u3cEFWcpiqKOc2VvZFKPPHc07uDOO4w9FXPhpXZwOqrJBxzhbr73RuhzPs_e-hgxKaIlsMaK5b0v5ReAMy1kuY0ebXA
 
</syntaxhighlight>
 
Возвращаемый результат метода GetReservation (в формате JSON)
 
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
     "$id": 1,
+
     "Reservation": {
    "Code": "AU10101003",
+
        "$id": 1,
    "TurDate": "2021-01-01T00:00:00",
+
        "Code": "RU27010037",
    "TRKey": 100000038,
+
        "TurDate": "2025-01-27T12:00:00",
    "CNKey": 90,
+
        "TRKey": 0,
    "CTKey": 35,
+
        "CNKey": 460,
    "NMen": 2,
+
        "CTKey": 1,
    "Price": 877,
+
        "NMen": 2,
    "Payed": 0,
+
        "Price": 9900.0,
    "NDay": 9,
+
        "Payed": 0.0,
    "MainMan": "",
+
        "NDay": 4,
    "MainManPhone": "",
+
        "MainMan": "Тестовый Представитель",
    "MainManAddress": "",
+
        "MainManPhone": "+79139992222",
    "MainManPassport": "",
+
        "MainManAddress": "",
    "PartnerKey": 10762,
+
        "MainManPassport": "11111 2222222222222",
    "Operator": "Megatec ",
+
        "PartnerKey": 12667,
    "Discount": 40,
+
        "Operator": "Allservises A.A.",
    "DiscountSum": 80,
+
        "Discount": 17.0,
    "SORCode": 3,
+
        "DiscountSum": 0.0,
    "CrDate": "2020-10-12T15:02:29.013",
+
        "SORCode": 0,
    "Rate": "$",
+
        "CrDate": "2025-01-24T17:26:17.25",
    "Advertise": 0,
+
        "Rate": "рб",
    "Locked": null,
+
        "Advertise": 0,
    "CauseDisc": null,
+
        "Locked": null,
    "PPaymentDate": null,
+
        "CauseDisc": 0,
    "PaymentDate": "2020-10-14T00:00:00",
+
        "PPaymentDate": null,
    "Procent": 1,
+
        "PaymentDate": "2025-01-26T00:00:00",
    "TurDateBfrAnnul": null,
+
        "Procent": 1,
    "ARKey": 0,
+
        "TurDateBfrAnnul": null,
    "Key": 40335,
+
        "ARKey": 0,
    "CodePartner": null,
+
        "Key": 54010,
    "FilialKey": 1,
+
        "CodePartner": null,
    "IsOutDoc": 0,
+
        "FilialKey": 12850,
    "Notes": null,
+
        "IsOutDoc": 0,
    "DiscSumBfrAnn": null,
+
        "Notes": null,
    "PriceBfrAnn": null,
+
        "DiscSumBfrAnn": null,
    "RazmerP": 0,
+
        "PriceBfrAnn": null,
    "LeadDepartment": 0,
+
        "RazmerP": 10.0,
    "MainManEmail": "test@megatec.ru",
+
        "LeadDepartment": 0,
    "MainManComment": "",
+
        "MainManEmail": "test@megatec.ru",
    "DupUserKey": 6,
+
        "MainManComment": "",
    "BTKey": 1,
+
        "DupUserKey": 333,
    "ConfirmedDate": null,
+
        "BTKey": 1,
    "PrtDogKey": 11,
+
        "ConfirmedDate": null,
    "CTDepartureKey": 1,
+
        "PrtDogKey": 1335,
    "PDTType": 0,
+
        "CTDepartureKey": 0,
    "NationalCurrencyPrice": null,
+
        "PDTType": 0,
    "NationalCurrencyDiscountSum": null,
+
        "NationalCurrencyPrice": null,
    "NationalCurrencyPayed": null,
+
        "NationalCurrencyDiscountSum": null,
    "CurrencyKey": null,
+
        "NationalCurrencyPayed": null,
    "CurrencyRate": null,
+
        "CurrencyKey": null,
    "ClientKey": null,
+
        "CurrencyRate": null,
    "Partner": {
+
        "ClientKey": null,
        "$id": 2,
+
        "AgencyPrice": 0.0,
        "Key": 10762,
+
        "Partner": {
        "FullName": "Агентство",
+
            "$id": 2,
        "Name": "Агентство"
+
            "Key": 12667,
    },
+
            "FullName": "Партнер-покупатель (полное название)",
    "Services": [{
+
            "Name": "Партнер-покупатель122"
            "$id": 3,
+
        },
            "DGCod": "AU10101003",
+
        "Services": [
            "TurDate": "2021-01-01T00:00:00",
+
            {
            "Key": 202463,
+
                "$id": 3,
            "PaketKey": 209,
+
                "DGCod": "RU27010037",
            "TRKey": 100000038,
+
                "TurDate": "2025-01-27T12:00:00",
            "SVKey": 1,
+
                "Key": 250570,
            "Name": "А_П::Москва/Вена/00444, DME-VIE, 14:00-16:30/C Бизнес класс",
+
                "PaketKey": 2043,
            "Day": 1,
+
                "TRKey": 0,
            "Code": 570,
+
                "SVKey": 3,
            "SubCode1": 67,
+
                "Name": "HOTEL::Москва/ApiHotel-,3 ночи/ApiRoom(ApiRoomCategory),ApiAccmdmen/ApiPansion ApiPansion",
            "SubCode2": 1,
+
                "Day": 1,
            "Men": 2,
+
                "Code": 341264,
            "Days": 0,
+
                "SubCode1": 1552918,
            "CNKey": 90,
+
                "SubCode2": 1812,
            "CTKey": 35,
+
                "Men": 2,
            "PartnerKey": 10760,
+
                "Days": 3,
            "Brutto": 162.2,
+
                "CNKey": 460,
            "Wait": null,
+
                "CTKey": 1,
            "Warning": 0,
+
                "PartnerKey": 0,
            "TimeBeg": "1899-01-01T14:00:00",
+
                "Brutto": 9900.0,
            "Control": 1,
+
                "Wait": null,
            "Attribute": 65695,
+
                "Warning": 0,
            "DateBeg": "2021-01-01T00:00:00",
+
                "TimeBeg": "1899-01-01T00:00:00",
            "DateEnd": "2021-01-01T00:00:00",
+
                "Control": 1,
            "Discount": 14.8,
+
                "Attribute": 65695,
            "Comment": null,
+
                "DateBeg": "2025-01-27T00:00:00",
            "DGKey": 40335,
+
                "DateEnd": "2025-01-29T00:00:00",
            "Blocked": null,
+
                "Discount": 0.0,
            "NameLat": "А_П::Москва/Вена/00444, DME-VIE, 14:00-16:30/C Бизнес класс",
+
                "Comment": null,
            "Long": 9,
+
                "DGKey": 54010,
            "TRFId": 0,
+
                "Blocked": null,
            "CreateDate": "2020-10-12T15:02:29.013",
+
                "NameLat": "HOTEL::Москва/ApiHotel-,3 ночи/ApiRoom(ApiRoomCategory),ApiAccmdmen/ApiPansion ApiPansion",
            "CalculatePriceDate": "2020-10-12T15:02:29.013",
+
                "Long": 4,
            "ShowOrder": 1,
+
                "TRFId": 0,
            "Connections": [{
+
                "CreateDate": "2025-01-24T17:26:17.25",
                    "$ref": 1
+
                "CalculatePriceDate": "2025-01-24T17:26:17.25",
                 }
+
                "ShowOrder": 1,
            ]
+
                "Connections": [
         }, {
+
                    {
            "$id": 4,
+
                        "$ref": 1
            "DGCod": "AU10101003",
+
                    }
            "TurDate": "2021-01-01T00:00:00",
+
                 ]
            "Key": 202462,
+
            }
            "PaketKey": 209,
+
        ],
            "TRKey": 100000038,
+
         "Turists": [
            "SVKey": 3,
+
            {
            "Name": "HOTEL::Вена/Albatros-1*,8 ночей/Double(Standart),2 Adult/HB Полупансион",
+
                "$id": 4,
            "Day": 1,
+
                "DGCod": "RU27010037",
            "Code": 702,
+
                "Key": 120806,
            "SubCode1": 1113,
+
                "TurDate": "2025-01-27T12:00:00",
            "SubCode2": 2,
+
                "NameRus": "Иванов",
            "Men": 2,
+
                "NameLat": "Иванов",
            "Days": 8,
+
                "ShortName": "И.И.",
            "CNKey": 90,
+
                "Sex": 0,
            "CTKey": 35,
+
                "FNameRus": "Иван",
            "PartnerKey": 10760,
+
                "FNameLat": "Иван",
            "Brutto": 519.6,
+
                "SNameRus": "Иванович",
            "Wait": null,
+
                "SNameLat": "Иванович",
            "Warning": 0,
+
                "BirthDay": "2007-01-24T00:00:00",
            "TimeBeg": "1899-01-01T16:30:00",
+
                "BirthCountry": null,
            "Control": 1,
+
                "BirthCity": null,
            "Attribute": 65695,
+
                "Citizen": null,
            "DateBeg": "2021-01-01T00:00:00",
+
                "PostIndex": null,
            "DateEnd": "2021-01-08T00:00:00",
+
                "PostCity": null,
            "Discount": 47.4,
+
                "PostStreet": null,
            "Comment": null,
+
                "PostBild": null,
            "DGKey": 40335,
+
                "PostFlat": null,
            "Blocked": null,
+
                "Phone": "79876543232",
            "NameLat": "HOTEL::Вена/Albatros-1*,8 ночей/Double(Standart),2 Adult/HB Полупансион",
+
                "PhoneCode": null,
            "Long": 9,
+
                "PasportType": "",
            "TRFId": 0,
+
                "PasportNum": "",
            "CreateDate": "2020-10-12T15:02:29.013",
+
                "PasportDate": null,
            "CalculatePriceDate": "2020-10-12T15:02:29.013",
+
                "PasportDateEnd": null,
            "ShowOrder": 2,
+
                "PasportByWhom": null,
            "Connections": [{
+
                "Place": null,
                    "$ref": 1
+
                "IsAnketa": null,
                }
+
                "PaspRuser": "",
            ]
+
                "PaspRuNum": "",
        }, {
+
                "PaspRuDate": null,
            "$id": 5,
+
                "PaspRuByWhom": "",
            "DGCod": "AU10101003",
+
                "ClientId": null,
            "TurDate": "2021-01-01T00:00:00",
+
                "IsMain": 1,
            "Key": 202461,
+
                "DGKey": 54010,
            "PaketKey": 209,
+
                "RealSex": 0,
            "TRKey": 100000038,
+
                "Email": "emailqwerty123@example.com",
            "SVKey": 1,
+
                "EnableSmsNotifications": 0,
            "Name": "А_П::Вена/Москва/00444, VIE-SV1, 14:00-16:45/C Бизнес класс",
+
                "CitizenId": "",
            "Day": 9,
+
                "Connections": [
            "Code": 572,
+
                    {
            "SubCode1": 67,
+
                        "$ref": 1
            "SubCode2": 35,
+
                    }
            "Men": 2,
+
                ]
            "Days": 0,
+
            },
            "CNKey": 460,
+
            {
            "CTKey": 1,
+
                "$id": 5,
            "PartnerKey": 10760,
+
                "DGCod": "RU27010037",
            "Brutto": 195.2,
+
                "Key": 120805,
            "Wait": null,
+
                "TurDate": "2025-01-27T12:00:00",
            "Warning": 0,
+
                "NameRus": "Петров",
            "TimeBeg": "1899-01-01T14:00:00",
+
                "NameLat": "Петров",
            "Control": 1,
+
                "ShortName": "П.П.",
            "Attribute": 65695,
+
                "Sex": 0,
            "DateBeg": "2021-01-09T00:00:00",
+
                "FNameRus": "Петр",
            "DateEnd": "2021-01-09T00:00:00",
+
                "FNameLat": "Петр",
            "Discount": 17.8,
+
                "SNameRus": "Петрович",
            "Comment": null,
+
                "SNameLat": "Петрович",
            "DGKey": 40335,
+
                "BirthDay": "2007-01-24T00:00:00",
            "Blocked": null,
+
                "BirthCountry": null,
            "NameLat": "А_П::Вена/Москва/00444, VIE-SV1, 14:00-16:45/C Бизнес класс",
+
                "BirthCity": null,
            "Long": 9,
+
                "Citizen": null,
            "TRFId": 0,
+
                "PostIndex": null,
            "CreateDate": "2020-10-12T15:02:29.013",
+
                "PostCity": null,
            "CalculatePriceDate": "2020-10-12T15:02:29.013",
+
                "PostStreet": null,
            "ShowOrder": 3,
+
                "PostBild": null,
            "Connections": [{
+
                "PostFlat": null,
                    "$ref": 1
+
                "Phone": null,
                }
+
                "PhoneCode": null,
            ]
+
                "PasportType": "",
        }
+
                "PasportNum": "",
    ],
+
                "PasportDate": null,
    "Turists": [{
+
                "PasportDateEnd": null,
            "$id": 6,
+
                "PasportByWhom": null,
            "DGCod": "AU10101003",
+
                "Place": null,
            "Key": 88653,
+
                "IsAnketa": null,
            "TurDate": "2021-01-01T00:00:00",
+
                "PaspRuser": "",
            "NameRus": "IVANOV",
+
                "PaspRuNum": "",
            "NameLat": "IVANOV",
+
                "PaspRuDate": null,
            "ShortName": "I.",
+
                "PaspRuByWhom": "",
            "Sex": 0,
+
                "ClientId": null,
            "FNameRus": "IVAN",
+
                "IsMain": 0,
            "FNameLat": "IVAN",
+
                "DGKey": 54010,
            "SNameRus": "",
+
                "RealSex": 0,
            "SNameLat": "",
+
                "Email": "",
            "BirthDay": "1980-01-01T00:00:00",
+
                "EnableSmsNotifications": 0,
             "BirthCountry": null,
+
                "CitizenId": "",
            "BirthCity": "Москва",
+
                "Connections": [
            "Citizen": "",
+
                    {
            "PostIndex": null,
+
                        "$ref": 1
            "PostCity": null,
+
                    }
            "PostStreet": null,
+
                ]
            "PostBild": null,
+
            }
            "PostFlat": null,
+
        ],
            "Phone": "",
+
        "TuristServices": [
            "PhoneCode": null,
+
            {
            "PasportType": "",
+
                "$id": 6,
            "PasportNum": "",
+
                "TUKey": 120806,
            "PasportDate": null,
+
                "DLKey": 250570,
             "PasportDateEnd": null,
+
                "NumDoc": null,
            "PasportByWhom": "",
+
                "NumRoom": 0,
             "Place": null,
+
                "Seat": null,
            "IsAnketa": null,
+
                "Area": null,
            "PaspRuser": "",
+
                "DocDate": null,
            "PaspRuNum": "",
+
                "Key": 134191,
            "PaspRuDate": null,
+
                "Connections": [
            "PaspRuByWhom": "",
+
                    {
             "ClientId": null,
+
                        "$ref": 1
            "IsMain": 1,
+
                    },
            "DGKey": 40335,
+
                    {
            "RealSex": 0,
+
                        "$ref": 3
             "Email": "",
+
                    },
             "EnableSmsNotifications": 0,
+
                    {
             "CitizenId": "",
+
                        "$ref": 4
             "Connections": [{
+
                    }
                    "$ref": 1
+
                ]
                }
+
            },
            ]
+
             {
        }, {
+
                "$id": 7,
            "$id": 7,
+
                "TUKey": 120805,
            "DGCod": "AU10101003",
+
                "DLKey": 250570,
            "Key": 88652,
+
                "NumDoc": null,
            "TurDate": "2021-01-01T00:00:00",
+
                "NumRoom": 0,
            "NameRus": "PETROV",
+
                "Seat": null,
            "NameLat": "PETROV",
+
                "Area": null,
            "ShortName": "P.",
+
                "DocDate": null,
            "Sex": 0,
+
                "Key": 134190,
            "FNameRus": "PETR",
+
                "Connections": [
            "FNameLat": "PETR",
+
                    {
            "SNameRus": "",
+
                        "$ref": 1
            "SNameLat": "",
+
                    },
            "BirthDay": "1981-01-01T00:00:00",
+
                    {
            "BirthCountry": null,
+
                        "$ref": 3
            "BirthCity": "Москва",
+
                    },
            "Citizen": "",
+
                    {
            "PostIndex": null,
+
                        "$ref": 5
            "PostCity": null,
+
                    }
            "PostStreet": null,
+
                ]
            "PostBild": null,
+
             }
            "PostFlat": null,
+
        ],
            "Phone": "",
+
        "DogovorMessages": [
            "PhoneCode": null,
+
             {
            "PasportType": "",
+
                "$id": 8,
            "PasportNum": "",
+
                "Date": "2025-01-24T17:26:18.26",
            "PasportDate": null,
+
                "Text": "Это тестовая путевка",
            "PasportDateEnd": null,
+
                "Remark": "от агента",
            "PasportByWhom": "",
+
                "Connections": [
            "Place": null,
+
                    {
            "IsAnketa": null,
+
                        "$ref": 1
            "PaspRuser": "",
+
                    }
            "PaspRuNum": "",
+
                ]
            "PaspRuDate": null,
+
             }           
            "PaspRuByWhom": "",
+
        ]
            "ClientId": null,
+
    },
            "IsMain": 0,
+
    "UsedMailService": false,
            "DGKey": 40335,
+
    "ValidationResultSummary": {
            "RealSex": 0,
+
        "ValidationResult": {
            "Email": "",
+
             "Errors": [],
            "EnableSmsNotifications": 0,
+
             "Warnings": null,
            "CitizenId": "",
+
             "States": null,
            "Connections": [{
+
             "IsValid": true
                    "$ref": 1
+
        },
                }
+
        "ValidationResultAttributes": 0
            ]
+
    }
        }
+
}
    ],
+
</syntaxhighlight>
    "TuristServices": [{
+
</TD></TR></TABLE>
            "$id": 8,
+
</div></div><br />
            "TUKey": 88653,
+
 
            "DLKey": 202463,
+
===Выгрузка информации о путевке (GetReservation)===
            "NumDoc": null,
+
Метод выводит информацию о бронированной путевке.
            "NumRoom": 0,
+
 
            "Seat": null,
+
* Формат запроса:
            "Area": null,
+
** GET .../TourSearchOwin/GetReservation?
            "DocDate": null,
+
 
            "Key": 3770,
+
* Принимаемые параметры headers ( '''*''' – обязательный):
            "Connections": [{
+
** '''Content-Type *''' – application/json
                    "$ref": 1
+
** '''Authorization *''' – token_type + access_token (полученные из метода .../TourSearchOwin/Token?)
                }, {
+
 
                    "$ref": 3
+
* Принимаемые параметры GET запроса ( '''*''' – обязательный):
                }, {
+
** '''dgCode *''' – номер путевки:
                    "$ref": 6
+
 
                }
+
* Возвращаемый результат:
            ]
+
** '''$id''' – внутренний идентификатор для установки связей между сущностями,
        }, {
+
** '''Code''' – код путевки
            "$id": 9,
+
** '''TurDate''' – дата заезда
            "TUKey": 88652,
+
** '''TRKey''' – ключ тура
            "DLKey": 202463,
+
** '''CNKey''' – ключ страны
            "NumDoc": null,
+
** '''CTKey''' – ключ города
            "NumRoom": 0,
+
** '''NMen''' – количество туристов по путевке
            "Seat": null,
+
** '''Price''' – стоимость путевки за вычетом скидки (комиссии)
            "Area": null,
+
** '''Payed''' – оплаченная сумма по путевке
            "DocDate": null,
+
** '''NDay''' – продолжительность тура в днях
            "Key": 3768,
+
** '''MainMan''' – ФИО лица, заключившего договор
            "Connections": [{
+
** '''MainManPhone''' – номер телефона лица, заключившего договор
                    "$ref": 1
+
** '''MainManAddress''' – адрес лица, заключившего договор
                }, {
+
** '''MainManPassport''' – паспортные данные лица, заключившего договор
                    "$ref": 3
+
** '''PartnerKey''' – ключ партнера, оформившего договор
                }, {
+
** '''Operator''' – ФИО создателя договора
                    "$ref": 7
+
** '''Discount''' – величина скидки на одного человека
                }
+
** '''DiscountSum''' – абсолютная величина скидки
            ]
+
** '''SORCode''' – ключ статус путевки, возможные значения: 0-в работе, 1-не определён, 2-аннулирован, 3-wait лист, 7-ок.
        }, {
+
** '''CrDate''' – дата и время создания путевки
            "$id": 10,
+
** '''Rate''' – код валюты путевки
            "TUKey": 88652,
+
** '''Advertise''' – ключ источника рекламы
            "DLKey": 202462,
+
** '''Locked''' – блокировка путевки: ''1'' – если заблокирована
            "NumDoc": null,
+
** '''CauseDisc''' – ключ основания для скидки
            "NumRoom": 0,
+
** '''PPaymentDate''' – максимальная дата внесения предоплаты
            "Seat": null,
+
** '''PaymentDate''' – максимальная дата полной оплаты
            "Area": null,
+
** '''Procent''' – информация о предоплате: ''1'' – предоплата в %; ''0'' – предоплата в у.е.
            "DocDate": null,
+
** '''TurDateBfrAnnul''' – значение даты заезда до аннуляции путевки (при аннуляции дата заезда заменяется на 31.12.1899)
            "Key": 3767,
+
** '''ARKey''' – ключ причины аннуляции путевки
            "Connections": [{
+
** '''Key''' – ключ договора
                    "$ref": 1
+
** '''CodePartner''' – значение ключевого поля из таблицы партнеров
                }, {
+
** '''FilialKey''' – ключ филиала фирмы-владельца, пользователем которого была забронирована путевка
                    "$ref": 4
+
** '''IsOutDoc''' – статус выдачи документов
                }, {
+
** '''Notes''' – сообщение поставщику
                    "$ref": 7
+
** '''DiscSumBfrAnn''' – числовое значение скидки перед аннуляцией путевки
                }
+
** '''PriceBfrAnn''' – стоимость путевки перед ее аннуляцией
            ]
+
** '''RazmerP''' – размер предоплаты
        }, {
+
** '''LeadDepartment''' – ключ отдела, ведущего данный тур
            "$id": 11,
+
** '''MainManEmail''' – адрес е-mail из данных лица, заключившего договор
            "TUKey": 88653,
+
** '''MainManComment''' – примечание из данных лица, заключившего договор
            "DLKey": 202462,
+
** '''DupUserKey''' – ключ представителя партнера, которым был оформлен договор
            "NumDoc": null,
+
** '''BTKey''' – ключ системы бронирования, из которой был оформлен договор
            "NumRoom": 0,
+
** '''ConfirmedDate''' – дата подтверждения путевки покупателю
            "Seat": null,
+
** '''PrtDogKey''' – договор партнера, по которому оформлена путевка
            "Area": null,
+
** '''CTDepartureKey''' – ключ города начала поездки
            "DocDate": null,
+
** '''PDTType''' – тип договора, по которому оформлена путевка
            "Key": 3771,
+
** '''NationalCurrencyPrice''' – стоимость путевки в национальной валюте
            "Connections": [{
+
** '''NationalCurrencyDiscountSum''' – значение скидки в национальной валюте
                    "$ref": 1
+
** '''NationalCurrencyPayed''' – сумма платежей по путевке, зафиксированная в национальной валюте
                }, {
+
** '''CurrencyKey''' – ключ национальной валюты путевки
                    "$ref": 4
+
** '''CurrencyRate''' – курс национальной валюты путевки
                }, {
+
** '''ClientKey''' – ключ частника, которым был оформлен договор
                    "$ref": 6
+
** '''Partner''' – информация о партнере покупателе, привязанным к путевке
                }
+
*** '''$id''' – внутренний идентификатор для установки связей между сущностями
            ]
+
*** '''Key''' – ключ партнера покумателя
        }, {
+
*** '''FullName''' – полное имя партнера
            "$id": 12,
+
*** '''Name''' – имя партнера
            "TUKey": 88653,
+
** '''Services''' – коллекция услуг в данной путевке
            "DLKey": 202461,
+
*** '''$id''' – внутренний идентификатор для установки связей между сущностями
            "NumDoc": null,
+
*** '''DGCod''' – номер путевки
            "NumRoom": 0,
+
*** '''TurDate''' – дата начала тура
            "Seat": null,
+
*** '''Key''' – ключ услуги
            "Area": null,
+
*** '''PaketKey''' – ключ пакета
            "DocDate": null,
+
*** '''TRKey''' – клют тура
            "Key": 3772,
+
*** '''SVKey''' – ключ типа услуги
            "Connections": [{
+
*** '''Name''' – наименование услуги
                    "$ref": 1
+
*** '''Day''' – порядковый номер дня тура, в который предоставляется услуга
                }, {
+
*** '''Code''' – ключ кода услуги
                    "$ref": 5
+
*** '''SubCode1''' – ключ доп.описания 1 услуги
                }, {
+
*** '''SubCode2''' – ключ доп.описания 2 услуги
                    "$ref": 6
+
*** '''Men''' – количество человек, пользующихся услугой по путевке
                }
+
*** '''Days''' – количество дней услуги
            ]
+
*** '''CNKey''' – ключ страны услуги
        }, {
+
*** '''CTKey''' – ключ города услуги
            "$id": 13,
+
*** '''PartnerKey''' – ключ партнера, предоставляющего услугу
            "TUKey": 88652,
+
*** '''Brutto''' – стоимость услуги брутто
            "DLKey": 202461,
+
*** '''Wait''' – признак услуги ''Снимать квоту при бронировании''
            "NumDoc": null,
+
*** '''Warning''' – неиспользуемое поле
            "NumRoom": 0,
+
*** '''TimeBeg''' – поле используется для сортировки услуг в путевке
            "Seat": null,
+
*** '''Control''' – ключ статуса услуги (ссылка на таблицу Controls),
            "Area": null,
+
*** '''Attribute''' – атрибут услуги
            "DocDate": null,
+
*** '''DateBeg''' – дата начала действия услуги
            "Key": 3769,
+
*** '''DateEnd''' – дата окончания действия услуги
            "Connections": [{
+
*** '''Discount''' – размер скидки по услуге
                    "$ref": 1
+
*** '''Comment''' – комментарий к услуге
                }, {
+
*** '''DGKey''' – ключ договора,
                    "$ref": 5
+
*** '''Blocked''' – признак блокировки услуги (''0'' – не блокирована, ''1'' – блокирована)
                }, {
+
*** '''NameLat''' – наименование услуги (латинский)
                    "$ref": 7
+
*** '''Long''' – продолжительность тура в днях
                }
+
*** '''TRFId''' – ключ тарифа
            ]
+
*** '''CreateDate''' – дата создания услуги в путевке
        }
+
*** '''CalculatePriceDate''' – дата расчета цены
    ],
+
*** '''ShowOrder''' – порядок при сортировке
    "DogovorMessages": [{
+
*** '''Connections''' – коллекция связей с сущностями через внутренний идентификатор ''$id''
            "$id": 14,
+
**** '''$ref''' – связь с внутренним идентификатором ''$id''
            "Date": "2020-10-09T09:16:39.99",
+
** '''Turists''' – коллекция туристов в данной путевке
            "Text": "Тайм-лимит забронированного перелета: 14.10.2020 21:59",
+
*** '''$id''' – внутренний идентификатор для установки связей между сущностями
            "Remark": "TimeLimit",
+
*** '''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
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/GetReservation?dgCode=AU10101003
 +
Content-Type: application/json
 +
Authorization: Bearer AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA-
 +
EqAAAAAASAAACgAAAAEAAAAO4S-VrqBhQuhqliqrAKKfIgAQAAn-gfgP-rYjk-Krr1Ck2A-IGCw6FBhamUOzFxgTtk1hR-
 +
GLMryFIH8VK5GmHdHubZWj4S7XcazGL1Kn5-VlbiYdW2ZVWpYlk638aV-XS2kpZ9YrKgViiM_x8RH5TPo4-
 +
9LhE7V-SjiB_CP_qs58DRKcyohq3Tz9QaiFgH1Ko7O2XKjTBG7SHyQPDPYjaqg9kDxmzq0UcIT6Fm4YkDxmm9-
 +
CW7u3cEFWcpiqKOc2VvZFKPPHc07uDOO4w9FXPhpXZwOqrJBxzhbr73RuhzPs_e-hgxKaIlsMaK5b0v5ReAMy1kuY0ebXA
 +
</syntaxhighlight>
 +
Возвращаемый результат метода GetReservation (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
    "$id": 1,
 +
    "Code": "AU10101003",
 +
    "TurDate": "2021-01-01T00:00:00",
 +
    "TRKey": 100000038,
 +
    "CNKey": 90,
 +
    "CTKey": 35,
 +
    "NMen": 2,
 +
    "Price": 877,
 +
    "Payed": 0,
 +
    "NDay": 9,
 +
    "MainMan": "",
 +
    "MainManPhone": "",
 +
    "MainManAddress": "",
 +
    "MainManPassport": "",
 +
    "PartnerKey": 10762,
 +
    "Operator": "Megatec ",
 +
    "Discount": 40,
 +
    "DiscountSum": 80,
 +
    "SORCode": 3,
 +
    "CrDate": "2020-10-12T15:02:29.013",
 +
    "Rate": "$",
 +
    "Advertise": 0,
 +
    "Locked": null,
 +
    "CauseDisc": null,
 +
    "PPaymentDate": null,
 +
    "PaymentDate": "2020-10-14T00:00:00",
 +
    "Procent": 1,
 +
    "TurDateBfrAnnul": null,
 +
    "ARKey": 0,
 +
    "Key": 40335,
 +
    "CodePartner": null,
 +
    "FilialKey": 1,
 +
    "IsOutDoc": 0,
 +
    "Notes": null,
 +
    "DiscSumBfrAnn": null,
 +
    "PriceBfrAnn": null,
 +
    "RazmerP": 0,
 +
    "LeadDepartment": 0,
 +
    "MainManEmail": "test@megatec.ru",
 +
    "MainManComment": "",
 +
    "DupUserKey": 6,
 +
    "BTKey": 1,
 +
    "ConfirmedDate": null,
 +
    "PrtDogKey": 11,
 +
    "CTDepartureKey": 1,
 +
    "PDTType": 0,
 +
    "NationalCurrencyPrice": null,
 +
    "NationalCurrencyDiscountSum": null,
 +
    "NationalCurrencyPayed": null,
 +
    "CurrencyKey": null,
 +
    "CurrencyRate": null,
 +
    "ClientKey": null,
 +
    "Partner": {
 +
        "$id": 2,
 +
        "Key": 10762,
 +
        "FullName": "Агентство",
 +
        "Name": "Агентство"
 +
    },
 +
    "Services": [{
 +
            "$id": 3,
 +
            "DGCod": "AU10101003",
 +
            "TurDate": "2021-01-01T00:00:00",
 +
            "Key": 202463,
 +
            "PaketKey": 209,
 +
            "TRKey": 100000038,
 +
            "SVKey": 1,
 +
            "Name": "А_П::Москва/Вена/00444, DME-VIE, 14:00-16:30/C Бизнес класс",
 +
            "Day": 1,
 +
            "Code": 570,
 +
            "SubCode1": 67,
 +
            "SubCode2": 1,
 +
            "Men": 2,
 +
            "Days": 0,
 +
            "CNKey": 90,
 +
            "CTKey": 35,
 +
            "PartnerKey": 10760,
 +
            "Brutto": 162.2,
 +
            "Wait": null,
 +
            "Warning": 0,
 +
            "TimeBeg": "1899-01-01T14:00:00",
 +
            "Control": 1,
 +
            "Attribute": 65695,
 +
            "DateBeg": "2021-01-01T00:00:00",
 +
            "DateEnd": "2021-01-01T00:00:00",
 +
            "Discount": 14.8,
 +
            "Comment": null,
 +
            "DGKey": 40335,
 +
            "Blocked": null,
 +
            "NameLat": "А_П::Москва/Вена/00444, DME-VIE, 14:00-16:30/C Бизнес класс",
 +
            "Long": 9,
 +
            "TRFId": 0,
 +
            "CreateDate": "2020-10-12T15:02:29.013",
 +
            "CalculatePriceDate": "2020-10-12T15:02:29.013",
 +
            "ShowOrder": 1,
 
             "Connections": [{
 
             "Connections": [{
 
                     "$ref": 1
 
                     "$ref": 1
 
                 }
 
                 }
 
             ]
 
             ]
         }
+
         }, {
    ]
+
            "$id": 4,
}
+
            "DGCod": "AU10101003",
</syntaxhighlight>
+
            "TurDate": "2021-01-01T00:00:00",
</TD></TR></TABLE>
+
            "Key": 202462,
</div></div><br />
+
            "PaketKey": 209,
 
+
            "TRKey": 100000038,
===Выгрузка информации о ценовых блоках (CostOfferDescriptions)===
+
            "SVKey": 3,
Метод принимает на вход ключи ценовых блоков и возвращает, прикреплённое к ним описание.
+
            "Name": "HOTEL::Вена/Albatros-1*,8 ночей/Double(Standart),2 Adult/HB Полупансион",
* Формат запроса:
+
            "Day": 1,
** GET .../TourSearchOwin/CostOfferDescriptions?
+
            "Code": 702,
* Принимаемые параметры ( * – обязательный):
+
            "SubCode1": 1113,
** '''COKeysString''' * – ключи ценовых блоков через запятую
+
            "SubCode2": 2,
* Возвращаемый результат:
+
            "Men": 2,
** '''CostOfferImageInfo''' – коллекция объектов из двух полей:
+
            "Days": 8,
*** '''IdCostOffer''' – ключ ценового блока
+
            "CNKey": 90,
*** '''InfoText''' – описание ценового блока
+
            "CTKey": 35,
 
+
            "PartnerKey": 10760,
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
            "Brutto": 519.6,
<div class="mw-collapsible-content">
+
            "Wait": null,
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
            "Warning": 0,
Вызов метода CostOfferDescriptions
+
            "TimeBeg": "1899-01-01T16:30:00",
<syntaxhighlight lang="java" enclose="div">
+
            "Control": 1,
GET http://localhost:9000/TourSearchOwin/CostOfferDescriptions?COKeysString=15143
+
            "Attribute": 65695,
</syntaxhighlight>
+
            "DateBeg": "2021-01-01T00:00:00",
Возвращаемый результат метода CostOfferDescriptions (в формате JSON)
+
            "DateEnd": "2021-01-08T00:00:00",
<syntaxhighlight lang="java" enclose="div">
+
            "Discount": 47.4,
[
+
            "Comment": null,
      {
+
            "DGKey": 40335,
      "CostOfferImageInfo":   {
+
            "Blocked": null,
          "IdCostOffer": 15143,
+
            "NameLat": "HOTEL::Вена/Albatros-1*,8 ночей/Double(Standart),2 Adult/HB Полупансион",
          "InfoText": "СПО до 01.01.2020"
+
            "Long": 9,
  },
+
            "TRFId": 0,
  }
+
            "CreateDate": "2020-10-12T15:02:29.013",
]
+
            "CalculatePriceDate": "2020-10-12T15:02:29.013",
</syntaxhighlight>
+
            "ShowOrder": 2,
</TD></TR></TABLE>
+
            "Connections": [{
</div></div><br />
+
                    "$ref": 1
 
+
                }
 
+
            ]
===Получение капчи (GetCaptcha)===
+
        }, {
Метод возвращает капчу (используется при регистрации частного лица).
+
            "$id": 5,
* Формат запроса:
+
            "DGCod": "AU10101003",
** GET .../TourSearchOwin/GetCaptcha?
+
            "TurDate": "2021-01-01T00:00:00",
* Принимаемые параметры ( * – обязательный):
+
            "Key": 202461,
** '''sessionId''' * – Id сессии
+
            "PaketKey": 209,
* Возвращаемый результат:
+
            "TRKey": 100000038,
** '''FileContents''' – файл капчи в бинарном виде
+
            "SVKey": 1,
** '''ContentType''' – расширение файла (image/jpeg)
+
            "Name": "А_П::Вена/Москва/00444, VIE-SV1, 14:00-16:45/C Бизнес класс",
** '''FileDownloadName''' – имя файла
+
            "Day": 9,
 
+
            "Code": 572,
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
            "SubCode1": 67,
<div class="mw-collapsible-content">
+
            "SubCode2": 35,
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
            "Men": 2,
Вызов метода GetCaptcha
+
            "Days": 0,
<syntaxhighlight lang="java" enclose="div">
+
            "CNKey": 460,
GET http://localhost:9000/TourSearchOwin/GetCaptcha?sessionId=cd5yr3wftltmorphuzwx0krh
+
            "CTKey": 1,
</syntaxhighlight>
+
            "PartnerKey": 10760,
Возвращаемый результат метода GetCaptcha (в формате JSON)
+
            "Brutto": 195.2,
<syntaxhighlight lang="java" enclose="div">
+
            "Wait": null,
{
+
            "Warning": 0,
    "FileContents": "iVBORw0KGgoAAAANSUhEUgAAALQAAAAyCAYAAAD1JPH3AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAA
+
            "TimeBeg": "1899-01-01T14:00:00",
    xiSURBVHhe7Z1NyE1tF8eNZMZEyUBGEikDAwNFKRSFMsCEMkDyOUG+Hgw8UkiPvHjLq1uRdBsgMVEGxERGGHGPmBkantdvd9Z51n3tdX3ts/c+5+Bfq/ucfa7Ptf5rXWtf1z
+
            "Control": 1,
    7nntLpdFb8lL+qyqtXry4/f/78H+szLanlYjI+Pv6fsbGx/1qfjZJMTEz8ff369f/x1/q8LfkVdKkFQvOiEt69e9eZMmVKIQ8fPuxeLcNX7vv374WEQN3Xr18Xr58+fdpr58aNG8
+
            "Attribute": 65695,
    W1UQXzOnXqVG9ug8CLFy8KXd66dat7JR8/fvwo2kFitqTs+/fvOx8+fOheqR/JhLYGDjmFYNeuXSuuWfCVw6iID5rAKJ0xbNmypXgPGdqEdqxRg2/cd+/eLXR56dKl4n2V+UFObI
+
            "DateBeg": "2021-01-09T00:00:00",
    GEbAkuXrzYs+f9+/e7V+tFMqF9A4dokBSyhZBaToOyKPvcuXM9J+IvY/j8+XPxvg24jjVKCEVh9Cu6DZXLhc/59+7d29Pjhg0bulfrRV8px+8Cy7FGBW4U9iG1XAwh5//69Wvn6N
+
            "DateEnd": "2021-01-09T00:00:00",
    GjnbVr13Y+fvzYvVov/hC6BdSRrhBBc1Y3gY7CIaSWi2HQzt84oZnUqEW1fuDOt450hXrUhyQaKSQf5dy/ChonNArVOfevjpcvXxYiqCNiUc+9b/CRXGNQuf8gnehPytEH3GgM2n
+
            "Discount": 17.8,
    Jgi+RcI08VtL3809/58+cH4kSCkSJ03Z6PkfU2ZC7aIm9q/gyBILmAOm0QWcBO2LFjxzqrV6/u7Nu3r9W+BY0R2iIeE6w6ySaWT8gIAfpxEtqAcFVv2mJISS0ERGs9F/b/NcH7wa,
+
            "Comment": null,
    "ContentType": "image/jpeg",
+
            "DGKey": 40335,
    "FileDownloadName": ""
+
            "Blocked": null,
}
+
            "NameLat": "А_П::Вена/Москва/00444, VIE-SV1, 14:00-16:45/C Бизнес класс",
</syntaxhighlight>
+
            "Long": 9,
</TD></TR></TABLE>
+
            "TRFId": 0,
</div></div><br />
+
            "CreateDate": "2020-10-12T15:02:29.013",
 
+
            "CalculatePriceDate": "2020-10-12T15:02:29.013",
===Проверка капчи (CheckCaptcha)===
+
            "ShowOrder": 3,
Метод проверяет введенную капчу (используется при регистрации частного лица).
+
            "Connections": [{
* Формат запроса:
+
                    "$ref": 1
** GET .../TourSearchOwin/CheckCaptcha?
+
                }
* Принимаемые параметры ( * – обязательный):
+
            ]
** '''captchaText''' * – текст капчи
+
        }
** '''sessionId''' * – Id сессии
+
    ],
* Возвращаемый результат:
+
    "Turists": [{
** '''true/false''' – результат проверки (false – капча или Id сессии неверные, true – капча верна)
+
            "$id": 6,
 
+
            "DGCod": "AU10101003",
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
            "Key": 88653,
<div class="mw-collapsible-content">
+
            "TurDate": "2021-01-01T00:00:00",
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
            "NameRus": "IVANOV",
Вызов метода CheckCaptcha
+
            "NameLat": "IVANOV",
<syntaxhighlight lang="java" enclose="div">
+
            "ShortName": "I.",
GET http://localhost:9000/TourSearchOwin/CheckCaptcha?captchaText=vf8an&sessionId=cd5yr3wftltmorphuzwx0krh
+
            "Sex": 0,
</syntaxhighlight>
+
            "FNameRus": "IVAN",
Возвращаемый результат метода CheckCaptcha (в формате JSON)
+
            "FNameLat": "IVAN",
<syntaxhighlight lang="java" enclose="div">
+
            "SNameRus": "",
{
+
            "SNameLat": "",
    true
+
            "BirthDay": "1980-01-01T00:00:00",
}
+
            "BirthCountry": null,
</syntaxhighlight>
+
            "BirthCity": "Москва",
</TD></TR></TABLE>
+
            "Citizen": "",
</div></div><br />
+
            "PostIndex": null,
 
+
            "PostCity": null,
===Проверка e-mail (CheckMail)===
+
            "PostStreet": null,
Метод проверяет e-mail при регистрации частного лица на существование такого же e-mail в базе данных.
+
            "PostBild": null,
* Формат запроса:
+
            "PostFlat": null,
** GET .../TourSearchOwin/CheckMail?
+
            "Phone": "",
* Принимаемые параметры ( * – обязательный):
+
            "PhoneCode": null,
** '''mail''' * – e-mail пользователя
+
            "PasportType": "",
* Возвращаемый результат:
+
            "PasportNum": "",
** '''true/false''' – результат проверки (false – пользователь с таким e-mail уже существует, true – пользователь с таким e-mail нет в базе данных)
+
            "PasportDate": null,
 
+
            "PasportDateEnd": null,
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
            "PasportByWhom": "",
<div class="mw-collapsible-content">
+
            "Place": null,
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
            "IsAnketa": null,
Вызов метода CheckMail
+
            "PaspRuser": "",
<syntaxhighlight lang="java" enclose="div">
+
             "PaspRuNum": "",
GET http://localhost:9000/TourSearchOwin/CheckMail?mail=test@megatec.ru
+
            "PaspRuDate": null,
</syntaxhighlight>
+
            "PaspRuByWhom": "",
Возвращаемый результат метода CheckMail (в формате JSON)
+
            "ClientId": null,
<syntaxhighlight lang="java" enclose="div">
+
            "IsMain": 1,
{
+
            "DGKey": 40335,
    true
+
            "RealSex": 0,
}
+
            "Email": "",
</syntaxhighlight>
+
            "EnableSmsNotifications": 0,
</TD></TR></TABLE>
+
             "CitizenId": "",
</div></div><br />
+
            "Connections": [{
 
+
                    "$ref": 1
===Проверка туриста (checkTourist)===
+
                }
Метод служит для получения информации о путевке по номеру путевки и номеру паспорта туриста.
+
            ]
* Формат запроса:
+
        }, {
** GET .../TourSearchOwin/checkTourist?
+
            "$id": 7,
* Принимаемые параметры ( * – обязательный):
+
            "DGCod": "AU10101003",
** '''dogovorNumber *''' – номер путевки.
+
            "Key": 88652,
** '''passport *''' – номер паспорта туриста (заграничного или общегражданского).
+
            "TurDate": "2021-01-01T00:00:00",
* Возвращаемый результат:
+
             "NameRus": "PETROV",
** '''isDogovor''' – '''true''', если путевка найдена по номеру путевки, '''false''', если не найдена.
+
            "NameLat": "PETROV",
** '''isAnnulated''' – '''true''', если путевка аннулирована, '''false''', если не аннулирована.
+
            "ShortName": "P.",
** '''dogovorStatus''' – статус путевки
+
            "Sex": 0,
** '''isPay''' – '''true''', если путевка полностью оплачена, '''false''', если не оплачена или оплачена частично.
+
            "FNameRus": "PETR",
** '''dogovorDateBegin''' – дата начала заезда.
+
            "FNameLat": "PETR",
** '''dogovorDateEnd''' – дата окончания заезда.
+
            "SNameRus": "",
** '''dogovorDateCreate''' – дата создания путевки.
+
            "SNameLat": "",
** '''isTouristDogovorCreate''' – '''true''', если турист (по номеру паспорта) является главным туристом в путевке.
+
            "BirthDay": "1981-01-01T00:00:00",
** '''services''' – набор услуг в путевке.
+
            "BirthCountry": null,
*** '''svKey''' – код класса услуги.
+
            "BirthCity": "Москва",
*** '''code''' – код услуги.
+
            "Citizen": "",
*** '''subCode1''' – код доп. описания 1 услуги.
+
            "PostIndex": null,
*** '''subCode2''' – код доп. описания 2 услуги.
+
            "PostCity": null,
*** '''name''' – название услуги.
+
            "PostStreet": null,
** '''touristInfo''' – информация о главном туристе.
+
            "PostBild": null,
*** '''lastname''' – фамилия туриста (рус).
+
            "PostFlat": null,
*** '''firstname''' – имя туриста (рус).
+
            "Phone": "",
*** '''surname''' – отчество туриста.
+
            "PhoneCode": null,
*** '''address''' – адрес (индекс, город, улица, дом, квартира).
+
            "PasportType": "",
*** '''postcode''' – индекс.
+
            "PasportNum": "",
*** '''city''' – город.
+
            "PasportDate": null,
*** '''street''' – улица.
+
            "PasportDateEnd": null,
*** '''home''' – дом.
+
            "PasportByWhom": "",
*** '''roomNumber''' – квартира.
+
            "Place": null,
 
+
            "IsAnketa": null,
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
+
            "PaspRuser": "",
<div class="mw-collapsible-content">
+
            "PaspRuNum": "",
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
            "PaspRuDate": null,
Вызов метода checkTourist
+
            "PaspRuByWhom": "",
<syntaxhighlight lang="java" enclose="div">
+
            "ClientId": null,
http://localhost:9000/TourSearchOwin/checkTourist?dogovorNumber=AU25120001&passport=1234567
+
            "IsMain": 0,
</syntaxhighlight>
+
            "DGKey": 40335,
Возвращаемый результат метода checkTourist (в формате JSON)
+
            "RealSex": 0,
<syntaxhighlight lang="java" enclose="div">
+
            "Email": "",
{
+
            "EnableSmsNotifications": 0,
  "isDogovor": true,
+
            "CitizenId": "",
  "isAnnulated": false,
+
            "Connections": [{
  "dogovorStatus": "ОК",
+
                    "$ref": 1
  "isPay": true,
+
                }
  "dogovorDateBegin": "05.02.2018",  
+
            ]
  "dogovorDateEnd": "12.02.2018",
+
         }
  "dogovorDateCreate": "01.02.2018",
+
    ],
  "isTouristDogovorCreate": true,
+
    "TuristServices": [{
  "services":   [
+
            "$id": 8,
             {
+
            "TUKey": 88653,
        "svKey": "1",
+
            "DLKey": 202463,
        "code": "1088",
+
            "NumDoc": null,
        "subCode1": "147",
+
            "NumRoom": 0,
        "subCode2": "35",
+
            "Seat": null,
        "name": "А_П::Вена/Москва/SU2353, VIE-SVO, 18:05-22:40/NSU Экономический класс"
+
            "Area": null,
      },
+
            "DocDate": null,
             {
+
            "Key": 3770,
        "svKey": "3",
+
            "Connections": [{
        "code": "698",
+
                    "$ref": 1
        "subCode1": "46200",
+
                }, {
        "subCode2": "1",
+
                    "$ref": 3
        "name": "HOTEL::Вена/Graben-1*,5 ночей/DBL(Standart ),2Ad/FB Полный пансион"
+
                }, {
      },
+
                    "$ref": 6
             {
+
                }
        "svKey": "1",
+
            ]
        "code": "1087",
+
        }, {
        "subCode1": "147",
+
            "$id": 9,
        "subCode2": "1",
+
            "TUKey": 88652,
        "name": "А_П::Москва/Вена/SU2352, SVO-VIE, 16:20-17:05/NSU Экономический класс"
+
            "DLKey": 202463,
      }
+
            "NumDoc": null,
  ],
+
            "NumRoom": 0,
  "touristInfo":   {
+
            "Seat": null,
      "lastname": "Ivanov",
+
            "Area": null,
      "firstname": "Ivan",
+
            "DocDate": null,
      "surname": "Ivanovich",
+
            "Key": 3768,
      "address": "123456, г. Москва, ул. Ленина, д. 1, кв. 15",
+
            "Connections": [{
      "postcode": "123456",
+
                    "$ref": 1
      "city": "Москва",
+
                }, {
      "street": "Ленина",
+
                    "$ref": 3
      "home": "1",
+
                }, {
      "roomNumber": "15"
+
                    "$ref": 7
  }
+
                }
}
+
            ]
</syntaxhighlight>
+
        }, {
</TD></TR></TABLE>
+
            "$id": 10,
</div></div><br />
+
            "TUKey": 88652,
 
+
            "DLKey": 202462,
===Список значений параметра гражданства (Citizenships)===
+
            "NumDoc": null,
Метод служит для получения списка значений параметра гражданства.
+
            "NumRoom": 0,
* Формат запроса:
+
            "Seat": null,
** GET .../TourSearchOwin/Citizenships?
+
            "Area": null,
* Принимаемые параметры ( * – обязательный):
+
            "DocDate": null,
** '''pageSize *''' – размер выдачи
+
            "Key": 3767,
** '''pageNumber *''' – порядковый номер страницы выдачи
+
            "Connections": [{
** '''term *''' – подстрочный фильтр для отбора (пустой по умолчанию)
+
                    "$ref": 1
* Возвращаемый результат:
+
                }, {
** '''Key''' – ключ страны
+
                    "$ref": 4
** '''Name''' – название гражданства
+
                }, {
 
+
                    "$ref": 7
<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>
+
        }, {
Вызов метода Citizenships
+
            "$id": 11,
<syntaxhighlight lang="java" enclose="div">
+
            "TUKey": 88653,
http://localhost:9000/TourSearchOwin/Citizenships?pageSize=50&pageNumber=1&term=
+
            "DLKey": 202462,
</syntaxhighlight>
+
            "NumDoc": null,
Возвращаемый результат метода Citizenships (в формате JSON)
+
            "NumRoom": 0,
<syntaxhighlight lang="java" enclose="div">
+
            "Seat": null,
{
+
            "Area": null,
    {
+
            "DocDate": null,
        "Key": 90,
+
            "Key": 3771,
        "Name": "Австрия"
+
            "Connections": [{
    },
+
                    "$ref": 1
    {
+
                }, {
        "Key": 222,
+
                    "$ref": 4
        "Name": "Англия"
+
                }, {
    },
+
                    "$ref": 6
    {
+
                }
         "Key": 376,
+
            ]
        "Name": "Андорра"
+
        }, {
    },
+
            "$id": 12,
    {
+
            "TUKey": 88653,
        "Key": 375,
+
            "DLKey": 202461,
        "Name": "Беларусь"
+
            "NumDoc": null,
    },
+
            "NumRoom": 0,
    {
+
            "Seat": null,
        "Key": 3,
+
            "Area": null,
        "Name": "Бельгия"
+
            "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>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка постоянного клиента (Client)===
+
===Выгрузка информации о ценовых блоках (CostOfferDescriptions)===
Метод выгружает постоянного клиента при авторизации частного лица.
+
Метод принимает на вход ключи ценовых блоков и возвращает, прикреплённое к ним описание.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/Client?
+
** GET .../TourSearchOwin/CostOfferDescriptions?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''clientId *''' – Id постоянного клиента
+
** '''COKeysString''' * ключи ценовых блоков через запятую
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''$id''' – внутренний порядковый идентификатор
+
** '''CostOfferImageInfo''' – коллекция объектов из двух полей:
** '''CL_KEY''' – ключ справочника постоянные клиенты
+
*** '''IdCostOffer''' – ключ ценового блока
** '''CL_OPERUPDATE''' – ключ менеджера, который последний обновил постоянного клиента
+
*** '''InfoText''' – описание ценового блока
** '''CL_OPERUPDATE''' – дата обновления постоянного клиента
+
 
** '''CL_PFKEY''' – внутренний ключ
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
** '''CL_NAMERUS''' – имя (на русском)
+
<div class="mw-collapsible-content">
** '''CL_NAMELAT''' – имя (на латинице)
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
** '''CL_SHORTNAME''' – инициалы
+
Вызов метода CostOfferDescriptions
** '''CL_SEX''' – пол
+
<syntaxhighlight lang="java" enclose="div">
** '''CL_FNAMERUS''' – фамилия (на русском)
+
GET http://localhost:9000/TourSearchOwin/CostOfferDescriptions?COKeysString=15143
** '''CL_FNAMELAT''' – фамилия (на латинице)
+
</syntaxhighlight>
** '''CL_SNAMERUS''' – отчество (на русском)
+
Возвращаемый результат метода CostOfferDescriptions (в формате JSON)
** '''CL_SNAMELAT''' – отчество (на латинице)
 
** '''CL_BIRTHDAY''' – дата рождения
 
** '''CL_BIRTHCOUNTRY''' – страна рождения
 
** '''CL_BIRTHCITY''' – место рождения (город)
 
** '''CL_CITIZEN''' – гражданство
 
** '''CL_ADDRESS''' – полный адрес
 
** '''CL_POSTINDEX''' – почтовый индекс
 
** '''CL_POSTCITY''' – город
 
** '''CL_POSTSTREET''' – улица
 
** '''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">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/Client?clientId=7314
+
[
 +
      {
 +
      "CostOfferImageInfo":    {
 +
          "IdCostOffer": 15143,
 +
          "InfoText": "СПО до 01.01.2020"
 +
  },
 +
  }
 +
]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</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>
 
</syntaxhighlight>
Возвращаемый результат метода Client (в формате JSON)
+
Возвращаемый результат метода GetCaptcha (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
     "$id": "1",
+
     "FileContents": "iVBORw0KGgoAAAANSUhEUgAAALQAAAAyCAYAAAD1JPH3AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAA
     "CL_KEY": 7314,
+
     xiSURBVHhe7Z1NyE1tF8eNZMZEyUBGEikDAwNFKRSFMsCEMkDyOUG+Hgw8UkiPvHjLq1uRdBsgMVEGxERGGHGPmBkantdvd9Z51n3tdX3ts/c+5+Bfq/ucfa7Ptf5rXWtf1z
    "CL_OPERUPDATE": 106,
+
     7nntLpdFb8lL+qyqtXry4/f/78H+szLanlYjI+Pv6fsbGx/1qfjZJMTEz8ff369f/x1/q8LfkVdKkFQvOiEt69e9eZMmVKIQ8fPuxeLcNX7vv374WEQN3Xr18Xr58+fdpr58aNG8
    "CL_DATEUPDATE": "2021-01-21T11:56:41.287",
+
     W1UQXzOnXqVG9ug8CLFy8KXd66dat7JR8/fvwo2kFitqTs+/fvOx8+fOheqR/JhLYGDjmFYNeuXSuuWfCVw6iID5rAKJ0xbNmypXgPGdqEdqxRg2/cd+/eLXR56dKl4n2V+UFObI
    "CL_PFKEY": 2,
+
     GEbAkuXrzYs+f9+/e7V+tFMqF9A4dokBSyhZBaToOyKPvcuXM9J+IvY/j8+XPxvg24jjVKCEVh9Cu6DZXLhc/59+7d29Pjhg0bulfrRV8px+8Cy7FGBW4U9iG1XAwh5//69Wvn6N
    "CL_NAMERUS": "Test888",
+
     GjnbVr13Y+fvzYvVov/hC6BdSRrhBBc1Y3gY7CIaSWi2HQzt84oZnUqEW1fuDOt450hXrUhyQaKSQf5dy/ChonNArVOfevjpcvXxYiqCNiUc+9b/CRXGNQuf8gnehPytEH3GgM2n
    "CL_NAMELAT": "Test888",
+
     Jgi+RcI08VtL3809/58+cH4kSCkSJ03Z6PkfU2ZC7aIm9q/gyBILmAOm0QWcBO2LFjxzqrV6/u7Nu3r9W+BY0R2iIeE6w6ySaWT8gIAfpxEtqAcFVv2mJISS0ERGs9F/b/NcH7wa,
    "CL_SHORTNAME": "T.",
+
     "ContentType": "image/jpeg",
    "CL_SEX": 0,
+
     "FileDownloadName": ""
    "CL_FNAMERUS": "Test888",
+
}
    "CL_FNAMELAT": "Test888",
+
</syntaxhighlight>
    "CL_SNAMERUS": "",
+
</TD></TR></TABLE>
    "CL_SNAMELAT": "",
+
</div></div><br />
    "CL_BIRTHDAY": null,
+
 
    "CL_BIRTHCOUNTRY": "",
+
===Проверка капчи (CheckCaptcha)===
    "CL_BIRTHCITY": "",
+
Метод проверяет введенную капчу (используется при регистрации частного лица).
    "CL_CITIZEN": "Spain",
 
    "CL_ADDRESS": ", г., ул., д., кв.",
 
    "CL_POSTINDEX": "",
 
    "CL_POSTCITY": "",
 
    "CL_POSTSTREET": "",
 
    "CL_POSTBILD": "",
 
    "CL_POSTFLAT": "",
 
    "CL_PHONE": "65465465",
 
    "CL_PASPORTSER": "",
 
    "CL_PASPORTNUM": "",
 
    "CL_PASPORTDATE": null,
 
    "CL_PASPORTDATEEND": null,
 
    "CL_PASPORTBYWHOM": "",
 
    "CL_PASPRUSER": "",
 
    "CL_PASPRUNUM": "",
 
    "CL_PASPRUDATE": null,
 
    "CL_PASPRUBYWHOM": "",
 
    "CL_ISMARK": 7,
 
    "CL_TYPE": 6,
 
    "CL_IMPRESSNOTE": "7",
 
    "CL_NOTE": "5",
 
     "CL_REMARK": "6",
 
     "CL_IMPRESSKEY": 3,
 
     "CL_TITLE1": "1",
 
     "CL_TITLE2": "2",
 
     "CL_TITLE3": "3",
 
     "CL_TITLE4": "4",
 
    "CL_FUTURE": "8",
 
    "CL_LASTSTAT": null,
 
    "CL_SUMMA": null,
 
    "CL_NMENWITH": null,
 
    "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?
+
** GET .../TourSearchOwin/CheckCaptcha?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''COKeysString *''' – ключи ценовых блоков
+
** '''captchaText''' * – текст капчи
 +
** '''sessionId''' * Id сессии
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''IdCostOffer''' – Id ценового блока
+
** '''true/false''' – результат проверки (false – капча или Id сессии неверные, true капча верна)
** '''InfoText''' описание ценового блока
 
  
 
<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>
Вызов метода CostOfferDescriptions
+
Вызов метода CheckCaptcha
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/CostOfferDescriptions?COKeysString=16834,16828
+
GET http://localhost:9000/TourSearchOwin/CheckCaptcha?captchaText=vf8an&sessionId=cd5yr3wftltmorphuzwx0krh
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода CostOfferDescriptions (в формате JSON)
+
Возвращаемый результат метода CheckCaptcha (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
     "costOffersImageInformation": [
+
     true
        {
 
            "IdCostOffer": 16834,
 
            "InfoText": "Информация для онлайна 2"
 
        },
 
        {
 
            "IdCostOffer": 16828,
 
            "InfoText": "Информация для онлайна"
 
        },
 
    ]
 
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 7431: Строка 9113:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка описания по стране (CountryInfo)===
+
===Проверка e-mail (CheckMail)===
Метод выгружает описание по стране.
+
Метод проверяет e-mail при регистрации частного лица на существование такого же e-mail в базе данных.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/CountryInfo?
+
** GET .../TourSearchOwin/CheckMail?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''countryKey *''' – ключ страны
+
** '''mail''' * e-mail пользователя
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''информация по выбранной стране'''
+
** '''true/false''' – результат проверки (false – пользователь с таким e-mail уже существует, true – пользователь с таким e-mail нет в базе данных)
  
 
<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
+
Вызов метода CheckMail
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/CountryInfo?countryKey=90
+
GET http://localhost:9000/TourSearchOwin/CheckMail?mail=test@megatec.ru
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода CountryInfo (в формате JSON)
+
Возвращаемый результат метода CheckMail (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
"<p>Информация о стране</p>\n"
+
    true
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 7456: Строка 9138:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка картинки по отелю (HotelImages)===
+
===Проверка туриста (checkTourist)===
Метод выгружает картинку по отелю.
+
Метод служит для получения информации о путевке по номеру путевки и номеру паспорта туриста.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/HotelImages?
+
** GET .../TourSearchOwin/checkTourist?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''hotelKeys *''' – ключ отеля (можно передать несколько ключей отеля, каждый раз указывая параметр ''hotelKeys''), в этом случае возвращается информация о главном фото отеля
+
** '''dogovorNumber *''' – номер путевки.
* либо
+
** '''passport *''' – номер паспорта туриста (заграничного или общегражданского).
** '''hotelKey *''' – либо ключ отеля, в этом случае возвращается полная информация о всех фотографиях в отеле
+
* Возвращаемый результат:
* Возвращаемый результат (если передан ''hotelKeys''):
+
** '''isDogovor''' – '''true''', если путевка найдена по номеру путевки, '''false''', если не найдена.
** '''Name''' – название файла
+
** '''isAnnulated''' – '''true''', если путевка аннулирована, '''false''', если не аннулирована.
** '''HotelKey''' – ключ отеля
+
** '''dogovorStatus''' – статус путевки
** '''InfoExists''' – есть ли информация
+
** '''isPay''' – '''true''', если путевка полностью оплачена, '''false''', если не оплачена или оплачена частично.
** '''ImagesCount''' – общее количество картинок по отелю
+
** '''dogovorDateBegin''' – дата начала заезда.
* либо (если передан ''hotelKey'')
+
** '''dogovorDateEnd''' – дата окончания заезда.
** '''Images''' – объект картинок
+
** '''dogovorDateCreate''' – дата создания путевки.
*** '''Key''' – ключ картинки
+
** '''isTouristDogovorCreate''' – '''true''', если турист (по номеру паспорта) является главным туристом в путевке.
*** '''Description''' – описание картинки
+
** '''services''' – набор услуг в путевке.
*** '''Priority''' – приоритет
+
*** '''svKey''' – код класса услуги.
*** '''Name''' – название файла
+
*** '''code''' – код услуги.
*** '''HotelKey''' – ключ отеля
+
*** '''subCode1''' – код доп. описания 1 услуги.
*** '''InfoExists''' – есть ли информация
+
*** '''subCode2''' – код доп. описания 2 услуги.
** '''Country''' – страна отеля
+
*** '''name''' – название услуги.
** '''City''' – город отеля
+
** '''touristInfo''' – информация о главном туристе.
** '''Name''' – название отеля
+
*** '''lastname''' – фамилия туриста (рус).
** '''HotelCategoryName''' – категория отеля
+
*** '''firstname''' – имя туриста (рус).
** '''Address''' – адрес отеля
+
*** '''surname''' – отчество туриста.
** '''Phone''' – телефон
+
*** '''address''' – адрес (индекс, город, улица, дом, квартира).
** '''Email''' – e-mail
+
*** '''postcode''' – индекс.
** '''Http''' – адрес сайта
+
*** '''city''' – город.
** '''Description''' – описание отеля
+
*** '''street''' – улица.
** '''InfrastructureHotel''' – инфраструктура отеля
+
*** '''home''' – дом.
** '''RecreationSport''' – развлечения и спорт
+
*** '''roomNumber''' – квартира.
** '''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
+
Вызов метода checkTourist
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/HotelImages?hotelKeys=8660&hotelKeys=178
+
http://localhost:9000/TourSearchOwin/checkTourist?dogovorNumber=AU25120001&passport=1234567
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода HotelImages (в формате JSON)
+
Возвращаемый результат метода checkTourist (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
[
+
{
    {
+
  "isDogovor": true,
        "Name": "Dubai_Emirates_UAE_Skyscrapers_Megapolis_From_564495_2560x1599.jpg",
+
  "isAnnulated": false,
        "HotelKey": 8660,
+
  "dogovorStatus": "ОК",
        "InfoExists": true
+
  "isPay": true,
    },
+
  "dogovorDateBegin": "05.02.2018",
    {
+
  "dogovorDateEnd": "12.02.2018",
        "Name": "Spain_Resorts_Houses_Tenerife_Canary_Islands_Pools_527022_1280x853.jpg",
+
  "dogovorDateCreate": "01.02.2018",
        "HotelKey": 178,
+
  "isTouristDogovorCreate": true,
        "InfoExists": true
+
  "services":    [
    }
+
            {
]
+
        "svKey": "1",
 +
        "code": "1088",
 +
        "subCode1": "147",
 +
        "subCode2": "35",
 +
        "name": "А_П::Вена/Москва/SU2353, VIE-SVO, 18:05-22:40/NSU Экономический класс"
 +
      },
 +
            {
 +
        "svKey": "3",
 +
        "code": "698",
 +
        "subCode1": "46200",
 +
        "subCode2": "1",
 +
        "name": "HOTEL::Вена/Graben-1*,5 ночей/DBL(Standart ),2Ad/FB Полный пансион"
 +
      },
 +
            {
 +
        "svKey": "1",
 +
        "code": "1087",
 +
        "subCode1": "147",
 +
        "subCode2": "1",
 +
        "name": "А_П::Москва/Вена/SU2352, SVO-VIE, 16:20-17:05/NSU Экономический класс"
 +
      }
 +
  ],
 +
  "touristInfo":    {
 +
      "lastname": "Ivanov",
 +
      "firstname": "Ivan",
 +
      "surname": "Ivanovich",
 +
      "address": "123456, г. Москва, ул. Ленина, д. 1, кв. 15",
 +
      "postcode": "123456",
 +
      "city": "Москва",
 +
      "street": "Ленина",
 +
      "home": "1",
 +
      "roomNumber": "15"
 +
  }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
 
</div></div><br />
 
</div></div><br />
  
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример детальной информации отеля
+
===Список значений параметра гражданства (Citizenships)===
 +
Метод служит для получения списка значений параметра гражданства.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/Citizenships?
 +
* Принимаемые параметры ( * – обязательный):
 +
** '''pageSize *''' – размер выдачи
 +
** '''pageNumber *''' – порядковый номер страницы выдачи
 +
** '''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>
Вызов метода HotelImages
+
Вызов метода Citizenships
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/HotelImages?hotelKey=178
+
http://localhost:9000/TourSearchOwin/Citizenships?pageSize=50&pageNumber=1&term=
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода HotelImages (в формате JSON)
+
Возвращаемый результат метода Citizenships (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
     "Images": [
+
     {
         {
+
         "Key": 90,
            "Key": 2619,
+
        "Name": "Австрия"
            "Description": "",
+
    },
            "Priority": 1,
+
    {
            "Name": "Spain_Resorts_Houses_Tenerife_Canary_Islands_Pools_527022_1280x853.jpg",
+
        "Key": 222,
            "HotelKey": 178,
+
        "Name": "Англия"
            "InfoExists": false
+
    },
        },
+
    {
        {
+
        "Key": 376,
            "Key": 2620,
+
        "Name": "Андорра"
            "Description": "",
+
    },
            "Priority": 2,
+
    {
            "Name": "stock-photo-luxury-bedrooms-with-flare-light-559774297.jpg",
+
        "Key": 375,
            "HotelKey": 178,
+
        "Name": "Беларусь"
            "InfoExists": false
+
    },
        },
+
     {
        {
+
        "Key": 3,
            "Key": 2621,
+
        "Name": "Бельгия"
            "Description": "",
+
     }
            "Priority": 3,
+
}
            "Name": "USA_Houses_Skyscrapers_Evening_Manhattan_New_York_562768_2560x1440.jpg",
+
</syntaxhighlight>
            "HotelKey": 178,
+
</TD></TR></TABLE>
            "InfoExists": false
+
</div></div><br />
        },
+
 
        {
+
===Выгрузка постоянного клиента (Client)===
            "Key": 2622,
+
Метод выгружает постоянного клиента при авторизации частного лица.
            "Description": "",
+
* Формат запроса:
            "Priority": 4,
+
** GET .../TourSearchOwin/Client?
            "Name": "Winter_Mountains_Forests_Slovakia_Tatra_mountains_555815_6000x4000.jpg",
+
* Принимаемые параметры ( * – обязательный):
            "HotelKey": 178,
+
** '''clientId *''' – Id постоянного клиента
            "InfoExists": false
+
* Возвращаемый результат:
        }
+
** '''$id''' – внутренний порядковый идентификатор
    ],
+
** '''CL_KEY''' – ключ справочника постоянные клиенты
     "Country": "Австрия",
+
** '''CL_OPERUPDATE''' – ключ менеджера, который последний обновил постоянного клиента
    "City": "Вена",
+
** '''CL_OPERUPDATE''' – дата обновления постоянного клиента
    "Name": "Ananas",
+
** '''CL_PFKEY''' – внутренний ключ
     "HotelCategoryName": "5+++*",
+
** '''CL_NAMERUS''' – имя (на русском)
    "Address": "Вена, Австрия",
+
** '''CL_NAMELAT''' – имя (на латинице)
    "Phone": "(+43/1) 54620043",
+
** '''CL_SHORTNAME''' – инициалы
    "Email": "",
+
** '''CL_SEX''' – пол
    "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",
+
** '''CL_FNAMERUS''' – фамилия (на русском)
    "Description": "<p>Расположен на улице Рихте Вензел ВВВ93-95 (р-он №5). В отеле 537 номеров, отель имеет свой гараж, сауну, тренажерный зал, кабельное телевидение. В каждом номере: телевизор, телефон, душ, туалет.</p>",
+
** '''CL_FNAMELAT''' – фамилия (на латинице)
    "InfrastructureHotel": "<p>Ифраструктура отеля</p>",
+
** '''CL_SNAMERUS''' – отчество (на русском)
    "RecreationSport": "<p>Развлечение и спорт</p>",
+
** '''CL_SNAMELAT''' – отчество (на латинице)
    "Beach": "<p>Ифраструктура отеля</p>",
+
** '''CL_BIRTHDAY''' – дата рождения
    "Healing": "<p>Лечение</p>",
+
** '''CL_BIRTHCOUNTRY''' – страна рождения
    "Excursion": "<p>Экскурсии</p>",
+
** '''CL_BIRTHCITY''' – место рождения (город)
    "AdditionalService": "<p>Дополнительные услуги</p>",
+
** '''CL_CITIZEN''' – гражданство
    "ForChildren": "<p>Для детей</p>",
+
** '''CL_ADDRESS''' – полный адрес
    "AddCost": "<p>Доплата</p>",
+
** '''CL_POSTINDEX''' – почтовый индекс
    "CheckoutTimeFrom": "12:00",
+
** '''CL_POSTCITY''' – город
    "CheckoutTimeTo": "14:30",
+
** '''CL_POSTSTREET''' – улица
    "Latitude": "12.788397°",
+
** '''CL_POSTBILD''' – дом
    "Longitude": "36.348986°"
+
** '''CL_POSTFLAT''' – квартира
}
+
** '''CL_PHONE''' – телефон
</syntaxhighlight>
+
** '''CL_PASPORTSER''' – серия загранпаспорта
</TD></TR></TABLE>
+
** '''CL_PASPORTNUM''' – номер загранпаспорта
</div></div><br />
+
** '''CL_PASPORTDATE''' – дата выдачи загранпаспорта
 
+
** '''CL_PASPORTDATEEND''' – срок действия загранпаспорта
===Выгрузка картинки по туру (TourImages) начиная с релиза 15.7===
+
** '''CL_PASPORTBYWHOM''' – кем выдан загранпаспорт
Метод выгружает картинки по туру.
+
** '''CL_PASPRUSER''' – серия общегражданского паспорта
* Формат запроса:
+
** '''CL_PASPRUNUM''' – номер общегражданского паспорта
** GET .../TourSearchOwin/TourImages?
+
** '''CL_PASPRUDATE''' – дата выдачи общегражданского паспорта
* Принимаемые параметры ( * – обязательный):
+
** '''CL_PASPRUBYWHOM''' – кем выдан общегражданский паспорт
** '''tourKeys *''' – ключ тура (можно передать несколько ключей тура, каждый раз указывая параметр ''tourKeys'')
+
** '''CL_ISMARK''' – профессия
 
+
** '''CL_TYPE''' – примечания
* Возвращаемый результат:
+
** '''CL_IMPRESSNOTE''' – общие впечатления
** '''Images''' – объект картинок
+
** '''CL_NOTE''' – особые отметки
*** '''Key''' – ключ картинки
+
** '''CL_REMARK''' – примечания
*** '''Description''' – описание картинки
+
** '''CL_IMPRESSKEY''' – ключ выбранного впечатления
*** '''Priority''' – приоритет
+
** '''CL_TITLE1''' – служебные отметки, заголовок 1
*** '''Name''' – название файла
+
** '''CL_TITLE2''' – служебные отметки, заголовок 2
*** '''TourKey''' – ключ тура
+
** '''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="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
+
Вызов метода Client
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/TourImages?tourKey=100001132
+
http://localhost:9000/TourSearchOwin/Client?clientId=7314
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода TourImages (в формате JSON)
+
Возвращаемый результат метода Client (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
     "Images": [
+
     "$id": "1",
        {
+
    "CL_KEY": 7314,
            "Key": 52,
+
    "CL_OPERUPDATE": 106,
            "Description": "Московский планетарий",
+
    "CL_DATEUPDATE": "2021-01-21T11:56:41.287",
            "Priority": 1,
+
    "CL_PFKEY": 2,
            "Name": "Планетарий.jpg",
+
    "CL_NAMERUS": "Test888",
            "TourKey": 100001132
+
    "CL_NAMELAT": "Test888",
        },
+
    "CL_SHORTNAME": "T.",
        {
+
    "CL_SEX": 0,
            "Key": 51,
+
    "CL_FNAMERUS": "Test888",
            "Description": "Виз из космоса",
+
    "CL_FNAMELAT": "Test888",
            "Priority": 2,
+
    "CL_SNAMERUS": "",
            "Name": "Вид из космоса.jpg",
+
    "CL_SNAMELAT": "",
            "TourKey": 100001132
+
    "CL_BIRTHDAY": null,
        }
+
    "CL_BIRTHCOUNTRY": "",
     ]
+
    "CL_BIRTHCITY": "",
 +
    "CL_CITIZEN": "Spain",
 +
    "CL_ADDRESS": ", г., ул., д., кв.",
 +
    "CL_POSTINDEX": "",
 +
    "CL_POSTCITY": "",
 +
    "CL_POSTSTREET": "",
 +
    "CL_POSTBILD": "",
 +
    "CL_POSTFLAT": "",
 +
    "CL_PHONE": "65465465",
 +
    "CL_PASPORTSER": "",
 +
    "CL_PASPORTNUM": "",
 +
    "CL_PASPORTDATE": null,
 +
    "CL_PASPORTDATEEND": null,
 +
    "CL_PASPORTBYWHOM": "",
 +
    "CL_PASPRUSER": "",
 +
    "CL_PASPRUNUM": "",
 +
    "CL_PASPRUDATE": null,
 +
    "CL_PASPRUBYWHOM": "",
 +
    "CL_ISMARK": 7,
 +
    "CL_TYPE": 6,
 +
    "CL_IMPRESSNOTE": "7",
 +
    "CL_NOTE": "5",
 +
    "CL_REMARK": "6",
 +
    "CL_IMPRESSKEY": 3,
 +
    "CL_TITLE1": "1",
 +
    "CL_TITLE2": "2",
 +
    "CL_TITLE3": "3",
 +
    "CL_TITLE4": "4",
 +
    "CL_FUTURE": "8",
 +
    "CL_LASTSTAT": null,
 +
    "CL_SUMMA": null,
 +
    "CL_NMENWITH": null,
 +
    "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>
 
</syntaxhighlight>
Строка 7640: Строка 9426:
 
</div></div><br />
 
</div></div><br />
  
===Регистрация частного лица (PersonalRegistration)===
+
===Выгрузка описаний ценовых блоков (CostOfferDescriptions)===
Метод производит регистрацию частного лица.
+
Метод выгружает описания ценовых блоков.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/PersonalRegistration?
+
** GET .../TourSearchOwin/CostOfferDescriptions?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''name *''' – имя
+
** '''COKeysString *''' – ключи ценовых блоков
** '''surname *''' – фамилия
 
** '''phone *''' – телефон
 
** '''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''' – сформированный (при упрощенной регистрации) или заданный пользователем пароль
+
** '''IdCostOffer''' – Id ценового блока
 +
** '''InfoText''' – описание ценового блока
  
 
<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
+
Вызов метода CostOfferDescriptions
 
<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/CostOfferDescriptions?COKeysString=16834,16828
&citizen=&country=&city=&address=&comment=&captchaText=v7jnj&sessionId=43angzdfbc5h2wud1lp1301j
 
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода PersonalRegistration (в формате JSON)
+
Возвращаемый результат метода CostOfferDescriptions (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
"SxotpFhg"
+
    "costOffersImageInformation": [
 +
        {
 +
            "IdCostOffer": 16834,
 +
            "InfoText": "Информация для онлайна 2"
 +
        },
 +
        {
 +
            "IdCostOffer": 16828,
 +
            "InfoText": "Информация для онлайна"
 +
        },
 +
    ]
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Строка 7678: Строка 9461:
 
</div></div><br />
 
</div></div><br />
  
===Выгрузка плана рассадки (TransportPlan)===
+
===Выгрузка описания по стране (CountryInfo)===
Метод выгружает план рассадки транспортного средства.
+
Метод выгружает описание по стране.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/TransportPlan?
+
** GET .../TourSearchOwin/CountryInfo?
 
* Принимаемые параметры ( * – обязательный):
 
* Принимаемые параметры ( * – обязательный):
** '''code *''' – код услуги
+
** '''countryKey *''' – ключ страны
** '''dateBegin *''' – дата начала услуги
 
** '''serviceType *''' – класс услуги
 
** '''transportKey *''' – ключ транспорта
 
 
 
 
* Возвращаемый результат:
 
* Возвращаемый результат:
** '''TransportKey''' – ключ транспорта
+
** '''информация по выбранной стране'''
** '''Title''' – название
 
** '''AreasCount''' – количество зон (уровней)
 
** '''RowsCount''' – количество рядов
 
** '''ColumnsCount''' – количество колонок
 
** '''BusySeats''' – информация о занятых местах
 
** '''Cells''' – блок не заполняется
 
*** '''Row''' – ряд
 
*** '''Column''' – колонка
 
*** '''Area''' – уровень
 
*** '''Type''' – тип места (1 - свободно, 5 - занято)
 
*** '''Name''' – номер места
 
** '''UserSeats''' – блок не заполняется
 
** '''BlockSeat''' – блок не заполняется
 
  
 
<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>
Вызов метода TransportPlan
+
Вызов метода CountryInfo
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
http://localhost:9000/TourSearchOwin/TransportPlan?code=1527&dateBegin=07.03.2021&serviceType=14&transportKey=31
+
http://localhost:9000/TourSearchOwin/CountryInfo?countryKey=90
&citizen=&country=&city=&address=&comment=&captchaText=v7jnj&sessionId=43angzdfbc5h2wud1lp1301j
 
 
</syntaxhighlight>
 
</syntaxhighlight>
Возвращаемый результат метода TransportPlan (в формате JSON)
+
Возвращаемый результат метода CountryInfo (в формате JSON)
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
{
 
{
    "TransportKey": 31,
+
"<p>Информация о стране</p>\n"
    "Title": "",
+
}
    "AreasCount": 1,
+
</syntaxhighlight>
    "RowsCount": 10,
+
</TD></TR></TABLE>
    "ColumnsCount": 2,
+
</div></div><br />
    "BusySeats": [],
+
 
    "Cells": [
+
===Выгрузка картинки по отелю (HotelImages)===
        {
+
Метод выгружает картинку по отелю.
            "Row": 4,
+
* Формат запроса:
            "Column": 0,
+
** GET .../TourSearchOwin/HotelImages?
            "Area": 0,
+
* Принимаемые параметры ( * – обязательный):
            "Type": 1,
+
** '''hotelKeys *''' – ключ отеля (можно передать несколько ключей отеля, каждый раз указывая параметр ''hotelKeys''), в этом случае возвращается информация о главном фото отеля
            "Name": "9"
+
* либо
        },
+
** '''hotelKey *''' – либо ключ отеля, в этом случае возвращается полная информация о всех фотографиях в отеле
        {
+
* Возвращаемый результат (если передан ''hotelKeys''):
            "Row": 4,
+
** '''Name''' – название файла
            "Column": 1,
+
** '''HotelKey''' – ключ отеля
            "Area": 0,
+
** '''InfoExists''' – есть ли информация
            "Type": 1,
+
** '''ImagesCount''' – общее количество картинок по отелю
            "Name": "10"
+
* либо (если передан ''hotelKey'')
        },
+
** '''Images''' – объект картинок
         {
+
*** '''Key''' – ключ картинки
            "Row": 1,
+
*** '''Description''' – описание картинки
            "Column": 0,
+
*** '''Priority''' – приоритет
            "Area": 0,
+
*** '''Name''' – название файла
            "Type": 5,
+
*** '''HotelKey''' – ключ отеля
            "Name": "3"
+
*** '''InfoExists''' – есть ли информация
        },
+
** '''Country''' – страна отеля
        {
+
** '''City''' – город отеля
            "Row": 1,
+
** '''Name''' – название отеля
            "Column": 1,
+
** '''HotelCategoryName''' – категория отеля
            "Area": 0,
+
** '''Address''' – адрес отеля
            "Type": 5,
+
** '''Phone''' – телефон
            "Name": "4"
+
** '''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="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода HotelImages
 +
<syntaxhighlight lang="java" enclose="div">
 +
http://localhost:9000/TourSearchOwin/HotelImages?hotelKeys=8660&hotelKeys=178
 +
</syntaxhighlight>
 +
Возвращаемый результат метода HotelImages (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
[
 +
    {
 +
        "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>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
<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>
 +
Вызов метода HotelImages
 +
<syntaxhighlight lang="java" enclose="div">
 +
http://localhost:9000/TourSearchOwin/HotelImages?hotelKey=178
 +
</syntaxhighlight>
 +
Возвращаемый результат метода HotelImages (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
    "Images": [
 
         {
 
         {
             "Row": 8,
+
             "Key": 2619,
             "Column": 0,
+
             "Description": "",
             "Area": 0,
+
             "Priority": 1,
             "Type": 1,
+
             "Name": "Spain_Resorts_Houses_Tenerife_Canary_Islands_Pools_527022_1280x853.jpg",
             "Name": "17"
+
             "HotelKey": 178,
 +
            "InfoExists": false
 
         },
 
         },
 
         {
 
         {
             "Row": 8,
+
             "Key": 2620,
             "Column": 1,
+
             "Description": "",
             "Area": 0,
+
             "Priority": 2,
             "Type": 1,
+
             "Name": "stock-photo-luxury-bedrooms-with-flare-light-559774297.jpg",
             "Name": "18"
+
             "HotelKey": 178,
 +
            "InfoExists": false
 
         },
 
         },
 
         {
 
         {
             "Row": 5,
+
             "Key": 2621,
             "Column": 0,
+
             "Description": "",
             "Area": 0,
+
             "Priority": 3,
             "Type": 1,
+
             "Name": "USA_Houses_Skyscrapers_Evening_Manhattan_New_York_562768_2560x1440.jpg",
             "Name": "11"
+
             "HotelKey": 178,
 +
            "InfoExists": false
 
         },
 
         },
 
         {
 
         {
             "Row": 5,
+
             "Key": 2622,
             "Column": 1,
+
             "Description": "",
             "Area": 0,
+
             "Priority": 4,
             "Type": 1,
+
             "Name": "Winter_Mountains_Forests_Slovakia_Tatra_mountains_555815_6000x4000.jpg",
             "Name": "12"
+
             "HotelKey": 178,
         },
+
            "InfoExists": false
        {
+
         }
            "Row": 2,
+
    ],
            "Column": 0,
+
    "Country": "Австрия",
            "Area": 0,
+
    "City": "Вена",
            "Type": 1,
+
    "Name": "Ananas",
            "Name": "5"
+
    "HotelCategoryName": "5+++*",
        },
+
    "Address": "Вена, Австрия",
        {
+
    "Phone": "(+43/1) 54620043",
            "Row": 2,
+
    "Email": "",
             "Column": 1,
+
    "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",
             "Area": 0,
+
    "Description": "<p>Расположен на улице Рихте Вензел ВВВ93-95 (р-он №5). В отеле 537 номеров, отель имеет свой гараж, сауну, тренажерный зал, кабельное телевидение. В каждом номере: телевизор, телефон, душ, туалет.</p>",
             "Type": 1,
+
    "InfrastructureHotel": "<p>Ифраструктура отеля</p>",
             "Name": "6"
+
    "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>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
====Отображение картинки в браузере (GetImage)====
 +
Данный метод реализован не на API, а внутри самого приложения (Canary или TourSearchClient) и отображает картинку, полученную в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка картинки по отелю (HotelImages)|HotelImages]].
 +
* Формат запроса:
 +
** http://localhost/Canary/Image/GetImage?
 +
 
 +
* Принимаемые параметры ( * – обязательный):
 +
** '''code *''' – ключ отеля
 +
** '''type *''' – размер картинки (возможные значения: ''small1'', ''small160x90'', ''medium'', ''big'')
 +
** '''name *''' – название файла (берется из метода [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка картинки по отелю (HotelImages)|HotelImages]])
 +
** '''imageType *''' – тип картинки (возможные значения: ''hotels'', ''tours'')
 +
 
 +
* Возвращаемый результат:
 +
** изображение картинки отеля
 +
 
 +
<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>
 +
Вызов метода GetImage
 +
<syntaxhighlight lang="java" enclose="div">
 +
http://localhost/Canary/Image/GetImage?code=134049&type=small160x90&name=PalaceResort.webp&imageType=hotels
 +
 
 +
</syntaxhighlight>
 +
Возвращаемый результат метода GetImage и виде картинки
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
===Выгрузка картинки по туру (TourImages)===
 +
Метод выгружает картинки по туру.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/TourImages?
 +
* Принимаемые параметры ( * – обязательный):
 +
** '''tourKeys *''' – ключ тура (можно передать несколько ключей тура, каждый раз указывая параметр ''tourKeys'')
 +
 
 +
* Возвращаемый результат:
 +
** '''Images''' – объект картинок
 +
*** '''Key''' – ключ картинки
 +
*** '''Description''' – описание картинки
 +
*** '''Priority''' – приоритет
 +
*** '''Name''' – название файла
 +
*** '''TourKey''' – ключ тура
 +
 
 +
<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>
 +
Вызов метода TourImages
 +
<syntaxhighlight lang="java" enclose="div">
 +
http://localhost:9000/TourSearchOwin/TourImages?tourKey=100001132
 +
</syntaxhighlight>
 +
Возвращаемый результат метода TourImages (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
{
 +
    "Images": [
 +
        {
 +
             "Key": 52,
 +
             "Description": "Московский планетарий",
 +
             "Priority": 1,
 +
             "Name": "Планетарий.jpg",
 +
            "TourKey": 100001132
 
         },
 
         },
 
         {
 
         {
             "Row": 9,
+
             "Key": 51,
             "Column": 0,
+
             "Description": "Вид из космоса",
            "Area": 0,
+
             "Priority": 2,
             "Type": 1,
+
             "Name": "Вид из космоса.jpg",
             "Name": "19"
+
             "TourKey": 100001132
        },
+
         }
        {
+
    ]
            "Row": 9,
+
}
            "Column": 1,
+
</syntaxhighlight>
            "Area": 0,
+
</TD></TR></TABLE>
            "Type": 1,
+
</div></div><br />
             "Name": "20"
+
 
         },
+
====Отображение картинки в браузере (GetImage)====
        {
+
Данный метод реализован не на API, а внутри самого приложения (Canary или TourSearchClient) и отображает картинку, полученную в методе [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка картинки по туру (TourImages)|TourImages]].
            "Row": 6,
+
* Формат запроса:
            "Column": 0,
+
** http://localhost/Canary/Image/GetImage?
            "Area": 0,
+
 
            "Type": 1,
+
* Принимаемые параметры ( * – обязательный):
            "Name": "13"
+
** '''code *''' – ключ тура
        },
+
** '''type *''' – размер картинки (возможные значения: ''small1'', ''small160x90'', ''medium'', ''big'')
        {
+
** '''name *''' – название файла (берется из метода [[Мастер-Тур(15):API для разработки онлайн поиска и бронирования#Выгрузка картинки по туру (TourImages)|TourImages]])
            "Row": 6,
+
** '''imageType *''' – тип картинки (возможные значения: ''hotels'', ''tours'')
            "Column": 1,
+
 
            "Area": 0,
+
* Возвращаемый результат:
            "Type": 1,
+
** изображение картинки отеля
            "Name": "14"
+
 
        },
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример картинки отеля
        {
+
<div class="mw-collapsible-content">
            "Row": 3,
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
            "Column": 0,
+