Web-сервисы: Сервис TourML — различия между версиями

Материал из Megatec
Перейти к: навигация, поиск
[непроверенная версия][досмотренная версия]
(Метод GetHotelQuotes)
м (Пример работа без использования WSE авторизации)
 
(не показаны 63 промежуточные версии 3 участников)
Строка 1: Строка 1:
<span style="color:red;font-size:120%">Статья находится на стадии разработки.</span><br>
 
 
Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}.
 
Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}.
 
==Введение==
 
==Введение==
Строка 44: Строка 43:
 
Дополнительные настройки, задаваемые в файле web.config, позволяют задать дополнительные условия для отображения и проверки данных.
 
Дополнительные настройки, задаваемые в файле web.config, позволяют задать дополнительные условия для отображения и проверки данных.
  
{| cellpadding="20" cellspacing="0" border="1"
+
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse"
|№
+
 
|Описание
+
|- style="background-color:#F2F2F2"
|Значение
+
 
|Настройка
+
! width="2%" | №
|-
+
! width="28%" | Описание
 +
! width="35%" | Значение
 +
! width="35%" | Настройка
 +
 
 +
|- style="vertical-align:text-top"
 
|1
 
|1
 
|Настройка, определяющая ключи типов туров, которые будут передаваться.
 
|Настройка, определяющая ключи типов туров, которые будут передаваться.
 
|Ключи типов туров через запятую.
 
|Ключи типов туров через запятую.
|<add key="'''tipTursFilter'''" value="5,6,10" />
+
|<syntaxhighlight lang="xml" enclose="div">
|-
+
<add key="tipTursFilter" value="5,6,10" />
 +
</syntaxhighlight>
 +
|- style="vertical-align:text-top"
 
|2
 
|2
 
|Настройка, включающая возможность передавать ключи типов туров через запятую.
 
|Настройка, включающая возможность передавать ключи типов туров через запятую.
|'''true''' - использовать фильтрацию по ключам типов туров через запятую;
+
|
'''false''' или '''отсутствие настройки''' - не использовать фильтрацию по ключам типов туров через запятую.
+
*'''true''' - использовать фильтрацию по ключам типов туров через запятую;
|<add key="'''isUseTipTursFilter'''" value="true" />
+
*'''false''' или '''отсутствие настройки''' - не использовать фильтрацию по ключам типов туров через запятую.
|-
+
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="isUseTipTursFilter" value="true" />
 +
</syntaxhighlight>
 +
|- style="vertical-align:text-top"
 
|3
 
|3
 
|Настройка, включающая возможность отображения наличия мест для квот определенным пользователям.  
 
|Настройка, включающая возможность отображения наличия мест для квот определенным пользователям.  
 
|В значении настройки через запятую перечисляются пользователи, которым должны быть доступны для показа количество мест.  
 
|В значении настройки через запятую перечисляются пользователи, которым должны быть доступны для показа количество мест.  
 
Если настройка не указана или задано пустое значение, квоты доступны всем.  
 
Если настройка не указана или задано пустое значение, квоты доступны всем.  
|<add key="'''showFullQuotasUserNames'''" value="username" />
+
|<syntaxhighlight lang="xml" enclose="div">
|-
+
<add key="showFullQuotasUserNames" value="username" />
 +
</syntaxhighlight>
 +
|- style="vertical-align:text-top"
 
|4
 
|4
 
|Настройка, отвечающая за отображение количества мест в квоте.
 
|Настройка, отвечающая за отображение количества мест в квоте.
|'''true''' - отображает количество мест в квоте;
+
|
'''false''' или '''отсутствие настройки''' - количество мест в квоте не отображается.
+
*'''true''' - отображает количество мест в квоте;
|<add key="'''isShowQuantity'''" value="true" />
+
*'''false''' или '''отсутствие настройки''' - количество мест в квоте не отображается.
|-
+
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="isShowQuantity" value="true" />
 +
</syntaxhighlight>
 +
|- style="vertical-align:text-top"
 
|5
 
|5
|Настройка, снижающая нагрузку обращений к базе за счет увеличения времени отработки метода [[Мастер-Web:Дополнительный модуль Сервис TourML#Метод GetAgreementsByKeys|GetAgreementsByKeys]]. Время, указанное в настройке, является промежутком между временем окончания отработки метода и временем возврата результата.  
+
|Настройка, снижающая нагрузку обращений к базе за счет увеличения времени отработки метода [[Web-сервисы: Сервис TourML#Метод GetAgreementsByKeys|GetAgreementsByKeys]]. Время, указанное в настройке, является промежутком между временем окончания отработки метода и временем возврата результата.  
 
 
 
|Значение задержки измеряется в секундах.
 
|Значение задержки измеряется в секундах.
  
Строка 81: Строка 93:
  
 
Например, метод возвращал данные через 5 сек. Если в настройке указать значение 10 сек, то время обработки метода и возвращения результата будет составлять 15 сек.  
 
Например, метод возвращал данные через 5 сек. Если в настройке указать значение 10 сек, то время обработки метода и возвращения результата будет составлять 15 сек.  
|<add key="'''delayBeforeReturn'''" value="10"/>
+
|<syntaxhighlight lang="xml" enclose="div">
|-
+
<add key="delayBeforeReturn" value="10"/>
 +
</syntaxhighlight>
 +
|- style="vertical-align:text-top"
 
|6
 
|6
|Настройка, включающая в методе [[Мастер-Web:Дополнительный модуль Сервис TourML#Метод GetReferences|GetReferences]] возможность отображения партнеров, предоставляющих услуги отеля, определенным пользователям.  
+
|Настройка, включающая в методе [[Web-сервисы: Сервис TourML#Метод GetReferences|GetReferences]] возможность отображения партнеров, предоставляющих услуги отеля, определенным пользователям.  
 
|В значении настройки через запятую перечисляются логин пользователей, которым должны быть доступны для показа партнеры по услуге.
 
|В значении настройки через запятую перечисляются логин пользователей, которым должны быть доступны для показа партнеры по услуге.
|<add key="'''showBOOAddInfoUserNames'''" value="test" />
+
|<syntaxhighlight lang="xml" enclose="div">
|-
+
<add key="showBOOAddInfoUserNames" value="test" />
 +
</syntaxhighlight>
 +
|- style="vertical-align:text-top"
 
|7
 
|7
 
|Настройка, определяющая загрузку не выставленных в онлайн СПО туров. Работает только при включенной настройке ''notOnlineTourTypes''
 
|Настройка, определяющая загрузку не выставленных в онлайн СПО туров. Работает только при включенной настройке ''notOnlineTourTypes''
|'''true''' – показывает все выставленные онлайн СПО и не выставленные онлайн СПО с ключами;
+
|
'''false''' или '''отсутствие настройки''' – показывает только выставленные онлайн  СПО туры
+
*'''true''' – показывает все выставленные онлайн СПО и не выставленные онлайн СПО с ключами;
|<add key="'''showNotOnlineSPO'''" value="true" />
+
*'''false''' или '''отсутствие настройки''' – показывает только выставленные онлайн  СПО туры
|-
+
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="showNotOnlineSPO" value="true" />
 +
</syntaxhighlight>
 +
|- style="vertical-align:text-top"
 
|8
 
|8
 
|Настройка, определяющая ключи типов туров СПО. Ключи хранятся в таблице TipTur.  
 
|Настройка, определяющая ключи типов туров СПО. Ключи хранятся в таблице TipTur.  
 
|'''key''' – перечисляются ключи типов туров через запятую
 
|'''key''' – перечисляются ключи типов туров через запятую
|<add key="'''notOnlineTourTypes'''" value="5" />
+
|<syntaxhighlight lang="xml" enclose="div">
|-
+
<add key="notOnlineTourTypes" value="5" />
 +
</syntaxhighlight>
 +
|- style="vertical-align:text-top"
 
|9
 
|9
|Настройка, включающая в методе [[Мастер-Web:Дополнительный модуль Сервис TourML#Метод GetFlightQuotes|GetFlightQuotes]] отображение информации по авиаперелетам (расписание и квоты).
+
|Настройка, включающая в методе [[Web-сервисы: Сервис TourML#Метод GetFlightQuotes|GetFlightQuotes]] отображение информации по авиаперелетам (расписание и квоты).
 
|В значении настройки через запятую перечисляются '''ключи тарифов''', по которым производится вывод информации по авиаперелетам.
 
|В значении настройки через запятую перечисляются '''ключи тарифов''', по которым производится вывод информации по авиаперелетам.
|<add key="'''tarifsToLoadFlightQuotes'''" value="89,67,114"/>
+
|<syntaxhighlight lang="xml" enclose="div">
|-
+
<add key="tarifsToLoadFlightQuotes" value="89,67,114"/>
 +
</syntaxhighlight>
 +
|- style="vertical-align:text-top"
 
|10
 
|10
 
|Настройка, позволяющая через запросы к URL и авторизацию с помощью параметров запроса ''Login'' и ''Password'', вызывать методы в TourMl.
 
|Настройка, позволяющая через запросы к URL и авторизацию с помощью параметров запроса ''Login'' и ''Password'', вызывать методы в TourMl.
|'''true''' – метод выполняется по запросу к URL;
+
|
'''false''' или '''отсутствие настройки''' – запрос не вызывает метод
+
*'''true''' – метод выполняется по запросу к URL;
 
+
*'''false''' или '''отсутствие настройки''' – запрос не вызывает метод
 
(Пример: http: //ip-адрес сервера/TourMl/Service.asmx/GetHotelKeys?checkPoint=2014-01-01&cityKey=614&Login=test&Password=qUqP5cyxm6YcTAhz05Hph5gvu9M=)
 
(Пример: http: //ip-адрес сервера/TourMl/Service.asmx/GetHotelKeys?checkPoint=2014-01-01&cityKey=614&Login=test&Password=qUqP5cyxm6YcTAhz05Hph5gvu9M=)
|<add key="'''allowSimpleAuth'''" value="true"/>
+
|<syntaxhighlight lang="xml" enclose="div">
|-
+
<add key="allowSimpleAuth" value="true"/>
 +
</syntaxhighlight>
 +
|- style="vertical-align:text-top"
 
|11
 
|11
 
|Настройка метода проверки квот.
 
|Настройка метода проверки квот.
|'''true''' или '''отсутствие настройки'''– квоты проверяются исходя из настроек в базе;
+
|
'''false''' – квоты сервисами не проверяются
+
*'''true''' или '''отсутствие настройки'''– квоты проверяются исходя из настроек в базе;
|<add key="'''UseNewSetToQuota'''" value="true"/>
+
*'''false''' – квоты сервисами не проверяются
 +
|<syntaxhighlight lang="xml" enclose="div">
 +
<add key="UseNewSetToQuota" value="true"/>
 +
</syntaxhighlight>
 
|}
 
|}
  
Строка 126: Строка 154:
 
  |style="background-color:#7F7F7F;color:white" width="4%"|№
 
  |style="background-color:#7F7F7F;color:white" width="4%"|№
 
  |style="background-color:#7F7F7F;color:white" width="16%"|Название метода
 
  |style="background-color:#7F7F7F;color:white" width="16%"|Название метода
  |style="background-color:#7F7F7F;color:white" width="10%"|Загрузка туров (TL)
+
  |style="background-color:#7F7F7F;color:white" width="10%"|Выгрузка цен (TL)
  |style="background-color:#7F7F7F;color:white" width="10%"|Загрузка квот (QL)
+
  |style="background-color:#7F7F7F;color:white" width="10%"|Импорт квот и Stop-Sale (QL)
  |style="background-color:#7F7F7F;color:white" width="10%"|Бронирование (BOO)
+
  |style="background-color:#7F7F7F;color:white" width="10%"|Актуализация цены и бронирование (BOO)
 
  |style="background-color:#7F7F7F;color:white" width="10%"|Работа с заявкой (AGR)
 
  |style="background-color:#7F7F7F;color:white" width="10%"|Работа с заявкой (AGR)
 
  |style="background-color:#7F7F7F;color:white" width="10%"|Подбор вариантов (GBI)
 
  |style="background-color:#7F7F7F;color:white" width="10%"|Подбор вариантов (GBI)
Строка 565: Строка 593:
 
  |}
 
  |}
  
===Загрузка туров (TL)===
+
===Выгрузка цен (TL)===
 
====Метод GetSPOArrayByKeyCompressed====
 
====Метод GetSPOArrayByKeyCompressed====
 
Данный метод осуществляет загрузку цен (данные возвращаются в сжатом виде по частям).<br />
 
Данный метод осуществляет загрузку цен (данные возвращаются в сжатом виде по частям).<br />
Строка 572: Строка 600:
 
*SpoKey – ключ СПО
 
*SpoKey – ключ СПО
 
В результате пользователь получает  
 
В результате пользователь получает  
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetSPOArrayByKeyCompressed с параметром spoKey=11
 
Вызов метода GetSPOArrayByKeyCompressed с параметром spoKey=11
Строка 607: Строка 635:
 
       <GetSPOArrayByKeyCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 
       <GetSPOArrayByKeyCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 
         <GetSPOArrayByKeyCompressedResult>
 
         <GetSPOArrayByKeyCompressedResult>
             <base64Binary>данные в сжатом виде
+
             <base64Binary>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
 
             </base64Binary>
 
             </base64Binary>
             <base64Binary>данные в сжатом виде
+
             <base64Binary>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
 
             </base64Binary>
 
             </base64Binary>
 
         </GetSPOArrayByKeyCompressedResult>
 
         </GetSPOArrayByKeyCompressedResult>
Строка 624: Строка 652:
 
*SpoKey – ключ СПО
 
*SpoKey – ключ СПО
 
В результате пользователь получает информацию по ценам на соответствующие им дни.
 
В результате пользователь получает информацию по ценам на соответствующие им дни.
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetSPOByKey с параметром spoKey=11
 
Вызов метода GetSPOByKey с параметром spoKey=11
Строка 850: Строка 878:
 
*calcKeyFrom, calcKeyTo – начальный и конечный ключи цен, возвращаемые методом (колонка TP_CalculatingKey из таблицы TP_Prices для актуальных цен и колонка TPD_CalculatingKey из таблицы TP_PriceDeleted для удаленных цен)
 
*calcKeyFrom, calcKeyTo – начальный и конечный ключи цен, возвращаемые методом (колонка TP_CalculatingKey из таблицы TP_Prices для актуальных цен и колонка TPD_CalculatingKey из таблицы TP_PriceDeleted для удаленных цен)
 
В результате пользователь получает информацию по ценам для динамического ценообразования на соответствующие им дни.
 
В результате пользователь получает информацию по ценам для динамического ценообразования на соответствующие им дни.
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetSPOByKey_DC с параметрами: spoKey=11; calcKeyFrom=10; calcKeyTo=10
 
Вызов метода GetSPOByKey_DC с параметрами: spoKey=11; calcKeyFrom=10; calcKeyTo=10
Строка 1149: Строка 1177:
  
 
====Метод GetSPOByKeyCompressed====
 
====Метод GetSPOByKeyCompressed====
Данный метод осуществляет загрузку цен (данные возвращаются в сжатом виде).<br />
+
Данный метод осуществляет загрузку цен (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).<br />
 
Запись полученных результатов производится в таблицы FileRepos и FileHeaders в том случае, если у пользователя, который осуществляет загрузку цен указаны права Insert, Delete, Select и Update. Права указываются в свойствах таблиц в разделе Permissions.<br />
 
Запись полученных результатов производится в таблицы FileRepos и FileHeaders в том случае, если у пользователя, который осуществляет загрузку цен указаны права Insert, Delete, Select и Update. Права указываются в свойствах таблиц в разделе Permissions.<br />
 
Список принимаемых параметров:
 
Список принимаемых параметров:
 
*SpoKey – ключ СПО
 
*SpoKey – ключ СПО
 
В результате пользователь получает  
 
В результате пользователь получает  
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetSPOByKeyCompressed с параметром spoKey=11
 
Вызов метода GetSPOByKeyCompressed с параметром spoKey=11
Строка 1188: Строка 1216:
 
   <soap:Body>
 
   <soap:Body>
 
       <GetSPOByKeyCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 
       <GetSPOByKeyCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetSPOByKeyCompressedResult>  
+
         <GetSPOByKeyCompressedResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
          данные в сжатом виде
 
 
         </GetSPOByKeyCompressedResult>
 
         </GetSPOByKeyCompressedResult>
 
       </GetSPOByKeyCompressedResponse>
 
       </GetSPOByKeyCompressedResponse>
Строка 1199: Строка 1226:
  
 
====Метод GetSPOByKeyCompressed_DC====
 
====Метод GetSPOByKeyCompressed_DC====
Данный метод осуществляет загрузку цен для динамического ценообразования (данные возвращаются в сжатом виде).<br />
+
Данный метод осуществляет загрузку цен для динамического ценообразования (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).<br />
 
Запись полученных результатов производится в таблицы FileRepos и FileHeaders в том случае, если у пользователя, который осуществляет загрузку цен указаны права Insert, Delete, Select и Update. Права указываются в свойствах таблиц в разделе Permissions.<br />
 
Запись полученных результатов производится в таблицы FileRepos и FileHeaders в том случае, если у пользователя, который осуществляет загрузку цен указаны права Insert, Delete, Select и Update. Права указываются в свойствах таблиц в разделе Permissions.<br />
 
Список принимаемых параметров:
 
Список принимаемых параметров:
Строка 1205: Строка 1232:
 
*calcKeyFrom, calcKeyTo – начальный и конечный ключи цен, возвращаемые методом (колонка TP_CalculatingKey из таблицы TP_Prices для актуальных цен и колонка TPD_CalculatingKey из таблицы TP_PriceDeleted для удаленных цен)
 
*calcKeyFrom, calcKeyTo – начальный и конечный ключи цен, возвращаемые методом (колонка TP_CalculatingKey из таблицы TP_Prices для актуальных цен и колонка TPD_CalculatingKey из таблицы TP_PriceDeleted для удаленных цен)
 
В результате пользователь получает  
 
В результате пользователь получает  
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetSPOByKeyCompressed_DC с параметрами: spoKey=11;calcKeyFrom=10; calcKeyTo=10
 
Вызов метода GetSPOByKeyCompressed_DC с параметрами: spoKey=11;calcKeyFrom=10; calcKeyTo=10
Строка 1241: Строка 1268:
 
   <soap:Body>
 
   <soap:Body>
 
       <GetSPOByKeyCompressed_DCResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 
       <GetSPOByKeyCompressed_DCResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetSPOByKeyCompressed_DCResult>данные в сжатом виде
+
         <GetSPOByKeyCompressed_DCResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
 
         </GetSPOByKeyCompressed_DCResult>
 
         </GetSPOByKeyCompressed_DCResult>
 
       </GetSPOByKeyCompressed_DCResponse>
 
       </GetSPOByKeyCompressed_DCResponse>
Строка 1257: Строка 1284:
 
*pageSize – количество записей, получаемых за один запрос
 
*pageSize – количество записей, получаемых за один запрос
 
В результате пользователь получает информацию по ценам начиная с ключа цены, который передается в  запросе.  
 
В результате пользователь получает информацию по ценам начиная с ключа цены, который передается в  запросе.  
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetSPOPageByKey с параметрами: spoKey=11; minPriceKey=11500; pageSize=5
 
Вызов метода GetSPOPageByKey с параметрами: spoKey=11; minPriceKey=11500; pageSize=5
Строка 1500: Строка 1527:
  
 
====Метод GetSPOPageByKeyCompressed====
 
====Метод GetSPOPageByKeyCompressed====
Данный метод возвращает постраничную загрузку цен (данные возвращаются в сжатом виде).<br />
+
Данный метод возвращает постраничную загрузку цен (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).<br />
 
Список принимаемых параметров:
 
Список принимаемых параметров:
 
*spoKey – ключ СПО
 
*spoKey – ключ СПО
Строка 1506: Строка 1533:
 
*pageSize – количество записей, получаемых за один запрос (не больше 5000)
 
*pageSize – количество записей, получаемых за один запрос (не больше 5000)
 
В результате пользователь получает информацию по ценам в  сжатом виде, начиная с ключа цены, который передается в запросе.
 
В результате пользователь получает информацию по ценам в  сжатом виде, начиная с ключа цены, который передается в запросе.
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetSPOPageByKeyCompressed с параметрами: spoKey=11; minPriceKey=11500; pageSize=5
 
Вызов метода GetSPOPageByKeyCompressed с параметрами: spoKey=11; minPriceKey=11500; pageSize=5
Строка 1542: Строка 1569:
 
   <soap:Body>
 
   <soap:Body>
 
       <GetSPOPageByKeyCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 
       <GetSPOPageByKeyCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetSPOPageByKeyCompressedResult>данные в сжатом виде
+
         <GetSPOPageByKeyCompressedResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
 
         </GetSPOPageByKeyCompressedResult>
 
         </GetSPOPageByKeyCompressedResult>
 
       </GetSPOPageByKeyCompressedResponse>
 
       </GetSPOPageByKeyCompressedResponse>
Строка 1554: Строка 1581:
 
Данный метод возвращает список актуальных туров.<br />
 
Данный метод возвращает список актуальных туров.<br />
 
Список принимаемых параметров:
 
Список принимаемых параметров:
*Нет
+
*параметров нет
 
В результате пользователь получает информацию по имеющимся актуальным турам в базе данных.
 
В результате пользователь получает информацию по имеющимся актуальным турам в базе данных.
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetValidTourList
 
Вызов метода GetValidTourList
Строка 1793: Строка 1820:
  
 
====Метод GetValidTourListCompressed====
 
====Метод GetValidTourListCompressed====
Данный метод возвращает список актуальных туров (данные возвращаются в сжатом виде).<br />
+
Данный метод возвращает список актуальных туров (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).<br />
 
Список принимаемых параметров:
 
Список принимаемых параметров:
*Нет
+
*параметров нет
 
В результате пользователь получает информацию по имеющимся актуальным турам в базе данных. Информация предоставляется в  сжатом виде.
 
В результате пользователь получает информацию по имеющимся актуальным турам в базе данных. Информация предоставляется в  сжатом виде.
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetValidTourListCompressed
 
Вызов метода GetValidTourListCompressed
Строка 1829: Строка 1856:
 
   <soap:Body>
 
   <soap:Body>
 
       <GetValidTourListCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 
       <GetValidTourListCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetValidTourListCompressedResult>данные в сжатом виде
+
         <GetValidTourListCompressedResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
 
         </GetValidTourListCompressedResult>
 
         </GetValidTourListCompressedResult>
 
       </GetValidTourListCompressedResponse>
 
       </GetValidTourListCompressedResponse>
Строка 1843: Строка 1870:
 
*checkPoint  –  дата, начиная с которой выгружается информация об актуальных турах
 
*checkPoint  –  дата, начиная с которой выгружается информация об актуальных турах
 
В результате пользователь получает информацию по имеющимся актуальным турам в базе данных, начиная с даты, которая передается в запросе.
 
В результате пользователь получает информацию по имеющимся актуальным турам в базе данных, начиная с даты, которая передается в запросе.
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetValidTourListFrom с параметром checkPoint=2013-01-01
 
Вызов метода GetValidTourListFrom с параметром checkPoint=2013-01-01
Строка 1903: Строка 1930:
 
               <roomCategories/>
 
               <roomCategories/>
 
               <roomDescriptions/>
 
               <roomDescriptions/>
               <roomAccomodations/>
+
               <roomAccomodation key="306" name="2ad+exb" nameLat="2ad+exb" code="2ad+exb" numBed="2" numExBed="1">
 +
                  <adult place="0" order="0"/>
 +
                  <adult place="0" order="0"/>
 +
                  <adult place="1" order="0"/>
 +
              </roomAccomodation>
 +
              <roomAccomodation key="565" name="2ad+ch(2-10,99)" nameLat="2ad+ch(2-10,99)" code="2ad+ch(2-10,99)" numBed="2" numExBed="1">
 +
                  <adult place="0" order="0"/>
 +
                  <adult place="0" order="0"/>
 +
                  <child ageFrom="2" ageTo="10" place="0" order="0»/>
 +
              </roomAccomodation>
 
               <rooms/>
 
               <rooms/>
 
               <serviceClasses/>
 
               <serviceClasses/>
Строка 2077: Строка 2113:
 
   </soap:Body>
 
   </soap:Body>
 
</soap:Envelope>
 
</soap:Envelope>
 +
 +
Примечания:
 +
adult - взрослое размещение,
 +
child - детское размещение,
 +
place - тип места (0 - основное, 1 - дополнительное, 2 - без места),
 +
order - номер места для цены за человека,
 +
numBed - кол-во мест на основном размещении,
 +
numExBed - кол-во дополнительных мест
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</TD></TR></TABLE>
 
</TD></TR></TABLE>
Строка 2087: Строка 2131:
 
*countryKey – ключ страны
 
*countryKey – ключ страны
 
В результате пользователь получает информацию по имеющимся актуальным турам в базе данных, по конкретной стране, начиная с даты, которая передается в запросе.
 
В результате пользователь получает информацию по имеющимся актуальным турам в базе данных, по конкретной стране, начиная с даты, которая передается в запросе.
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetValidTourListFrom_DC с параметрами: calculatingKey=10; countryKey=3
 
Вызов метода GetValidTourListFrom_DC с параметрами: calculatingKey=10; countryKey=3
Строка 2305: Строка 2349:
  
 
====Метод GetValidTourListFromCompressed====
 
====Метод GetValidTourListFromCompressed====
Данный метод возвращает список актуальных туров с определенной даты (данные возвращаются в сжатом виде).<br />
+
Данный метод возвращает список актуальных туров с определенной даты (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).<br />
 
Список принимаемых параметров:
 
Список принимаемых параметров:
 
*checkPoint  –  дата, начиная с которой выгружается информация об актуальных турах
 
*checkPoint  –  дата, начиная с которой выгружается информация об актуальных турах
 
В результате пользователь получает информацию по имеющимся актуальным турам в базе данных, начиная с даты, которая передается в запросе. Информация представлена в  сжатом виде.
 
В результате пользователь получает информацию по имеющимся актуальным турам в базе данных, начиная с даты, которая передается в запросе. Информация представлена в  сжатом виде.
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetValidTourListFromCompressed с параметром checkPoint=2013-01-01
 
Вызов метода GetValidTourListFromCompressed с параметром checkPoint=2013-01-01
Строка 2343: Строка 2387:
 
   <soap:Body>
 
   <soap:Body>
 
       <GetValidTourListFromCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 
       <GetValidTourListFromCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetValidTourListFromCompressedResult>данные в сжатом виде
+
         <GetValidTourListFromCompressedResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
 
         </GetValidTourListFromCompressedResult>
 
         </GetValidTourListFromCompressedResult>
 
       </GetValidTourListFromCompressedResponse>
 
       </GetValidTourListFromCompressedResponse>
Строка 2352: Строка 2396:
 
</div></div><br />
 
</div></div><br />
  
===Загрузка квот (QL)===
+
===Импорт квот и Stop-Sale (QL)===
 
====Метод GetFlightQuotes====
 
====Метод GetFlightQuotes====
 
Данный метод возвращает расписание и квоты (наличие и количество мест) по авиаперелетам.<br />  
 
Данный метод возвращает расписание и квоты (наличие и количество мест) по авиаперелетам.<br />  
Строка 2361: Строка 2405:
 
*CheckPoint – дата вылета
 
*CheckPoint – дата вылета
 
В результате пользователь получает полную информацию по перелетам: города вылета и прилета (изначально передаваемые параметры), номера рейсов, названия авиакомпаний, аэропорты вылета и прилета, даты начала и окончания действия, а  также наличие мест по датам вылета.  
 
В результате пользователь получает полную информацию по перелетам: города вылета и прилета (изначально передаваемые параметры), номера рейсов, названия авиакомпаний, аэропорты вылета и прилета, даты начала и окончания действия, а  также наличие мест по датам вылета.  
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetFlightQuotes с параметрами: cityFrom=1; cityTo=63; checkPoint=2015-03-01
 
Вызов метода GetFlightQuotes с параметрами: cityFrom=1; cityTo=63; checkPoint=2015-03-01
Строка 2553: Строка 2597:
  
 
В результате пользователь получает актуальный список отелей в  конкретно выбранном городе на передаваемую дату, по которым имеются туры в базе данных.  
 
В результате пользователь получает актуальный список отелей в  конкретно выбранном городе на передаваемую дату, по которым имеются туры в базе данных.  
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetHotelKeys с параметрам: сheckPoint=2015-01-01; cityKey=63
 
Вызов метода GetHotelKeys с параметрам: сheckPoint=2015-01-01; cityKey=63
Строка 2607: Строка 2651:
  
 
В результате пользователь получает информацию о наличии мест по указанному отелю, на передаваемую в  параметрах дату, и выбранному количеству дней.  
 
В результате пользователь получает информацию о наличии мест по указанному отелю, на передаваемую в  параметрах дату, и выбранному количеству дней.  
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">Пример
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
Вызов метода GetHotelQuotes с параметрами: hotelKey=3231; сheckPoint=2015-03-01; days=1
 
Вызов метода GetHotelQuotes с параметрами: hotelKey=3231; сheckPoint=2015-03-01; days=1
Строка 2736: Строка 2780:
 
Список принимаемых параметров:
 
Список принимаемых параметров:
 
*сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям
 
*сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям
 +
В результате пользователь получает информацию о наличии мест в квотируемых услугах.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetStopSalesAndQuotes с параметром сheckPoint=2015-01-01
  
====Метод GetStopSalesAndQuotes2====
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Данный метод возвращает информацию по квотам и Stop-Sale для версии 9.2.<br />
+
<syntaxhighlight lang="xml" enclose="div">
Возвращается информацию по квотам (наличие мест, количество мест, Stop-Sale, запреты на заезд) по всему услугам в туре.<br />
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
Список принимаемых параметров:
+
  <soapenv:Header/>
*сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям. Дата создания квоты или дата последнего изменения должны быть больше или равны дате выгрузки информации.
+
  <soapenv:Body>
 
+
      <prod:GetStopSalesAndQuotes>
====Метод GetStopSalesAndQuotesByHotels====
+
        <prod:checkPoint>2015-01-01</prod:checkPoint>
Данный метод возвращает информацию по квотам и Stop-Sale по дате по конкретному ключу отеля.<br />
+
      </prod:GetStopSalesAndQuotes>
Данные возвращаются вне зависимости от установленного значения настройки ''isShowQuantity''.<br />
+
  </soapenv:Body>
Список принимаемых параметров:
+
</soapenv:Envelope>
*сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям
+
</syntaxhighlight>
*hotelKey – ключ отеля
+
</TD></TR></TABLE>
 
+
Возвращаемый результат метода GetStopSalesAndQuotes
====Метод GetStopSalesAndQuotesCompressed====
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Данный метод возвращает информацию по квотам и Stop-Sale для версии 9.2 (данные возвращаются в сжатом виде).<br />
+
<syntaxhighlight lang="xml" enclose="div">
Возвращается информацию по квотам (наличие мест, количество мест, Stop-Sale, запреты на заезд) по всему услугам в туре.<br />
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
Список принимаемых параметров:
+
  <soap:Header>
*сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям. Дата создания квоты или дата последнего изменения должны быть больше или равны дате выгрузки информации.
+
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetStopSalesAndQuotesResponse</wsa:Action>
 
+
      <wsa:MessageID>uuid:6bb8c7c7-db23-4f19-bde3-09b6fc375423</wsa:MessageID>
 
+
      <wsa:RelatesTo>uuid:f0936f67-d4b1-4306-96dd-44a91de869e1</wsa:RelatesTo>
 
+
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
===Бронирование (BOO)===
+
      <wsse:Security>
====Метод CheckBooking====
+
        <wsu:Timestamp wsu:Id="Timestamp-a6bdff1f-3699-4191-8e51-47239bb4aa49">
Данный метод осуществляет проверку возможности бронирования рассчитанного прайса.<br />
+
            <wsu:Created>2015-02-10T09:39:36Z</wsu:Created>
Возвращает услуги по прайсу, их статусы (есть или нет мест), актуальную цену путевки.<br />
+
            <wsu:Expires>2015-02-10T09:44:36Z</wsu:Expires>
Список принимаемых параметров:
+
        </wsu:Timestamp>
*XML документ, содержащий заявку, в которой указаны дата заезда, ключ агентства, ключ рассчитанного тура, туристы.
+
      </wsse:Security>
Возвращаемое значение:
+
  </soap:Header>
*XML документ, содержащий договор.
+
  <soap:Body>
 
+
      <GetStopSalesAndQuotesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
====Метод CreateBooking====
+
        <TourML version="1.0" date="2015-02-10" time="12:39:36" xmlns="http://tourml.ru/products/2004-04-19">
Данный метод осуществляет бронирование путевки по рассчитанному прайсу.<br />
+
            <header name="Название ТО" uri="URL" vendor="Megatec">
Возвращает услуги по прайсу, их статусы (есть или нет мест), актуальную цену путевки.<br />
+
              <comment/>
Список принимаемых параметров:
+
              <loadTime timeValue="62.499900000000004" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
*XML документ, содержащий заявку, в которой указыны дата заезда, ключ агентства, ключ рассчитанного тура, туристы.
+
            </header>
Возвращаемое значение:
+
            <references>
*XML документ, содержащий договор.
+
              <countries>
 
+
                  <country key="460" name="Россия" nameLat="Russia"/>
====Метод GetAgencies====
+
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
Данный метод возвращает список агентств по определенному фильтру.<br />
+
              </countries>
Список принимаемых параметров:
+
              <resorts/>
*параметров нет
+
              <cities>
 
+
                  <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
====Метод GetAgreementCredentials====
+
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
Данный метод возвращает ключ агентства и номер договора по логину и паролю онлайн пользователя.<br />
+
              </cities>
Список принимаемых параметров:
+
              <categories>
*agencyLogin – имя пользователя
+
                  <category key="707724292" name="4*" nameLat="4*"/>
*agencyPassword – пароль пользователя
+
              </categories>
 
+
              <hotels>
====Метод GetCountries====
+
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
Данный метод возвращает список стран, по которым имеются туры. В каждой стране – список городов, на которые имеются квоты.<br />
+
              </hotels>
Список принимаемых параметров:
+
              <buildings>
*параметров нет
+
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
Возвращаемые значения:
+
              </buildings>
*список стран в формате: <Countries><Country key name><Cities><City key name></City></Cities></Country></Countries>
+
              <airlines>
 
+
                  <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
====Метод ValidatePriceServices====
+
              </airlines>
Данный метод проверяет валидность услуг на даты заездов.<br />
+
              <airports>
Список принимаемых параметров:
+
                  <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
* параметров нет
+
                  <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
 
+
              </airports>
 
+
              <aircrafts>
 
+
                  <aircraft key="4" name="aerobus A-310" code="310"/>
===Работа с заявкой (AGR)===
+
              </aircrafts>
====Метод CancelAgreement====
+
              <flights>
Данный метод отправляет запрос на аннуляцию путевки.<br />
+
                  <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
Список принимаемых параметров:
+
                    <flightTime key="1" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
*agencyId - ключ туристического агентства
+
                  </flight>
*agreementNumber – ключ договора путевки
+
                  <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
 
+
                    <flightTime key="2" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
====Метод GetAgreementsByCode====
+
                  </flight>
Данный метод возвращает список путевок по кодам.<br />
+
              </flights>
Список принимаемых параметров:
+
              <roomTypes/>
*agency - ключ агентства
+
              <roomLocations/>
*codes - номер путевки
+
              <roomViews/>
 
+
              <roomCategories/>
====Метод GetAgreementsByKeys====
+
              <roomDescriptions/>
Данный метод возвращает список путевок по ключам.<br />
+
              <roomAccomodations/>
Список принимаемых параметров:
+
              <rooms/>
*codes - ключ договора
+
              <serviceClasses/>
 
+
              <serviceDescriptions/>
====Метод GetAgreementsByNumber====
+
              <serviceDescriptions1/>
Данный метод возвращает информацию по забронированным путевкам.<br />
+
              <serviceDescriptions2/>
Список принимаемых параметров:
+
              <transfers/>
*agency - ключ туристического агентства
+
              <excursions/>
*codes – ключ договора
+
              <transports/>
Возвращаемое значение:
+
              <cabines/>
*XML документ, содержащий ключ агентства и коды забронированных путевок
+
              <ships/>
 
+
              <boardings/>
====Метод GetSimpleDogovorsBronni====
+
              <currencies/>
Данный метод возвращает список путевок в формате Бронни.<br />
+
              <tariffs/>
Список принимаемых параметров:
+
              <tourTypes/>
*agency - ключ туристического агентства
+
            </references>
*dateFrom - дата, с которой будут выводится созданные путевки
+
            <sources>
*dateTo - дата, по которую будет выводится список созданных путевок
+
              <source name="Название ТО" uri="URL">
 
+
                  <quotaServices>
====Метод GetSimpleDogovorsByCreateDates====
+
                    <flightServices maxStopPoint="2015-01-01T00:00:00" maxQuotaPoint="2015-02-03T09:42:59.587">
Данный метод возвращает список путевок в формате Бронни по датам создания.<br />
+
                        <flightService flightKey="524" tariffKey="0">
Список принимаемых параметров:
+
                          <quotas>
*dateFrom - дата, с которой будут выводится созданные путевки
+
                              <quota status="Modified" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="498" date="2015-03-04" quoteType="0" checkInStop="false"/>
*dateTo - дата, по которую будет выводится список созданных путевок
+
                          </quotas>
*agency - подстрока (часть имени) названия агентства. В итоговом запросе будет конструкция <syntaxhighlight lang="sql">LIKE 'agency - название агентства'</syntaxhighlight>
+
                        </flightService>
*BTKey - значение колонки DG_BTKey из таблицы tbl_Dogovors.
+
                        <flightService flightKey="525" tariffKey="0">
 +
                          <quotas>
 +
                              <quota status="Modified" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="498" date="2015-03-01" quoteType="0" checkInStop="false"/>
 +
                          </quotas>
 +
                        </flightService>
 +
                    </flightServices>
 +
                    <hotelServices maxQuotaPoint="2015-02-03T09:42:59.347" maxStopPoint="2015-01-01T00:00:00">
 +
                        <hotelService buildingKey="3231" roomDescriptionKey="0" roomTypeKey="0">
 +
                          <quotas>
 +
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="499" date="2015-03-01" quoteType="0" checkInStop="false"/>
 +
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="499" date="2015-03-02" quoteType="0" checkInStop="false"/>
 +
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="499" date="2015-03-03" quoteType="0" checkInStop="false"/>
 +
                          </quotas>
 +
                        </hotelService>
 +
                    </hotelServices>
 +
                  </quotaServices>
 +
                  <packets>
 +
                    <packet>
 +
                        <packetHeader>
 +
                          <tour key="0"/>
 +
                          <spo key="0" for="byPerson" validFrom="0001-01-01" validTo="0001-01-01" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
 +
                              <calculatingKeys/>
 +
                              <comment/>
 +
                          </spo>
 +
                        </packetHeader>
 +
                        <services>
 +
                          <hotelServices/>
 +
                          <flightServices/>
 +
                          <excursionServices/>
 +
                          <transferServices/>
 +
                          <cruiseServices/>
 +
                          <extraServices/>
 +
                        </services>
 +
                        <prices/>
 +
                        <deletedPrices/>
 +
                    </packet>
 +
                  </packets>
 +
              </source>
 +
            </sources>
 +
        </TourML>
 +
      </GetStopSalesAndQuotesResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
 
+
====Метод GetStopSalesAndQuotes2====
 
+
Данный метод возвращает информацию по квотам и Stop-Sale для версии 9.2.<br />
===Подбор вариантов (GBI)===
+
Возвращается информацию по квотам (наличие мест, количество мест, Stop-Sale, запреты на заезд) по всему услугам в туре.<br />
====Метод GetBookingInfo====
 
Данный метод возвращает информацию о путевке.<br />
 
 
Список принимаемых параметров:
 
Список принимаемых параметров:
*XML документ, содержащий заявку, в которой указаны дата заезда, ключ агентства, ключ рассчитанного тура, туристы.
+
*сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям. Дата создания квоты или дата последнего изменения должны быть больше или равны дате выгрузки информации.
Возвращаемое значение:
+
В результате пользователь получает информацию о наличии мест в квотируемых услугах.
*XML документ, содержащий договор.
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetStopSalesAndQuotes2 с параметром сheckPoint=2015-01-01
  
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
 +
  <soapenv:Header/>
 +
  <soapenv:Body>
 +
      <prod:GetStopSalesAndQuotes2>
 +
        <prod:checkPoint>2015-01-01</prod:checkPoint>
 +
      </prod:GetStopSalesAndQuotes2>
 +
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
Возвращаемый результат метода GetStopSalesAndQuotes2
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetStopSalesAndQuotes2Response</wsa:Action>
 +
      <wsa:MessageID>uuid:80f77302-56fc-475e-9b35-962b9211f549</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:be54fd49-d5dd-4ab9-a816-5db5f3533fb1</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-4436ef00-47ff-44e1-adc1-59869d6652b0">
 +
            <wsu:Created>2015-02-10T09:49:19Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T09:54:19Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
  </soap:Header>
 +
  <soap:Body>
 +
      <GetStopSalesAndQuotes2Response xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <TourML version="1.0" date="2015-02-10" time="12:49:19" xmlns="http://tourml.ru/products/2004-04-19">
 +
            <header name="Название ТО" uri="URL" vendor="Megatec">
 +
              <comment/>
 +
              <loadTime timeValue="0" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
            </header>
 +
            <references>
 +
              <countries>
 +
                  <country key="460" name="Россия" nameLat="Russia"/>
 +
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
 +
              </countries>
 +
              <resorts/>
 +
              <cities>
 +
                  <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
 +
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
 +
              </cities>
 +
              <categories>
 +
                  <category key="707724292" name="4*" nameLat="4*"/>
 +
              </categories>
 +
              <hotels>
 +
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
 +
              </hotels>
 +
              <buildings>
 +
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
 +
              </buildings>
 +
              <airlines>
 +
                  <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
 +
              </airlines>
 +
              <airports>
 +
                  <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
 +
                  <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
 +
              </airports>
 +
              <aircrafts>
 +
                  <aircraft key="4" name="aerobus A-310" code="310"/>
 +
              </aircrafts>
 +
              <flights>
 +
                  <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
 +
                    <flightTime key="1" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
 +
                  </flight>
 +
                  <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
 +
                    <flightTime key="2" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
 +
                  </flight>
 +
              </flights>
 +
              <roomTypes/>
 +
              <roomLocations/>
 +
              <roomViews/>
 +
              <roomCategories/>
 +
              <roomDescriptions/>
 +
              <roomAccomodations/>
 +
              <rooms/>
 +
              <serviceClasses/>
 +
              <serviceDescriptions/>
 +
              <serviceDescriptions1/>
 +
              <serviceDescriptions2/>
 +
              <transfers/>
 +
              <excursions/>
 +
              <transports/>
 +
              <cabines/>
 +
              <ships/>
 +
              <boardings/>
 +
              <currencies/>
 +
              <tariffs/>
 +
              <tourTypes/>
 +
            </references>
 +
            <sources>
 +
              <source name="Название ТО" uri="URL">
 +
                  <quotaServices>
 +
                    <flightServices maxQuotaPoint="2015-02-03T09:42:59.587">
 +
                        <flightService flightKey="524" tariffKey="0">
 +
                          <quotas>
 +
                              <quota status="Modified" typeQuantity="byPerson" typeVisit="byPeriod" uniqueKey="2333" agentKey="0" freeAccess="many" places="498" date="2015-03-04" checkInStop="false"/>
 +
                          </quotas>
 +
                        </flightService>
 +
                        <flightService flightKey="525" tariffKey="0">
 +
                          <quotas>
 +
                              <quota status="Modified" typeQuantity="byPerson" typeVisit="byPeriod" uniqueKey="2879" agentKey="0" freeAccess="many" places="498" date="2015-03-01" checkInStop="false"/>
 +
                          </quotas>
 +
                        </flightService>
 +
                    </flightServices>
 +
                    <hotelServices maxQuotaPoint="2015-02-03T09:42:59.347">
 +
                        <hotelService buildingKey="3231" roomDescriptionKey="0" roomTypeKey="0">
 +
                          <quotas>
 +
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3428" agentKey="0" freeAccess="many" places="499" date="2015-03-01" quoteType="0" checkInStop="false"/>
 +
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3429" agentKey="0" freeAccess="many" places="499" date="2015-03-02" quoteType="0" checkInStop="false"/>
 +
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3430" agentKey="0" freeAccess="many" places="499" date="2015-03-03" quoteType="0" checkInStop="false"/>
 +
                          </quotas>
 +
                        </hotelService>
 +
                    </hotelServices>
 +
                  </quotaServices>
 +
                  <packets>
 +
                    <packet>
 +
                        <packetHeader>
 +
                          <tour key="0"/>
 +
                          <spo key="0" for="byPerson" validFrom="0001-01-01" validTo="0001-01-01" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
 +
                              <calculatingKeys/>
 +
                              <comment/>
 +
                          </spo>
 +
                        </packetHeader>
 +
                        <services>
 +
                          <hotelServices/>
 +
                          <flightServices/>
 +
                          <excursionServices/>
 +
                          <transferServices/>
 +
                          <cruiseServices/>
 +
                          <extraServices/>
 +
                        </services>
 +
                        <prices/>
 +
                        <deletedPrices/>
 +
                    </packet>
 +
                  </packets>
 +
              </source>
 +
            </sources>
 +
        </TourML>
 +
      </GetStopSalesAndQuotes2Response>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
 +
====Метод GetStopSalesAndQuotesByHotels====
 +
Данный метод возвращает информацию по квотам и Stop-Sale по дате по конкретному ключу отеля.<br />
 +
Данные возвращаются вне зависимости от установленного значения настройки ''isShowQuantity''.<br />
 +
Список принимаемых параметров:
 +
*сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям
 +
*hotelKey – ключ отеля
 +
В результате пользователь получает полную информацию о наличии мест по переданному ключу отеля.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetStopSalesAndQuotesByHotels с параметрами: сheckPoint=2015-01-01; hotelKey=3231
  
===Подбор перелетов (FLF)===
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Методы в данной группе отсутствуют.
+
<syntaxhighlight lang="xml" enclose="div">
 
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
 
+
  <soapenv:Header/>
 
+
  <soapenv:Body>
===Любые другие (MICS)===
+
      <prod:GetStopSalesAndQuotesByHotels>
====Метод GetCourse====
+
        <prod:checkPoint>2015-01-01</prod:checkPoint>
Данный метод возвращает информацию о кросс-курсе валют.<br />
+
        <prod:hotelKey>3231</prod:hotelKey>
Список принимаемых параметров:
+
      </prod:GetStopSalesAndQuotesByHotels>
*rateCodeFrom - код валюты, кросс-курс которой нужно вывести
+
  </soapenv:Body>
*rateCodeTo - код валюты 2
+
</soapenv:Envelope>
*exchangeDate - дата, на которую необходимо взять курсы валют
+
</syntaxhighlight>
 
+
</TD></TR></TABLE>
====Метод GetNationalCourse====
+
Возвращаемый результат метода GetStopSalesAndQuotesByHotels
Данный метод возвращает возвращает курс национальной  валюты.<br />
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Список принимаемых параметров:
+
<syntaxhighlight lang="xml" enclose="div">
*rateCode - код валюты, курс которой нужно получить
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
*exchangeDate - дата, на которую необходимо взять курс валют
+
  <soap:Header>
 
+
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetStopSalesAndQuotesByHotelsResponse</wsa:Action>
====Метод GetNationalRateCode====
+
      <wsa:MessageID>uuid:1657bc80-2093-4bd7-bbb3-48b6ad103627</wsa:MessageID>
Данный метод возвращает код национальной валюты.<br />
+
      <wsa:RelatesTo>uuid:0e4bac99-bf00-4a4f-81e8-0fc3c4c66eb1</wsa:RelatesTo>
Список принимаемых параметров:
+
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
*параметров нет
+
      <wsse:Security>
 
+
        <wsu:Timestamp wsu:Id="Timestamp-573110bc-8c3a-47e6-b0e4-3f44afe6d89e">
====Метод GetReferences====
+
            <wsu:Created>2015-02-10T09:53:58Z</wsu:Created>
Данный метод возвращает справочники по фильтрам.<br />
+
            <wsu:Expires>2015-02-10T09:58:58Z</wsu:Expires>
Список принимаемых параметров:
+
        </wsu:Timestamp>
*queryType - идентификатор запроса
+
      </wsse:Security>
*param - ключ фильтра
+
  </soap:Header>
 
+
  <soap:Body>
 
+
      <GetStopSalesAndQuotesByHotelsResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 
+
        <TourML version="1.0" date="2015-02-10" time="12:53:57" xmlns="http://tourml.ru/products/2004-04-19">
===Специальные (SPEC)===
+
            <header name="Название ТО" uri="URL" vendor="Megatec">
====Метод GetInfo====
+
              <comment/>
Внутренний метод для тестовых целей.
+
              <loadTime timeValue="0" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
 
+
            </header>
====Метод Info====
+
            <references>
Внутренний метод для тестовых целей.
+
              <countries>
 
+
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
====Метод GetVersion====
+
              </countries>
Данный метод возвращает версию базы данных Мастер-Тур и текущей бизнес-логики сервиса
+
              <resorts/>
Список принимаемых параметров:
+
              <cities>
*параметров нет
+
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
 
+
              </cities>
==Авторизация при использовании web-сервиса==
+
              <categories>
При работе с web-сервисом TourML перед запросом данных требуется произвести авторизацию. Web-сервис позволяет использовать несколько методов авторизации, доступные для использования из различных программных средств.
+
                  <category key="707724292" name="4*" nameLat="4*"/>
 
+
              </categories>
Основным методом авторизации является использование WSE (Web Services Enhancements). По умолчанию web-сервис использует именно этот механизм авторизации. Более детально о механизме безопасности WSE можно прочитать по следующей ссылке:
+
              <hotels>
 
+
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
http://msdn.microsoft.com/en-us/library/aa894200.aspx
+
              </hotels>
 
+
              <buildings>
Для упрощения работы c web-сервисом предусмотрен механизм упрощенной авторизации, позволяющий производить работу с web-сервисом без использования механизма WSE. Данный вариант авторизации является опциональным и должен быть разрешен явным образом через установку настройки в конфигурационном файле web-сервиса. Более детально о механизме упрощенной авторизации будет рассказано ниже.
+
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
===Авторизация с использованием WSE===
+
              </buildings>
При работе со средой разработки Microsoft Visual Studio в секцию Reference проекта необходимо добавить ссылку на библиотеку Microsoft.Web.Services2.dll
+
              <airlines/>
 
+
              <airports/>
Ниже приведен пример кода на языке c#,  позволяющий создать подключение к веб-сервису.  Обратите внимание на то, что после автоматического создания прокси-класса с помощью MS Visial Studio, необходимо внести изменения в сгенерированный код.
+
              <aircrafts/>
 
+
              <flights/>
Нужно указать в качестве базового класса следующий класс:
+
              <roomTypes/>
 
+
              <roomLocations/>
'''Microsoft.Web.Services2.WebServicesClientProtocol '''
+
              <roomViews/>
 
+
              <roomCategories/>
Более подробно можно ознакомится с авторизацией по следующей ссылке:
+
              <roomDescriptions/>
 
+
              <roomAccomodations/>
http://msdn.microsoft.com/en-us/library/ms996952.aspx
+
              <rooms/>
====Пример работа с WSE авторизацией при использовании библиотекой WSE====
+
              <serviceClasses/>
SoapContext reqCtx = sp.RequestSoapContext;
+
              <serviceDescriptions/>
+
              <serviceDescriptions1/>
UsernameToken tok = new UsernameToken("login", "password",  asswordOption.SendHashed);
+
              <serviceDescriptions2/>
reqCtx.Security.Tokens.Add(tok);
+
              <transfers/>
MessageSignature sig = new MessageSignature(tok);
+
              <excursions/>
sig.SignatureOptions = SignatureOptions.IncludeAction;
+
              <transports/>
reqCtx.Security.Elements.Add(sig);
+
              <cabines/>
ServiceClient.ServiceProxy.Version ver = sp.GetVersion();
+
              <ships/>
====Пример работа с WSE авторизацией без использовании библиотеки WSE====
+
              <boardings/>
'''Передача запроса в виде XML'''
+
              <currencies/>
 
+
              <tariffs/>
1.Создание дайджеста пароля:
+
              <tourTypes/>
 
+
            </references>
DateTime dt = DateTime.Now.ToUniversalTime();
+
            <sources>
//Создание строк nonce, passwordDigest
+
              <source name="Название ТО" uri="URL">
private void GetPasswordDigest(out string nonce, out string digest, DateTime dt)
+
                  <quotaServices>
{
+
                    <hotelServices maxQuotaPoint="2015-02-03T09:42:59.347">
DateTime created = dt;
+
                        <hotelService buildingKey="3231" roomDescriptionKey="0" roomTypeKey="0">
//строка, сгенеренная случайным образом. Внимание! Сервис не
+
                          <quotas>
//даст одну и ту же строку передавать несколько раз.
+
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3428" agentKey="0" freeAccess="many" places="499" date="2015-03-01" quoteType="0" checkInStop="false"/>
byte[] baNonce = new byte[20];
+
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3429" agentKey="0" freeAccess="many" places="499" date="2015-03-02" quoteType="0" checkInStop="false"/>
byte[] baCreated;
+
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3430" agentKey="0" freeAccess="many" places="499" date="2015-03-03" quoteType="0" checkInStop="false"/>
Random r = new Random(Environment.TickCount);
+
                          </quotas>
r.NextBytes(baNonce);
+
                        </hotelService>
string cr = String.Format("{0:yyyy-MM-ddTHH:mm:ssZ}", created);
+
                    </hotelServices>
baCreated = Encoding.UTF8.GetBytes(cr);
+
                  </quotaServices>
string password = "pass";
+
                  <packets>
byte[] baPassword = Encoding.UTF8.GetBytes(password);
+
                    <packet>
int baDigestLength = baNonce.Length + baCreated.Length + baPassword.Length;
+
                        <packetHeader>
byte[] baDigest = new byte[baDigestLength];
+
                          <tour key="0"/>
Array.Copy(baNonce, 0, baDigest, 0, baNonce.Length);
+
                          <spo key="0" for="byPerson" validFrom="0001-01-01" validTo="0001-01-01" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
Array.Copy(baCreated, 0, baDigest, baNonce.Length, baCreated.Length);
+
                              <calculatingKeys/>
Array.Copy(baPassword, 0, baDigest, baNonce.Length + baCreated.Length, baPassword.Length);
+
                              <comment/>
byte[] hash = SHA1Managed.Create().ComputeHash(baDigest);
+
                          </spo>
nonce = Convert.ToBase64String(baNonce);
+
                        </packetHeader>
digest = Convert.ToBase64String(hash);
+
                        <services>
}
+
                          <hotelServices/>
 
+
                          <flightServices/>
2.Подпись XML. Обязательно хоть что-нибудь должно быть подписано. Для упрощения задачи можно подписать только wsa:Action.
+
                          <excursionServices/>
 
+
                          <transferServices/>
const string wsaNS = "xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/03/addressing\";
+
                          <cruiseServices/>
const string wsuNS = "xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\";
+
                          <extraServices/>
string action = http://tourml.ru/service/2004-08-13/products/GetVersion;
+
                        </services>
//wsa:Action в канонической форме (с нужными namespace'ами) запишится так
+
                        <prices/>
string strToSign = String.Format("<wsa:Action {0} {1} wsu:Id=\"Id-622cdaf1-1721-4fff-8235-7ace4e4549ab\">{2}</wsa:Action>",wsaNS,wsuNS,action);
+
                        <deletedPrices/>
//DigestValue - считаем от этой строки Base64(SHA1())
+
                    </packet>
signatureInfo += String.Format("<ds:DigestValue>{0}</ds:DigestValue>", GetBase64SHA1(strToSign));
+
                  </packets>
 
+
              </source>
3.SignatureValue - подпись всех элементов SignatureInfo, которые также канонизированы по стандарту xml-exc-c14n.
+
            </sources>
header += String.Format("<SignatureValue>{0}</SignatureValue>", GetBase64SHA1(signatureInfo));
+
        </TourML>
 
+
      </GetStopSalesAndQuotesByHotelsResponse>
Более подробную справочную информацию обо всех этапах формирования XML-запроса для работы с WSE-авторизацией можно получить по следующим ссылкам:
+
  </soap:Body>
http://www.w3.org/TR/xml-exc-c14n/
+
</soap:Envelope>
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf
+
</syntaxhighlight>
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf
+
</TD></TR></TABLE>
http://www.xml.com/pub/a/2001/08/08/xmldsig.html
+
</div></div><br />
http://www.citforum.ru/security/internet/web_service/
 
http://www.faqs.org/rfcs/rfc3075.html
 
====Пример работа без использования WSE авторизации====
 
С целью упрощения авторизации на веб-сервисе (для закачки информации по турам и квотам) из языков программирования типа PHP, в сервисе предусмотрена возможность передачи логина и пароля через заголовок WebRequest и параметрами через POST запрос. Данная возможность является опциональной и включается с помощью настройки в конфигурационном файле web-сервиса.
 
<add key="allowSimpleAuth" value="true"/>
 
'''Внимание! Настройка добавляется в web.config web-сервиса'''
 
=====Запрос с использованием GET=====
 
При вызове метода веб-сервиса можно в качестве параметров передать информацию о логине и пароле
 
 
 
Login=test1&Password=qUqP5cyxm6YcTAhz05Hph5gvu9M=
 
 
 
где в качестве пароля выступает Base64(SHA1(‘пароль’, true))
 
=====Запрос с использованием SOAP=====
 
В каждом методе веб-сервиса есть описание заголовка и Soap-запроса к этому методу. Для правильной работы необходимо использовать протокол SOAP 1.1.<br />
 
Например, для метода GetValidTourList:<br />
 
Заголовок:
 
 
 
POST /Service.asmx HTTP/1.1
 
Host: localhost
 
Content-Type: text/xml; charset=utf-8
 
Content-Length: length
 
SOAPAction: http://tourml.ru/service/2004-08-13/products/GetValidTourListFrom
 
 
 
Для передачи логина и пароля в заголовок добавляются следующие элементы:
 
Login      : логин
 
Password: Base64(SHA1(пароль))
 
 
 
Soap запрос:
 
 
 
<?xml version="1.0" encoding="utf-8"?>
 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 
  <soap:Body>
 
    <GetValidTourListFrom xmlns="http://tourml.ru/service/2004-08-13/products">
 
      <checkPoint>dateTime</checkPoint>
 
    </GetValidTourListFrom>
 
  </soap:Body>
 
</soap:Envelope>
 
 
 
=====Пример упрощенной авторизации на языке c#=====
 
 
 
<syntaxhighlight lang="cpp">
 
const string xsiNS = "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"";
 
const string xsdNS = "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"";
 
const string soapNS = "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\";
 
 
 
string message = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
 
message += String.Format("<soap:Envelope {0} {1} {2}>", xsiNS, xsdNS, soapNS);
 
message += "<soap:Body><GetValidTourListFrom xmlns=\"http://tourml.ru/service/2004-08-13/products\"><checkPoint>2009-01-06</checkPoint></GetValidTourListFrom></soap:Body></soap:Envelope>";
 
 
 
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://localhost:3153/service.asmx");
 
wr.Method = "POST";
 
wr.ContentType = "text/xml; charset=utf-8";
 
  
//Прописываем Soap запрос
+
====Метод GetStopSalesAndQuotesCompressed====
Stream connectionStream = wr.GetRequestStream();
+
Данный метод возвращает информацию по квотам и Stop-Sale для версии 9.2 (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).<br />
StreamWriter sw = new StreamWriter(connectionStream, Encoding.UTF8);
+
Возвращается информацию по квотам (наличие мест, количество мест, Stop-Sale, запреты на заезд) по всему услугам в туре.<br />
sw.Write(message);
+
Список принимаемых параметров:
sw.Close();
+
*сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям. Дата создания квоты или дата последнего изменения должны быть больше или равны дате выгрузки информации.
//Прописываем логин и пароль
+
В результате пользователь получает информацию о наличии мест по переданному ключу отеля в сжатом виде.
wr.Headers.Add("Login", "test");
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
wr.Headers.Add("Password", Convert.ToBase64String(SHA1Managed.Create().ComputeHash(Encoding.UTF8.GetBytes("test"))));
+
<div class="mw-collapsible-content">
wr.Headers.Add("SOAPAction", "http://tourml.ru/service/2004-08-13/products/GetValidTourListFrom");
+
Вызов метода GetStopSalesAndQuotesCompressed с параметром сheckPoint=2015-01-01
WebResponse resp = wr.GetResponse();
+
 
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
 +
  <soapenv:Header/>
 +
  <soapenv:Body>
 +
      <prod:GetStopSalesAndQuotesCompressed>
 +
        <prod:checkPoint>2015-01-01</prod:checkPoint>
 +
      </prod:GetStopSalesAndQuotesCompressed>
 +
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
Возвращаемый результат метода GetStopSalesAndQuotesCompressed
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetStopSalesAndQuotesCompressedResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:fbdfe63c-8881-419c-8bd0-0d6834b2a7ff</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:80974673-f1f8-4a9a-8f98-7a96526b1167</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-61bdb8cc-520b-4d04-b586-7d747b3e19ba">
 +
            <wsu:Created>2015-02-10T09:56:06Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T10:01:06Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
  </soap:Header>
 +
  <soap:Body>
 +
      <GetStopSalesAndQuotesCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <GetStopSalesAndQuotesCompressedResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
 +
        </GetStopSalesAndQuotesCompressedResult>
 +
      </GetStopSalesAndQuotesCompressedResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
==Вызов методов веб-сервиса. Возможные проблемы при авторизации==
+
===Актуализация цены и бронирование (BOO)===
Если метод вызывается через браузер и если Вы используете браузер Internet Explorer, то при возникновении любой ошибки на этапе авторизации возвращается HTTP 500 - Внутренняя ошибка сервера. Internet Explorer скрывает текст возникшей ошибки. В данном случае стоит воспользоваться каким-либо альтернативным браузером (Opera, Mozilla), где сообщение от сервера выведется на экран. Также текст ошибок можно получать, воспользовавшись логгерами Http, которые отслеживают запросы\ответы по этому протоколу. Логгерами можно воспользоваться также при обращениях к сервису с клиента.
+
====Метод CheckBooking====
{| border="1"
+
Данный метод осуществляет проверку возможности бронирования рассчитанного прайса.<br />
|-
+
Возвращает услуги по прайсу, их статусы (есть или нет мест), актуальную цену путевки.<br />
|Запрос
+
Список принимаемых параметров:
|Возникшая ошибка
+
*XML документ, содержащий заявку, в которой указаны дата заезда, ключ агентства, ключ рассчитанного тура, туристы.
|Пояснение
 
|-
 
|GetStopSalesAndQuotes(2009-05-05)
 
|System.Data.SqlClient.SqlException: Cannot open database AvalonTest requested by the login. The login failed.
 
Login failed for user 'ESYSTEM'.
 
  
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
+
В результате пользователь получает XML документ, содержащий договор.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода CheckBooking можно посмотреть здесь [[Мастер-Web:Дополнительный модуль Сервис TourML Приложение B#Функция CheckBooking|"Функция CheckBooking"]]
 +
</div></div><br />
 +
====Метод CreateBooking====
 +
Данный метод осуществляет бронирование путевки по рассчитанному прайсу.<br />
 +
Возвращает услуги по прайсу, их статусы (есть или нет мест), актуальную цену путевки.<br />
 +
Список принимаемых параметров:
 +
*XML документ, содержащий заявку, в которой указаны дата заезда, ключ агентства, ключ рассчитанного тура, туристы.
  
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
+
В результате пользователь получает XML документ, содержащий договор
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода CreateBooking производится аналогично вызову метода [[Мастер-Web:Дополнительный модуль Сервис TourML Приложение B#Функция CheckBooking|CheckBooking]]
 +
</div></div><br />
 +
====Метод GetAgencies====
 +
Данный метод возвращает список агентств по определенному фильтру.<br />
 +
Список принимаемых параметров:
 +
*agencyName - название агентства (необязательный параметр)
 +
*cityCode - ключ города
 +
*countryCode - ключ страны
 +
*phoneNumber - телефонный код города
 +
*mail - электронная почта (необязательный параметр)
 +
В результате пользователь получает список агентств по передаваемым параметрам. <br />
 +
''Внимание!'' Данный метод не может быть вызван из браузера, так как принимает в качестве параметра сложный тип.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetAgencies agencyName=?; cityCode=63; countryCode=3; phoneNumber=+7111; mail=?
  
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
+
<syntaxhighlight lang="xml" enclose="div">
at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)…
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products" xmlns:ns="http://tourml.ru/AgenciesArray/2004-09-28">
 
+
  <soapenv:Header/>
 
+
  <soapenv:Body><prod:GetAgencies>
|Проблема на стороне оператора. Веб-сервис не может получить доступ к базе данных под учетной записью, указанной в web.config веб-сервиса.
+
        <!--Optional:-->
|-
+
        <ns:agencyInfo agencyName="?">
|GetSPOPageByKey(253,0,5000)
+
            <!--Zero or more repetitions:-->
|System.Data.SqlClient.SqlException: The transaction log for database 'AvalonTest' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
+
            <ns:phones cityCode="63" countryCode="3" phoneNumber="+7111"/>
|Проблема на стороне оператора. Требуется передать указанную ошибку администратору базы данных оператора.
+
            <!--Optional:-->
|-
+
            <ns:mails>
|GetSPOPageByKey(253,0,5000)
+
              <!--Zero or more repetitions:-->
|System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Серверу не удалось обработать запрос. ---> System.Data.SqlClient.SqlException: Could not find stored procedure 'sp_GetPricePage'.
+
              <ns:mail>?</ns:mail>
 +
            </ns:mails>
 +
        </ns:agencyInfo>
 +
      </prod:GetAgencies>
 +
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
Возвращаемый результат метода GetAgencies
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetAgenciesResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:9acfc272-40b2-43cf-9cea-4aa6ea9278fc</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:9e96e7cc-86c6-4e68-901c-e4522568988a</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-185aa0ae-3182-45ac-a6aa-fe24d5f68683">
 +
            <wsu:Created>2015-02-10T10:01:23Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T10:06:23Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
  </soap:Header>
 +
  <soap:Body>
 +
      <GetAgenciesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <GetAgenciesResult>
 +
            <agencies xmlns="http://tourml.ru/AgenciesArray/2004-09-28">
 +
              <agency>
 +
                  <agencyInfo agencyName="Knokke" cityName="Брюссель" juridicalAgencyName="Knokke">
 +
                    <mails>
 +
                        <mail/>
 +
                    </mails>
 +
                  </agencyInfo>
 +
                  <credentials agencyId="10763" agreementNumber="" expirationDate="2016-02-10T00:00:00+03:00"/>
 +
              </agency>
 +
            </agencies>
 +
        </GetAgenciesResult>
 +
      </GetAgenciesResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
+
====Метод GetAgreementCredentials====
 +
Данный метод возвращает ключ агентства и номер договора по логину и паролю онлайн пользователя.<br />
 +
Список принимаемых параметров:
 +
*agencyLogin – имя пользователя
 +
*agencyPassword – пароль пользователя
 +
В результате пользователь получает ключ агентства по принадлежащим ему логин/пароль онлайн пользователя.  
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetAgreementCredentials с параметрами: agencyLogin=mega; agencyPassword=mega
  
в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
+
<syntaxhighlight lang="xml" enclose="div">
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
 
+
  <soapenv:Header/>
в System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader
+
  <soapenv:Body>
 
+
      <prod:GetAgreementCredentials>
|В базе данных оператора отсутствует хранимая процедура 'sp_GetPricePage'. Проблема на стороне оператора. Требуется передать указанную ошибку администратору базы данных оператора. По поводу обновления или установки данной процедуры оператор может связаться со службой поддержки компании Мегатек.
+
        <!--Optional:-->
|
+
        <prod:agencyLogin>mega</prod:agencyLogin>
|-
+
        <!--Optional:-->
|GetSPOPageByKey(253,0,5000) (При вызове из браузера)
+
        <prod:agencyPassword>mega</prod:agencyPassword>
|System.Web.Services.Protocols.SoapException: Username was not specified
+
      </prod:GetAgreementCredentials>
|Указанный метод требует указание логина\пароля. И не может быть вызван из браузера напрямую.
+
  </soapenv:Body>
|
+
</soapenv:Envelope>
|-
+
</syntaxhighlight>
|GetSPOPageByKey(253,0,5000)
+
</TD></TR></TABLE>
|System.Exception: WSE authorization error 565
+
Возвращаемый результат метода GetAgreementCredentials
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetAgreementCredentialsResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:cdb7f4db-3719-4443-9df1-ff54a801761b</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:04f7b308-cafe-4205-8b07-72f6494e72e3</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-0f7d7066-3f7e-481e-91b2-fd29cf54f55f">
 +
            <wsu:Created>2015-02-10T10:10:25Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T10:15:25Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
  </soap:Header>
 +
  <soap:Body>
 +
      <GetAgreementCredentialsResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <GetAgreementCredentialsResult>
 +
            <credentials agencyId="10762" agreementNumber="555" expirationDate="2016-05-01T00:00:00" xmlns="http://tourml.ru/agencies/2004-09-28"/>
 +
        </GetAgreementCredentialsResult>
 +
      </GetAgreementCredentialsResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
 +
====Метод GetCountries====
 +
Данный метод возвращает список стран, по которым имеются туры. В каждой стране – список городов, на которые имеются квоты.<br />
 +
Список принимаемых параметров:
 +
*параметров нет
  
Или
+
В результате пользователь получает список стран, по которым в базе данных есть туры.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetCountries
  
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
 +
  <soapenv:Header/>
 +
  <soapenv:Body>
 +
      <prod:GetCountries/>
 +
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
Возвращаемый результат метода GetCountries
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetCountriesResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:17f68ade-788f-4bcd-9d79-12aef5f9c32b</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:c7ae0b9b-0055-474f-af27-081b1553756c</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-99d28078-908a-46d1-a62a-4a8a7a0d32ae">
 +
            <wsu:Created>2015-02-10T10:14:10Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T10:19:10Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
  </soap:Header>
 +
  <soap:Body>
 +
      <GetCountriesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <GetCountriesResult>
 +
            <Country key="3" name="Бельгия">
 +
              <Cities xmlns="http://tourml.ru/citylist/2013-01-29">
 +
                  <City key="63" name="Брюссель"/>
 +
              </Cities>
 +
            </Country>
 +
        </GetCountriesResult>
 +
      </GetCountriesResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
System.Web.Services.Protocols.SoapHeaderException: Microsoft.Web.Services2.Security.SecurityFault:
+
====Метод ValidatePriceServices====
 
+
Данный метод проверяет валидность услуг на даты заездов.<br />
The security token could not be authenticated or authorized --->
+
Список принимаемых параметров:
 
+
* priceKey - ключ цены
System.ArgumentNullException: Значение не может быть неопределенным.
+
* anyType - ключ услуги
 
+
* checkIn - дата начала услуги
Имя параметра: secret
 
 
 
|Не удалось авторизоваться с переданным логином\паролем.
 
|-
 
|GetSPOPageByKey(253,0,5000)
 
|System.Web.Services.Protocols.SoapHeaderException: Microsoft.Web.Services2.Security.SecurityFault:
 
The security token could not be authenticated or authorized ---> System.Exception: Password has expired.
 
|Истек срок действия переданного логина.
 
|
 
|-
 
|GetStopSalesAndQuotes(2009-05-05)
 
|System.Web.Services.Protocols.SoapException: You are not allowed to use this function
 
|С переданным логином\паролем нельзя вызвать эту функцию. В списке групп функций, доступных по этому логину, отсутствует группа с вызываемой процедурой.
 
|}
 
==Функции загрузки информации о турах==
 
===Формат TourML===
 
TourML - xml-документ, в котором передается информация о турах, ценах, услугах, входящих в эти цены, квотах.
 
  
Формат TourML был разработан для  того, чтобы стать единым “языком”, который будут понимать различные системы и программные средства, работающие в туристической сфере.
+
В результате пользователь получает проверку валидности услуги на указанную дату.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода ValidatePriceServices с параметрами: priceKey=11342; checkIn=2015-01-30
  
====Описание формата TourML====
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Структурно xml-документ разделен на 3 части.
+
<syntaxhighlight lang="xml" enclose="div">
#header – заголовок документа
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
#references (необязательна) – секция справочников
+
  <soapenv:Header/>
#sources – секция цен
+
  <soapenv:Body>
*header обязателен, но содержит необязательную для синхронизации информацию о том, кто и с помощью какой реализации сформировал документ.
+
      <prod:ValidatePriceServices>
*name (обязателен)– строка, содержащая значение, указывающее на владельца документа (но не информации, которая в нем находится). Обычно это название компании, которая формирует документ. Как правило, не используется при синхронизации.
+
        <prod:priceKey>11342</prod:priceKey>
*uri (необязателен)– уникальный идентификатор владельца документа.
+
        <!--Optional:-->
Элемент loadTime содержит следующие данные:
+
        <prod:ids>
*timeValue - информация о времени загрузки (не используется)
+
            <!--Zero or more repetitions:-->
*lastKey - для постраничной загрузки максимальный (наибольший) ключ тура, который передается для выгрузки следующей страницы
+
            <prod:anyType>507</prod:anyType>
<header name="ООО МегаТур" uri="www.megatour.com" xmlns="http://tourml.ru/products/2004-04-19">
+
        </prod:ids>
   <loadTime timeValue="100" xmlns="http://www.megatec.ru/tourml/extensions" lastKey="3451235"/>
+
        <prod:checkIn>2015-01-30</prod:checkIn>
</header>
+
      </prod:ValidatePriceServices>
Элемент references содержит информацию об используемых при описании цен, СПО или квот справочниках. Этот элемент является необязательным, однако, практически всегда используется, так как трудно описать информацию не сославшись как какой-либо справочник. Например, при описании СПО, необходимо ссылаться на страны, валюту и т.д. Таким образом, элементы справочников должны присутствовать в документе практически всегда для сохранения ссылочной целостности.
+
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
Возвращаемый результат метода ValidatePriceServices
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/ValidatePriceServicesResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:aae96d14-e941-4562-8a95-ef09429d8136</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:82511b1a-4d60-4849-905a-2bd2c40d878a</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-bc96cff6-f39e-460c-9752-2fa5e756e610">
 +
            <wsu:Created>2015-02-10T10:21:17Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T10:26:17Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
  </soap:Header>
 +
   <soap:Body>
 +
      <ValidatePriceServicesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <ValidatePriceServicesResult>false</ValidatePriceServicesResult>
 +
      </ValidatePriceServicesResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
Элементы справочников, используемые во всем документе, описываются только в данном разделе.
+
===Работа с заявкой (AGR)===
 +
====Метод CancelAgreement====
 +
Данный метод отправляет запрос на аннуляцию путевки. <br />
 +
Список принимаемых параметров:
 +
*agencyId - ключ туристического агентства
 +
*agreementNumber – ключ договора путевки
 +
В результате пользователь получает отправленный запрос на аннуляцию путевки. При передаче agencyId=0 (индивидульно), метод отрабатывать не будет, так как предназначен для работы с агентствами.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода CancelAgreement с параметрами: agencyId=10762; agreementNumber=40216
  
Уникальность первичных ключей элементов справочников поддерживается в пределах элемента references.
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
 +
  <soapenv:Header/>
 +
  <soapenv:Body>
 +
      <prod:CancelAgreement>
 +
        <!--Optional:-->
 +
        <prod:agencyId>10762</prod:agencyId>
 +
        <!--Optional:-->
 +
        <prod:agreementNumber>40216</prod:agreementNumber>
 +
      </prod:CancelAgreement>
 +
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
Возвращаемый результат метода CancelAgreement
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns="http://tourml.ru/products/2004-04-19">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/CancelAgreementResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:1fe7fd85-ae84-4163-afd4-5c2afbe8606a</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:1a7d6dc3-032b-4972-857c-a0d171ccf13e</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-cb300e73-1dd2-4a43-9247-258cbfd45ab8">
 +
            <wsu:Created>2015-02-10T10:52:40Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T10:57:40Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
  </soap:Header>
 +
  <soap:Body>
 +
      <CancelAgreementResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <CancelAgreementResult date="0001-01-01" time="00:00:00.0000000+03:00" xmlns="http://tourml.ru/bookings/2004-09-28">
 +
            <agreement>
 +
              <header uri="" checkin="2015-02-01" buyerPerson="0" mainPerson="0" agreementKey="40216" agreementCode="BE50201002" country="Бельгия" city="Брюссель" days="4" quantity="2" price="640" pricePaid="0" currency="EU" creationDate="2015-01-27" payUntil="0001-01-01" status="waitcancel" errorStatus="unknown" commission="0">
 +
                  <comment/>
 +
              </header>
 +
              <packets>
 +
                  <packet id="_1">
 +
                    <inline>
 +
                        <TourML version="1.0" date="2015-02-10" time="13:52:40">
 +
                          <header name="Фирма-владелец" uri="" vendor="Megatec" xmlns="http://tourml.ru/products/2004-04-19"/>
 +
                          <references xmlns="http://tourml.ru/products/2004-04-19">
 +
                              <countries>
 +
                                <country key="460" name="Россия" nameLat="Russia"/>
 +
                                <country key="3" name="Бельгия" nameLat="Belgium"/>
 +
                              </countries>
 +
                              <resorts/>
 +
                              <cities>
 +
                                <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
 +
                                <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
 +
                              </cities>
 +
                              <categories>
 +
                                <category key="707724292" name="4*" nameLat="4*"/>
 +
                              </categories>
 +
                              <hotels>
 +
                                <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
 +
                              </hotels>
 +
                              <buildings>
 +
                                <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
 +
                              </buildings>
 +
                              <airlines>
 +
                                <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
 +
                              </airlines>
 +
                              <airports>
 +
                                <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
 +
                                <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
 +
                              </airports>
 +
                              <aircrafts>
 +
                                <aircraft key="4" name="aerobus A-310" code="310"/>
 +
                              </aircrafts>
 +
                              <flights>
 +
                                <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
 +
                                    <flightTime key="1" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
 +
                                </flight>
 +
                                <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
 +
                                    <flightTime key="2" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
 +
                                </flight>
 +
                              </flights>
 +
                              <roomTypes>
 +
                                <roomType key="38" name="2A" nameLat="2A" code="2A" numBed="2" numExBed="0"/>
 +
                              </roomTypes>
 +
                              <roomLocations/>
 +
                              <roomViews/>
 +
                              <roomCategories>
 +
                                <roomCategory key="20" name="Standart" nameLat="Standart" code="STD"/>
 +
                              </roomCategories>
 +
                              <roomDescriptions>
 +
                                <roomDescription key="20" catKey="20"/>
 +
                              </roomDescriptions>
 +
                              <roomAccomodations>
 +
                                <roomAccomodation key="325" name="2A" nameLat="2A" code="2A" numBed="2">
 +
                                    <adult place="0" order="0"/>
 +
                                    <adult place="0" order="0"/>
 +
                                </roomAccomodation>
 +
                              </roomAccomodations>
 +
                              <rooms>
 +
                                <room key="1116" typeKey="38" roomDescKey="20" accomodationKey="325"/>
 +
                              </rooms>
 +
                              <serviceClasses/>
 +
                              <serviceDescriptions/>
 +
                              <serviceDescriptions1/>
 +
                              <serviceDescriptions2/>
 +
                              <transfers/>
 +
                              <excursions/>
 +
                              <transports/>
 +
                              <cabines/>
 +
                              <ships/>
 +
                              <boardings/>
 +
                              <currencies>
 +
                                <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
 +
                              </currencies>
 +
                              <tariffs>
 +
                                <tariff key="89" name="Экономический класс" nameLat="Coach economy" code="Y"/>
 +
                              </tariffs>
 +
                              <tourTypes>
 +
                                <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
 +
                              </tourTypes>
 +
                          </references>
 +
                          <sources xmlns="http://tourml.ru/products/2004-04-19">
 +
                              <source name="Фирма-владелец" uri="http://">
 +
                                <packets>
 +
                                    <packet>
 +
                                      <packetHeader>
 +
                                          <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
 +
                                          <spo key="192" for="byPerson" validFrom="2015-02-01" validTo="2015-02-04" currencyKey="2" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
 +
                                            <calculatingKeys/>
 +
                                            <dates>
 +
                                                <date>2015-02-01T00:00:00</date>
 +
                                            </dates>
 +
                                            <comment/>
 +
                                          </spo>
 +
                                      </packetHeader>
 +
                                      <services>
 +
                                          <hotelServices>
 +
                                            <hotelService mealKey="10" roomKey="1116" buildingKey="3231">
 +
                                                <variant providerKey="0" dayBeg="1" nights="3" days="4" men="2" id="_201682">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Заказ на бронирование" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </hotelService>
 +
                                          </hotelServices>
 +
                                          <flightServices>
 +
                                            <flightService tariffKey="89" flightKey="525">
 +
                                                <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" id="_201681">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </flightService>
 +
                                            <flightService tariffKey="89" flightKey="524">
 +
                                                <variant providerKey="0" dayBeg="4" nights="0" days="0" men="2" id="_201683">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </flightService>
 +
                                          </flightServices>
 +
                                          <excursionServices/>
 +
                                          <transferServices/>
 +
                                          <cruiseServices/>
 +
                                          <extraServices/>
 +
                                      </services>
 +
                                      <prices>
 +
                                          <serviceSet ids="_201681 _201682 _201683">
 +
                                            <price gross="640">
 +
                                                <date key="40216" from="2015-02-01" to="0001-01-01"/>
 +
                                            </price>
 +
                                          </serviceSet>
 +
                                      </prices>
 +
                                    </packet>
 +
                                </packets>
 +
                              </source>
 +
                          </sources>
 +
                        </TourML>
 +
                    </inline>
 +
                  </packet>
 +
              </packets>
 +
              <persons/>
 +
            </agreement>
 +
        </CancelAgreementResult>
 +
      </CancelAgreementResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
====Метод GetAgreementsByCode====
 +
Данный метод возвращает список путевок по кодам.<br />
 +
Список принимаемых параметров:
 +
*agency - ключ агентства
 +
*codes - номер путевки
 +
В результате пользователь получает информацию по выбранной путевке.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetAgreementsByCode с параметрами agency=10762; codes=BE50201002
  
В справочниках содержатся следующие разделы
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
+
<syntaxhighlight lang="xml" enclose="div">
*countries – раздел, описывающий страны
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
*resorts – раздел, описывающий регионы
+
  <soapenv:Header/>
*cities – раздел, описывающий города
+
  <soapenv:Body>
*categories – раздел, описывающий категории звездности отелей и кают
+
      <prod:GetAgreementsByCode>
*hotels – раздел, описывающий отели
+
        <!--Optional:-->
*buildings – раздел, описывающий корпуса отелей
+
        <prod:agency>10762</prod:agency>
*airlines – раздел, описывающий авиакомпании
+
        <!--Optional:-->
*airports – раздел, описывающий аэропорты
+
        <prod:codes>
*aircrafts – раздел, описывающий авиасуда
+
            <!--Zero or more repetitions:-->
*flights – раздел, описывающий перелеты
+
            <prod:string>BE50201002</prod:string>
*roomTypes – раздел, описывающий типы номеров
+
        </prod:codes>
*roomLocations – раздел, описывающий расположение номера
+
      </prod:GetAgreementsByCode>
*roomViews – раздел, описывающий вид из номера
+
  </soapenv:Body>
*roomCategories – раздел, описывающий уровень комфортности
+
</soapenv:Envelope>
*roomDescriptions – используемые комбинации расположения номера, вида из номера и уровня комфортности номера
+
</syntaxhighlight>
*roomAccomodations – раздел, описывающий проживание в номере
+
</TD></TR></TABLE>
*rooms – используемые комбинации типов номеров, проживания и описания номера (roomDescriptions)
+
Возвращаемый результат метода GetAgreementsByCode
*serviceClasses – раздел, описывающий типы услуг
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
*serviceDescriptions – раздел, описывающий дополнительные услуги
+
<syntaxhighlight lang="xml" enclose="div">
*serviceDescriptions1– раздел, описывающий дополнительные услуги
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns="http://tourml.ru/products/2004-04-19">
*serviceDescriptions2– раздел, описывающий дополнительные услуги
+
  <soap:Header>
*transfers – раздел, описывающий услуги переезда
+
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetAgreementsByCodeResponse</wsa:Action>
*excursions – раздел, описывающий экскурсионные услуги
+
      <wsa:MessageID>uuid:2066fb3d-778c-4c31-9229-809eb7811e33</wsa:MessageID>
*transports – раздел, описывающий транспорт
+
      <wsa:RelatesTo>uuid:b77371dc-547b-4a3f-8050-2ace1e6f8a96</wsa:RelatesTo>
*cabines – раздел, описывающий каюты
+
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
*ships – раздел, описывающий морские суда
+
      <wsse:Security>
*boardings – питание
+
        <wsu:Timestamp wsu:Id="Timestamp-2ae91584-9612-414d-8dc4-46d3a3506d2c">
*currencies – валюта
+
            <wsu:Created>2015-02-10T11:12:48Z</wsu:Created>
*tariffs – тарифа перелетов
+
            <wsu:Expires>2015-02-10T11:17:48Z</wsu:Expires>
*tourTypes – типы туров
+
        </wsu:Timestamp>
Пример - справочник городов:
+
      </wsse:Security>
    <countries>
+
  </soap:Header>
      <country key="29" name="Греция" nameLat="Greece" code="GRC" />
+
  <soap:Body>
      <country key="375" name="Россия" nameLat="Russia" code="RUS" />
+
      <GetAgreementsByCodeResponse xmlns="http://tourml.ru/service/2004-08-13/products">
      <country key="99999999" fake="true" stdKey="UNKNOWN" name="UNKNOWN" nameLat="UNKNOWN" code="UNKNOWN" />
+
        <GetAgreementsByCodeResult date="0001-01-01" time="00:00:00.0000000+03:00" xmlns="http://tourml.ru/bookings/2004-09-28">
    </countries>
+
            <agreement>
У каждого элемента из указанных выше разделов существуют атрибуты:
+
              <header uri="" checkin="2015-02-01" buyerPerson="0" mainPerson="0" agreementKey="40216" agreementCode="BE50201002" country="Бельгия" city="Брюссель" days="4" quantity="2" price="640" pricePaid="0" currency="EU" creationDate="2015-01-27" payUntil="0001-01-01" status="inWork" errorStatus="unknown" commission="0">
*key (обязателен) - ключ в таблице соответствующего справочника.
+
                  <comment/>
*fake (необязателен) - указывает на то, что первичный ключ является фиктивным (если значение true). Даже в том случае, когда первичный ключ является фиктивным, он должен быть уникален. Обычно ключ (key) такой фиктивной записи равен значению 99999999 или 0. Все остальные атрибуты заполняются значением UNKNOWN.
+
              </header>
*stdKey (необязателен) – стандартный ключ элемента справочника. Используется в тех случаях, когда принимающая сторона заранее не имеет данных справочников и не может синхронизировать запись по идентификатору. Реализация может при синхронизации отдавать приоритет атрибуту stdKey перед атрибутами code, name и nameLat, однако вследствие того, что туроператоры не заполняют это поле надлежащим образом, как правило, в нем содержится мусор не имеющий ничего общего со стандартным ключом (ISO кодом).  
+
              <packets>
 +
                  <packet id="_1">
 +
                    <inline>
 +
                        <TourML version="1.0" date="2015-02-10" time="14:12:48">
 +
                          <header name="Фирма-владелец" uri="" vendor="Megatec" xmlns="http://tourml.ru/products/2004-04-19"/>
 +
                          <references xmlns="http://tourml.ru/products/2004-04-19">
 +
                              <countries>
 +
                                <country key="460" name="Россия" nameLat="Russia"/>
 +
                                <country key="3" name="Бельгия" nameLat="Belgium"/>
 +
                              </countries>
 +
                              <resorts/>
 +
                              <cities>
 +
                                <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
 +
                                <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
 +
                              </cities>
 +
                              <categories>
 +
                                <category key="707724292" name="4*" nameLat="4*"/>
 +
                              </categories>
 +
                              <hotels>
 +
                                <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
 +
                              </hotels>
 +
                              <buildings>
 +
                                <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
 +
                              </buildings>
 +
                              <airlines>
 +
                                <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
 +
                              </airlines>
 +
                              <airports>
 +
                                <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
 +
                                <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
 +
                              </airports>
 +
                              <aircrafts>
 +
                                <aircraft key="4" name="aerobus A-310" code="310"/>
 +
                              </aircrafts>
 +
                              <flights>
 +
                                <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
 +
                                    <flightTime key="1" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
 +
                                </flight>
 +
                                <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
 +
                                    <flightTime key="2" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
 +
                                </flight>
 +
                              </flights>
 +
                              <roomTypes>
 +
                                <roomType key="38" name="2A" nameLat="2A" code="2A" numBed="2" numExBed="0"/>
 +
                              </roomTypes>
 +
                              <roomLocations/>
 +
                              <roomViews/>
 +
                              <roomCategories>
 +
                                <roomCategory key="20" name="Standart" nameLat="Standart" code="STD"/>
 +
                              </roomCategories>
 +
                              <roomDescriptions>
 +
                                <roomDescription key="20" catKey="20"/>
 +
                              </roomDescriptions>
 +
                              <roomAccomodations>
 +
                                <roomAccomodation key="325" name="2A" nameLat="2A" code="2A" numBed="2">
 +
                                    <adult place="0" order="0"/>
 +
                                    <adult place="0" order="0"/>
 +
                                </roomAccomodation>
 +
                              </roomAccomodations>
 +
                              <rooms>
 +
                                <room key="1116" typeKey="38" roomDescKey="20" accomodationKey="325"/>
 +
                              </rooms>
 +
                              <serviceClasses/>
 +
                              <serviceDescriptions/>
 +
                              <serviceDescriptions1/>
 +
                              <serviceDescriptions2/>
 +
                              <transfers/>
 +
                              <excursions/>
 +
                              <transports/>
 +
                              <cabines/>
 +
                              <ships/>
 +
                              <boardings/>
 +
                              <currencies>
 +
                                <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
 +
                              </currencies>
 +
                              <tariffs>
 +
                                <tariff key="89" name="Экономический класс" nameLat="Coach economy" code="Y"/>
 +
                              </tariffs>
 +
                              <tourTypes>
 +
                                <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
 +
                              </tourTypes>
 +
                          </references>
 +
                          <sources xmlns="http://tourml.ru/products/2004-04-19">
 +
                              <source name="Фирма-владелец" uri="http://">
 +
                                <packets>
 +
                                    <packet>
 +
                                      <packetHeader>
 +
                                          <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
 +
                                          <spo key="192" for="byPerson" validFrom="2015-02-01" validTo="2015-02-04" currencyKey="2" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
 +
                                            <calculatingKeys/>
 +
                                            <dates>
 +
                                                <date>2015-02-01T00:00:00</date>
 +
                                            </dates>
 +
                                            <comment/>
 +
                                          </spo>
 +
                                      </packetHeader>
 +
                                      <services>
 +
                                          <hotelServices>
 +
                                            <hotelService mealKey="10" roomKey="1116" buildingKey="3231">
 +
                                                <variant providerKey="0" dayBeg="1" nights="3" days="4" men="2" id="_201682">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Заказ на бронирование" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </hotelService>
 +
                                          </hotelServices>
 +
                                          <flightServices>
 +
                                            <flightService tariffKey="89" flightKey="525">
 +
                                                <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" id="_201681">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </flightService>
 +
                                            <flightService tariffKey="89" flightKey="524">
 +
                                                <variant providerKey="0" dayBeg="4" nights="0" days="0" men="2" id="_201683">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </flightService>
 +
                                          </flightServices>
 +
                                          <excursionServices/>
 +
                                          <transferServices/>
 +
                                          <cruiseServices/>
 +
                                          <extraServices/>
 +
                                      </services>
 +
                                      <prices>
 +
                                          <serviceSet ids="_201681 _201682 _201683">
 +
                                            <price gross="640">
 +
                                                <date key="40216" from="2015-02-01" to="0001-01-01"/>
 +
                                            </price>
 +
                                          </serviceSet>
 +
                                      </prices>
 +
                                    </packet>
 +
                                </packets>
 +
                              </source>
 +
                          </sources>
 +
                        </TourML>
 +
                    </inline>
 +
                  </packet>
 +
              </packets>
 +
              <persons/>
 +
            </agreement>
 +
        </GetAgreementsByCodeResult>
 +
      </GetAgreementsByCodeResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
Также могут включать в себя дополнительные атрибуты типа Name, NameLat, Code и др.
+
====Метод GetAgreementsByKeys====
 +
Данный метод возвращает список путевок по ключам.<br />
 +
Список принимаемых параметров:
 +
*codes - ключ договора
 +
В результате пользователь получает информацию по выбранному ключу договора
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetAgreementsByKeys с параметром codes=40216
  
Элемент sources может содержать информацию о квотах или о ценах какого-либо тура.
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Информация о ценах содержится в элементах packet, который состоит из 3-х частей:
+
<syntaxhighlight lang="xml" enclose="div">
*packetHeader - общая информация о туре и СПО
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
*services - информация об услугах, включенных в цены
+
   <soapenv:Header/>
*prices - цены и даты заезда + ссылки на услуги
+
  <soapenv:Body>
*deletedPrices – удаленные цены и даты заезда + ссылки на услуги.
+
      <prod:GetAgreementsByKeys>
packetHeader имеет следующую структуру:
+
        <!--Optional:-->
<packetHeader>
+
        <prod:codes>
  <tour key="2054" name="Халкидики" tourTypeKey="2" countryKey="29" />
+
            <!--Zero or more repetitions:-->
   <spo key="3206" for="byRoom" validFrom="2009-09-25" validTo="2009-10-07" currencyKey="2" state="Created" issue="2009-08-03T13:04:06.0000000+04:00">
+
            <prod:int>40216</prod:int>
    <dates />
+
        </prod:codes>
    <comment />
+
      </prod:GetAgreementsByKeys>
  </spo>
+
   </soapenv:Body>
   <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
+
</soapenv:Envelope>
    <priceQuantity>3736</priceQuantity>
+
</syntaxhighlight>
  </spoInfo>
+
</TD></TR></TABLE>
</packetHeader>
+
Возвращаемый результат метода GetAgreementsByKeys
Где:
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
*tour key - ключ тура
+
<syntaxhighlight lang="xml" enclose="div">
*name - название тура
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns="http://tourml.ru/products/2004-04-19">
*tourTypeKey, countryKey - тип тура и страна - описаны в разделе справочники.
+
  <soap:Header>
*spo key - ключ соответствующего СПО
+
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetAgreementsByKeysResponse</wsa:Action>
*for="byRoom" (или "byPerson") - показывает за что указаны цены - за комнату или за человека.
+
      <wsa:MessageID>uuid:b1cc99a4-d23c-4583-9168-6f56adf574e8</wsa:MessageID>
*validFrom="2009-09-25" validTo="2009-10-07" - промежуток времени, на который распространяется данное СПО
+
      <wsa:RelatesTo>uuid:5e132e43-23ed-49ae-8dc4-246d1f8545a4</wsa:RelatesTo>
*currencyKey - валюта, в которой заведены цены - описана в разделе справочники.
+
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
*state="Created" (или "Modified") - статус тура - создан (изменен)
+
      <wsse:Security>
*issue="2009-08-03T13:04:06.0000000+04:00" - дата и время последнего изменения тура.
+
        <wsu:Timestamp wsu:Id="Timestamp-1adcdd22-98e3-4916-9bae-8a42e2a3acab">
*<dates /> - даты, на которые есть заезды в указанном туре (будет реализовано в следующей версии)
+
            <wsu:Created>2015-02-10T11:24:31Z</wsu:Created>
*<comment /> - комментарий к СПО (будет реализовано в следующей версии)
+
            <wsu:Expires>2015-02-10T11:29:31Z</wsu:Expires>
*spoInfo содержит элемент priceQuantity, в котором указано количество доступных цен для тура.
+
        </wsu:Timestamp>
*services - информация об услугах, на которые есть ссылки из раздела цен.
+
      </wsse:Security>
Услуги разделены по следующим группам:
+
  </soap:Header>
Услуга проживания. Например,
+
  <soap:Body>
<hotelService mealKey="44" roomKey="4648" buildingKey="3413">
+
      <GetAgreementsByKeysResponse xmlns="http://tourml.ru/service/2004-08-13/products">
*mealKey - тип питания из справочника boardings
+
        <GetAgreementsByKeysResult date="0001-01-01" time="00:00:00.0000000+03:00" xmlns="http://tourml.ru/bookings/2004-09-28">
*roomKey - тип комнаты
+
            <agreement>
*buildingKey - тип здания
+
              <header uri="" checkin="2015-02-01" buyerPerson="0" mainPerson="0" agreementKey="40216" agreementCode="BE50201002" country="Бельгия" city="Брюссель" days="4" quantity="2" price="640" pricePaid="0" currency="EU" creationDate="2015-01-27" payUntil="0001-01-01" status="inWork" errorStatus="unknown" commission="0">
Услуга перелета. Например,
+
                  <comment/>
<flightService tariffKey="89" flightKey="631">
+
              </header>
*tariffKey - тариф на перелет из справочника tariffs
+
              <packets>
*flightKey - перелет из справочника Flights (описывает город вылета-прилета, авиакомпанию).
+
                  <packet id="_1">
Справочник Flights включает в себя элементы FlightTimes (расписания перелетов).
+
                    <inline>
Услуга экскурсий. Например,
+
                        <TourML version="1.0" date="2015-02-10" time="14:24:31">
<excursionServices transportKey="23" excursionKey="12">
+
                          <header name="Фирма-владелец" uri="" vendor="Megatec" xmlns="http://tourml.ru/products/2004-04-19"/>
*transportKey,excursionKey - сслылки на справочники тип транспорта (transports) и экскурсия (excursions)
+
                          <references xmlns="http://tourml.ru/products/2004-04-19">
Услуга трансфера. Например,
+
                              <countries>
<transferService transferKey="1989" transportKey="210">
+
                                <country key="460" name="Россия" nameLat="Russia"/>
*transferKey, transportKey - соответствующие ссылки на справочники transfers и transports
+
                                <country key="3" name="Бельгия" nameLat="Belgium"/>
Услуга круиз. Например,
+
                              </countries>
<cruiseServices shipKey="123" cabineKey="12">
+
                              <resorts/>
*shipKey, cabineKey - ссылки на справочники cabines и ships.
+
                              <cities>
Остальные услуги - страховка, виза, доп. услуги и т.д. Например,
+
                                <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
<extraService classKey="6" subKey="30037" subKey1="5162" subKey2="17" countryKey="460" cityKey="1">
+
                                <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
*classKey - тип услуги из справочника serviceClasses
+
                              </cities>
*subKey - описание услуги из справочника serviceDescriptions
+
                              <categories>
*subKey1 - дополнительное описание 1 из справочника serviceDescriptions1
+
                                <category key="707724292" name="4*" nameLat="4*"/>
*subKey2 - дополнительное описание 2 из справочника serviceDescriptions2
+
                              </categories>
*countryKey - ссылка на страну из справочника Country
+
                              <hotels>
*cityKey - ссылка на город из справочника City
+
                                <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
Внутри элемента каждой такой услуги приведены варианты этой услуги (элемент variant) в зависимости от продолжительности, дня начала предоставления и других параметров
+
                              </hotels>
<flightService tariffKey="330" flightKey="2284">
+
                              <buildings>
    <variant providerKey="0" dayBeg="1" nights="0" days="0" men="1" allowDelete="true" allowEditMainService="true" allowEditSubService="true" id="_39839489">
+
                                <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
        <info>
+
                              </buildings>
            <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions" />
+
                              <airlines>
        </info>
+
                                <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
    </variant>
+
                              </airlines>
    <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" id="_39839488">
+
                              <airports>
        <info>
+
                                <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
            <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions" />
+
                                <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
        </info>
+
                              </airports>
    </variant>
+
                              <aircrafts>
</flightService>
+
                                <aircraft key="4" name="aerobus A-310" code="310"/>
Элемент variant имеет следующие атрибуты:
+
                              </aircrafts>
*providerKey - ключ партнера, предоставляющего услугу (не используется - возвращается 0)
+
                              <flights>
*dayBeg - день начала предоставления услуги
+
                                <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
*nights - продолжительность услуги в ночах
+
                                    <flightTime key="1" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
*days - продолжительность услуги в днях
+
                                </flight>
*men - количество человек, на которое рассчитана данная услуга
+
                                <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
*id - ключ услуги, на который ссылается serviceSet из раздела prices
+
                                    <flightTime key="2" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
*allowDelete - флаг, показывающий можно ли удалить данную услугу
+
                                </flight>
*allowEditMainService - флаг, показывающий можно ли изменять услугу
+
                              </flights>
*allowEditSubService - флаг, показывающий можно ли изменять SubService (подчиненную услугу) у данной услуги
+
                              <roomTypes>
У элемента variant существует вложенный опциональный элемент info, в который выводится дополнительные атрибуты услуги (если хотя бы одна из них true):
+
                                <roomType key="38" name="2A" nameLat="2A" code="2A" numBed="2" numExBed="0"/>
*allowEditCity - у услуги возможно редактирование города
+
                              </roomTypes>
*allowEditPartner - у услуги возможно редактирование партнера, предоставляющего услугу
+
                              <roomLocations/>
*allowEditDuration - у услуги возможно редактировать продолжительность
+
                              <roomViews/>
Invisible - флаг, показывающий что услуга скрытая (сейчас этот флаг не используется, поскольку скрытые услуги отсеиваются на этапе выгрузки из базы)
+
                              <roomCategories>
Как для атрибутов у variant так и для атрибутов info справедливо следующее правило: если какой-то из флагов имеет значение false, то он не возвращается в ответе. То есть
+
                                <roomCategory key="20" name="Standart" nameLat="Standart" code="STD"/>
<additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions" />
+
                              </roomCategories>
означает
+
                              <roomDescriptions>
allowEditCity = true
+
                                <roomDescription key="20" catKey="20"/>
allowEditPartner = true
+
                              </roomDescriptions>
allowEditDuration = false
+
                              <roomAccomodations>
Invisible = false
+
                                <roomAccomodation key="325" name="2A" nameLat="2A" code="2A" numBed="2">
prices - раздел, в котором сгруппированы обсчитанные услуги и указаны цены на пакеты из этих услуг, в зависимости от дат заезда.
+
                                    <adult place="0" order="0"/>
В элементе serviceSet в атрибуте ids указан список id услуг пакета (ключей элементов variant, описанных выше).
+
                                    <adult place="0" order="0"/>
<serviceSet ids="_2000051 _2000056 _2000061 _2000066 _2000071 _2000076 _2000081 _2000441">
+
                                </roomAccomodation>
    <price gross="3586">
+
                              </roomAccomodations>
        <date key="67222503" from="2009-09-25" to="2009-09-25" />
+
                              <rooms>
        <date key="67222504" from="2009-09-27" to="2009-09-27" />
+
                                <room key="1116" typeKey="38" roomDescKey="20" accomodationKey="325"/>
    </price>
+
                              </rooms>
    <price gross="3756">
+
                              <serviceClasses/>
        <date key="67222793" from="2009-09-29" to="2009-09-29" />
+
                              <serviceDescriptions/>
    </price>
+
                              <serviceDescriptions1/>
</serviceSet>
+
                              <serviceDescriptions2/>
В элементах price указаны цены (gross) за набор услуг пакета. Внутри элемента price вложены элементы data, имеющие следующие атрибуты:
+
                              <transfers/>
*key - ключ обсчитаной цены
+
                              <excursions/>
*from, to - промежуток дат, на который распространяется эта цена.
+
                              <transports/>
При проверке бронирования данный ключ + дата из промежутка from, to должны передаваться в качестве переметров.
+
                              <cabines/>
Таким образом, это означает, что пакет с ключем 67222503 на 2009-09-25 стоит (предварительная цена) 3586 (валюта берется из описания СПО) и состоит из следующих услуг: "_2000051 _2000056 _2000061 _2000066 _2000071 _2000076 _2000081 _2000441".
+
                              <ships/>
 +
                              <boardings/>
 +
                              <currencies>
 +
                                <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
 +
                              </currencies>
 +
                              <tariffs>
 +
                                <tariff key="89" name="Экономический класс" nameLat="Coach economy" code="Y"/>
 +
                              </tariffs>
 +
                              <tourTypes>
 +
                                <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
 +
                              </tourTypes>
 +
                          </references>
 +
                          <sources xmlns="http://tourml.ru/products/2004-04-19">
 +
                              <source name="Фирма-владелец" uri="http://">
 +
                                <packets>
 +
                                    <packet>
 +
                                      <packetHeader>
 +
                                          <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
 +
                                          <spo key="192" for="byPerson" validFrom="2015-02-01" validTo="2015-02-04" currencyKey="2" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
 +
                                            <calculatingKeys/>
 +
                                            <dates>
 +
                                                <date>2015-02-01T00:00:00</date>
 +
                                            </dates>
 +
                                            <comment/>
 +
                                          </spo>
 +
                                      </packetHeader>
 +
                                      <services>
 +
                                          <hotelServices>
 +
                                            <hotelService mealKey="10" roomKey="1116" buildingKey="3231">
 +
                                                <variant providerKey="0" dayBeg="1" nights="3" days="4" men="2" id="_201682">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Заказ на бронирование" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </hotelService>
 +
                                          </hotelServices>
 +
                                          <flightServices>
 +
                                            <flightService tariffKey="89" flightKey="525">
 +
                                                <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" id="_201681">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </flightService>
 +
                                            <flightService tariffKey="89" flightKey="524">
 +
                                                <variant providerKey="0" dayBeg="4" nights="0" days="0" men="2" id="_201683">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </flightService>
 +
                                          </flightServices>
 +
                                          <excursionServices/>
 +
                                          <transferServices/>
 +
                                          <cruiseServices/>
 +
                                          <extraServices/>
 +
                                      </services>
 +
                                      <prices>
 +
                                          <serviceSet ids="_201681 _201682 _201683">
 +
                                            <price gross="640">
 +
                                                <date key="40216" from="2015-02-01" to="0001-01-01"/>
 +
                                            </price>
 +
                                          </serviceSet>
 +
                                      </prices>
 +
                                    </packet>
 +
                                </packets>
 +
                              </source>
 +
                          </sources>
 +
                        </TourML>
 +
                    </inline>
 +
                  </packet>
 +
              </packets>
 +
              <persons/>
 +
            </agreement>
 +
        </GetAgreementsByKeysResult>
 +
      </GetAgreementsByKeysResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
====Метод GetAgreementsByNumber====
 +
Данный метод возвращает информацию по забронированным путевкам.<br />
 +
Список принимаемых параметров:
 +
*agency - ключ туристического агентства
 +
*codes – ключ договора
 +
 
 +
В результате пользователь получает информацию по выбранному ключу агенства, и выбранному ключу договора.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetAgreementsByNumber с параметрами: agency=10762; codes=40216
 +
 
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
 +
  <soapenv:Header/>
 +
  <soapenv:Body>
 +
      <prod:GetAgreementsByNumber>
 +
        <!--Optional:-->
 +
        <prod:agency>10762</prod:agency>
 +
        <!--Optional:-->
 +
        <prod:codes>
 +
            <!--Zero or more repetitions:-->
 +
            <prod:int>40216</prod:int>
 +
        </prod:codes>
 +
      </prod:GetAgreementsByNumber>
 +
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
Возвращаемый результат метода GetAgreementsByNumber
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns="http://tourml.ru/products/2004-04-19">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetAgreementsByNumberResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:7091dbeb-807e-49ce-bff8-71c680b37341</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:4a7b9f1e-a539-496c-a674-cafe8612a374</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-d6f759d1-d008-4241-beef-82661ed6252a">
 +
            <wsu:Created>2015-02-10T11:32:49Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T11:37:49Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
  </soap:Header>
 +
  <soap:Body>
 +
      <GetAgreementsByNumberResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <GetAgreementsByNumberResult date="0001-01-01" time="00:00:00.0000000+03:00" xmlns="http://tourml.ru/bookings/2004-09-28">
 +
            <agreement>
 +
              <header uri="" checkin="2015-02-01" buyerPerson="0" mainPerson="0" agreementKey="40216" agreementCode="BE50201002" country="Бельгия" city="Брюссель" days="4" quantity="2" price="640" pricePaid="0" currency="EU" creationDate="2015-01-27" payUntil="0001-01-01" status="inWork" errorStatus="unknown" commission="0">
 +
                  <comment/>
 +
              </header>
 +
              <packets>
 +
                  <packet id="_1">
 +
                    <inline>
 +
                        <TourML version="1.0" date="2015-02-10" time="14:32:49">
 +
                          <header name="Фирма-владелец" uri="" vendor="Megatec" xmlns="http://tourml.ru/products/2004-04-19"/>
 +
                          <references xmlns="http://tourml.ru/products/2004-04-19">
 +
                              <countries>
 +
                                <country key="460" name="Россия" nameLat="Russia"/>
 +
                                <country key="3" name="Бельгия" nameLat="Belgium"/>
 +
                              </countries>
 +
                              <resorts/>
 +
                              <cities>
 +
                                <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
 +
                                <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
 +
                              </cities>
 +
                              <categories>
 +
                                <category key="707724292" name="4*" nameLat="4*"/>
 +
                              </categories>
 +
                              <hotels>
 +
                                <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
 +
                              </hotels>
 +
                              <buildings>
 +
                                <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
 +
                              </buildings>
 +
                              <airlines>
 +
                                <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
 +
                              </airlines>
 +
                              <airports>
 +
                                <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
 +
                                <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
 +
                              </airports>
 +
                              <aircrafts>
 +
                                <aircraft key="4" name="aerobus A-310" code="310"/>
 +
                              </aircrafts>
 +
                              <flights>
 +
                                <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
 +
                                    <flightTime key="1" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
 +
                                </flight>
 +
                                <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
 +
                                    <flightTime key="2" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
 +
                                </flight>
 +
                              </flights>
 +
                              <roomTypes>
 +
                                <roomType key="38" name="2A" nameLat="2A" code="2A" numBed="2" numExBed="0"/>
 +
                              </roomTypes>
 +
                              <roomLocations/>
 +
                              <roomViews/>
 +
                              <roomCategories>
 +
                                <roomCategory key="20" name="Standart" nameLat="Standart" code="STD"/>
 +
                              </roomCategories>
 +
                              <roomDescriptions>
 +
                                <roomDescription key="20" catKey="20"/>
 +
                              </roomDescriptions>
 +
                              <roomAccomodations>
 +
                                <roomAccomodation key="325" name="2A" nameLat="2A" code="2A" numBed="2">
 +
                                    <adult place="0" order="0"/>
 +
                                    <adult place="0" order="0"/>
 +
                                </roomAccomodation>
 +
                              </roomAccomodations>
 +
                              <rooms>
 +
                                <room key="1116" typeKey="38" roomDescKey="20" accomodationKey="325"/>
 +
                              </rooms>
 +
                              <serviceClasses/>
 +
                              <serviceDescriptions/>
 +
                              <serviceDescriptions1/>
 +
                              <serviceDescriptions2/>
 +
                              <transfers/>
 +
                              <excursions/>
 +
                              <transports/>
 +
                              <cabines/>
 +
                              <ships/>
 +
                              <boardings/>
 +
                              <currencies>
 +
                                <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
 +
                              </currencies>
 +
                              <tariffs>
 +
                                <tariff key="89" name="Экономический класс" nameLat="Coach economy" code="Y"/>
 +
                              </tariffs>
 +
                              <tourTypes>
 +
                                <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
 +
                              </tourTypes>
 +
                          </references>
 +
                          <sources xmlns="http://tourml.ru/products/2004-04-19">
 +
                              <source name="Фирма-владелец" uri="http://">
 +
                                <packets>
 +
                                    <packet>
 +
                                      <packetHeader>
 +
                                          <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
 +
                                          <spo key="192" for="byPerson" validFrom="2015-02-01" validTo="2015-02-04" currencyKey="2" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
 +
                                            <calculatingKeys/>
 +
                                            <dates>
 +
                                                <date>2015-02-01T00:00:00</date>
 +
                                            </dates>
 +
                                            <comment/>
 +
                                          </spo>
 +
                                      </packetHeader>
 +
                                      <services>
 +
                                          <hotelServices>
 +
                                            <hotelService mealKey="10" roomKey="1116" buildingKey="3231">
 +
                                                <variant providerKey="0" dayBeg="1" nights="3" days="4" men="2" id="_201682">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Заказ на бронирование" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </hotelService>
 +
                                          </hotelServices>
 +
                                          <flightServices>
 +
                                            <flightService tariffKey="89" flightKey="525">
 +
                                                <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" id="_201681">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </flightService>
 +
                                            <flightService tariffKey="89" flightKey="524">
 +
                                                <variant providerKey="0" dayBeg="4" nights="0" days="0" men="2" id="_201683">
 +
                                                  <info>
 +
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
 +
                                                  </info>
 +
                                                </variant>
 +
                                            </flightService>
 +
                                          </flightServices>
 +
                                          <excursionServices/>
 +
                                          <transferServices/>
 +
                                          <cruiseServices/>
 +
                                          <extraServices/>
 +
                                      </services>
 +
                                      <prices>
 +
                                          <serviceSet ids="_201681 _201682 _201683">
 +
                                            <price gross="640">
 +
                                                <date key="40216" from="2015-02-01" to="0001-01-01"/>
 +
                                            </price>
 +
                                          </serviceSet>
 +
                                      </prices>
 +
                                    </packet>
 +
                                </packets>
 +
                              </source>
 +
                          </sources>
 +
                        </TourML>
 +
                    </inline>
 +
                  </packet>
 +
              </packets>
 +
              <persons/>
 +
            </agreement>
 +
        </GetAgreementsByNumberResult>
 +
      </GetAgreementsByNumberResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
====Метод GetSimpleDogovorsBronni====
 +
Данный метод возвращает список путевок в формате Бронни.<br />
 +
Список принимаемых параметров:
 +
*agency - подстрока (часть имени) названия агентства. В итоговом запросе будет конструкция <syntaxhighlight lang="sql">LIKE 'agency - название агентства'</syntaxhighlight>
 +
*dateFrom - дата, с которой будут выводится созданные путевки
 +
*dateTo - дата, по которую будет выводится список созданных путевок
 +
 
 +
В результате пользователь получает список путевок на выбранные даты.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetSimpleDogovorsBronni с параметрами: agency=агентство; dateFrom=2015-01-01; dateTo=2015-03-01
 +
 
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
 +
  <soapenv:Header/>
 +
  <soapenv:Body>
 +
      <prod:GetSimpleDogovorsBronni>
 +
        <!--Optional:-->
 +
        <prod:agency>агентство</prod:agency>
 +
        <prod:dateFrom>2015-01-01</prod:dateFrom>
 +
        <prod:dateTo>2015-03-01</prod:dateTo>
 +
      </prod:GetSimpleDogovorsBronni>
 +
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
Возвращаемый результат метода GetSimpleDogovorsBronni
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetSimpleDogovorsBronniResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:56ed19bd-82f6-4727-ac9b-f279c6445070</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:b13771b3-9ed3-43a5-b4e2-a4f436419f75</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-b2887d84-6bf2-4fc4-b0f6-4206933e4dbc">
 +
            <wsu:Created>2015-02-10T11:38:10Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T11:43:10Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
  </soap:Header>
 +
  <soap:Body>
 +
      <GetSimpleDogovorsBronniResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <GetSimpleDogovorsBronniResult xmlns="http://tourml.ru/bookings/2004-09-28"/>
 +
      </GetSimpleDogovorsBronniResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
====Метод GetSimpleDogovorsByCreateDates====
 +
Данный метод возвращает список путевок в формате Бронни по датам создания.<br />
 +
Список принимаемых параметров:
 +
*dateFrom - дата, с которой будут выводится созданные путевки
 +
*dateTo - дата, по которую будет выводится список созданных путевок
 +
*agency - подстрока (часть имени) названия агентства. В итоговом запросе будет конструкция <syntaxhighlight lang="sql">LIKE 'agency - название агентства'</syntaxhighlight>
 +
*BTKey - значение колонки DG_BTKey из таблицы tbl_Dogovors.
  
===Порядок работы с web-сервисом===
+
В результате пользователь получает список путевок по дате создания, начиная от переданной в параметрах дате, и выбранному названию агентства.
Web-сервис TourML позволяет организовать полный цикл взаимодействия с программным комплексом Мастер-Тур – от получения цен до бронирования и аннуляции заявок. Ниже рассмотрен полный цикл работы с web-сервисом.
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
====Получение списка доступных спецпредложений====
+
<div class="mw-collapsible-content">
Первым шагом при работе с web-сервисом является получение списка спецпредложений, выставленных оператором для просмотра в онлайне. Эта операция может быть выполнена с помощью двух методов:
+
Вызов метода GetSimpleDogovorsByCreateDates с параметрами: dateFrom=2015-01-01; dateTo=2015-03-01; agency=Агентство; BTKey=0
*GetValidTourList
 
*GetValidTourListFrom
 
Результат выполнения данных методов - TourML документ, в котором содержится список доступных СПО, а также их актуальность.
 
  
Разделы документа, которые будут заполнены:
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
В разделах packet (которых будет по количеству доступных СПО) будет заполнен элемент packetHeader, содержащий информацию о СПО и количестве цен.
+
<syntaxhighlight lang="xml" enclose="div">
<nowiki>  
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
<sources xmlns="http://tourml.ru/products/2004-04-19">
+
  <soapenv:Header/>
    <source name="ООО МегаТур" uri="http://www.mega tour.com/">
+
  <soapenv:Body>
       <quotaServices />
+
      <prod:GetSimpleDogovorsByCreateDates>
      <packets>
+
        <prod:dateFrom>2015-01-01</prod:dateFrom>
        <packet>
+
        <prod:dateTo>2015-03-01</prod:dateTo>
          <packetHeader>
+
        <!--Optional:-->
            <tour key="311" name="Test Tour" tourTypeKey="5" countryKey="90">
+
        <prod:agency>Агентство</prod:agency>
            </tour>
+
        <prod:BTKey>0</prod:BTKey>
            <spo key="467" for="byPerson" validFrom="2009-01-11" validTo="2009-12-29" currencyKey="1" state="Created" issue="2009-01-10T14:12:00.0000000+03:00">
+
       </prod:GetSimpleDogovorsByCreateDates>
              <dates />
+
  </soapenv:Body>
              <comment />
+
</soapenv:Envelope>
            </spo>
+
</syntaxhighlight>
            <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
+
</TD></TR></TABLE>
              <priceQuantity>20520</priceQuantity>
+
Возвращаемый результат метода GetSimpleDogovorsByCreateDates
             </spoInfo>
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
          </packetHeader>
+
<syntaxhighlight lang="xml" enclose="div">
          <services>
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <hotelServices />
+
  <soap:Header>
            <flightServices />
+
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetSimpleDogovorsByCreateDatesResponse</wsa:Action>
            <excursionServices />
+
      <wsa:MessageID>uuid:44f6e49b-abf0-4539-8804-1c992989ca72</wsa:MessageID>
             <transferServices />
+
      <wsa:RelatesTo>uuid:fce72291-3a87-45d7-a546-dc37e1fcad55</wsa:RelatesTo>
             <cruiseServices />
+
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
            <extraServices />
+
      <wsse:Security>
          </services>
+
        <wsu:Timestamp wsu:Id="Timestamp-34d0d561-d61d-4456-aa79-ad4693de104e">
          <prices />
+
            <wsu:Created>2015-02-10T11:51:02Z</wsu:Created>
        </packet>
+
             <wsu:Expires>2015-02-10T11:56:02Z</wsu:Expires>
        <packet>
+
        </wsu:Timestamp>
        ........
+
      </wsse:Security>
        </packet>
+
  </soap:Header>
</nowiki>
+
  <soap:Body>
При выгрузке информации об СПО будут заполнены только те справочники, на которые есть ссылки в элементах tour и spo, а именно: страна, валюта, тип тура.
+
      <GetSimpleDogovorsByCreateDatesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
<references xmlns="http://tourml.ru/products/2004-04-19">
+
        <GetSimpleDogovorsByCreateDatesResult xmlns="http://tourml.ru/bookings/2004-09-28">
    <countries>
+
             <simpleDogovor key="40218" code="BE50130002" agentKey="0"/>
      <country key="86" name="Турция" nameLat="TURKEY" code="TR" />
+
             <simpleDogovor key="40216" code="BE50201002" agentKey="0"/>
      <country key="90" name="Австрия" nameLat="AUSTRIA" code="AT" />
+
        </GetSimpleDogovorsByCreateDatesResult>
      <country key="9" name="Египет" nameLat="Egypt" code="EG" />
+
      </GetSimpleDogovorsByCreateDatesResponse>
    </countries>
+
  </soap:Body>
    <resorts />
+
</soap:Envelope>
    <cities />
+
</syntaxhighlight>
    <categories />
+
</TD></TR></TABLE>
    <hotels />
+
</div></div><br />
    <buildings />
+
 
    <airlines />
+
===Подбор вариантов (GBI)===
    <airports />
+
====Метод GetBookingInfo====
    <aircrafts />
+
Данный метод возвращает информацию о путевке.<br />
    <flights />
+
Список принимаемых параметров:
    <roomTypes />
+
*XML документ, содержащий заявку, в которой указаны дата заезда, ключ агентства, ключ рассчитанного тура, туристы.
    <roomLocations />
+
 
    <roomViews />
+
В результате пользователь получает информацию о путевке в XML документе.
    <roomCategories />
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
    <roomDescriptions />
+
<div class="mw-collapsible-content">
    <roomAccomodations />
+
Вызов метода GetBookingInfo производится аналогично вызову метода [[Мастер-Web:Дополнительный модуль Сервис TourML Приложение B#Функция CheckBooking|CheckBooking]]
    <rooms />
+
 
    <serviceClasses />
+
</div></div><br />
    <serviceDescriptions />
+
 
    <serviceDescriptions1 />
+
===Подбор перелетов (FLF)===
    <serviceDescriptions2 />
+
Методы в данной группе отсутствуют.
    <transfers />
+
 
    <excursions />
+
 
    <transports />
+
 
    <cabines />
+
===Любые другие (MICS)===
    <ships />
+
====Метод GetCourse====
    <boardings />
+
Данный метод возвращает информацию о кросс-курсе валют.<br />
    <currencies>
+
Список принимаемых параметров:
      <currency key="1" name="US Dollar" nameLat="US Dollar" code="$" />
+
*rateCodeFrom - код валюты, кросс-курс которой нужно вывести
    </currencies>
+
*rateCodeTo - код валюты 2
    <tariffs />
+
*exchangeDate - дата, на которую необходимо взять курсы валют
    <tourTypes>
+
 
       <tourType key="32" name="Сложный тур" nameLat="Complex tour" />
+
В результате пользователь получает информацию о кросс-курсе валют на выбранную дату.
      <tourType key="5" name="Специальное предложение" nameLat="Special offer" />
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
       <tourType key="0" name="Не определен" nameLat="Not detected" />
+
<div class="mw-collapsible-content">
    </tourTypes>
+
Вызов метода GetCourse с параметрами: rateCodeFrom=$; rateCodeTo=рб; exchangeDate=2015-01-30
  </references>
+
 
====Загрузка цен по конкретному спецпредложению====
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
На втором шаге с помощью метода GetSPOPageByKey выполняется загрузка цен по конкретному спецпредложению. Метод принимает следующие параметры:
+
<syntaxhighlight lang="xml" enclose="div">
*SpoKey – ключ СПО
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
*minPriceKey – ключ цены, начиная с которой осуществлять выгрузку
+
  <soapenv:Header/>
*pageSize – количество записей получаемых за один запрос (не больше 5000)
+
  <soapenv:Body>
 +
      <prod:GetCourse>
 +
        <!--Optional:-->
 +
        <prod:rateCodeFrom>$</prod:rateCodeFrom>
 +
        <!--Optional:-->
 +
        <prod:rateCodeTo>рб</prod:rateCodeTo>
 +
        <prod:exchangeDate>2015-01-30</prod:exchangeDate>
 +
      </prod:GetCourse>
 +
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
Возвращаемый результат метода GetCourse
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetCourseResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:a8bdf07f-9f86-441e-9bdb-b5916179dab6</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:87094986-6a43-4494-9967-15b52dacaf1c</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-80aeff76-8768-4d35-9716-e7f72eca643f">
 +
            <wsu:Created>2015-02-10T12:02:02Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T12:07:02Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
       </wsse:Security>
 +
  </soap:Header>
 +
  <soap:Body>
 +
       <GetCourseResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <GetCourseResult>34.425800</GetCourseResult>
 +
      </GetCourseResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
'''Внимание!'''
+
====Метод GetNationalCourse====
 +
Данный метод возвращает возвращает курс национальной  валюты.<br />
 +
Список принимаемых параметров:
 +
*rateCode - код валюты, курс которой нужно получить
 +
*exchangeDate - дата, на которую необходимо взять курс валют
 +
В результате пользователь получает информацию о курсе национальной  валюты на выбранную дату.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetNationalCourse с параметрами: rateCode=Eu; exchangeDate=2015-03-01
  
Количество записей (pageSize) рекомендуется брать не более 5000, поскольку это  значение гарантирует приемлемую производительность сервиса.  
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
 +
  <soapenv:Header/>
 +
  <soapenv:Body>
 +
      <prod:GetNationalCourse>
 +
        <!--Optional:-->
 +
        <prod:rateCode>Eu</prod:rateCode>
 +
        <prod:exchangeDate>2015-03-01</prod:exchangeDate>
 +
      </prod:GetNationalCourse>
 +
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
Возвращаемый результат метода GetNationalCourse
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetNationalCourseResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:fae0aa47-ee83-41cf-9736-986b02dc5193</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:d9f9b5ae-9cf0-4dac-82f7-2855178b3197</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-b53c06ed-70e2-4e35-82d7-3aef0026b01a">
 +
            <wsu:Created>2015-02-10T12:05:01Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T12:10:01Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
  </soap:Header>
 +
  <soap:Body>
 +
      <GetNationalCourseResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <GetNationalCourseResult>46.812200</GetNationalCourseResult>
 +
      </GetNationalCourseResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
Выгрузка страницы с 5000 ценами занимает порядка 5-20 секунд, в зависимости от производительности сервера и его текущей загрузки.
+
====Метод GetNationalRateCode====
 +
Данный метод возвращает код национальной валюты.<br />
 +
Список принимаемых параметров:
 +
*параметров нет
 +
 
 +
В результате пользователь получает код национальной валюты
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetNationalRateCode
  
'''Пример'''
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
 +
  <soapenv:Header/>
 +
  <soapenv:Body>
 +
      <prod:GetNationalRateCode/>
 +
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
Возвращаемый результат метода GetNationalRateCode
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetNationalRateCodeResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:262e1c56-2635-49b9-8273-e0190843523c</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:55ecd152-ab90-4dad-be07-c7e5f1061dde</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-566ea04d-35e9-428e-8cee-0d37f8336fa4">
 +
            <wsu:Created>2015-02-10T12:18:26Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T12:23:26Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
  </soap:Header>
 +
  <soap:Body>
 +
      <GetNationalRateCodeResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <GetNationalRateCodeResult>рб</GetNationalRateCodeResult>
 +
      </GetNationalRateCodeResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
Пусть требуется выгрузить СПО с ID = 25. Из результатов метода GetValidTourList мы знаем, что в данном СПО 26430 цен.
+
====Метод GetReferences====
 +
Данный метод возвращает справочники по фильтрам.<br />
 +
Список принимаемых параметров:
 +
*[[#.D0.9F.D0.BE.D0.BB.D1.83.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D1.81.D0.BF.D1.80.D0.B0.D0.B2.D0.BE.D1.87.D0.BD.D0.BE.D0.B9_.D0.B8.D0.BD.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.86.D0.B8.D0.B8_.28.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D1.8F_GetReferences.29|queryType]] - идентификатор запроса
 +
*param - ключ фильтра
 +
В результате пользователь получает
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetReferences с параметром spoKey=11
  
Первый запрос мы отправляем с параметрами 25, 0, 5000. В качестве ответа сервиса получим TourML, в котором будут описаны первые 5000 прайсов указанного СПО.  
+
[[#.D0.9F.D0.BE.D0.BB.D1.83.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D1.81.D0.BF.D1.80.D0.B0.D0.B2.D0.BE.D1.87.D0.BD.D0.BE.D0.B9_.D0.B8.D0.BD.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.86.D0.B8.D0.B8_.28.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D1.8F_GetReferences.29|queryType ]] — cервис авторизации
  
Чтобы выполнить загрузку следующей страницы нам нужно передать в качестве параметров 25, maxPriceID, 5000, где maxPriceID - максимальный ID цены которая вернулась в предыдущем запросе.  
+
#.D0.9F.D0.BE.D0.BB.D1.83.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D1.81.D0.BF.D1.80.D0.B0.D0.B2.D0.BE.D1.87.D0.BD.D0.BE.D0.B9_.D0.B8.D0.BD.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.86.D0.B8.D0.B8_.28.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D1.8F_GetReferences.29
  
В ответе сервиса ID прайсов возвращаются в тегах date, сгруппированных по цене,
 
  
<serviceSet ids="_10818">
 
    <price gross="10990">
 
      <date key="12575" from="2014-05-24" to="2014-05-24"/>
 
    </price>
 
</serviceSet>
 
  
где:
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
*ids - ключи услуги, поле TL_TSKey из таблицы TP_SERVICELISTS
+
<syntaxhighlight lang="xml" enclose="div">
*price gross - цена, поле TP_Gross из таблицы TP_PRICES
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
*date key - ключ цены, поле TP_Key из таблицы TP_PRICES
+
  <soapenv:Header/>
 
+
  <soapenv:Body>
Чтобы найти maxPriceID нужно перебрать все теги date и выбрать тот, у которого атрибут key максимальный. В последних версиях сервиса доступен атрибут lastKey у элемента loadTime, в котором указан maxPriceID. Если lastKey=-1, то загрузка окончена и этот TourML - последняя страница.
+
      <prod:GetReferences>
<header name="" uri="http://notfound.net">
+
        <!--Optional:-->
    <loadTime timeValue="100" lastKey="87546090" xmlns="http://www.megatec.ru/tourml/extensions" />  
+
        <prod:queryType>HotelByCityId</prod:queryType>
</header>
+
        <!--Optional:-->
Таким образом, чтобы выгрузить весь тур (26430 цен) необходимо отправить 6 запросов. Последний запрос также можно отправить с pageSize = 5000. Сервис вернет оставшиеся 1430 цен.
+
        <prod:param>63</prod:param>
 
+
      </prod:GetReferences>
====Загрузка информации о квотах====
+
  </soapenv:Body>
Для получения информации о квотах необходимо использовать метод GetStopSalesAndQuotes.
+
</soapenv:Envelope>
 
+
</syntaxhighlight>
'''Внимание!'''
+
</TD></TR></TABLE>
 
+
Возвращаемый результат метода GetReferences
В результат работы метода GetStopSalesAndQuotes(DateTime checkPoint) попадают только те данные, которые изменялись за период c checkPoint по текущую дату. Такой вариант работы подразумевает ведение своей собственной базы с занесением в нее информации по квотам и стопам.
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
+
<syntaxhighlight lang="xml" enclose="div">
В разделе references приведены справочники, на которые ссылаются отобранные перелеты или гостиницы.
+
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<references>
+
  <soap:Header>
  <countries>
+
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetReferencesResponse</wsa:Action>
    <country key="460" name="Россия" nameLat="Russia" code="RU" />  
+
      <wsa:MessageID>uuid:0aad755d-d6f4-4be6-8968-b3222bb85055</wsa:MessageID>
    <country key="86" name="Турция" nameLat="TURKEY" code="TR" />  
+
      <wsa:RelatesTo>uuid:58730678-460e-4761-ae60-c9c6de84b413</wsa:RelatesTo>
  </countries>
+
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
  <resorts />  
+
       <wsse:Security>
  <cities>
+
        <wsu:Timestamp wsu:Id="Timestamp-73cb1385-44ae-4264-aa13-9df1acd2687b">
       <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460" />  
+
            <wsu:Created>2015-02-10T12:22:20Z</wsu:Created>
      <city key="187" name="АНТАЛИЯ" nameLat="ANTALYA" code="AYT" countryKey="86" />  
+
            <wsu:Expires>2015-02-10T12:27:20Z</wsu:Expires>
  </cities>
+
        </wsu:Timestamp>
В разделе
+
      </wsse:Security>
<nowiki>
+
  </soap:Header>
<sources>
+
  <soap:Body>
    <source name="name" uri="http://www.name.ru/">
+
      <GetReferencesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
        <quotaServices>
+
        <TourML version="1.0" date="2015-02-10" time="15:22:19" xmlns="http://tourml.ru/products/2004-04-19">
</nowiki>
+
            <header name="Название ТО" uri="URL" vendor="Megatec">
приведена информация по квотам.
+
              <comment/>
=====Информация по квотам на перелет=====
+
              <loadTime timeValue="0" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
Для каждого авиаперелета и тарифа формируется следующая информация:
+
            </header>
<flightService flightKey="552" tariffKey="330">
+
            <references>
где flightKey - ключ перелета, tariffKey - ключ тарифа.
+
              <countries>
<flightService flightKey="526" tariffKey="89">
+
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
  <stopsales>
+
              </countries>
    <stopsale dateFrom="2009-05-01" dateTo="2009-05-02" typeVisit="byPeriod" status="Modified" />
+
              <resorts/>
  </stopsales>
+
              <cities>
</flightService>
+
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
В элементах <stopsale> приведена информация об остановках продаж на период времени с dateFrom по dateTo.
+
              </cities>
<flightService flightKey="526" tariffKey="89">
+
              <categories>
  <quotas>  
+
                  <category key="707724292" name="4*" nameLat="4*"/>
    <quota date="2009-05-05" places="125" freeAccess="many" typeQuantity="byPerson" typeVisit="byPeriod"   status="Created" duration=”5,6” />  
+
                  <category key="707724289" name="1*" nameLat="1*"/>
  </quotas>  
+
              </categories>
</flightService>
+
              <hotels>
Квоты по датам преведены в элементах <quota>.
+
                  <hotel key="234" name="4 (L) 'Palace'" nameLat="4 (L) 'Palace'" countryKey="3" cityKey="63"/>
*Атрибут date - дата, на которую проверяется квота.
+
                  <hotel key="675" name="4" nameLat="4" countryKey="3" cityKey="63"/>
*Атрибут places - количество свободных мест (отображается если настройка isShowQuantity установлена в true)
+
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
*Атрибут freeAccess - в зависимости от результата проверки квот и настроек <quoteQualifiers>  может принимать значения "byQuery", "none", "little", "many".
+
              </hotels>
*Атрибут duration – продолжительность, на которую заведена квота. Если квота без продолжительности, то атрибут не выводится.
+
              <buildings>
Остальные атрибуты всегда остаются такими typeQuantity="byPerson" typeVisit="byPeriod". Если атрибут status="Deleted", то это означает, что данная квота или стоп сейл были удалены из базы данных.
+
                  <building key="234" name="Основной корпус" nameLat="Base build" categoryKey="707724289" hotelKey="234"/>
 
+
                  <building key="675" name="Основной корпус" nameLat="Base build" categoryKey="707724289" hotelKey="675"/>
Примеры возвращаемых данных:
+
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
<flightService flightKey="10823" tariffKey="332">
+
              </buildings>
  <quotas>
+
              <airlines/>
    <quota date="2009-05-28" places="0" freeAccess="byQuery" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" /> - квота на заданное число не задана.
+
              <airports/>
    <quota date="2009-05-31" places="0" freeAccess="none" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" /> на заданное число нет мест
+
              <aircrafts/>
  <quota date="2009-06-10" places="17" freeAccess="little" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />  
+
              <flights/>
</flightService>
+
              <roomTypes/>
на заданное число есть 17 мест.
+
              <roomLocations/>
 +
              <roomViews/>
 +
              <roomCategories/>
 +
              <roomDescriptions/>
 +
              <roomAccomodations/>
 +
              <rooms/>
 +
              <serviceClasses/>
 +
              <serviceDescriptions/>
 +
              <serviceDescriptions1/>
 +
              <serviceDescriptions2/>
 +
              <transfers/>
 +
              <excursions/>
 +
              <transports/>
 +
              <cabines/>
 +
              <ships/>
 +
              <boardings/>
 +
              <currencies/>
 +
              <tariffs/>
 +
              <tourTypes/>
 +
            </references>
 +
            <sources>
 +
              <source name="Название ТО" uri="URL">
 +
                  <quotaServices/>
 +
                  <packets>
 +
                    <packet>
 +
                        <packetHeader>
 +
                          <tour key="0"/>
 +
                          <spo key="0" for="byPerson" validFrom="0001-01-01" validTo="0001-01-01" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
 +
                              <calculatingKeys/>
 +
                              <comment/>
 +
                          </spo>
 +
                        </packetHeader>
 +
                        <services>
 +
                          <hotelServices/>
 +
                          <flightServices/>
 +
                          <excursionServices/>
 +
                          <transferServices/>
 +
                          <cruiseServices/>
 +
                          <extraServices/>
 +
                        </services>
 +
                        <prices/>
 +
                        <deletedPrices/>
 +
                    </packet>
 +
                  </packets>
 +
              </source>
 +
            </sources>
 +
        </TourML>
 +
      </GetReferencesResponse>
 +
  </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
Если на какое либо число отсутствует квота в разделе <quotas>, то считается что данная услуга также имеет статус "под запрос" (byQuery).
+
===Специальные (SPEC)===
 +
====Метод GetInfo====
 +
Внутренний метод для тестовых целей.
  
=====Информация по квотам на проживания=====
+
====Метод Info====
<hotelService buildingKey="3239" roomTypeKey="1" roomDescriptionKey="20">
+
Внутренний метод для тестовых целей.
  <quotas>
 
    <quota date="2009-07-15" places="0" freeAccess="byQuery" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 
    <quota date="2009-07-16" places="0" freeAccess="byQuery" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" duration=”5,6” />
 
  </quotas>
 
</hotelService>
 
*buildingKey - ключ гостиницы
 
*roomTypeKey -  тип комнаты (HotelRoom.RoomKey)
 
*roomDescriptionKey - категория комнаты (HotelRoom.RoomsCategoryKey)
 
*typeQuantity="byRoom"  - квота предоставляется на комнату 
 
*Атрибут duration – продолжительность, на которую заведена квота. Если квота без продолжительности, то атрибут не выводится.
 
"byPerson" - квота предоставляется на человека. При проверке нужно учитывать количество людей. (используется реже)
 
  
typeVisit="byPeriod"  - квота задана на указанный день. Квоты должны проверяться на все дни тура
+
====Метод GetVersion====
 +
Данный метод возвращает версию базы данных Мастер-Тур и текущей бизнес-логики сервиса
 +
Список принимаемых параметров:
 +
*параметров нет
  
"byCheckin" - на заезд. проверка квот идет только на первый день. Если в первый день заезда места есть, то считается что есть. (используется реже)
+
В результате пользователь получает версию базы данных Мастер-Тур и текущей бизнес-логики сервиса/
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
Вызов метода GetSPOArrayByKeyCompressed с параметром spoKey=11
  
Примеры возвращаемых данных:
+
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
+
<syntaxhighlight lang="xml" enclose="div">
<hotelService buildingKey="3275" roomTypeKey="79" roomDescriptionKey="51">
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <stopsales>
+
   <soapenv:Header/>
    <stopsale dateFrom="2009-08-14" dateTo="2009-08-15" typeVisit="byPeriod" status="Modified" />
+
  <soapenv:Body>
    <stopsale dateFrom="2009-08-17" dateTo="2009-08-18" typeVisit="byPeriod" status="Modified" />
+
      <prod:GetVersion/>
   </stopsales>
+
  </soapenv:Body>
   <quotas>
+
</soapenv:Envelope>
    <quota date="2009-08-16" places="1" freeAccess="little" typeQuantity="byRoom" typeVisit="byPeriod" status="Modified" />
+
</syntaxhighlight>
   </quotas>
+
</TD></TR></TABLE>
</hotelService>
+
Возвращаемый результат метода GetSPOArrayByKeyCompressed
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
<syntaxhighlight lang="xml" enclose="div">
 +
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
 +
  <soap:Header>
 +
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetVersionResponse</wsa:Action>
 +
      <wsa:MessageID>uuid:79819ab6-b844-4f3b-811e-91fe960afd77</wsa:MessageID>
 +
      <wsa:RelatesTo>uuid:50744140-8022-4b5c-9248-4e280b4fad64</wsa:RelatesTo>
 +
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
 +
      <wsse:Security>
 +
        <wsu:Timestamp wsu:Id="Timestamp-84a9457c-6450-4187-9410-55532949d0ff">
 +
            <wsu:Created>2015-02-10T12:36:40Z</wsu:Created>
 +
            <wsu:Expires>2015-02-10T12:41:40Z</wsu:Expires>
 +
        </wsu:Timestamp>
 +
      </wsse:Security>
 +
   </soap:Header>
 +
   <soap:Body>
 +
      <GetVersionResponse xmlns="http://tourml.ru/service/2004-08-13/products">
 +
        <GetVersionResult>
 +
            <AssemblyVersion>9.2.0.59449</AssemblyVersion>
 +
            <BuildDate>12.01.2015 13:08:16</BuildDate>
 +
            <MTVersion>9.2.20.25;9.2.0.59449</MTVersion>
 +
            <StartDate>2015-02-10T15:36:34.9153568+03:00</StartDate>
 +
        </GetVersionResult>
 +
      </GetVersionResponse>
 +
   </soap:Body>
 +
</soap:Envelope>
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 
 +
==Авторизация при использовании web-сервиса==
 +
При работе с web-сервисом TourML перед запросом данных требуется произвести авторизацию. Web-сервис позволяет использовать несколько методов авторизации, доступные для использования из различных программных средств.
 +
 
 +
Основным методом авторизации является использование WSE (Web Services Enhancements). По умолчанию web-сервис использует именно этот механизм авторизации. Более детально о механизме безопасности WSE можно прочитать по следующей ссылке:
 +
 
 +
http://msdn.microsoft.com/en-us/library/aa894200.aspx
 +
 
 +
Для упрощения работы c web-сервисом предусмотрен механизм упрощенной авторизации, позволяющий производить работу с web-сервисом без использования механизма WSE. Данный вариант авторизации является опциональным и должен быть разрешен явным образом через установку настройки в конфигурационном файле web-сервиса. Более детально о механизме упрощенной авторизации будет рассказано ниже.
 +
===Авторизация с использованием WSE===
 +
При работе со средой разработки Microsoft Visual Studio в секцию Reference проекта необходимо добавить ссылку на библиотеку Microsoft.Web.Services2.dll
  
При использовании метода '''GetStopSalesAndQuotes2'''.
+
Ниже приведен пример кода на языке c#позволяющий создать подключение к веб-сервисуОбратите внимание на то, что после автоматического создания прокси-класса с помощью MS Visial Studio, необходимо внести изменения в сгенерированный код.
<hotelService buildingKey="3233" roomDescriptionKey="20" roomTypeKey="1">
 
  <quotas>
 
    <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="2778" agentKey="0" freeAccess="many" places="20" date="2013-10-01" quoteType="0" checkInStop="false"/>
 
    <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="2779" agentKey="0" freeAccess="many" places="20" date="2013-10-02" quoteType="0" checkInStop="true"/>
 
  </quotas>
 
</hotelService>
 
*checkInStop - атрибут, отвечающий за наличие '''запрета на заезд'''. Принимает значение true - запрет на заезд выставлен, false - запрет на заезд не выставлен.
 
<hotelService buildingKey="3233" roomDescriptionKey="20" roomTypeKey="1">
 
  <stopsales>
 
    <stopsale status="Modified" typeVisit="byPeriod" uniqueKey="22" dateFrom="2013-11-02" dateTo="2013-11-02" quoteType="1"/>
 
    <stopsale status="Modified" typeVisit="byPeriod" uniqueKey="20" dateFrom="2013-11-09" dateTo="2013-11-09" duration="2" quoteType="1"/>
 
    <stopsale status="Modified" typeVisit="byPeriod" uniqueKey="28" dateFrom="2013-11-11" dateTo="2013-11-11" quoteType="0"/>
 
  </stopsales>
 
  </hotelService>
 
*duration - продолжительность услугиАтрибут не отображается, если он равен "0".
 
*quoteType - тип Stop-Sale. 1 - частный Stop-Sale. 0 - общий Stop-Sale.
 
[[Файл: mb_030.png|left|Предупреждение]] <br />
 
Информация о квотах и Stop-Sale!
 
quoteType указанный в тэге </quotas>...</quotas> указывают на тип квоты.
 
quoteType указанный в тэге <stopsales>...</stopsales> указывают на тип Stop-Sale.
 
  
====Загрузка информации по авиаперелетам (расписание и квоты)====
+
Нужно указать в качестве базового класса следующий класс:
Для получения информации по авиаперелетам необходимо использовать метод GetFlightQuotes.
 
GetFlightQuotes(int cityFrom, int cityTo, DateTime checkPoint)
 
Возвращает информацию по авиаперелетам (расписание и квоты) с городом вылета cityFrom, городом прилета cityTo, с датой вылета равной CheckPoint.
 
  
Возвращается расписание на все перелеты, на которые есть вылеты на будущие даты, по тарифам, указанным в настройке tarifsToLoadFlightQuotes.
+
'''Microsoft.Web.Services2.WebServicesClientProtocol '''
  
На даты вылетов по указанным тарифам также должна выводиться информация по квотам (число свободных для бронирования мест). В данном методе эта информация в настоящее время не заполняется.
+
Более подробно можно ознакомится с авторизацией по следующей ссылке:
====Проверка бронирования и бронирование====
 
Перед бронированием какого-либо обсчитанного тура, требуется произвести проверку бронирования с помощью функции CheckBooking. Результатом такой проверки является xml документ, содержащий в себе информацию по услугам тура, статусу этих услуг, цене. В таком же формате приходят и ответы на запросы CreateBooking.
 
  
Запрос на проверку бронирования\бронирование (booking) состоит из 3-х частей:
+
http://msdn.microsoft.com/en-us/library/ms996952.aspx
*Header
+
====Пример работа с WSE авторизацией при использовании библиотекой WSE====
*Packets
+
SoapContext reqCtx = sp.RequestSoapContext;
*Persons
+
=====Раздел Header=====
+
  UsernameToken tok = new UsernameToken("login", "password",  asswordOption.SendHashed);
Раздел заполняется следующим образом:
+
  reqCtx.Security.Tokens.Add(tok);
  <header id="int" checkin="2009-10-29" buyerPerson="1" mainPerson="1" agreementKey="0">
+
MessageSignature sig = new MessageSignature(tok);
  <comment>Данная заявка выполнена для проверки работы сервиса. Саму заявку в работу оправлять не нужно</comment>
+
sig.SignatureOptions = SignatureOptions.IncludeAction;
  </header>
+
reqCtx.Security.Elements.Add(sig);
Где:
+
  ServiceClient.ServiceProxy.Version ver = sp.GetVersion();
*id - agencyID из функции GetAgreementCredentials (вызов этой функции будет описан в разделе порядок работы)
+
====Пример работа с WSE авторизацией без использовании библиотеки WSE====
*checkin - дата, на которую производится проверка (дата, на которую планируется заезд по проверяемой цене, указанной в <calculated key="00000000" />).  
+
'''Передача запроса в виде XML'''
Даты, на которую действует указанная цена, можно узнать из TourML при загрузке цен оператора.
+
 
  <date key="00000000" from="2009-10-29" to="2009-10-30" />
+
1.Создание дайджеста пароля:
Если в указанную дату нет заезда, то вернется сообщение об ошибке (Could not find price key 00000000).
 
=====Раздел Packets=====
 
В разделе Packets передаются пакеты, которые будут бронироваться. В элементе <calculated> в атрибуте key передается ключ цен 044B
 
<packet id="_1">
 
  <calculated key="00000000" />
 
</packet>
 
У самого пакета есть атрибут id, на который будут ссылаться туристы при привязке.
 
=====Раздел Persons=====
 
В разделе Persons передается информация о клиентах
 
  
  <person key="1" sourceKey="0" packets="_1" firstNameRus="TEST" lastNameRus="TEST" firstNameLat="TEST" lastNameLat="TEST" sex="male" birthday="1982-03-03" nationalityRus="" nationalityLat="" isTourist="true">
+
  DateTime dt = DateTime.Now.ToUniversalTime();
  <contacts>
+
//Создание строк nonce, passwordDigest
  <phones />
+
private void GetPasswordDigest(out string nonce, out string digest, DateTime dt)
  <addresses />
+
{
  <emails />
+
DateTime created = dt;
  </contacts>
+
//строка, сгенеренная случайным образом. Внимание! Сервис не
  <passports>
+
//даст одну и ту же строку передавать несколько раз.
  <passport type="foreign" series="1111" number="111111111" emittedBy="ОВД" emittedWhen="1990-01-01" validTo="2007-03-03" />
+
  byte[] baNonce = new byte[20];
  </passports>
+
byte[] baCreated;
  </person>
+
Random r = new Random(Environment.TickCount);
У элемента person есть следующие атрибуты:
+
r.NextBytes(baNonce);
*key="1" — уникальный ключ клиента. На него ссылаются в атрибутах buyerPerson="1" mainPerson="1" в Header
+
string cr = String.Format("{0:yyyy-MM-ddTHH:mm:ssZ}", created);
*sourceKey="0" — Ключ туриста у внешней системы (не используется)
+
baCreated = Encoding.UTF8.GetBytes(cr);
*packets="_1" — id пакета, к которому будет привязан турист (турист привязывается ко всем услугам этой рассчитаной цены)
+
string password = "pass";
*firstNameRus="TEСT" — Имя клиента русскими буквами
+
byte[] baPassword = Encoding.UTF8.GetBytes(password);
*lastNameRus="TEСT" — Фамилия клиента русскими буквами
+
int baDigestLength = baNonce.Length + baCreated.Length + baPassword.Length;
*firstNameLat="TEST" — Имя клиента латиницей
+
byte[] baDigest = new byte[baDigestLength];
*lastNameLat="TEST" — Фамилия клиента латиницей
+
Array.Copy(baNonce, 0, baDigest, 0, baNonce.Length);
*sex="male" — пол клиента. Может принимать значения male, female, child, infant
+
  Array.Copy(baCreated, 0, baDigest, baNonce.Length, baCreated.Length);
*birthday="1982-03-03" — дата рождения клиента
+
Array.Copy(baPassword, 0, baDigest, baNonce.Length + baCreated.Length, baPassword.Length);
*nationalityRus="" - национальность (русскими буквами)
+
byte[] hash = SHA1Managed.Create().ComputeHash(baDigest);
*nationalityLat="" - национальность (латиницей)
+
nonce = Convert.ToBase64String(baNonce);
*isTourist="true" — признак является ли клиент туристом
+
digest = Convert.ToBase64String(hash);
В раздел паспортов необходимо добавить хотя бы один паспорт. Элемент паспорт
+
}
*type="foreign" — тип паспорта foreign (загран), national (национальный)
+
 
*series="1111" — серия
+
2.Подпись XML. Обязательно хоть что-нибудь должно быть подписано. Для упрощения задачи можно подписать только wsa:Action.
*number="111111111" — номер
+
 
*emittedBy="ОВД" — Кем выдан
+
const string wsaNS = "xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/03/addressing\";
*emittedWhen="1990-01-01" — Когда выдан
+
const string wsuNS = "xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\";
*validTo="2007-02-02" — Дата окончания действия
+
string action = http://tourml.ru/service/2004-08-13/products/GetVersion;
[[Файл: mb_030.png|left|Предупреждение]] <br />
+
//wsa:Action в канонической форме (с нужными namespace'ами) запишится так
Все описанные данные о клиентах являются обязательными!
+
string strToSign = String.Format("<wsa:Action {0} {1} wsu:Id=\"Id-622cdaf1-1721-4fff-8235-7ace4e4549ab\">{2}</wsa:Action>",wsaNS,wsuNS,action);
Если Вы бронируете тестовую путевку в рабочую базу оператора, ОБЯЗАТЕЛЬНО у туристов 
+
  //DigestValue - считаем от этой строки Base64(SHA1())
  задавайте имя-фамилия ТЕСТ-ТЕСТ
+
  signatureInfo += String.Format("<ds:DigestValue>{0}</ds:DigestValue>", GetBase64SHA1(strToSign));
  Если бронируйте реальную путевку, ОБЯЗАТЕЛЬНО указывайте корректные данные.
+
 
В качестве ответа на проверку бронирования\бронирование возвращается XML документ с информацией о путевке, которая приведена в разделе agreement. Этот раздел состоит из четырех частей:
+
3.SignatureValue - подпись всех элементов SignatureInfo, которые также канонизированы по стандарту xml-exc-c14n.
*header
+
header += String.Format("<SignatureValue>{0}</SignatureValue>", GetBase64SHA1(signatureInfo));
*packets
+
 
*persons
+
Более подробную справочную информацию обо всех этапах формирования XML-запроса для работы с WSE-авторизацией можно получить по следующим ссылкам:
*penaltyConditions
+
http://www.w3.org/TR/xml-exc-c14n/
В заголовке (header) приведена общая информация о путевке, характеризуемая следующими атрибутами:
+
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf
*checkin — дата заезда (дата на которую идет проверка бронирования)
+
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf
*buyerPerson — ключ клиента, который является покупателем
+
http://www.xml.com/pub/a/2001/08/08/xmldsig.html
*mainPerson — ключ клиента, который является главным туристом
+
http://www.citforum.ru/security/internet/web_service/
*agreementKey — ключ путевки (при проверке бронирования < 0, при бронировании реальный ключ из базы)
+
http://www.faqs.org/rfcs/rfc3075.html
*agreementCode — код путевки (при проверке бронирования < 0, при бронировании реальный код из базы)
+
====Пример работы без использования WSE авторизации====
*country — Название страны тура
+
С целью упрощения авторизации на веб-сервисе (для закачки информации по турам и квотам) из языков программирования типа PHP, в сервисе предусмотрена возможность передачи логина и пароля через заголовок WebRequest и параметрами через POST запрос. Данная возможность является опциональной и включается с помощью настройки в конфигурационном файле web-сервиса.
*city — Название города тура
+
<add key="allowSimpleAuth" value="true"/>
*days — продолжительность тура
+
'''Внимание! Настройка добавляется в web.config web-сервиса'''
*quantity — количество туристов
+
=====Запрос с использованием GET=====
*price — цена (туристу к оплате), включает в себя комиссию
+
При вызове метода веб-сервиса можно в качестве параметров передать информацию о логине и пароле
*pricePaid — уже оплачено
+
 
*currency — валюта путевки
+
  Login=test1&Password=qUqP5cyxm6YcTAhz05Hph5gvu9M=
*creationDate — текущая дата
+
 
*payUntil — дата, до которой нужно произвести оплату
+
где в качестве пароля выступает Base64(SHA1(‘пароль’, true))
*status — статус брони
+
=====Запрос с использованием SOAP=====
*errorStatus — статус ошибки
+
В каждом методе веб-сервиса есть описание заголовка и Soap-запроса к этому методу. Для правильной работы необходимо использовать протокол SOAP 1.1.<br />
*reasonRus — в случае ошибки или отказа бронирования здесь указываются причины
+
Например, для метода GetValidTourList:<br />
*reasonLat — в случае ошибки или отказа бронирования здесь указываются причины (латиницей)
+
Заголовок:
*commission — комиссия агентству
+
 
{| border="1"
+
  POST /Service.asmx HTTP/1.1
|'''Статус''''
+
  Host: localhost
|'''Расшифровка статуса'''
+
Content-Type: text/xml; charset=utf-8
|-
+
  Content-Length: length
|'''Общие статусы'''
+
  SOAPAction: http://tourml.ru/service/2004-08-13/products/GetValidTourListFrom
  |
+
 
|-
+
Для передачи логина и пароля в заголовок добавляются следующие элементы:
|Ок
+
  Login      : логин
|Заявка подтверждена
+
  Password: Base64(SHA1(пароль))
|-
+
 
|Waitlist
+
Soap запрос:
|Заявка в листе ожидания
+
 
|-
+
  <?xml version="1.0" encoding="utf-8"?>
  |rejected
+
  <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  |Бронирование отклонено
+
  <soap:Body>
|-
+
    <GetValidTourListFrom xmlns="http://tourml.ru/service/2004-08-13/products">
  |Annulled
+
      <checkPoint>dateTime</checkPoint>
  |Путевка аннулирована
+
    </GetValidTourListFrom>
|-
+
  </soap:Body>
|Error
+
  </soap:Envelope>
|Ошибка
+
 
|-
+
=====Пример упрощенной авторизации на языке c#=====
  |Waitcancel
+
 
  |В ожидании отмены по пользовательскому запросу
+
<syntaxhighlight lang="cpp">
|-
+
const string xsiNS = "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"";
|Cancel
+
const string xsdNS = "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"";
|Не используется
+
const string soapNS = "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\";
  |-
 
  |'''Статусы ошибок'''
 
|
 
|-
 
|Unknown
 
|Передается во всех остальных случаях
 
|-
 
|agencyNotFound
 
  |Не найдено агентство по логину/паролю
 
|-
 
|priceNotFound
 
|Не найден запрашиваемый прайс
 
|}
 
Для того, чтобы определить произошла ошибка или нет необходимо проверить дополнительный атрибут reasonRus, reasonLat, в которых передаются дополнительные комментарии.
 
  
Например, в ответе в разделе Header приходит следующее значение:
+
string message = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
status="waitlist" errorStatus="unknown"
+
message += String.Format("<soap:Envelope {0} {1} {2}>", xsiNS, xsdNS, soapNS);
*status - это статус заявки (путевки).
+
message += "<soap:Body><GetValidTourListFrom xmlns=\"http://tourml.ru/service/2004-08-13/products\"><checkPoint>2009-01-06</checkPoint></GetValidTourListFrom></soap:Body></soap:Envelope>";
*waitlist — означает что можно бронировать под запрос,
+
 
*ок - подтверждено
+
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://localhost:3153/service.asmx");
*rejected - в случае если бронирование не возможно по каким-то причинам.
+
wr.Method = "POST";
*errorStatus особой функциональной нагрузки не несет
+
wr.ContentType = "text/xml; charset=utf-8";
Если какая-то ошибка произошла или по каким-то причинам нельзя бронировать, то в атрибутах reasonRus и reasonLat указывается причина ошибки:
 
status="rejected" errorStatus="unknown" reasonRus="Бронирование выполнить нельзя т.к. отсутствует квота на услугу А_П::Москва/Дубровник/LLM9351, DME-DBV, 07:00-08:20/Y Эконом класс/. " reasonLat="Booking could
 
not be done, because quota on service А_П::Москва/Дубровник/LLM9351, DME-DBV, 07:00-08:20/Y Эконом класс/ is absent.
 
Элемент Packets содержит пакеты, помеченные атрибутом id, состоящие из наборов услуг, разбитых на группы (аналогично тому, как разбивались варианту услуг в TourML):
 
*hotelServices
 
*flightServices
 
*excursionServices
 
*transferServices
 
*cruiseServices
 
*extraServices
 
Каждая из услуг описывается набором атрибутов, например:
 
<hotelService key="-12" name="HOTEL::АНТАЛИЯ/_NO_CENDER-4*,7 ночей/Double(Standart),Взр./AI Всё включено/" dayBeg="1" nights="7" days="7" men="2" reasonRus="Места есть" reasonLat="Places available"  
 
sourceKey="0" buildingKey="1037" roomKey="1113" mealKey="38" />
 
Атрибуты, общие для всех типов услуг:
 
*key – ключ услуги (при реальном бронировании ключ услуги из услуг договора)
 
*name — наименование услуги
 
*dayBeg — день начала предоставления услуги
 
*nights — продолжительность услуги в ночах
 
*days — продолжительность услуги в днях
 
*men — количество человек, пользующихся услугой
 
*reasonRus - Объяснение причины, по которой услуга не доступна при бронировании (например, нет мест)
 
*reasonLat - То же самое, что reasonRus, но на английском
 
*sourceKey - Идентификатор услуги у внешней системы (не используется)
 
Дополнительные атрибуты, для различных типов услуг:
 
  
Услуги проживания(hotelService):
+
//Прописываем Soap запрос
*mealKey - тип питания из справочника boardings
+
Stream connectionStream = wr.GetRequestStream();
*roomKey - тип комнаты
+
StreamWriter sw = new StreamWriter(connectionStream, Encoding.UTF8);
*buildingKey - тип здания
+
sw.Write(message);
Услуги авиаперелета(flightService):
+
sw.Close();
*tariffKey - тариф на перелет из справочника tariffs
+
//Прописываем логин и пароль
*flightKey - перелет из справочника Flights (описывает город вылета-прилета, авиакомпанию).
+
wr.Headers.Add("Login", "test");
Услуги экскурсии(excursionServices):
+
wr.Headers.Add("Password", Convert.ToBase64String(SHA1Managed.Create().ComputeHash(Encoding.UTF8.GetBytes("test"))));
*transportKey,excursionKey - сслылки на справочники тип транспорта (transports) и экскурсия (excursions)
+
wr.Headers.Add("SOAPAction", "http://tourml.ru/service/2004-08-13/products/GetValidTourListFrom");
Услуги трансфера(transferService):
+
WebResponse resp = wr.GetResponse();
*transferKey – ссылка на справочник трансферов
+
</syntaxhighlight>
*transportKey – ссылка на справочник транспортов
 
Услуги круиз(cruiseServices):
 
*shipKey – ссылка на справочник
 
*cabineKey - ссылки на справочники cabines и ships.
 
Остальные услуги(extraService):
 
*classKey - тип услуги из справочника serviceClasses
 
*subKey - описание услуги из справочника serviceDescriptions
 
*subKey1 - дополнительное описание 1 из справочника serviceDescriptions1
 
*subKey2 - дополнительное описание 2 из справочника serviceDescriptions2
 
*countryKey - ссылка на страну из справочника Country
 
*cityKey - ссылка на город из справочника City
 
В разделе Persons передается информация о клиентах. Формат данных такой же, как описан выше для запроса. Ответ функции CreateBooking отличается от ответа функции CheckBooking только тем, что при создании путевки возвращаются реальные ключи из базы.
 
=====Получение ключа агентства (функция GetAgreementCredentials)=====
 
В функцию бронирования и проверки бронирования необходимо передавать ключ агентства. Для получения ключа необходимо воспользоваться функцией GetAgreementCredentials.
 
  
В качестве входных параметров в функцию передаются логин и пароль web–пользователя агентства (логин-пароль под которым агентство заходит в Мастер-Веб).  
+
==Вызов методов веб-сервиса. Возможные проблемы при авторизации==
 +
Если метод вызывается через браузер и если Вы используете браузер Internet Explorer, то при возникновении любой ошибки на этапе авторизации возвращается HTTP 500 - Внутренняя ошибка сервера. Internet Explorer скрывает текст возникшей ошибки. В данном случае стоит воспользоваться каким-либо альтернативным браузером (Opera, Mozilla), где сообщение от сервера выведется на экран. Также текст ошибок можно получать, воспользовавшись логгерами Http, которые отслеживают запросы\ответы по этому протоколу. Логгерами можно воспользоваться также при обращениях к сервису с клиента.
 +
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse"
  
Результатом выполнения этого метода будет xml-документ следующего вида
+
|- style="background-color:#F2F2F2"
<RegisterAgencyResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
|-
    <credentials agencyId="10795" agreementNumber="w2435" expirationDate="2009-12-11T00:00:00" xmlns="http://tourml.ru/agencies/2004-09-28" />
+
|Запрос
  </RegisterAgencyResponse>
+
|Возникшая ошибка
где,
+
|Пояснение
*agencyId – id агентства, к которому принадлежит указанный пользователь.
+
|-
*AgreementNumber — номер договора с агентством
+
|GetStopSalesAndQuotes(2009-05-05)
*ExpirationDate - дата истечения договора.
+
  |System.Data.SqlClient.SqlException: Cannot open database AvalonTest requested by the login. The login failed.
 +
Login failed for user 'ESYSTEM'.
 +
 
 +
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
  
Метод возвращает тот номер договора, у которого текущая дата попадает между начальной и конечной датой договора, есть признак ''Договор по умолчанию'', или дата обновления самая поздняя.
+
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
  
Если такого логина не существует, то вернется сообщение об ошибке
+
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
<RegisterAgencyResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
  <credentials agencyId="0" expirationDate="0001-01-01T00:00:00" xmlns="http://tourml.ru/agencies/2004-09-28" />
 
  <error errorStatus="loginNotFound" errorDescriptionRus="Логина test не существует." errorDescriptionLat="The login test  does not exist." xmlns="http://tourml.ru/agencies/2004-09-28" /> 
 
</RegisterAgencyResponse>
 
Если неправильно указан пароль, то возвращается следующее сообщение об ошибке:
 
<RegisterAgencyResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
  <credentials agencyId="0" expirationDate="0001-01-01T00:00:00" xmlns="http://tourml.ru/agencies/2004-09-28" />
 
  <error errorStatus="passwordIncorrect" errorDescriptionRus="Неверный пароль." errorDescriptionLat="The incorrect password." xmlns="http://tourml.ru/agencies/2004-09-28" />
 
</RegisterAgencyResponse>
 
  
=====Получение справочной информации (функция GetReferences)=====
+
at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
Для получения справочной информации по идентификатору и ключу необходимо воспользоваться функцией GetReferences.
 
  
В качестве входных параметров в функцию передаются идентификатор запроса и ключ фильтра:
 
  
{| border="1"
+
  |Проблема на стороне оператора. Веб-сервис не может получить доступ к базе данных под учетной записью, указанной в web.config веб-сервиса.
|'''Значение "queryType"'''
 
|'''Значение "param"'''
 
  |'''Описание'''
 
 
  |-
 
  |-
  |GetPartnerByDgKey
+
  |GetSPOPageByKey(253,0,5000)
  |Ключ путевки
+
  |System.Data.SqlClient.SqlException: The transaction log for database 'AvalonTest' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
  |Возвращает партнеров, указанных в услугах, связанных с данной путевкой.
+
  |Проблема на стороне оператора. Требуется передать указанную ошибку администратору базы данных оператора.
 
|-
 
|-
|HotelByCityId
+
|GetSPOPageByKey(253,0,5000)
  |Ключ города
+
  |System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Серверу не удалось обработать запрос. ---> System.Data.SqlClient.SqlException: Could not find stored procedure 'sp_GetPricePage'.
|Выводит все отели данного города.
+
 
|-
+
в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
|HotelByCountryId
+
 
|Ключ страны
+
в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
  |Выводит все отели данной страны.
+
 
 +
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
 +
 
 +
в System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader
 +
 
 +
  |В базе данных оператора отсутствует хранимая процедура 'sp_GetPricePage'. Проблема на стороне оператора. Требуется передать указанную ошибку администратору базы данных оператора. По поводу обновления или установки данной процедуры оператор может связаться со службой поддержки компании Мегатек.
 
|-
 
|-
|HotelById
+
|GetSPOPageByKey(253,0,5000) (При вызове из браузера)
  |Ключ отеля
+
  |System.Web.Services.Protocols.SoapException:  Username was not specified
  |Выводит отель с заданным ключом.
+
  |Указанный метод требует указание логина\пароля. И не может быть вызван из браузера напрямую.
 
|-
 
|-
  |CityByCountryId
+
|GetSPOPageByKey(253,0,5000)
  |Ключ страны
+
  |System.Exception: WSE authorization error 565
  |Выводит все города данной страны.
+
 
 +
 
 +
Или
 +
 
 +
 
 +
System.Web.Services.Protocols.SoapHeaderException: Microsoft.Web.Services2.Security.SecurityFault:
 +
 
 +
The security token could not be authenticated or authorized --->
 +
 
 +
System.ArgumentNullException: Значение не может быть неопределенным.
 +
 
 +
Имя параметра: secret
 +
 
 +
|Не удалось авторизоваться с переданным логином\паролем.
 +
|-
 +
|GetSPOPageByKey(253,0,5000)
 +
  |System.Web.Services.Protocols.SoapHeaderException: Microsoft.Web.Services2.Security.SecurityFault:
 +
The security token could not be authenticated or authorized ---> System.Exception: Password has expired.
 +
  |Истек срок действия переданного логина.
 
|-
 
|-
  |CityById
+
|GetStopSalesAndQuotes(2009-05-05)
  |Ключ города
+
|System.Web.Services.Protocols.SoapException: You are not allowed to use this function
  |Выводит город с заданным ключом.
+
|С переданным логином\паролем нельзя вызвать эту функцию. В списке групп функций, доступных по этому логину, отсутствует группа с вызываемой процедурой.
|-
+
|}
  |CountryById
+
 
  |Ключ страны
+
==Функции загрузки информации о турах==
  |Выводит страну с заданным ключом.
+
===Формат TourML===
|-
+
TourML - xml-документ, в котором передается информация о турах, ценах, услугах, входящих в эти цены, квотах.
  |RoomAccomodationById
+
 
  |Ключ типа размещения
+
Формат TourML был разработан для  того, чтобы стать единым “языком”, который будут понимать различные системы и программные средства, работающие в туристической сфере.
  |Выводит тип размещения с заданным ключом.
+
 
|-
+
====Описание формата TourML====
  |RoomTypeById
+
Структурно xml-документ разделен на 3 части.
  |Ключ типа комнаты
+
#header – заголовок документа
 +
#references (необязательна) – секция справочников
 +
#sources – секция цен
 +
*header обязателен, но содержит необязательную для синхронизации информацию о том, кто и с помощью какой реализации сформировал документ.
 +
*name (обязателен)– строка, содержащая значение, указывающее на владельца документа (но не информации, которая в нем находится). Обычно это название компании, которая формирует документ. Как правило, не используется при синхронизации.
 +
*uri (необязателен)– уникальный идентификатор владельца документа.
 +
Элемент loadTime содержит следующие данные:
 +
*timeValue - информация о времени загрузки (не используется)
 +
*lastKey - для постраничной загрузки максимальный (наибольший) ключ тура, который передается для выгрузки следующей страницы
 +
<header name="ООО МегаТур" uri="www.megatour.com" xmlns="http://tourml.ru/products/2004-04-19">
 +
  <loadTime timeValue="100" xmlns="http://www.megatec.ru/tourml/extensions" lastKey="3451235"/>
 +
</header>
 +
Элемент references содержит информацию об используемых при описании цен, СПО или квот справочниках. Этот элемент является необязательным, однако, практически всегда используется, так как трудно описать информацию не сославшись как какой-либо справочник. Например, при описании СПО, необходимо ссылаться на страны, валюту и т.д. Таким образом, элементы справочников должны присутствовать в документе практически всегда для сохранения ссылочной целостности.
 +
 
 +
Элементы справочников, используемые во всем документе, описываются только в данном разделе.
 +
 
 +
Уникальность первичных ключей элементов справочников поддерживается в пределах элемента references.
 +
 
 +
В справочниках содержатся следующие разделы
 +
 +
*countries – раздел, описывающий страны
 +
*resorts – раздел, описывающий регионы
 +
*cities – раздел, описывающий города
 +
*categories – раздел, описывающий категории звездности отелей и кают
 +
*hotels – раздел, описывающий отели
 +
*buildings – раздел, описывающий корпуса отелей
 +
*airlines – раздел, описывающий авиакомпании
 +
*airports – раздел, описывающий аэропорты
 +
*aircrafts – раздел, описывающий авиасуда
 +
*flights – раздел, описывающий перелеты
 +
*roomTypes – раздел, описывающий типы номеров
 +
*roomLocations – раздел, описывающий расположение номера
 +
*roomViews – раздел, описывающий вид из номера
 +
*roomCategories – раздел, описывающий уровень комфортности
 +
*roomDescriptions – используемые комбинации расположения номера, вида из номера и уровня комфортности номера
 +
*roomAccomodations – раздел, описывающий проживание в номере
 +
*rooms – используемые комбинации типов номеров, проживания и описания номера (roomDescriptions)
 +
*serviceClasses – раздел, описывающий типы услуг
 +
*serviceDescriptions – раздел, описывающий дополнительные услуги
 +
*serviceDescriptions1– раздел, описывающий дополнительные услуги
 +
*serviceDescriptions2– раздел, описывающий дополнительные услуги
 +
*transfers – раздел, описывающий услуги переезда
 +
*excursions – раздел, описывающий экскурсионные услуги
 +
*transports – раздел, описывающий транспорт
 +
*cabines – раздел, описывающий каюты
 +
*ships – раздел, описывающий морские суда
 +
*boardings – питание
 +
*currencies – валюта
 +
*tariffs – тарифа перелетов
 +
*tourTypes – типы туров
 +
Пример - справочник городов:
 +
    <countries>
 +
      <country key="29" name="Греция" nameLat="Greece" code="GRC" />
 +
      <country key="375" name="Россия" nameLat="Russia" code="RUS" />
 +
      <country key="99999999" fake="true" stdKey="UNKNOWN" name="UNKNOWN" nameLat="UNKNOWN" code="UNKNOWN" />
 +
    </countries>
 +
У каждого элемента из указанных выше разделов существуют атрибуты:
 +
*key (обязателен) - ключ в таблице соответствующего справочника.
 +
*fake (необязателен) - указывает на то, что первичный ключ является фиктивным (если значение true). Даже в том случае, когда первичный ключ является фиктивным, он должен быть уникален. Обычно ключ (key) такой фиктивной записи равен значению 99999999 или 0. Все остальные атрибуты заполняются значением UNKNOWN.
 +
*stdKey (необязателен) – стандартный ключ элемента справочника. Используется в тех случаях, когда принимающая сторона заранее не имеет данных справочников и не может синхронизировать запись по идентификатору. Реализация может при синхронизации отдавать приоритет атрибуту stdKey перед атрибутами code, name и nameLat, однако вследствие того, что туроператоры не заполняют это поле надлежащим образом, как правило, в нем содержится мусор не имеющий ничего общего со стандартным ключом (ISO кодом).
 +
 
 +
Также могут включать в себя дополнительные атрибуты типа Name, NameLat, Code и др.
 +
 
 +
Элемент sources может содержать информацию о квотах или о ценах какого-либо тура.
 +
Информация о ценах содержится в элементах packet, который состоит из 3-х частей:
 +
*packetHeader - общая информация о туре и СПО
 +
*services - информация об услугах, включенных в цены
 +
*prices - цены и даты заезда + ссылки на услуги
 +
*deletedPrices – удаленные цены и даты заезда + ссылки на услуги.
 +
packetHeader имеет следующую структуру:
 +
<packetHeader>
 +
  <tour key="2054" name="Халкидики" tourTypeKey="2" countryKey="29" />
 +
  <spo key="3206" for="byRoom" validFrom="2009-09-25" validTo="2009-10-07" currencyKey="2" state="Created" issue="2009-08-03T13:04:06.0000000+04:00">
 +
    <dates />
 +
    <comment />
 +
  </spo>
 +
  <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
 +
    <priceQuantity>3736</priceQuantity>
 +
  </spoInfo>
 +
</packetHeader>
 +
Где:
 +
*tour key - ключ тура
 +
*name - название тура
 +
*tourTypeKey, countryKey - тип тура и страна - описаны в разделе справочники.
 +
*spo key - ключ соответствующего СПО
 +
*for="byRoom" (или "byPerson") - показывает за что указаны цены - за комнату или за человека.
 +
*validFrom="2009-09-25" validTo="2009-10-07" - промежуток времени, на который распространяется данное СПО
 +
*currencyKey - валюта, в которой заведены цены - описана в разделе справочники.
 +
*state="Created" (или "Modified") - статус тура - создан (изменен)
 +
*issue="2009-08-03T13:04:06.0000000+04:00" - дата и время последнего изменения тура.
 +
*<dates /> - даты, на которые есть заезды в указанном туре (будет реализовано в следующей версии)
 +
*<comment /> - комментарий к СПО (будет реализовано в следующей версии)
 +
*spoInfo содержит элемент priceQuantity, в котором указано количество доступных цен для тура.
 +
*services - информация об услугах, на которые есть ссылки из раздела цен.
 +
Услуги разделены по следующим группам:
 +
Услуга проживания. Например,
 +
<hotelService mealKey="44" roomKey="4648" buildingKey="3413">
 +
*mealKey - тип питания из справочника boardings
 +
*roomKey - тип комнаты
 +
*buildingKey - тип здания
 +
Услуга перелета. Например,
 +
<flightService tariffKey="89" flightKey="631">
 +
*tariffKey - тариф на перелет из справочника tariffs
 +
*flightKey - перелет из справочника Flights (описывает город вылета-прилета, авиакомпанию).
 +
Справочник Flights включает в себя элементы FlightTimes (расписания перелетов).
 +
Услуга экскурсий. Например,
 +
<excursionServices transportKey="23" excursionKey="12">
 +
*transportKey,excursionKey - сслылки на справочники тип транспорта (transports) и экскурсия (excursions)
 +
Услуга трансфера. Например,
 +
<transferService transferKey="1989" transportKey="210">
 +
*transferKey, transportKey - соответствующие ссылки на справочники transfers и transports
 +
Услуга круиз. Например,
 +
<cruiseServices shipKey="123" cabineKey="12">
 +
*shipKey, cabineKey - ссылки на справочники cabines и ships.
 +
Остальные услуги - страховка, виза, доп. услуги и т.д. Например,
 +
<extraService classKey="6" subKey="30037" subKey1="5162" subKey2="17" countryKey="460" cityKey="1">
 +
*classKey - тип услуги из справочника serviceClasses
 +
*subKey - описание услуги из справочника serviceDescriptions
 +
*subKey1 - дополнительное описание 1 из справочника serviceDescriptions1
 +
*subKey2 - дополнительное описание 2 из справочника serviceDescriptions2
 +
*countryKey - ссылка на страну из справочника Country
 +
*cityKey - ссылка на город из справочника City
 +
Внутри элемента каждой такой услуги приведены варианты этой услуги (элемент variant) в зависимости от продолжительности, дня начала предоставления и других параметров
 +
<flightService tariffKey="330" flightKey="2284">
 +
    <variant providerKey="0" dayBeg="1" nights="0" days="0" men="1" allowDelete="true" allowEditMainService="true" allowEditSubService="true" id="_39839489">
 +
        <info>
 +
            <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions" />
 +
        </info>
 +
    </variant>
 +
    <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" id="_39839488">
 +
        <info>
 +
            <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions" />
 +
        </info>
 +
    </variant>
 +
</flightService>
 +
Элемент variant имеет следующие атрибуты:
 +
*providerKey - ключ партнера, предоставляющего услугу (не используется - возвращается 0)
 +
*dayBeg - день начала предоставления услуги
 +
*nights - продолжительность услуги в ночах
 +
*days - продолжительность услуги в днях
 +
*men - количество человек, на которое рассчитана данная услуга
 +
*id - ключ услуги, на который ссылается serviceSet из раздела prices
 +
*allowDelete - флаг, показывающий можно ли удалить данную услугу
 +
*allowEditMainService - флаг, показывающий можно ли изменять услугу
 +
*allowEditSubService - флаг, показывающий можно ли изменять SubService (подчиненную услугу) у данной услуги
 +
У элемента variant существует вложенный опциональный элемент info, в который выводится дополнительные атрибуты услуги (если хотя бы одна из них true):
 +
*allowEditCity - у услуги возможно редактирование города
 +
*allowEditPartner - у услуги возможно редактирование партнера, предоставляющего услугу
 +
*allowEditDuration - у услуги возможно редактировать продолжительность
 +
Invisible - флаг, показывающий что услуга скрытая (сейчас этот флаг не используется, поскольку скрытые услуги отсеиваются на этапе выгрузки из базы)
 +
Как для атрибутов у variant так и для атрибутов info справедливо следующее правило: если какой-то из флагов имеет значение false, то он не возвращается в ответе. То есть
 +
<additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions" />
 +
означает
 +
allowEditCity = true
 +
allowEditPartner = true
 +
allowEditDuration = false
 +
Invisible = false
 +
prices - раздел, в котором сгруппированы обсчитанные услуги и указаны цены на пакеты из этих услуг, в зависимости от дат заезда.
 +
В элементе serviceSet в атрибуте ids указан список id услуг пакета (ключей элементов variant, описанных выше).
 +
<serviceSet ids="_2000051 _2000056 _2000061 _2000066 _2000071 _2000076 _2000081 _2000441">
 +
    <price gross="3586">
 +
        <date key="67222503" from="2009-09-25" to="2009-09-25" />
 +
        <date key="67222504" from="2009-09-27" to="2009-09-27" />
 +
    </price>
 +
    <price gross="3756">
 +
        <date key="67222793" from="2009-09-29" to="2009-09-29" />
 +
    </price>
 +
</serviceSet>
 +
В элементах price указаны цены (gross) за набор услуг пакета. Внутри элемента price вложены элементы data, имеющие следующие атрибуты:
 +
*key - ключ обсчитаной цены
 +
*from, to - промежуток дат, на который распространяется эта цена.
 +
При проверке бронирования данный ключ + дата из промежутка from, to должны передаваться в качестве переметров.
 +
Таким образом, это означает, что пакет с ключем 67222503 на 2009-09-25 стоит (предварительная цена) 3586 (валюта берется из описания СПО) и состоит из следующих услуг: "_2000051 _2000056 _2000061 _2000066 _2000071 _2000076 _2000081 _2000441".
 +
 
 +
===Порядок работы с web-сервисом===
 +
Web-сервис TourML позволяет организовать полный цикл взаимодействия с программным комплексом Мастер-Тур – от получения цен до бронирования и аннуляции заявок. Ниже рассмотрен полный цикл работы с web-сервисом.
 +
====Получение списка доступных спецпредложений====
 +
Первым шагом при работе с web-сервисом является получение списка спецпредложений, выставленных оператором для просмотра в онлайне. Эта операция может быть выполнена с помощью двух методов:
 +
*GetValidTourList
 +
*GetValidTourListFrom
 +
Результат выполнения данных методов - TourML документ, в котором содержится список доступных СПО, а также их актуальность.
 +
 
 +
Разделы документа, которые будут заполнены:
 +
В разделах packet (которых будет по количеству доступных СПО) будет заполнен элемент packetHeader, содержащий информацию о СПО и количестве цен.
 +
<nowiki>
 +
<sources xmlns="http://tourml.ru/products/2004-04-19">
 +
    <source name="ООО МегаТур" uri="http://www.mega tour.com/">
 +
      <quotaServices />
 +
      <packets>
 +
        <packet>
 +
          <packetHeader>
 +
            <tour key="311" name="Test Tour" tourTypeKey="5" countryKey="90">
 +
            </tour>
 +
            <spo key="467" for="byPerson" validFrom="2009-01-11" validTo="2009-12-29" currencyKey="1" state="Created" issue="2009-01-10T14:12:00.0000000+03:00">
 +
              <dates />
 +
              <comment />
 +
            </spo>
 +
            <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
 +
              <priceQuantity>20520</priceQuantity>
 +
            </spoInfo>
 +
          </packetHeader>
 +
          <services>
 +
            <hotelServices />
 +
            <flightServices />
 +
            <excursionServices />
 +
            <transferServices />
 +
            <cruiseServices />
 +
            <extraServices />
 +
          </services>
 +
          <prices />
 +
        </packet>
 +
        <packet>
 +
        ........
 +
        </packet>
 +
</nowiki>
 +
При выгрузке информации об СПО будут заполнены только те справочники, на которые есть ссылки в элементах tour и spo, а именно: страна, валюта, тип тура.
 +
<references xmlns="http://tourml.ru/products/2004-04-19">
 +
    <countries>
 +
      <country key="86" name="Турция" nameLat="TURKEY" code="TR" />
 +
      <country key="90" name="Австрия" nameLat="AUSTRIA" code="AT" />
 +
      <country key="9" name="Египет" nameLat="Egypt" code="EG" />
 +
    </countries>
 +
    <resorts />
 +
    <cities />
 +
    <categories />
 +
    <hotels />
 +
    <buildings />
 +
    <airlines />
 +
    <airports />
 +
    <aircrafts />
 +
    <flights />
 +
    <roomTypes />
 +
    <roomLocations />
 +
    <roomViews />
 +
    <roomCategories />
 +
    <roomDescriptions />
 +
    <roomAccomodations />
 +
    <rooms />
 +
    <serviceClasses />
 +
    <serviceDescriptions />
 +
    <serviceDescriptions1 />
 +
    <serviceDescriptions2 />
 +
    <transfers />
 +
    <excursions />
 +
    <transports />
 +
    <cabines />
 +
    <ships />
 +
    <boardings />
 +
    <currencies>
 +
      <currency key="1" name="US Dollar" nameLat="US Dollar" code="$" />
 +
    </currencies>
 +
    <tariffs />
 +
    <tourTypes>
 +
      <tourType key="32" name="Сложный тур" nameLat="Complex tour" />
 +
      <tourType key="5" name="Специальное предложение" nameLat="Special offer" />
 +
      <tourType key="0" name="Не определен" nameLat="Not detected" />
 +
    </tourTypes>
 +
  </references>
 +
====Загрузка цен по конкретному спецпредложению====
 +
На втором шаге с помощью метода GetSPOPageByKey выполняется загрузка цен по конкретному спецпредложению. Метод принимает следующие параметры:
 +
*SpoKey – ключ СПО
 +
*minPriceKey – ключ цены, начиная с которой осуществлять выгрузку
 +
*pageSize – количество записей получаемых за один запрос (не больше 5000)
 +
 
 +
'''Внимание!'''
 +
 
 +
Количество записей (pageSize) рекомендуется брать не более 5000, поскольку это  значение гарантирует приемлемую производительность сервиса.
 +
 
 +
Выгрузка страницы с 5000 ценами занимает порядка 5-20 секунд, в зависимости от производительности сервера и его текущей загрузки.
 +
 
 +
'''Пример'''
 +
 
 +
Пусть требуется выгрузить СПО с ID = 25. Из результатов метода GetValidTourList мы знаем, что в данном СПО 26430 цен.
 +
 
 +
Первый запрос мы отправляем с параметрами 25, 0, 5000. В качестве ответа сервиса получим TourML, в котором будут описаны первые 5000 прайсов указанного СПО.
 +
 
 +
Чтобы выполнить загрузку следующей страницы нам нужно передать в качестве параметров 25, maxPriceID, 5000, где maxPriceID - максимальный ID цены которая вернулась в предыдущем запросе.
 +
 
 +
В ответе сервиса ID прайсов возвращаются в тегах date, сгруппированных по цене,
 +
 
 +
<serviceSet ids="_10818">
 +
    <price gross="10990">
 +
      <date key="12575" from="2014-05-24" to="2014-05-24"/>
 +
    </price>
 +
</serviceSet>
 +
 
 +
где:
 +
*ids - ключи услуги, поле TL_TSKey из таблицы TP_SERVICELISTS
 +
*price gross - цена, поле TP_Gross из таблицы TP_PRICES
 +
*date key - ключ цены, поле TP_Key из таблицы TP_PRICES
 +
 
 +
Чтобы найти maxPriceID нужно перебрать все теги date и выбрать тот, у которого атрибут key максимальный. В последних версиях сервиса доступен атрибут lastKey у элемента loadTime, в котором указан maxPriceID. Если lastKey=-1, то загрузка окончена и этот TourML - последняя страница.
 +
<header name="" uri="http://notfound.net">
 +
    <loadTime timeValue="100" lastKey="87546090" xmlns="http://www.megatec.ru/tourml/extensions" />
 +
</header>
 +
Таким образом, чтобы выгрузить весь тур (26430 цен) необходимо отправить 6 запросов. Последний запрос также можно отправить с pageSize = 5000. Сервис вернет оставшиеся 1430 цен.
 +
 
 +
====Загрузка информации о квотах====
 +
Для получения информации о квотах необходимо использовать метод GetStopSalesAndQuotes.
 +
 
 +
'''Внимание!'''
 +
 
 +
В результат работы метода GetStopSalesAndQuotes(DateTime checkPoint) попадают только те данные, которые изменялись за период c checkPoint по текущую дату. Такой вариант работы подразумевает ведение своей собственной базы с занесением в нее информации по квотам и стопам.
 +
 
 +
В разделе references приведены справочники, на которые ссылаются отобранные перелеты или гостиницы.
 +
<references>
 +
  <countries>
 +
    <country key="460" name="Россия" nameLat="Russia" code="RU" />
 +
    <country key="86" name="Турция" nameLat="TURKEY" code="TR" />
 +
  </countries>
 +
  <resorts />
 +
  <cities>
 +
      <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460" />
 +
      <city key="187" name="АНТАЛИЯ" nameLat="ANTALYA" code="AYT" countryKey="86" />
 +
  </cities>
 +
В разделе
 +
<nowiki>
 +
<sources>
 +
    <source name="name" uri="http://www.name.ru/">
 +
        <quotaServices>
 +
</nowiki>
 +
приведена информация по квотам.
 +
=====Информация по квотам на перелет=====
 +
Для каждого авиаперелета и тарифа формируется следующая информация:
 +
<flightService flightKey="552" tariffKey="330">
 +
где flightKey - ключ перелета, tariffKey - ключ тарифа.
 +
<flightService flightKey="526" tariffKey="89">
 +
  <stopsales>
 +
    <stopsale dateFrom="2009-05-01" dateTo="2009-05-02" typeVisit="byPeriod" status="Modified" />
 +
  </stopsales>
 +
</flightService>
 +
В элементах <stopsale> приведена информация об остановках продаж на период времени с dateFrom по dateTo.
 +
<flightService flightKey="526" tariffKey="89">
 +
  <quotas>
 +
    <quota date="2009-05-05" places="125" freeAccess="many" typeQuantity="byPerson" typeVisit="byPeriod"  status="Created" duration=”5,6” />
 +
  </quotas>
 +
</flightService>
 +
Квоты по датам преведены в элементах <quota>.
 +
*Атрибут date - дата, на которую проверяется квота.
 +
*Атрибут places - количество свободных мест (отображается если настройка isShowQuantity установлена в true)
 +
*Атрибут freeAccess - в зависимости от результата проверки квот и настроек <quoteQualifiers>  может принимать значения "byQuery", "none", "little", "many".
 +
*Атрибут duration – продолжительность, на которую заведена квота. Если квота без продолжительности, то атрибут не выводится.
 +
Остальные атрибуты всегда остаются такими typeQuantity="byPerson" typeVisit="byPeriod". Если атрибут status="Deleted", то это означает, что данная квота или стоп сейл были удалены из базы данных.
 +
 
 +
Примеры возвращаемых данных:
 +
<flightService flightKey="10823" tariffKey="332">
 +
  <quotas>
 +
    <quota date="2009-05-28" places="0" freeAccess="byQuery" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" /> - квота на заданное число не задана.
 +
    <quota date="2009-05-31" places="0" freeAccess="none" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" /> на заданное число нет мест
 +
  <quota date="2009-06-10" places="17" freeAccess="little" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 +
</flightService>
 +
на заданное число есть 17 мест.
 +
 
 +
Если на какое либо число отсутствует квота в разделе <quotas>, то считается что данная услуга также имеет статус "под запрос" (byQuery).
 +
 
 +
=====Информация по квотам на проживания=====
 +
<hotelService buildingKey="3239" roomTypeKey="1" roomDescriptionKey="20">
 +
  <quotas>
 +
    <quota date="2009-07-15" places="0" freeAccess="byQuery" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 +
    <quota date="2009-07-16" places="0" freeAccess="byQuery" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" duration=”5,6” />
 +
  </quotas>
 +
</hotelService>
 +
*buildingKey - ключ гостиницы
 +
*roomTypeKey -  тип комнаты (HotelRoom.RoomKey)
 +
*roomDescriptionKey - категория комнаты (HotelRoom.RoomsCategoryKey)
 +
*typeQuantity="byRoom"  - квота предоставляется на комнату 
 +
*Атрибут duration – продолжительность, на которую заведена квота. Если квота без продолжительности, то атрибут не выводится.
 +
"byPerson" - квота предоставляется на человека. При проверке нужно учитывать количество людей. (используется реже)
 +
 
 +
typeVisit="byPeriod"  - квота задана на указанный день. Квоты должны проверяться на все дни тура
 +
 
 +
"byCheckin" - на заезд. проверка квот идет только на первый день. Если в первый день заезда места есть, то считается что есть. (используется реже)
 +
 
 +
Примеры возвращаемых данных:
 +
 
 +
<hotelService buildingKey="3275" roomTypeKey="79" roomDescriptionKey="51">
 +
  <stopsales>
 +
    <stopsale dateFrom="2009-08-14" dateTo="2009-08-15" typeVisit="byPeriod" status="Modified" />
 +
    <stopsale dateFrom="2009-08-17" dateTo="2009-08-18" typeVisit="byPeriod" status="Modified" />
 +
  </stopsales>
 +
  <quotas>
 +
    <quota date="2009-08-16" places="1" freeAccess="little" typeQuantity="byRoom" typeVisit="byPeriod" status="Modified" />
 +
  </quotas>
 +
</hotelService>
 +
 
 +
При использовании метода '''GetStopSalesAndQuotes2'''.
 +
<hotelService buildingKey="3233" roomDescriptionKey="20" roomTypeKey="1">
 +
  <quotas>
 +
    <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="2778" agentKey="0" freeAccess="many" places="20" date="2013-10-01" quoteType="0" checkInStop="false"/>
 +
    <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="2779" agentKey="0" freeAccess="many" places="20" date="2013-10-02" quoteType="0" checkInStop="true"/>
 +
  </quotas>
 +
</hotelService>
 +
*checkInStop - атрибут, отвечающий за наличие '''запрета на заезд'''. Принимает значение true - запрет на заезд выставлен, false - запрет на заезд не выставлен.
 +
<hotelService buildingKey="3233" roomDescriptionKey="20" roomTypeKey="1">
 +
  <stopsales>
 +
    <stopsale status="Modified" typeVisit="byPeriod" uniqueKey="22" dateFrom="2013-11-02" dateTo="2013-11-02" quoteType="1"/>
 +
    <stopsale status="Modified" typeVisit="byPeriod" uniqueKey="20" dateFrom="2013-11-09" dateTo="2013-11-09" duration="2" quoteType="1"/>
 +
    <stopsale status="Modified" typeVisit="byPeriod" uniqueKey="28" dateFrom="2013-11-11" dateTo="2013-11-11" quoteType="0"/>
 +
  </stopsales>
 +
</hotelService>
 +
*duration - продолжительность услуги.  Атрибут не отображается, если он равен "0".
 +
*quoteType - тип Stop-Sale. 1 - частный Stop-Sale. 0 - общий Stop-Sale.
 +
[[Файл: mb_030.png|left|Предупреждение]] <br />
 +
Информация о квотах и Stop-Sale!
 +
quoteType указанный в тэге </quotas>...</quotas> указывают на тип квоты.
 +
quoteType указанный в тэге <stopsales>...</stopsales> указывают на тип Stop-Sale.
 +
 
 +
====Загрузка информации по авиаперелетам (расписание и квоты)====
 +
Для получения информации по авиаперелетам необходимо использовать метод GetFlightQuotes.
 +
GetFlightQuotes(int cityFrom, int cityTo, DateTime checkPoint)
 +
Возвращает информацию по авиаперелетам (расписание и квоты) с городом вылета cityFrom, городом прилета cityTo, с датой вылета равной CheckPoint.
 +
 
 +
Возвращается расписание на все перелеты, на которые есть вылеты на будущие даты, по тарифам, указанным в настройке tarifsToLoadFlightQuotes.
 +
 
 +
На даты вылетов по указанным тарифам также должна выводиться информация по квотам (число свободных для бронирования мест). В данном методе эта информация в настоящее время не заполняется.
 +
====Проверка бронирования и бронирование====
 +
Перед бронированием какого-либо обсчитанного тура, требуется произвести проверку бронирования с помощью функции CheckBooking. Результатом такой проверки является xml документ, содержащий в себе информацию по услугам тура, статусу этих услуг, цене. В таком же формате приходят и ответы на запросы CreateBooking.
 +
 
 +
Запрос на проверку бронирования\бронирование (booking) состоит из 3-х частей:
 +
*Header
 +
*Packets
 +
*Persons
 +
=====Раздел Header=====
 +
Раздел заполняется следующим образом:
 +
<header id="int" checkin="2009-10-29" buyerPerson="1" mainPerson="1" agreementKey="0">
 +
<comment>Данная заявка выполнена для проверки работы сервиса. Саму заявку в работу оправлять не нужно</comment>
 +
  </header>
 +
Где:
 +
*id - agencyID из функции GetAgreementCredentials (вызов этой функции будет описан в разделе порядок работы)
 +
*checkin - дата, на которую производится проверка (дата, на которую планируется заезд по проверяемой цене, указанной в <calculated key="00000000" />).
 +
Даты, на которую действует указанная цена, можно узнать из TourML при загрузке цен оператора.
 +
<date key="00000000" from="2009-10-29" to="2009-10-30" />
 +
Если в указанную дату нет заезда, то вернется сообщение об ошибке (Could not find price key 00000000).
 +
=====Раздел Packets=====
 +
В разделе Packets передаются пакеты, которые будут бронироваться. В элементе <calculated> в атрибуте key передается ключ цен 044B
 +
<packet id="_1">
 +
  <calculated key="00000000" />
 +
</packet>
 +
У самого пакета есть атрибут id, на который будут ссылаться туристы при привязке.
 +
=====Раздел Persons=====
 +
В разделе Persons передается информация о клиентах
 +
 
 +
<person key="1" sourceKey="0" packets="_1" firstNameRus="TEST" lastNameRus="TEST" firstNameLat="TEST" lastNameLat="TEST" sex="male" birthday="1982-03-03" nationalityRus="" nationalityLat="" isTourist="true">
 +
  <contacts>
 +
  <phones />
 +
  <addresses />
 +
  <emails />
 +
  </contacts>
 +
  <passports>
 +
  <passport type="foreign" series="1111" number="111111111" emittedBy="ОВД" emittedWhen="1990-01-01" validTo="2007-03-03" />
 +
  </passports>
 +
</person>
 +
У элемента person есть следующие атрибуты:
 +
*key="1" — уникальный ключ клиента. На него ссылаются в атрибутах buyerPerson="1" mainPerson="1" в Header
 +
*sourceKey="0" — Ключ туриста у внешней системы (не используется)
 +
*packets="_1" — id пакета, к которому будет привязан турист (турист привязывается ко всем услугам этой рассчитаной цены)
 +
*firstNameRus="TEСT" — Имя клиента русскими буквами
 +
*lastNameRus="TEСT" — Фамилия клиента русскими буквами
 +
*firstNameLat="TEST" — Имя клиента латиницей
 +
*lastNameLat="TEST" — Фамилия клиента латиницей
 +
*sex="male" — пол клиента. Может принимать значения male, female, child, infant
 +
*birthday="1982-03-03" — дата рождения  клиента
 +
*nationalityRus="" - национальность (русскими буквами)
 +
*nationalityLat="" - национальность (латиницей)
 +
*isTourist="true" — признак является ли клиент туристом
 +
В раздел паспортов необходимо добавить хотя бы один паспорт. Элемент паспорт
 +
*type="foreign" — тип паспорта foreign (загран), national (национальный)
 +
*series="1111" — серия
 +
*number="111111111" — номер
 +
*emittedBy="ОВД" — Кем выдан
 +
*emittedWhen="1990-01-01" — Когда выдан
 +
*validTo="2007-02-02" — Дата окончания действия
 +
[[Файл: mb_030.png|left|Предупреждение]] <br />
 +
Все описанные данные о клиентах являются обязательными!
 +
Если Вы бронируете тестовую путевку в рабочую базу оператора, ОБЯЗАТЕЛЬНО у туристов 
 +
задавайте имя-фамилия ТЕСТ-ТЕСТ
 +
Если бронируйте реальную путевку, ОБЯЗАТЕЛЬНО указывайте корректные данные.
 +
В качестве ответа на проверку бронирования\бронирование возвращается XML документ с информацией о путевке, которая приведена в разделе agreement. Этот раздел состоит из четырех частей:
 +
*header
 +
*packets
 +
*persons
 +
*penaltyConditions
 +
В заголовке (header) приведена общая информация о путевке, характеризуемая следующими атрибутами:
 +
*checkin — дата заезда (дата на которую идет проверка бронирования)
 +
*buyerPerson — ключ клиента, который является покупателем
 +
*mainPerson — ключ клиента, который является главным туристом
 +
*agreementKey — ключ путевки (при проверке бронирования < 0, при бронировании реальный ключ из базы)
 +
*agreementCode — код путевки (при проверке бронирования < 0, при бронировании реальный код из базы)
 +
*country — Название страны тура
 +
*city — Название города тура
 +
*days — продолжительность тура
 +
*quantity — количество туристов
 +
*price — цена (туристу к оплате), включает в себя комиссию
 +
*pricePaid — уже оплачено
 +
*currency — валюта путевки
 +
*creationDate — текущая дата
 +
*payUntil — дата, до которой нужно произвести оплату
 +
*status — статус брони
 +
*errorStatus — статус ошибки
 +
*reasonRus — в случае ошибки или отказа бронирования здесь указываются причины
 +
*reasonLat — в случае ошибки или отказа бронирования здесь указываются причины (латиницей)
 +
*commission — комиссия агентству
 +
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" width="800px"
 +
 
 +
|- style="background-color:#F2F2F2"
 +
|'''Статус''''
 +
|'''Расшифровка статуса'''
 +
|-
 +
|'''Общие статусы'''
 +
|
 +
|-
 +
|Ок
 +
|Заявка подтверждена
 +
|-
 +
|Waitlist
 +
|Заявка в листе ожидания
 +
|-
 +
|rejected
 +
|Бронирование отклонено
 +
|-
 +
|Annulled
 +
|Путевка аннулирована
 +
|-
 +
|Error
 +
|Ошибка
 +
|-
 +
|Waitcancel
 +
|В ожидании отмены по пользовательскому запросу
 +
|-
 +
|Cancel
 +
|Не используется
 +
|-
 +
|'''Статусы ошибок'''
 +
|
 +
|-
 +
|Unknown
 +
|Передается во всех остальных случаях
 +
|-
 +
|agencyNotFound
 +
|Не найдено агентство по логину/паролю
 +
|-
 +
|priceNotFound
 +
|Не найден запрашиваемый прайс
 +
|}
 +
Для того, чтобы определить произошла ошибка или нет необходимо проверить дополнительный атрибут reasonRus, reasonLat, в которых передаются дополнительные комментарии.
 +
 
 +
Например, в ответе в разделе Header приходит следующее значение:
 +
status="waitlist" errorStatus="unknown"
 +
*status - это статус заявки (путевки).
 +
*waitlist — означает что можно бронировать под запрос,
 +
*ок - подтверждено
 +
*rejected - в случае если бронирование не возможно по каким-то причинам.
 +
*errorStatus особой функциональной нагрузки не несет
 +
Если какая-то ошибка произошла или по каким-то причинам нельзя бронировать, то в атрибутах reasonRus и reasonLat указывается причина ошибки:
 +
status="rejected" errorStatus="unknown" reasonRus="Бронирование выполнить нельзя т.к. отсутствует квота на услугу А_П::Москва/Дубровник/LLM9351, DME-DBV, 07:00-08:20/Y Эконом класс/. " reasonLat="Booking could
 +
not be done, because quota on service А_П::Москва/Дубровник/LLM9351, DME-DBV, 07:00-08:20/Y Эконом класс/ is absent.
 +
Элемент Packets содержит пакеты, помеченные атрибутом id, состоящие из наборов услуг, разбитых на группы (аналогично тому, как разбивались варианту услуг в TourML):
 +
*hotelServices
 +
*flightServices
 +
*excursionServices
 +
*transferServices
 +
*cruiseServices
 +
*extraServices
 +
Каждая из услуг описывается набором атрибутов, например:
 +
<hotelService key="-12" name="HOTEL::АНТАЛИЯ/_NO_CENDER-4*,7 ночей/Double(Standart),Взр./AI Всё включено/" dayBeg="1" nights="7" days="7" men="2" reasonRus="Места есть" reasonLat="Places available"
 +
sourceKey="0" buildingKey="1037" roomKey="1113" mealKey="38" />
 +
Атрибуты, общие для всех типов услуг:
 +
*key – ключ услуги (при реальном бронировании ключ услуги из услуг договора)
 +
*name — наименование услуги
 +
*dayBeg — день начала предоставления услуги
 +
*nights — продолжительность услуги в ночах
 +
*days — продолжительность услуги в днях
 +
*men — количество человек, пользующихся услугой
 +
*reasonRus - Объяснение причины, по которой услуга не доступна при бронировании (например, нет мест)
 +
*reasonLat - То же самое, что reasonRus, но на английском
 +
*sourceKey - Идентификатор услуги у внешней системы (не используется)
 +
Дополнительные атрибуты, для различных типов услуг:
 +
 
 +
Услуги проживания(hotelService):
 +
*mealKey - тип питания из справочника boardings
 +
*roomKey - тип комнаты
 +
*buildingKey - тип здания
 +
Услуги авиаперелета(flightService):
 +
*tariffKey - тариф на перелет из справочника tariffs
 +
*flightKey - перелет из справочника Flights (описывает город вылета-прилета, авиакомпанию).
 +
Услуги экскурсии(excursionServices):
 +
*transportKey,excursionKey - сслылки на справочники тип транспорта (transports) и экскурсия (excursions)
 +
Услуги трансфера(transferService):
 +
*transferKey – ссылка на справочник трансферов
 +
*transportKey – ссылка на справочник транспортов
 +
Услуги круиз(cruiseServices):
 +
*shipKey – ссылка на справочник
 +
*cabineKey - ссылки на справочники cabines и ships.
 +
Остальные услуги(extraService):
 +
*classKey - тип услуги из справочника serviceClasses
 +
*subKey - описание услуги из справочника serviceDescriptions
 +
*subKey1 - дополнительное описание 1 из справочника serviceDescriptions1
 +
*subKey2 - дополнительное описание 2 из справочника serviceDescriptions2
 +
*countryKey - ссылка на страну из справочника Country
 +
*cityKey - ссылка на город из справочника City
 +
В разделе Persons передается информация о клиентах. Формат данных такой же, как описан выше для запроса. Ответ функции CreateBooking отличается от ответа функции CheckBooking только тем, что при создании путевки возвращаются реальные ключи из базы.
 +
 
 +
=====Получение ключа агентства (функция GetAgreementCredentials)=====
 +
В функцию бронирования и проверки бронирования необходимо передавать ключ агентства. Для получения ключа необходимо воспользоваться функцией GetAgreementCredentials.
 +
 
 +
В качестве входных параметров в функцию передаются логин и пароль web–пользователя агентства (логин-пароль под которым агентство заходит в Мастер-Веб).
 +
 
 +
Результатом выполнения этого метода будет xml-документ следующего вида
 +
<RegisterAgencyResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 +
    <credentials agencyId="10795" agreementNumber="w2435" expirationDate="2009-12-11T00:00:00" xmlns="http://tourml.ru/agencies/2004-09-28" />
 +
</RegisterAgencyResponse>
 +
где,
 +
*agencyId – id агентства, к которому принадлежит указанный пользователь.
 +
*AgreementNumber — номер договора с агентством
 +
*ExpirationDate - дата истечения договора.
 +
 
 +
Метод возвращает тот номер договора, у которого текущая дата попадает между начальной и конечной датой договора, есть признак ''Договор по умолчанию'', или дата обновления самая поздняя.
 +
 
 +
Если такого логина не существует, то вернется сообщение об ошибке
 +
<RegisterAgencyResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 +
  <credentials agencyId="0" expirationDate="0001-01-01T00:00:00" xmlns="http://tourml.ru/agencies/2004-09-28" />
 +
  <error errorStatus="loginNotFound" errorDescriptionRus="Логина test не существует." errorDescriptionLat="The login test  does not exist." xmlns="http://tourml.ru/agencies/2004-09-28" /> 
 +
</RegisterAgencyResponse>
 +
Если неправильно указан пароль, то возвращается следующее сообщение об ошибке:
 +
<RegisterAgencyResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 +
  <credentials agencyId="0" expirationDate="0001-01-01T00:00:00" xmlns="http://tourml.ru/agencies/2004-09-28" />
 +
  <error errorStatus="passwordIncorrect" errorDescriptionRus="Неверный пароль." errorDescriptionLat="The incorrect password." xmlns="http://tourml.ru/agencies/2004-09-28" />
 +
</RegisterAgencyResponse>
 +
 
 +
=====Получение справочной информации (функция GetReferences)=====
 +
Для получения справочной информации по идентификатору и ключу необходимо воспользоваться функцией GetReferences.
 +
 
 +
В качестве входных параметров в функцию передаются идентификатор запроса и ключ фильтра:
 +
 
 +
{| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" width="800px"
 +
 
 +
|- style="background-color:#F2F2F2"
 +
 
 +
|'''Значение "queryType"'''
 +
|'''Значение "param"'''
 +
|'''Описание'''
 +
|-
 +
|GetPartnerByDgKey
 +
|Ключ путевки
 +
|Возвращает партнеров, указанных в услугах, связанных с данной путевкой.
 +
|-
 +
|HotelByCityId
 +
|Ключ города
 +
|Выводит все отели данного города.
 +
|-
 +
|HotelByCountryId
 +
|Ключ страны
 +
|Выводит все отели данной страны.
 +
|-
 +
|HotelById
 +
|Ключ отеля
 +
|Выводит отель с заданным ключом.
 +
|-
 +
|CityByCountryId
 +
|Ключ страны
 +
|Выводит все города данной страны.
 +
|-
 +
  |CityById
 +
  |Ключ города
 +
  |Выводит город с заданным ключом.
 +
|-
 +
  |CountryById
 +
  |Ключ страны
 +
  |Выводит страну с заданным ключом.
 +
|-
 +
  |RoomAccomodationById
 +
  |Ключ типа размещения
 +
  |Выводит тип размещения с заданным ключом.
 +
|-
 +
  |RoomTypeById
 +
  |Ключ типа комнаты
 
  |Выводит тип комнаты с заданным ключом.
 
  |Выводит тип комнаты с заданным ключом.
|-
+
|-
  |RoomCategoryById
+
  |RoomCategoryById
  |Ключ категории номер
+
  |Ключ категории номер
  |Выводит категорию номера с заданным ключом.
+
  |Выводит категорию номера с заданным ключом.
|-
+
|-
  |BoardingById
+
  |BoardingById
  |Ключ типа питания
+
  |Ключ типа питания
  |Выводит тип питания с заданным ключом.
+
  |Выводит тип питания с заданным ключом.
|-
+
|-
  |HotelRoomById
+
  |HotelRoomById
  |Ключ размещения
+
  |Ключ размещения
  |Выводит размещение с заданным ключом.
+
  |Выводит размещение с заданным ключом.
  |}
+
  |}
 
+
 
=====Порядок работы при проверки бронирования и бронировании=====
+
Если передан 0, то в этом случае можно получить все данные из указанного справочника, используя типы запросов:
Для того, чтобы забронировать тур у оператора, необходимо выполнить следующие действия:
+
* CityById,
*По логину и паролю получить id агентства, от которого будет производиться бронирование.
+
* CountryById,
*Из TourML, полученного с помощью методов загрузки данных, необходимо выбрать ключ цены для бронирования, а также дату, на которую планируется тур, с учетом атрибутов from,to.
+
* RoomAccomodationById,
*С помощью функции CheckBooking произвести проверку бронирования. Если status="waitlist" или status="OK", то можно вызывать метод createBooking.
+
* RoomTypeById,
*Произвести бронирование с помощью метода CreateBooking. Ключ и код путевки, которые вернулись в ответе, необходимо сохранить для дальнейшей работы (например, для получения путевки из базы )
+
* RoomCategoryById,
Пример запроса\ответа, а также созданная в Мастер-Туре путевка, приведены в приложении Б, посвященному разделу бронирования.
+
* BoardingById,
====Работа с путевкой====
+
* HotelRoomById
Для получения информации по забронированной путевке можно воспользоваться методом GetAgreementsByNumber, который по коду забронированной путевки и ключу агентства возвращает xml-документ, аналогичный тому, что возвращается при проверке бронирования и бронировании. Необходимо отправить следующий запрос:
+
 
  <GetAgreementsByNumber xmlns="http://tourml.ru/service/2004-08-13/products">
+
=====Порядок работы при проверки бронирования и бронировании=====
  <agency>10795</agency> - ключ агентства
+
Для того, чтобы забронировать тур у оператора, необходимо выполнить следующие действия:
  <codes>
+
*По логину и паролю получить id агентства, от которого будет производиться бронирование.
  <int>43037</int> - ключ путевки
+
*Из TourML, полученного с помощью методов загрузки данных, необходимо выбрать ключ цены для бронирования, а также дату, на которую планируется тур, с учетом атрибутов from,to.
  </codes>
+
*С помощью функции CheckBooking произвести проверку бронирования. Если status="waitlist" или status="OK", то можно вызывать метод createBooking.
  </GetAgreementsByNumber>
+
*Произвести бронирование с помощью метода CreateBooking. Ключ и код путевки, которые вернулись в ответе, необходимо сохранить для дальнейшей работы (например, для получения путевки из базы )
Данная функция используется для того, чтобы можно было отслеживать статус путевки и каждой услуги в отдельности.
+
Пример запроса\ответа, а также созданная в Мастер-Туре путевка, приведены в приложении Б, посвященному разделу бронирования.
 +
====Работа с путевкой====
 +
Для получения информации по забронированной путевке можно воспользоваться методом GetAgreementsByNumber, который по коду забронированной путевки и ключу агентства возвращает xml-документ, аналогичный тому, что возвращается при проверке бронирования и бронировании. Необходимо отправить следующий запрос:
 +
  <GetAgreementsByNumber xmlns="http://tourml.ru/service/2004-08-13/products">
 +
  <agency>10795</agency> - ключ агентства
 +
  <codes>
 +
  <int>43037</int> - ключ путевки
 +
  </codes>
 +
  </GetAgreementsByNumber>
 +
Данная функция используется для того, чтобы можно было отслеживать статус путевки и каждой услуги в отдельности.
 +
 
 +
==Рекомендации по составлению запросов==
 +
Web-сервис это сложный программный комплекс, работа с которым требует определенных навыков. Ниже представлены рекомендации по составлению вопросов при обращении в службу технической поддержки. Следование этим рекомендациям позволит специалистам технической поддержки ответить на Ваши вопросы наиболее полно и оперативно.
 +
*Проверьте, не описан ли Ваш вопрос в разделе часто задаваемых вопросов
 +
*Указывайте в запросе, какой метод web-сервиса Вы вызывали и с какими параметрами. Такая информация крайне полезна для повторения ситуации.  Повторение ситуации, описываемой в Вашем запросе, облегчает понимание запроса и позволяет более оперативно решать возникшие вопросы
 +
==Ответы на часто задаваемые вопросы==
 +
Основные моменты, касающиеся работы веб-сервиса работы с TourML описаны в [[Мастер-Web:Дополнительный модуль Сервис TourML Ответы на часто задаваемые вопросы | ответах на часто задаваемые вопросы]].
 +
==Приложение A. Функции загрузки информации о турах и ценах==
 +
Функции загрузки информации о турах и ценах описаны в [[Мастер-Web:Дополнительный модуль Сервис TourML Приложение A | приложении A]].
 +
==Приложение B. Функции проверки бронирования и бронирования==
 +
Функции проверки бронирования и бронирования описаны в [[Мастер-Web:Дополнительный модуль Сервис TourML Приложение B | приложении B]].
 +
==Приложение С. Функции работы с путевкой==
 +
Функции работы с путевкой описаны в [[Мастер-Web:Дополнительный модуль Сервис TourML Приложение С | приложении С]].
  
==Рекомендации по составлению запросов==
+
[[Category:Web-сервисы]]
Web-сервис это сложный программный комплекс, работа с которым требует определенных навыков. Ниже представлены рекомендации по составлению вопросов при обращении в службу технической поддержки. Следование этим рекомендациям позволит специалистам технической поддержки ответить на Ваши вопросы наиболее полно и оперативно.
 
*Проверьте, не описан ли Ваш вопрос в разделе часто задаваемых вопросов
 
*Указывайте в запросе, какой метод web-сервиса Вы вызывали и с какими параметрами. Такая информация крайне полезна для повторения ситуации.  Повторение ситуации, описываемой в Вашем запросе, облегчает понимание запроса и позволяет более оперативно решать возникшие вопросы
 
==Ответы на часто задаваемые вопросы==
 
Основные моменты, касающиеся работы веб-сервиса работы с TourML описаны в [[Мастер-Web:Дополнительный модуль Сервис TourML Ответы на часто задаваемые вопросы | ответах на часто задаваемые вопросы]].
 
==Приложение A. Функции загрузки информации о турах и ценах==
 
Функции загрузки информации о турах и ценах описаны в [[Мастер-Web:Дополнительный модуль Сервис TourML Приложение A | приложении A]].
 
==Приложение B. Функции проверки бронирования и бронирования==
 
Функции проверки бронирования и бронирования описаны в [[Мастер-Web:Дополнительный модуль Сервис TourML Приложение B | приложении B]].
 
==Приложение С. Функции работы с путевкой==
 
Функции работы с путевкой описаны в [[Мастер-Web:Дополнительный модуль Сервис TourML Приложение С | приложении С]].
 

Текущая версия на 15:00, 16 января 2017

Версия статьи от 16-01-2017.

Содержание

Введение

Задача получения данных из программного комплекса Мастер-Тур и передача полученных данных сторонним системам, а также получение данных из сторонних систем в программном комплексе Мастер-Тур весьма актуальна.

Предлагаемое компанией Мегатек решение состоит в использовании общепризнанного механизма взаимодействия между различными системами - WEB-сервис, работающий с единым, для туристической области в России, форматом – TourML.

Формат TourML представляет из себя текстовый XML документ, использование которого позволяет избежать проблем, связанных с внутренними изменениями в программном комплексе Мастер-Тур. Использование веб-сервиса позволяет разработать систему один раз и забыть об особенностях реализации внутренних механизмов программного комплекса Мастер-Тур.

Ссылка на тестовый сервис

С работой тестового сервиса TourML для 9-й версии и 11-й версии вы можете ознакомиться на нашем демо-сервере.

Установка

Для установки сервиса TourML нужно создать директорию сервиса TourML в каталоге c:/inetpub/wwwroot/ (корневом каталоге IIS) и выложить туда распакованные файлы из архива TourML_9.2.x.xxxxx.zip. В управлении IIS необходимо создать виртуальный каталог для папки TourML.

Создание виртуального каталога

По умолчанию корневым каталогом IIS является C:/Inetpub/wwwroot. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:

  • 1. Зайти в Пуск (Start) – Настройки (Settings) – Панель управления (Control Panel)


875.PNG

  • 2. В открывшемся окне выбрать Администрирование (Administrative Tools)


876.PNG

  • 3. Запустить Internet Information Services (IIS) Manager


877.PNG

  • 4. В открывшемся дереве каталогов выбрать Web Sites – Default Web Site. В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и зайти в Свойства (Properties)


878.PNG

  • 5. В открывшемся окне, в закладке Directory нужно нажать кнопку «Create», а затем кнопку «ОК»


879.PNG

Подключение к базе данных ПК «Мастер-Тур»

В файле web.config, расположенном в папке TourML пропишите необходимые параметры подключения (курсивом выделены значения, которые необходимо ввести). Строка подключения к базе данных ПК «Мастер-Тур»:

  • 1. <add key = "connectionString" value = "Data Source=ip-адрес сервера базы данных ПК Мастер-тур;Initial Catalog=название базы данных ПК Мастер-тур;User ID=логин пользователя ПК Мастер-тур;Password=пароль пользователя ПК Мастер-тур"/>
  • 2. <add key = "connectionStringShort" value = "Data Source=ip-адрес сервера базы данных ПК Мастер-Тур;Initial Catalog=название базы данных ПК Мастер-Тур;"/>

Настройки

После установки «Сервис TourML» доступен по адресу:
http://ip- адрес сервера Мастер-Веб/TourML/Service.asmx

Настройки в файле WEB.CONFIG

Дополнительные настройки, задаваемые в файле web.config, позволяют задать дополнительные условия для отображения и проверки данных.

Описание Значение Настройка
1 Настройка, определяющая ключи типов туров, которые будут передаваться. Ключи типов туров через запятую.
<add key="tipTursFilter" value="5,6,10" />
2 Настройка, включающая возможность передавать ключи типов туров через запятую.
  • true - использовать фильтрацию по ключам типов туров через запятую;
  • false или отсутствие настройки - не использовать фильтрацию по ключам типов туров через запятую.
<add key="isUseTipTursFilter" value="true" />
3 Настройка, включающая возможность отображения наличия мест для квот определенным пользователям. В значении настройки через запятую перечисляются пользователи, которым должны быть доступны для показа количество мест.

Если настройка не указана или задано пустое значение, квоты доступны всем.

<add key="showFullQuotasUserNames" value="username" />
4 Настройка, отвечающая за отображение количества мест в квоте.
  • true - отображает количество мест в квоте;
  • false или отсутствие настройки - количество мест в квоте не отображается.
<add key="isShowQuantity" value="true" />
5 Настройка, снижающая нагрузку обращений к базе за счет увеличения времени отработки метода GetAgreementsByKeys. Время, указанное в настройке, является промежутком между временем окончания отработки метода и временем возврата результата. Значение задержки измеряется в секундах.

Рекомендуется указывать значение от 7 до 15 сек.

Например, метод возвращал данные через 5 сек. Если в настройке указать значение 10 сек, то время обработки метода и возвращения результата будет составлять 15 сек.

<add key="delayBeforeReturn" value="10"/>
6 Настройка, включающая в методе GetReferences возможность отображения партнеров, предоставляющих услуги отеля, определенным пользователям. В значении настройки через запятую перечисляются логин пользователей, которым должны быть доступны для показа партнеры по услуге.
<add key="showBOOAddInfoUserNames" value="test" />
7 Настройка, определяющая загрузку не выставленных в онлайн СПО туров. Работает только при включенной настройке notOnlineTourTypes
  • true – показывает все выставленные онлайн СПО и не выставленные онлайн СПО с ключами;
  • false или отсутствие настройки – показывает только выставленные онлайн СПО туры
<add key="showNotOnlineSPO" value="true" />
8 Настройка, определяющая ключи типов туров СПО. Ключи хранятся в таблице TipTur. key – перечисляются ключи типов туров через запятую
<add key="notOnlineTourTypes" value="5" />
9 Настройка, включающая в методе GetFlightQuotes отображение информации по авиаперелетам (расписание и квоты). В значении настройки через запятую перечисляются ключи тарифов, по которым производится вывод информации по авиаперелетам.
<add key="tarifsToLoadFlightQuotes" value="89,67,114"/>
10 Настройка, позволяющая через запросы к URL и авторизацию с помощью параметров запроса Login и Password, вызывать методы в TourMl.
  • true – метод выполняется по запросу к URL;
  • false или отсутствие настройки – запрос не вызывает метод

(Пример: http: //ip-адрес сервера/TourMl/Service.asmx/GetHotelKeys?checkPoint=2014-01-01&cityKey=614&Login=test&Password=qUqP5cyxm6YcTAhz05Hph5gvu9M=)

<add key="allowSimpleAuth" value="true"/>
11 Настройка метода проверки квот.
  • true или отсутствие настройки– квоты проверяются исходя из настроек в базе;
  • false – квоты сервисами не проверяются
<add key="UseNewSetToQuota" value="true"/>

Общая информация о методах веб-сервиса

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


Название метода Выгрузка цен (TL) Импорт квот и Stop-Sale (QL) Актуализация цены и бронирование (BOO) Работа с заявкой (AGR) Подбор вариантов (GBI) Подбор перелетов (FLF) Любые другие (MICS) Специальные (SPEC)
1 CancelAgreement +
2 CheckBooking +
3 CreateBooking +
4 GetAgencies +
5 GetAgreementCredentials +
6 GetAgreementsByCode +
7 GetAgreementsByKeys +
8 GetAgreementsByNumber +
9 GetBookingInfo +
10 GetCountries +
11 GetCourse +
12 GetFlightQuotes +
13 GetHotelKeys +
14 GetHotelQuotes +
15 GetInfo +
16 GetNationalCourse +
17 GetNationalRateCode +
18 GetReferences +
19 GetSPOArrayByKeyCompressed +
20 GetSPOByKey +
21 GetSPOByKeyCompressed +
22 GetSPOByKeyCompressed_DC +
23 GetSPOByKey_DC +
24 GetSPOPageByKey +
25 GetSPOPageByKeyCompressed +
26 GetSimpleDogovorsBronni +
27 GetSimpleDogovorsByCreateDates +
28 GetStopSalesAndQuotes +
29 GetStopSalesAndQuotes2 +
30 GetStopSalesAndQuotesByHotels +
31 GetStopSalesAndQuotesCompressed +
32 GetValidTourList +
33 GetValidTourListCompressed +
34 GetValidTourListFrom +
35 GetValidTourListFromCompressed +
36 GetValidTourListFrom_DC +
37 GetVersion + + + + + + + +
38 Info +
39 ValidatePriceServices +

Выгрузка цен (TL)

Метод GetSPOArrayByKeyCompressed

Данный метод осуществляет загрузку цен (данные возвращаются в сжатом виде по частям).
Запись полученных результатов производится в таблицы FileRepos и FileHeaders в том случае, если у пользователя, который осуществляет загрузку цен указаны права Insert, Delete, Select и Update. Права указываются в свойствах таблиц в разделе Permissions.
Список принимаемых параметров:

  • SpoKey – ключ СПО

В результате пользователь получает

Пример

Вызов метода GetSPOArrayByKeyCompressed с параметром spoKey=11

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetSPOArrayByKeyCompressed>
         <prod:spoKey>11</prod:spoKey>
      </prod:GetSPOArrayByKeyCompressed>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetSPOArrayByKeyCompressed

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetSPOArrayByKeyCompressedResponse</wsa:Action>
      <wsa:MessageID>uuid:551d0c97-8840-4f53-9945-6cd75f78870e</wsa:MessageID>
      <wsa:RelatesTo>uuid:52803223-43b1-4f5d-a74b-770f384dd7e6</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-9e43b1e3-bc8f-4af0-9e0f-7d92d98fc016">
            <wsu:Created>2015-02-09T13:01:44Z</wsu:Created>
            <wsu:Expires>2015-02-09T13:06:44Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetSPOArrayByKeyCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetSPOArrayByKeyCompressedResult>
            <base64Binary>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
            </base64Binary>
            <base64Binary>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
            </base64Binary>
         </GetSPOArrayByKeyCompressedResult>
      </GetSPOArrayByKeyCompressedResponse>
   </soap:Body>
</soap:Envelope>


Метод GetSPOByKey

Данный метод осуществляет загрузку цен по выбранному туру.
Список принимаемых параметров:

  • SpoKey – ключ СПО

В результате пользователь получает информацию по ценам на соответствующие им дни.

Пример

Вызов метода GetSPOByKey с параметром spoKey=11

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetSPOByKey>
         <prod:spoKey>11</prod:spoKey>
      </prod:GetSPOByKey>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetSPOByKey

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetSPOByKeyResponse</wsa:Action>
      <wsa:MessageID>uuid:2ce65d3f-307b-46a9-a6bb-49761781adf9</wsa:MessageID>
      <wsa:RelatesTo>uuid:d31e4bf8-1b66-438c-b869-5eea9eebd782</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-e7b032a0-1e95-4283-9bad-91b242d0ba19">
            <wsu:Created>2015-02-09T14:46:16Z</wsu:Created>
            <wsu:Expires>2015-02-09T14:51:16Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetSPOByKeyResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-01-30" time="14:41:16" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="100" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="460" name="Россия" nameLat="Russia"/>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
               </cities>
               <categories>
                  <category key="707724292" name="4*" nameLat="4*"/>
               </categories>
               <hotels>
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
               </hotels>
               <buildings>
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
               </buildings>
               <airlines>
                  <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
               </airlines>
               <airports>
                  <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
                  <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
               </airports>
               <aircrafts>
                  <aircraft key="4" name="aerobus A-310" code="310"/>
               </aircrafts>
               <flights>
                  <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
                     <flightTime key="3" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
                  </flight>
                  <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
                     <flightTime key="4" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
                  </flight>
               </flights>
               <roomTypes>
                  <roomType key="38" name="2A" nameLat="2A" code="2A" numBed="2" numExBed="0"/>
               </roomTypes>
               <roomLocations/>
               <roomViews/>
               <roomCategories>
                  <roomCategory key="20" name="Standart" nameLat="Standart" code="STD"/>
               </roomCategories>
               <roomDescriptions>
                  <roomDescription key="20" catKey="20"/>
               </roomDescriptions>
               <roomAccomodations>
                  <roomAccomodation key="325" name="2A" nameLat="2A" code="2A" numBed="2">
                     <adult place="0" order="0"/>
                     <adult place="0" order="0"/>
                  </roomAccomodation>
               </roomAccomodations>
               <rooms>
                  <room key="1116" typeKey="38" roomDescKey="20" accomodationKey="325"/>
               </rooms>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings>
                  <boarding key="11" name="Шведский стол" nameLat="All inclusive" code="AI"/>
                  <boarding key="4" name="Завтрак буфет" nameLat="Breakfast" code="BB"/>
                  <boarding key="10" name="Не предоставляется" nameLat="NO" code="RO"/>
                  <boarding key="2" name="Полупансион" nameLat="HalfBoard" code="HB"/>
                  <boarding key="1" name="Пансион" nameLat="FullBoard" code="FB"/>
               </boardings>
               <currencies>
                  <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
               </currencies>
               <tariffs>
                  <tariff key="89" name="Экономический класс" nameLat="Coach economy" code="Y"/>
               </tariffs>
               <tourTypes>
                  <tourType key="10" name="Круиз" nameLat="en_Круиз"/>
                  <tourType key="9" name="Дополнительное спец. предложение" nameLat="en_Дополнительное спец. предложение"/>
                  <tourType key="8" name="Дополнительный тур" nameLat="en_Дополнительный тур"/>
                  <tourType key="7" name="Подмосковье:Специальные туры" nameLat="en_Подмосковье:Специальные туры"/>
                  <tourType key="6" name="Подмосковье:Календарные туры" nameLat="en_Подмосковье:Календарные туры"/>
                  <tourType key="5" name="Специальное предложение" nameLat="en_Специальное предложение"/>
                  <tourType key="4" name="Многодневная экскурсия" nameLat="en_Многодневная экскурсия"/>
                  <tourType key="3" name="Авиаперелет" nameLat="en_Авиаперелет"/>
                  <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
                  <tourType key="1" name="Комбинированный тур" nameLat="en_Комбинированный тур"/>
                  <tourType key="0" name="Не определен" nameLat="en_Не определен"/>
               </tourTypes>
               <agencies/>
               <orders xmlns="http://www.megatec.ru/tourml/extensions"/>
               <users xmlns="http://www.megatec.ru/tourml/extensions"/>
               <accounts xmlns="http://www.megatec.ru/tourml/extensions"/>
               <operators/>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices/>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
                           <spo key="11" name="Тур в Брюссель № 42" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T16:50:08.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                            <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices>
                              <hotelService mealKey="10" roomKey="1116" buildingKey="3231">
                                 <variant providerKey="0" dayBeg="1" nights="6" days="7" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="159" id="_519">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" allowEditDuration="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                                   ...
                                 </variant>
                                 <variant providerKey="0" dayBeg="4" nights="0" days="0" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="31" id="_504">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                              </flightService>
                              <flightService tariffKey="89" flightKey="525">
                                 <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="31" id="_503">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                              </flightService>
                           </flightServices>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices>
                           <serviceSet ids="_503 _508 _520">
                              <price gross="800">
                                 <date key="8888" from="2014-07-09" to="2014-07-09"/>
                                 <date key="8900" from="2014-07-10" to="2014-07-10"/>
                                 <date key="8912" from="2014-07-11" to="2014-07-11"/>
                                  ...
                              </price>
                           </serviceSet>
                           <serviceSet ids="_503 _507 _519">
                              <price gross="760">
                                 <date key="15333" from="2015-12-29" to="2015-12-29"/>
                                 <date key="15352" from="2015-12-30" to="2015-12-30"/>
                                 <date key="15366" from="2015-12-31" to="2015-12-31"/>
                              </price>
                           </serviceSet>
                        </prices>
                        <deletedPrices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetSPOByKeyResponse>
   </soap:Body>
</soap:Envelope>


Метод GetSPOByKey_DC

Данный метод осуществляет загрузку цен для динамического ценообразования.
Список принимаемых параметров:

  • SpoKey – ключ СПО
  • calcKeyFrom, calcKeyTo – начальный и конечный ключи цен, возвращаемые методом (колонка TP_CalculatingKey из таблицы TP_Prices для актуальных цен и колонка TPD_CalculatingKey из таблицы TP_PriceDeleted для удаленных цен)

В результате пользователь получает информацию по ценам для динамического ценообразования на соответствующие им дни.

Пример

Вызов метода GetSPOByKey_DC с параметрами: spoKey=11; calcKeyFrom=10; calcKeyTo=10

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetSPOByKey_DC>
         <prod:spoKey>11</prod:spoKey>
         <prod:calcKeyFrom>10</prod:calcKeyFrom>
         <prod:calcKeyTo>10</prod:calcKeyTo>
      </prod:GetSPOByKey_DC>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetSPOByKey_DC

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetSPOByKey_DCResponse</wsa:Action>
      <wsa:MessageID>uuid:7497e7a6-69b9-4d6f-bdd4-1a49a189f097</wsa:MessageID>
      <wsa:RelatesTo>uuid:fcf3e8f9-2484-4581-92a0-1d442091a2e6</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-f82b756c-ef24-430f-a128-d137f238461d">
            <wsu:Created>2015-02-10T06:20:45Z</wsu:Created>
            <wsu:Expires>2015-02-10T06:25:45Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetSPOByKey_DCResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-02-10" time="09:20:43" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="100" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="460" name="Россия" nameLat="Russia"/>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
               </cities>
               <categories>
                  <category key="707724292" name="4*" nameLat="4*"/>
               </categories>
               <hotels>
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
               </hotels>
               <buildings>
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
               </buildings>
               <airlines>
                  <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
               </airlines>
               <airports>
                  <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
                  <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
               </airports>
               <aircrafts>
                  <aircraft key="4" name="aerobus A-310" code="310"/>
               </aircrafts>
               <flights>
                  <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
                     <flightTime key="3" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
                  </flight>
                  <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
                     <flightTime key="4" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
                  </flight>
               </flights>
               <roomTypes>
                  <roomType key="38" name="2A" nameLat="2A" code="2A" numBed="2" numExBed="0"/>
               </roomTypes>
               <roomLocations/>
               <roomViews/>
               <roomCategories>
                  <roomCategory key="20" name="Standart" nameLat="Standart" code="STD"/>
               </roomCategories>
               <roomDescriptions>
                  <roomDescription key="20" catKey="20"/>
               </roomDescriptions>
               <roomAccomodations>
                  <roomAccomodation key="325" name="2A" nameLat="2A" code="2A" numBed="2">
                     <adult place="0" order="0"/>
                     <adult place="0" order="0"/>
                  </roomAccomodation>
               </roomAccomodations>
               <rooms>
                  <room key="1116" typeKey="38" roomDescKey="20" accomodationKey="325"/>
               </rooms>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings>
                  <boarding key="11" name="Шведский стол" nameLat="All inclusive" code="AI"/>
                  <boarding key="4" name="Завтрак буфет" nameLat="Breakfast" code="BB"/>
                  <boarding key="10" name="Не предоставляется" nameLat="NO" code="RO"/>
                  <boarding key="2" name="Полупансион" nameLat="HalfBoard" code="HB"/>
                  <boarding key="1" name="Пансион" nameLat="FullBoard" code="FB"/>
               </boardings>
               <currencies>
                  <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
               </currencies>
               <tariffs>
                  <tariff key="89" name="Экономический класс" nameLat="Coach economy" code="Y"/>
                  <tariff key="67" name="Бизнес класс" nameLat="Business class" code="C"/>
               </tariffs>
               <tourTypes>
                  <tourType key="10" name="Круиз" nameLat="en_Круиз"/>
                  <tourType key="9" name="Дополнительное спец. предложение" nameLat="en_Дополнительное спец. предложение"/>
                  <tourType key="8" name="Дополнительный тур" nameLat="en_Дополнительный тур"/>
                  <tourType key="7" name="Подмосковье:Специальные туры" nameLat="en_Подмосковье:Специальные туры"/>
                  <tourType key="6" name="Подмосковье:Календарные туры" nameLat="en_Подмосковье:Календарные туры"/>
                  <tourType key="5" name="Специальное предложение" nameLat="en_Специальное предложение"/>
                  <tourType key="4" name="Многодневная экскурсия" nameLat="en_Многодневная экскурсия"/>
                  <tourType key="3" name="Авиаперелет" nameLat="en_Авиаперелет"/>
                  <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
                  <tourType key="1" name="Комбинированный тур" nameLat="en_Комбинированный тур"/>
                  <tourType key="0" name="Не определен" nameLat="en_Не определен"/>
               </tourTypes>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices/>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
                           <spo key="11" name="Тур в Брюссель № 42" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:50:08.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices>
                              <hotelService mealKey="10" roomKey="1116" buildingKey="3231">
                                 <variant providerKey="0" dayBeg="1" nights="6" days="7" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="159" id="_519">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" allowEditDuration="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                                 <variant providerKey="0" dayBeg="1" nights="5" days="6" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="159" id="_518">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" allowEditDuration="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                                  ...
                                 <variant providerKey="0" dayBeg="1" nights="3" days="4" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="159" id="_502">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" allowEditDuration="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                              </hotelService>
                           </hotelServices>
                           <flightServices>
                              <flightService tariffKey="89" flightKey="524">
                                 <variant providerKey="0" dayBeg="22" nights="0" days="0" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="31" id="_516">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                                  ...
                                 <variant providerKey="0" dayBeg="4" nights="0" days="0" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="31" id="_504">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                              </flightService>
                              <flightService tariffKey="89" flightKey="525">
                                 <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="31" id="_503">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                              </flightService>
                           </flightServices>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices>
                           <serviceSet ids="_503 _514 _526">
                              <price gross="1040">
                                 <date key="13783" from="2015-08-21" to="2015-08-21"/>
                                 <date key="9187" from="2014-08-03" to="2014-08-03"/>
                                 <date key="11023" from="2015-01-03" to="2015-01-03"/>
                                  ...
                                 <date key="14707" from="2015-11-06" to="2015-11-06"/>
                                 <date key="10111" from="2014-10-19" to="2014-10-19"/>
                                 <date key="11947" from="2015-03-21" to="2015-03-21"/>
                              </price>
                           </serviceSet>
                           <serviceSet ids="_503 _506 _518">
                              <price gross="720">
                                 <date key="11027" from="2015-01-04" to="2015-01-04"/>
                                 <date key="12863" from="2015-06-06" to="2015-06-06"/>
                                 <date key="14699" from="2015-11-06" to="2015-11-06"/>
                                  ...
                                 <date key="12870" from="2015-06-06" to="2015-06-06"/>
                                 <date key="14706" from="2015-11-06" to="2015-11-06"/>
                                 <date key="10110" from="2014-10-19" to="2014-10-19"/>
                              </price>
                           </serviceSet>
                           <serviceSet ids="_502 _503 _504">
                              <price gross="640">
                                 <date key="9189" from="2014-08-04" to="2014-08-04"/>
                                 <date key="11025" from="2015-01-04" to="2015-01-04"/>
                                 <date key="12861" from="2015-06-06" to="2015-06-06"/>
                                  ...
                                 <date key="10113" from="2014-10-20" to="2014-10-20"/>
                                 <date key="11949" from="2015-03-22" to="2015-03-22"/>
                                 <date key="13785" from="2015-08-22" to="2015-08-22"/>
                              </price>
                           </serviceSet>
                           <serviceSet ids="_503 _505 _517">
                              <price gross="680">
                                 <date key="11026" from="2015-01-04" to="2015-01-04"/>
                                 <date key="12862" from="2015-06-06" to="2015-06-06"/>
                                  ...
                                 <date key="11950" from="2015-03-22" to="2015-03-22"/>
                                 <date key="13786" from="2015-08-22" to="2015-08-22"/>
                                 <date key="9190" from="2014-08-04" to="2014-08-04"/>
                              </price>
                           </serviceSet>
                           <serviceSet ids="_503 _511 _523">
                              <price gross="920">
                                 <date key="10108" from="2014-10-19" to="2014-10-19"/>
                                 <date key="11944" from="2015-03-21" to="2015-03-21"/>
                                 <date key="13780" from="2015-08-21" to="2015-08-21"/>
                                  ...
                                 <date key="11032" from="2015-01-04" to="2015-01-04"/>
                                 <date key="12868" from="2015-06-06" to="2015-06-06"/>
                                 <date key="14704" from="2015-11-06" to="2015-11-06"/>
                              </price>
                           </serviceSet>
                           <serviceSet ids="_503 _510 _522">
                              <price gross="880">
                                 <date key="14703" from="2015-11-06" to="2015-11-06"/>
                                 <date key="10107" from="2014-10-19" to="2014-10-19"/>
                                 <date key="11943" from="2015-03-21" to="2015-03-21"/>
                                  ...
                                 <date key="9195" from="2014-08-04" to="2014-08-04"/>
                                 <date key="11031" from="2015-01-04" to="2015-01-04"/>
                                 <date key="12867" from="2015-06-06" to="2015-06-06"/>
                              </price>
                           </serviceSet>
                           <serviceSet ids="_503 _515 _527">
                              <price gross="1480">
                                 <date key="13784" from="2015-08-21" to="2015-08-21"/>
                                 <date key="9188" from="2014-08-03" to="2014-08-03"/>
                                 <date key="11024" from="2015-01-03" to="2015-01-03"/>
                                  ...
                                 <date key="14708" from="2015-11-06" to="2015-11-06"/>
                                 <date key="10112" from="2014-10-19" to="2014-10-19"/>
                                 <date key="11948" from="2015-03-21" to="2015-03-21"/>
                              </price>
                           </serviceSet>
                        </prices>
                        <deletedPrices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetSPOByKey_DCResponse>
   </soap:Body>
</soap:Envelope>


Метод GetSPOByKeyCompressed

Данный метод осуществляет загрузку цен (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).
Запись полученных результатов производится в таблицы FileRepos и FileHeaders в том случае, если у пользователя, который осуществляет загрузку цен указаны права Insert, Delete, Select и Update. Права указываются в свойствах таблиц в разделе Permissions.
Список принимаемых параметров:

  • SpoKey – ключ СПО

В результате пользователь получает

Пример

Вызов метода GetSPOByKeyCompressed с параметром spoKey=11

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetSPOByKeyCompressed>
         <prod:spoKey>11</prod:spoKey>
      </prod:GetSPOByKeyCompressed>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetSPOByKeyCompressed

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetSPOByKeyCompressedResponse</wsa:Action>
      <wsa:MessageID>uuid:90d61efc-0465-45d7-9539-54498b25f4ec</wsa:MessageID>
      <wsa:RelatesTo>uuid:8770a005-e391-4bdb-8d7e-6df765a4aea0</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-bd53e490-fa84-4b53-a9ef-4108abc975b7">
            <wsu:Created>2015-02-10T07:07:40Z</wsu:Created>
            <wsu:Expires>2015-02-10T07:12:40Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetSPOByKeyCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetSPOByKeyCompressedResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
         </GetSPOByKeyCompressedResult>
      </GetSPOByKeyCompressedResponse>
   </soap:Body>
</soap:Envelope>


Метод GetSPOByKeyCompressed_DC

Данный метод осуществляет загрузку цен для динамического ценообразования (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).
Запись полученных результатов производится в таблицы FileRepos и FileHeaders в том случае, если у пользователя, который осуществляет загрузку цен указаны права Insert, Delete, Select и Update. Права указываются в свойствах таблиц в разделе Permissions.
Список принимаемых параметров:

  • SpoKey – ключ СПО
  • calcKeyFrom, calcKeyTo – начальный и конечный ключи цен, возвращаемые методом (колонка TP_CalculatingKey из таблицы TP_Prices для актуальных цен и колонка TPD_CalculatingKey из таблицы TP_PriceDeleted для удаленных цен)

В результате пользователь получает

Пример

Вызов метода GetSPOByKeyCompressed_DC с параметрами: spoKey=11;calcKeyFrom=10; calcKeyTo=10

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetSPOByKeyCompressed_DC>
         <prod:spoKey>11</prod:spoKey>
         <prod:calcKeyFrom>10</prod:calcKeyFrom>
         <prod:calcKeyTo>10</prod:calcKeyTo>
      </prod:GetSPOByKeyCompressed_DC>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetSPOByKeyCompressed_DC

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetSPOByKeyCompressed_DCResponse</wsa:Action>
      <wsa:MessageID>uuid:6e7ceba1-3d1d-4560-ace7-d7d602ca46ae</wsa:MessageID>
      <wsa:RelatesTo>uuid:25aa6c8d-960a-4aa0-9caa-577d48b250e0</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-a788f301-aefd-4cc6-8b2b-7422a7fe18cd">
            <wsu:Created>2015-02-10T07:36:37Z</wsu:Created>
            <wsu:Expires>2015-02-10T07:41:37Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetSPOByKeyCompressed_DCResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetSPOByKeyCompressed_DCResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
         </GetSPOByKeyCompressed_DCResult>
      </GetSPOByKeyCompressed_DCResponse>
   </soap:Body>
</soap:Envelope>


Метод GetSPOPageByKey

Данный метод осуществляет постраничную загрузку цен.
Список принимаемых параметров:

  • SpoKey – ключ СПО
  • minPriceKey – ключ цены, начиная с которой осуществлять выгрузку
  • pageSize – количество записей, получаемых за один запрос

В результате пользователь получает информацию по ценам начиная с ключа цены, который передается в запросе.

Пример

Вызов метода GetSPOPageByKey с параметрами: spoKey=11; minPriceKey=11500; pageSize=5

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetSPOPageByKey>
         <prod:spoKey>11</prod:spoKey>
         <prod:minPriceKey>11500</prod:minPriceKey>
         <prod:pageSize>5</prod:pageSize>
      </prod:GetSPOPageByKey>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetSPOPageByKey

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetSPOPageByKeyResponse</wsa:Action>
      <wsa:MessageID>uuid:0069eba1-3516-4cd6-85fe-7a1a63f928f3</wsa:MessageID>
      <wsa:RelatesTo>uuid:000c02db-799b-4cdd-aed7-f86cfd4dba13</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-a16030d1-b190-4e35-9b48-0519667d266f">
            <wsu:Created>2015-02-10T07:48:56Z</wsu:Created>
            <wsu:Expires>2015-02-10T07:53:56Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetSPOPageByKeyResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-02-10" time="10:48:56" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="100" lastKey="11505" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="460" name="Россия" nameLat="Russia"/>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
               </cities>
               <categories>
                  <category key="707724292" name="4*" nameLat="4*"/>
               </categories>
               <hotels>
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
               </hotels>
               <buildings>
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
               </buildings>
               <airlines>
                  <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
               </airlines>
               <airports>
                  <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
                  <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
               </airports>
               <aircrafts>
                  <aircraft key="4" name="aerobus A-310" code="310"/>
               </aircrafts>
               <flights>
                  <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
                     <flightTime key="3" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
                  </flight>
                  <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
                     <flightTime key="4" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
                  </flight>
               </flights>
               <roomTypes>
                  <roomType key="38" name="2A" nameLat="2A" code="2A" numBed="2" numExBed="0"/>
               </roomTypes>
               <roomLocations/>
               <roomViews/>
               <roomCategories>
                  <roomCategory key="20" name="Standart" nameLat="Standart" code="STD"/>
               </roomCategories>
               <roomDescriptions>
                  <roomDescription key="20" catKey="20"/>
               </roomDescriptions>
               <roomAccomodations>
                  <roomAccomodation key="325" name="2A" nameLat="2A" code="2A" numBed="2">
                     <adult place="0" order="0"/>
                     <adult place="0" order="0"/>
                  </roomAccomodation>
               </roomAccomodations>
               <rooms>
                  <room key="1116" typeKey="38" roomDescKey="20" accomodationKey="325"/>
               </rooms>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings>
                  <boarding key="11" name="Шведский стол" nameLat="All inclusive" code="AI"/>
                  <boarding key="4" name="Завтрак буфет" nameLat="Breakfast" code="BB"/>
                  <boarding key="10" name="Не предоставляется" nameLat="NO" code="RO"/>
                  <boarding key="2" name="Полупансион" nameLat="HalfBoard" code="HB"/>
                  <boarding key="1" name="Пансион" nameLat="FullBoard" code="FB"/>
               </boardings>
               <currencies>
                  <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
               </currencies>
               <tariffs>
                  <tariff key="89" name="Экономический класс" nameLat="Coach economy" code="Y"/>
                  <tariff key="67" name="Бизнес класс" nameLat="Business class" code="C"/>
               </tariffs>
               <tourTypes>
                  <tourType key="10" name="Круиз" nameLat="en_Круиз"/>
                  <tourType key="9" name="Дополнительное спец. предложение" nameLat="en_Дополнительное спец. предложение"/>
                  <tourType key="8" name="Дополнительный тур" nameLat="en_Дополнительный тур"/>
                  <tourType key="7" name="Подмосковье:Специальные туры" nameLat="en_Подмосковье:Специальные туры"/>
                  <tourType key="6" name="Подмосковье:Календарные туры" nameLat="en_Подмосковье:Календарные туры"/>
                  <tourType key="5" name="Специальное предложение" nameLat="en_Специальное предложение"/>
                  <tourType key="4" name="Многодневная экскурсия" nameLat="en_Многодневная экскурсия"/>
                  <tourType key="3" name="Авиаперелет" nameLat="en_Авиаперелет"/>
                  <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
                  <tourType key="1" name="Комбинированный тур" nameLat="en_Комбинированный тур"/>
                  <tourType key="0" name="Не определен" nameLat="en_Не определен"/>
               </tourTypes>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices/>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
                           <spo key="11" name="Тур в Брюссель № 42" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:50:08.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices>
                              <hotelService mealKey="10" roomKey="1116" buildingKey="3231">
                                 <variant providerKey="0" dayBeg="1" nights="6" days="7" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="159" id="_519">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" allowEditDuration="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                                  ...
                                 <variant providerKey="0" dayBeg="1" nights="3" days="4" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="159" id="_502">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" allowEditDuration="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                              </hotelService>
                           </hotelServices>
                           <flightServices>
                              <flightService tariffKey="89" flightKey="524">
                                 <variant providerKey="0" dayBeg="22" nights="0" days="0" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="31" id="_516">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                                  ...
                                 <variant providerKey="0" dayBeg="4" nights="0" days="0" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="31" id="_504">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                              </flightService>
                              <flightService tariffKey="89" flightKey="525">
                                 <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" attribute="31" id="_503">
                                    <info>
                                       <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                    </info>
                                 </variant>
                              </flightService>
                           </flightServices>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices>
                           <serviceSet ids="_503 _514 _526">
                              <price gross="1040">
                                 <date key="11503" from="2015-02-12" to="2015-02-12"/>
                              </price>
                           </serviceSet>
                           <serviceSet ids="_502 _503 _504">
                              <price gross="640">
                                 <date key="11505" from="2015-02-13" to="2015-02-13"/>
                              </price>
                           </serviceSet>
                           <serviceSet ids="_503 _512 _524">
                              <price gross="960">
                                 <date key="11501" from="2015-02-12" to="2015-02-12"/>
                              </price>
                           </serviceSet>
                           <serviceSet ids="_503 _515 _527">
                              <price gross="1480">
                                 <date key="11504" from="2015-02-12" to="2015-02-12"/>
                              </price>
                           </serviceSet>
                           <serviceSet ids="_503 _513 _525">
                              <price gross="1000">
                                 <date key="11502" from="2015-02-12" to="2015-02-12"/>
                              </price>
                           </serviceSet>
                        </prices>
                        <deletedPrices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetSPOPageByKeyResponse>
   </soap:Body>
</soap:Envelope>


Метод GetSPOPageByKeyCompressed

Данный метод возвращает постраничную загрузку цен (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).
Список принимаемых параметров:

  • spoKey – ключ СПО
  • minPriceKey – ключ цены, начиная с которой осуществлять выгрузку
  • pageSize – количество записей, получаемых за один запрос (не больше 5000)

В результате пользователь получает информацию по ценам в сжатом виде, начиная с ключа цены, который передается в запросе.

Пример

Вызов метода GetSPOPageByKeyCompressed с параметрами: spoKey=11; minPriceKey=11500; pageSize=5

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetSPOPageByKeyCompressed>
         <prod:spoKey>11</prod:spoKey>
         <prod:minPriceKey>11500</prod:minPriceKey>
         <prod:pageSize>5</prod:pageSize>
      </prod:GetSPOPageByKeyCompressed>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetSPOPageByKeyCompressed

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetSPOPageByKeyCompressedResponse</wsa:Action>
      <wsa:MessageID>uuid:b1636511-738d-4d50-8fb6-0361b4eef3a0</wsa:MessageID>
      <wsa:RelatesTo>uuid:eb36cad8-707a-4e7f-8324-746053ad6c28</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-a997a589-234a-43e1-85ef-fe4ee7a97cb8">
            <wsu:Created>2015-02-10T08:10:00Z</wsu:Created>
            <wsu:Expires>2015-02-10T08:15:00Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetSPOPageByKeyCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetSPOPageByKeyCompressedResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
         </GetSPOPageByKeyCompressedResult>
      </GetSPOPageByKeyCompressedResponse>
   </soap:Body>
</soap:Envelope>


Метод GetValidTourList

Данный метод возвращает список актуальных туров.
Список принимаемых параметров:

  • параметров нет

В результате пользователь получает информацию по имеющимся актуальным турам в базе данных.

Пример

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

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetValidTourList/>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetValidTourList

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetValidTourListResponse</wsa:Action>
      <wsa:MessageID>uuid:8d602673-5c23-47c1-9664-a531cf345710</wsa:MessageID>
      <wsa:RelatesTo>uuid:0d892077-bc4f-49a5-93c1-496bb8c7fc12</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-ea5fb4ee-2121-4163-9b81-1a5f855692d0">
            <wsu:Created>2015-02-10T08:24:13Z</wsu:Created>
            <wsu:Expires>2015-02-10T08:29:13Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetValidTourListResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-02-10" time="11:24:13" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="78.114" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="460" name="Россия" nameLat="Russia"/>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
               </cities>
               <categories/>
               <hotels/>
               <buildings/>
               <airlines/>
               <airports/>
               <aircrafts/>
               <flights/>
               <roomTypes/>
               <roomLocations/>
               <roomViews/>
               <roomCategories/>
               <roomDescriptions/>
               <roomAccomodations/>
               <rooms/>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings/>
               <currencies>
                  <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
               </currencies>
               <tariffs/>
               <tourTypes>
                  <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
                  <tourType key="0" name="Не определен" nameLat="en_Не определен"/>
               </tourTypes>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices/>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="191" name="bru1a" countryKey="3"/>
                           <spo key="10" name="bru1a" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:48:36.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>7033</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                     <packet>
                        <packetHeader>
                           <tour key="197" name="Тур 553" countryKey="3"/>
                           <spo key="15" name="Тур 553" for="byPerson" validFrom="2015-06-04" validTo="2015-06-04" currencyKey="2" state="Created" ctKeyFrom="1" issue="2015-02-03T16:59:43.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2015-06-04T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions"/>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                     <packet>
                        <packetHeader>
                           <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
                           <spo key="11" name="Тур в Брюссель № 42" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:50:08.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                     <packet>
                        <packetHeader>
                           <tour key="193" name="Тур в Брюссель № 43" tourTypeKey="2" countryKey="3"/>
                           <spo key="12" name="Тур в Брюссель № 43" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:51:19.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                     <packet>
                        <packetHeader>
                           <tour key="194" name="Тур в Брюссель № 44" tourTypeKey="2" countryKey="3"/>
                           <spo key="13" name="Тур в Брюссель № 44" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:52:19.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetValidTourListResponse>
   </soap:Body>
</soap:Envelope>


Метод GetValidTourListCompressed

Данный метод возвращает список актуальных туров (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).
Список принимаемых параметров:

  • параметров нет

В результате пользователь получает информацию по имеющимся актуальным турам в базе данных. Информация предоставляется в сжатом виде.

Пример

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

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetValidTourListCompressed/>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetValidTourListCompressed

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetValidTourListCompressedResponse</wsa:Action>
      <wsa:MessageID>uuid:de49f7a5-cec0-4466-aaf7-f61c2c42103b</wsa:MessageID>
      <wsa:RelatesTo>uuid:dd451962-7aec-4487-8509-556bc572d29c</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-1f105f01-dc70-4711-b53b-d017705d88e1">
            <wsu:Created>2015-02-10T08:32:55Z</wsu:Created>
            <wsu:Expires>2015-02-10T08:37:55Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetValidTourListCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetValidTourListCompressedResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
         </GetValidTourListCompressedResult>
      </GetValidTourListCompressedResponse>
   </soap:Body>
</soap:Envelope>


Метод GetValidTourListFrom

Данный метод возвращает список актуальных туров с определенной даты.
Список принимаемых параметров:

  • checkPoint – дата, начиная с которой выгружается информация об актуальных турах

В результате пользователь получает информацию по имеющимся актуальным турам в базе данных, начиная с даты, которая передается в запросе.

Пример

Вызов метода GetValidTourListFrom с параметром checkPoint=2013-01-01

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetValidTourListFrom>
         <prod:checkPoint>2013-01-01</prod:checkPoint>
      </prod:GetValidTourListFrom>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetValidTourListFrom

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetValidTourListFromResponse</wsa:Action>
      <wsa:MessageID>uuid:f1cbbd5e-c2e3-487f-9a23-a752015a26db</wsa:MessageID>
      <wsa:RelatesTo>uuid:7636ac14-ff17-45ab-8ca5-da5c0877041d</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-f8538bd5-b373-42e6-bbed-ba79c6d9d467">
            <wsu:Created>2015-02-10T08:38:19Z</wsu:Created>
            <wsu:Expires>2015-02-10T08:43:19Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetValidTourListFromResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-02-10" time="11:38:19" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="62.5097" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="460" name="Россия" nameLat="Russia"/>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
               </cities>
               <categories/>
               <hotels/>
               <buildings/>
               <airlines/>
               <airports/>
               <aircrafts/>
               <flights/>
               <roomTypes/>
               <roomLocations/>
               <roomViews/>
               <roomCategories/>
               <roomDescriptions/>
               <roomAccomodation key="306" name="2ad+exb" nameLat="2ad+exb" code="2ad+exb" numBed="2" numExBed="1">
                  <adult place="0" order="0"/>
                  <adult place="0" order="0"/>
                  <adult place="1" order="0"/>
               </roomAccomodation>
               <roomAccomodation key="565" name="2ad+ch(2-10,99)" nameLat="2ad+ch(2-10,99)" code="2ad+ch(2-10,99)" numBed="2" numExBed="1">
                  <adult place="0" order="0"/>
                  <adult place="0" order="0"/>
                  <child ageFrom="2" ageTo="10" place="0" order="0»/>
               </roomAccomodation>
               <rooms/>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings/>
               <currencies>
                  <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
               </currencies>
               <tariffs/>
               <tourTypes>
                  <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
                  <tourType key="0" name="Не определен" nameLat="en_Не определен"/>
               </tourTypes>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices/>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="191" name="bru1a" countryKey="3"/>
                           <spo key="10" name="bru1a" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:48:36.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>7033</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                     <packet>
                        <packetHeader>
                           <tour key="197" name="Тур 553" countryKey="3"/>
                           <spo key="15" name="Тур 553" for="byPerson" validFrom="2015-06-04" validTo="2015-06-04" currencyKey="2" state="Created" ctKeyFrom="1" issue="2015-02-03T16:59:43.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2015-06-04T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions"/>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                     <packet>
                        <packetHeader>
                           <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
                           <spo key="11" name="Тур в Брюссель № 42" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:50:08.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                     <packet>
                        <packetHeader>
                           <tour key="193" name="Тур в Брюссель № 43" tourTypeKey="2" countryKey="3"/>
                           <spo key="12" name="Тур в Брюссель № 43" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:51:19.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                     <packet>
                        <packetHeader>
                           <tour key="194" name="Тур в Брюссель № 44" tourTypeKey="2" countryKey="3"/>
                           <spo key="13" name="Тур в Брюссель № 44" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:52:19.0000000+03:00">
                              <calculatingKeys/>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetValidTourListFromResponse>
   </soap:Body>
</soap:Envelope>

Примечания: 
adult - взрослое размещение,
child - детское размещение,
place - тип места (0 - основное, 1 - дополнительное, 2 - без места),
order - номер места для цены за человека,
numBed - кол-во мест на основном размещении,
numExBed - кол-во дополнительных мест


Метод GetValidTourListFrom_DC

Данный метод возвращает список актуальных туров по стране, с определенной даты для динамического ценообразования.
Список принимаемых параметров:

  • calculatingKey – ключ расчета
  • countryKey – ключ страны

В результате пользователь получает информацию по имеющимся актуальным турам в базе данных, по конкретной стране, начиная с даты, которая передается в запросе.

Пример

Вызов метода GetValidTourListFrom_DC с параметрами: calculatingKey=10; countryKey=3

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetValidTourListFrom_DC>
         <prod:calculatingKey>10</prod:calculatingKey>
         <prod:countryKey>3</prod:countryKey>
      </prod:GetValidTourListFrom_DC>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetValidTourListFrom_DC

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetValidTourListFrom_DCResponse</wsa:Action>
      <wsa:MessageID>uuid:4071f32f-0311-49c5-979a-8f0b65762b78</wsa:MessageID>
      <wsa:RelatesTo>uuid:b007ccc2-6812-44a0-a4cd-35cb528367fa</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-4a9b5940-39fb-4596-9748-ba6d1f6f915f">
            <wsu:Created>2015-02-10T08:45:01Z</wsu:Created>
            <wsu:Expires>2015-02-10T08:50:01Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetValidTourListFrom_DCResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-02-10" time="11:45:01" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="78.1237" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="460" name="Россия" nameLat="Russia"/>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
               </cities>
               <categories/>
               <hotels/>
               <buildings/>
               <airlines/>
               <airports/>
               <aircrafts/>
               <flights/>
               <roomTypes/>
               <roomLocations/>
               <roomViews/>
               <roomCategories/>
               <roomDescriptions/>
               <roomAccomodations/>
               <rooms/>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings/>
               <currencies>
                  <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
               </currencies>
               <tariffs/>
               <tourTypes>
                  <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
                  <tourType key="0" name="Не определен" nameLat="en_Не определен"/>
               </tourTypes>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices/>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="197" name="Тур 553" countryKey="3"/>
                           <spo key="15" name="Тур 553" for="byPerson" validFrom="2015-06-04" validTo="2015-06-04" currencyKey="2" state="Created" ctKeyFrom="1" issue="2015-02-03T16:59:43.0000000+03:00">
                              <calculatingKeys>
                                 <calculatingKey>13</calculatingKey>
                              </calculatingKeys>
                              <dates>
                                 <date>2015-06-04T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions"/>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                     <packet>
                        <packetHeader>
                           <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
                           <spo key="11" name="Тур в Брюссель № 42" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:50:08.0000000+03:00">
                              <calculatingKeys>
                                 <calculatingKey>10</calculatingKey>
                              </calculatingKeys>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                     <packet>
                        <packetHeader>
                           <tour key="193" name="Тур в Брюссель № 43" tourTypeKey="2" countryKey="3"/>
                           <spo key="12" name="Тур в Брюссель № 43" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:51:19.0000000+03:00">
                              <calculatingKeys>
                                 <calculatingKey>11</calculatingKey>
                              </calculatingKeys>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                     <packet>
                        <packetHeader>
                           <tour key="194" name="Тур в Брюссель № 44" tourTypeKey="2" countryKey="3"/>
                           <spo key="13" name="Тур в Брюссель № 44" for="byRoom" validFrom="2014-07-09" validTo="2015-12-31" currencyKey="2" state="Created" issue="2014-07-08T15:52:19.0000000+03:00">
                              <calculatingKeys>
                                 <calculatingKey>12</calculatingKey>
                              </calculatingKeys>
                              <dates>
                                 <date>2014-07-09T00:00:00</date>
                                 <date>2014-07-10T00:00:00</date>
                                 <date>2014-07-11T00:00:00</date>
                                  ...
                                 <date>2015-12-29T00:00:00</date>
                                 <date>2015-12-30T00:00:00</date>
                                 <date>2015-12-31T00:00:00</date>
                              </dates>
                              <comment/>
                           </spo>
                           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
                              <priceQuantity>6492</priceQuantity>
                           </spoInfo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetValidTourListFrom_DCResponse>
   </soap:Body>
</soap:Envelope>


Метод GetValidTourListFromCompressed

Данный метод возвращает список актуальных туров с определенной даты (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).
Список принимаемых параметров:

  • checkPoint – дата, начиная с которой выгружается информация об актуальных турах

В результате пользователь получает информацию по имеющимся актуальным турам в базе данных, начиная с даты, которая передается в запросе. Информация представлена в сжатом виде.

Пример

Вызов метода GetValidTourListFromCompressed с параметром checkPoint=2013-01-01

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetValidTourListFromCompressed>
         <prod:checkPoint>2013-01-01</prod:checkPoint>
      </prod:GetValidTourListFromCompressed>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetValidTourListFromCompressed

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetValidTourListFromCompressedResponse</wsa:Action>
      <wsa:MessageID>uuid:d7cbd406-4cfe-4eae-90c3-9db2d1a1ed94</wsa:MessageID>
      <wsa:RelatesTo>uuid:86dc0918-bdbe-4feb-aee5-a4d0d0d8b374</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-465d6eec-fcae-4762-bcf7-b2296eaeb28a">
            <wsu:Created>2015-02-10T08:53:23Z</wsu:Created>
            <wsu:Expires>2015-02-10T08:58:23Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetValidTourListFromCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetValidTourListFromCompressedResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
         </GetValidTourListFromCompressedResult>
      </GetValidTourListFromCompressedResponse>
   </soap:Body>
</soap:Envelope>


Импорт квот и Stop-Sale (QL)

Метод GetFlightQuotes

Данный метод возвращает расписание и квоты (наличие и количество мест) по авиаперелетам.
Количество мест в квоте отображается только при включенной настройке isShowQuantity.
Список принимаемых параметров:

  • cityFrom – город вылета
  • cityTo – город прилета
  • CheckPoint – дата вылета

В результате пользователь получает полную информацию по перелетам: города вылета и прилета (изначально передаваемые параметры), номера рейсов, названия авиакомпаний, аэропорты вылета и прилета, даты начала и окончания действия, а также наличие мест по датам вылета.

Пример

Вызов метода GetFlightQuotes с параметрами: cityFrom=1; cityTo=63; checkPoint=2015-03-01

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetFlightQuotes>
         <prod:cityFrom>1</prod:cityFrom>
         <prod:cityTo>63</prod:cityTo>
         <prod:checkPoint>2015-03-01</prod:checkPoint>
      </prod:GetFlightQuotes>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetFlightQuotes

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetFlightQuotesResponse</wsa:Action>
      <wsa:MessageID>uuid:85e57d9c-1727-48df-b8fa-d143d5dbf12d</wsa:MessageID>
      <wsa:RelatesTo>uuid:f32db1a7-2914-4a20-a15b-2d648e50a4a6</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-70759df9-14a7-420f-bc85-566d1da2d115">
            <wsu:Created>2015-02-10T09:02:21Z</wsu:Created>
            <wsu:Expires>2015-02-10T09:07:21Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetFlightQuotesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-02-10" time="12:02:06" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="0" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="460" name="Россия" nameLat="Russia"/>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
               </cities>
               <categories/>
               <hotels/>
               <buildings/>
               <airlines>
                  <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
               </airlines>
               <airports>
                  <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
                  <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
               </airports>
               <aircrafts>
                  <aircraft key="4" name="aerobus A-310" code="310"/>
               </aircrafts>
               <flights>
                  <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
                     <flightTime key="1" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
                  </flight>
                  <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
                     <flightTime key="2" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
                  </flight>
               </flights>
               <roomTypes/>
               <roomLocations/>
               <roomViews/>
               <roomCategories/>
               <roomDescriptions/>
               <roomAccomodations/>
               <rooms/>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings/>
               <currencies/>
               <tariffs/>
               <tourTypes/>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices>
                     <flightServices>
                        <flightService flightKey="524" tariffKey="130">
                           <quotas>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-01" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-02" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-03" quoteType="0" checkInStop="false"/>
                               ...
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-27" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-28" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-29" quoteType="0" checkInStop="false"/>
                           </quotas>
                        </flightService>
                        <flightService flightKey="524" tariffKey="152">
                           <quotas>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-01" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-02" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-03" quoteType="0" checkInStop="false"/>
                               ...
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-27" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-28" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-29" quoteType="0" checkInStop="false"/>
                           </quotas>
                        </flightService>
                        <flightService flightKey="524" tariffKey="155">
                           <quotas>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-01" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-02" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-03" quoteType="0" checkInStop="false"/>
                               ...
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-27" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-28" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-29" quoteType="0" checkInStop="false"/>
                           </quotas>
                        </flightService>
                        <flightService flightKey="524" tariffKey="156">
                           <quotas>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-01" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-02" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-03" quoteType="0" checkInStop="false"/>
                               ...
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-27" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-28" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-29" quoteType="0" checkInStop="false"/>
                           </quotas>
                        </flightService>
                        <flightService flightKey="525" tariffKey="75">
                           <quotas>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="498" date="2015-03-01" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-02" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-03-03" quoteType="0" checkInStop="false"/>
                               ...
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-27" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-28" quoteType="0" checkInStop="false"/>
                              <quota status="Created" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="500" date="2015-05-29" quoteType="0" checkInStop="false"/>
                           </quotas>
                        </flightService>
                     </flightServices>
                  </quotaServices>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="0"/>
                           <spo key="0" for="byPerson" validFrom="0001-01-01" validTo="0001-01-01" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
                              <calculatingKeys/>
                              <comment/>
                           </spo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                        <deletedPrices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetFlightQuotesResponse>
   </soap:Body>
</soap:Envelope>


Метод GetHotelKeys

Данный метод возвращает список отелей, по которым имеются туры.
Список принимаемых параметров:

  • сheckPoint – дата, начиная с которой выгружаются ключи по созданным или измененным отелям до настоящего момента
  • cityKey – ключ города

В результате пользователь получает актуальный список отелей в конкретно выбранном городе на передаваемую дату, по которым имеются туры в базе данных.

Пример

Вызов метода GetHotelKeys с параметрам: сheckPoint=2015-01-01; cityKey=63

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetHotelKeys>
         <prod:checkPoint>2015-01-01</prod:checkPoint>
         <prod:cityKey>63</prod:cityKey>
      </prod:GetHotelKeys>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetHotelKeys

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetHotelKeysResponse</wsa:Action>
      <wsa:MessageID>uuid:35cc4be3-0c0c-4993-9d68-247d0e40eadc</wsa:MessageID>
      <wsa:RelatesTo>uuid:b7775b03-2c6a-4f03-97ff-2adbf85981d1</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-774ba4da-a4c3-424e-92a2-5269291bbadf">
            <wsu:Created>2015-02-10T09:25:53Z</wsu:Created>
            <wsu:Expires>2015-02-10T09:30:53Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetHotelKeysResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetHotelKeysResult>
            <Hotel key="3231" name="Zeebrugge"/>
         </GetHotelKeysResult>
      </GetHotelKeysResponse>
   </soap:Body>
</soap:Envelope>


Метод GetHotelQuotes

Данный метод возвращает квоты(наличие и количество мест) по отелям.
Количество мест в квоте отображается только при включенной настройке isShowQuantity.
Список принимаемых параметров:

  • hotelKey – ключ отеля
  • сheckPoint – дата, начиная с которой выгружаются ключи по отелям
  • days – количество дней, на которые метод возвращает результат

В результате пользователь получает информацию о наличии мест по указанному отелю, на передаваемую в параметрах дату, и выбранному количеству дней.

Пример

Вызов метода GetHotelQuotes с параметрами: hotelKey=3231; сheckPoint=2015-03-01; days=1

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetHotelQuotes>
         <prod:hotelKey>3231</prod:hotelKey>
         <prod:checkPoint>2015-03-01</prod:checkPoint>
         <prod:days>1</prod:days>
      </prod:GetHotelQuotes>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetHotelQuotes

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetHotelQuotesResponse</wsa:Action>
      <wsa:MessageID>uuid:b3fd841c-5ab0-4e00-a7b9-4a7d79bd1f6d</wsa:MessageID>
      <wsa:RelatesTo>uuid:ca36826d-58aa-42e7-8dfd-e9ef2e36cbee</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-16a6dcca-fc6b-4706-a044-060d30e2f736">
            <wsu:Created>2015-02-10T09:30:24Z</wsu:Created>
            <wsu:Expires>2015-02-10T09:35:24Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetHotelQuotesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-02-10" time="12:30:24" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="0" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
               </cities>
               <categories>
                  <category key="707724292" name="4*" nameLat="4*"/>
               </categories>
               <hotels>
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
               </hotels>
               <buildings>
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
               </buildings>
               <airlines/>
               <airports/>
               <aircrafts/>
               <flights/>
               <roomTypes/>
               <roomLocations/>
               <roomViews/>
               <roomCategories/>
               <roomDescriptions/>
               <roomAccomodations/>
               <rooms/>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings/>
               <currencies/>
               <tariffs/>
               <tourTypes/>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices>
                     <hotelServices>
                        <hotelService buildingKey="3231" roomDescriptionKey="0" roomTypeKey="0">
                           <quotas>
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byCheckin" uniqueKey="3428_12" agentKey="0" freeAccess="many" places="499" date="2015-03-01" quoteType="0" checkInStop="false"/>
                           </quotas>
                        </hotelService>
                     </hotelServices>
                  </quotaServices>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="0"/>
                           <spo key="0" for="byPerson" validFrom="0001-01-01" validTo="0001-01-01" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
                              <calculatingKeys/>
                              <comment/>
                           </spo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                        <deletedPrices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetHotelQuotesResponse>
   </soap:Body>
</soap:Envelope>


Метод GetStopSalesAndQuotes

Данный метод возвращает информацию по квотам и Stop-Sale для версии 7.2.
Список принимаемых параметров:

  • сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям

В результате пользователь получает информацию о наличии мест в квотируемых услугах.

Пример

Вызов метода GetStopSalesAndQuotes с параметром сheckPoint=2015-01-01

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetStopSalesAndQuotes>
         <prod:checkPoint>2015-01-01</prod:checkPoint>
      </prod:GetStopSalesAndQuotes>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetStopSalesAndQuotes

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetStopSalesAndQuotesResponse</wsa:Action>
      <wsa:MessageID>uuid:6bb8c7c7-db23-4f19-bde3-09b6fc375423</wsa:MessageID>
      <wsa:RelatesTo>uuid:f0936f67-d4b1-4306-96dd-44a91de869e1</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-a6bdff1f-3699-4191-8e51-47239bb4aa49">
            <wsu:Created>2015-02-10T09:39:36Z</wsu:Created>
            <wsu:Expires>2015-02-10T09:44:36Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetStopSalesAndQuotesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-02-10" time="12:39:36" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="62.499900000000004" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="460" name="Россия" nameLat="Russia"/>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
               </cities>
               <categories>
                  <category key="707724292" name="4*" nameLat="4*"/>
               </categories>
               <hotels>
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
               </hotels>
               <buildings>
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
               </buildings>
               <airlines>
                  <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
               </airlines>
               <airports>
                  <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
                  <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
               </airports>
               <aircrafts>
                  <aircraft key="4" name="aerobus A-310" code="310"/>
               </aircrafts>
               <flights>
                  <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
                     <flightTime key="1" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
                  </flight>
                  <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
                     <flightTime key="2" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
                  </flight>
               </flights>
               <roomTypes/>
               <roomLocations/>
               <roomViews/>
               <roomCategories/>
               <roomDescriptions/>
               <roomAccomodations/>
               <rooms/>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings/>
               <currencies/>
               <tariffs/>
               <tourTypes/>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices>
                     <flightServices maxStopPoint="2015-01-01T00:00:00" maxQuotaPoint="2015-02-03T09:42:59.587">
                        <flightService flightKey="524" tariffKey="0">
                           <quotas>
                              <quota status="Modified" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="498" date="2015-03-04" quoteType="0" checkInStop="false"/>
                           </quotas>
                        </flightService>
                        <flightService flightKey="525" tariffKey="0">
                           <quotas>
                              <quota status="Modified" typeQuantity="byPerson" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="498" date="2015-03-01" quoteType="0" checkInStop="false"/>
                           </quotas>
                        </flightService>
                     </flightServices>
                     <hotelServices maxQuotaPoint="2015-02-03T09:42:59.347" maxStopPoint="2015-01-01T00:00:00">
                        <hotelService buildingKey="3231" roomDescriptionKey="0" roomTypeKey="0">
                           <quotas>
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="499" date="2015-03-01" quoteType="0" checkInStop="false"/>
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="499" date="2015-03-02" quoteType="0" checkInStop="false"/>
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" agentKey="0" freeAccess="many" places="499" date="2015-03-03" quoteType="0" checkInStop="false"/>
                           </quotas>
                        </hotelService>
                     </hotelServices>
                  </quotaServices>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="0"/>
                           <spo key="0" for="byPerson" validFrom="0001-01-01" validTo="0001-01-01" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
                              <calculatingKeys/>
                              <comment/>
                           </spo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                        <deletedPrices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetStopSalesAndQuotesResponse>
   </soap:Body>
</soap:Envelope>


Метод GetStopSalesAndQuotes2

Данный метод возвращает информацию по квотам и Stop-Sale для версии 9.2.
Возвращается информацию по квотам (наличие мест, количество мест, Stop-Sale, запреты на заезд) по всему услугам в туре.
Список принимаемых параметров:

  • сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям. Дата создания квоты или дата последнего изменения должны быть больше или равны дате выгрузки информации.

В результате пользователь получает информацию о наличии мест в квотируемых услугах.

Пример

Вызов метода GetStopSalesAndQuotes2 с параметром сheckPoint=2015-01-01

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetStopSalesAndQuotes2>
         <prod:checkPoint>2015-01-01</prod:checkPoint>
      </prod:GetStopSalesAndQuotes2>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetStopSalesAndQuotes2

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetStopSalesAndQuotes2Response</wsa:Action>
      <wsa:MessageID>uuid:80f77302-56fc-475e-9b35-962b9211f549</wsa:MessageID>
      <wsa:RelatesTo>uuid:be54fd49-d5dd-4ab9-a816-5db5f3533fb1</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-4436ef00-47ff-44e1-adc1-59869d6652b0">
            <wsu:Created>2015-02-10T09:49:19Z</wsu:Created>
            <wsu:Expires>2015-02-10T09:54:19Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetStopSalesAndQuotes2Response xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-02-10" time="12:49:19" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="0" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="460" name="Россия" nameLat="Russia"/>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
               </cities>
               <categories>
                  <category key="707724292" name="4*" nameLat="4*"/>
               </categories>
               <hotels>
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
               </hotels>
               <buildings>
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
               </buildings>
               <airlines>
                  <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
               </airlines>
               <airports>
                  <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
                  <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
               </airports>
               <aircrafts>
                  <aircraft key="4" name="aerobus A-310" code="310"/>
               </aircrafts>
               <flights>
                  <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
                     <flightTime key="1" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
                  </flight>
                  <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
                     <flightTime key="2" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
                  </flight>
               </flights>
               <roomTypes/>
               <roomLocations/>
               <roomViews/>
               <roomCategories/>
               <roomDescriptions/>
               <roomAccomodations/>
               <rooms/>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings/>
               <currencies/>
               <tariffs/>
               <tourTypes/>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices>
                     <flightServices maxQuotaPoint="2015-02-03T09:42:59.587">
                        <flightService flightKey="524" tariffKey="0">
                           <quotas>
                              <quota status="Modified" typeQuantity="byPerson" typeVisit="byPeriod" uniqueKey="2333" agentKey="0" freeAccess="many" places="498" date="2015-03-04" checkInStop="false"/>
                           </quotas>
                        </flightService>
                        <flightService flightKey="525" tariffKey="0">
                           <quotas>
                              <quota status="Modified" typeQuantity="byPerson" typeVisit="byPeriod" uniqueKey="2879" agentKey="0" freeAccess="many" places="498" date="2015-03-01" checkInStop="false"/>
                           </quotas>
                        </flightService>
                     </flightServices>
                     <hotelServices maxQuotaPoint="2015-02-03T09:42:59.347">
                        <hotelService buildingKey="3231" roomDescriptionKey="0" roomTypeKey="0">
                           <quotas>
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3428" agentKey="0" freeAccess="many" places="499" date="2015-03-01" quoteType="0" checkInStop="false"/>
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3429" agentKey="0" freeAccess="many" places="499" date="2015-03-02" quoteType="0" checkInStop="false"/>
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3430" agentKey="0" freeAccess="many" places="499" date="2015-03-03" quoteType="0" checkInStop="false"/>
                           </quotas>
                        </hotelService>
                     </hotelServices>
                  </quotaServices>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="0"/>
                           <spo key="0" for="byPerson" validFrom="0001-01-01" validTo="0001-01-01" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
                              <calculatingKeys/>
                              <comment/>
                           </spo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                        <deletedPrices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetStopSalesAndQuotes2Response>
   </soap:Body>
</soap:Envelope>


Метод GetStopSalesAndQuotesByHotels

Данный метод возвращает информацию по квотам и Stop-Sale по дате по конкретному ключу отеля.
Данные возвращаются вне зависимости от установленного значения настройки isShowQuantity.
Список принимаемых параметров:

  • сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям
  • hotelKey – ключ отеля

В результате пользователь получает полную информацию о наличии мест по переданному ключу отеля.

Пример

Вызов метода GetStopSalesAndQuotesByHotels с параметрами: сheckPoint=2015-01-01; hotelKey=3231

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetStopSalesAndQuotesByHotels>
         <prod:checkPoint>2015-01-01</prod:checkPoint>
         <prod:hotelKey>3231</prod:hotelKey>
      </prod:GetStopSalesAndQuotesByHotels>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetStopSalesAndQuotesByHotels

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetStopSalesAndQuotesByHotelsResponse</wsa:Action>
      <wsa:MessageID>uuid:1657bc80-2093-4bd7-bbb3-48b6ad103627</wsa:MessageID>
      <wsa:RelatesTo>uuid:0e4bac99-bf00-4a4f-81e8-0fc3c4c66eb1</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-573110bc-8c3a-47e6-b0e4-3f44afe6d89e">
            <wsu:Created>2015-02-10T09:53:58Z</wsu:Created>
            <wsu:Expires>2015-02-10T09:58:58Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetStopSalesAndQuotesByHotelsResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-02-10" time="12:53:57" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="0" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
               </cities>
               <categories>
                  <category key="707724292" name="4*" nameLat="4*"/>
               </categories>
               <hotels>
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
               </hotels>
               <buildings>
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
               </buildings>
               <airlines/>
               <airports/>
               <aircrafts/>
               <flights/>
               <roomTypes/>
               <roomLocations/>
               <roomViews/>
               <roomCategories/>
               <roomDescriptions/>
               <roomAccomodations/>
               <rooms/>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings/>
               <currencies/>
               <tariffs/>
               <tourTypes/>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices>
                     <hotelServices maxQuotaPoint="2015-02-03T09:42:59.347">
                        <hotelService buildingKey="3231" roomDescriptionKey="0" roomTypeKey="0">
                           <quotas>
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3428" agentKey="0" freeAccess="many" places="499" date="2015-03-01" quoteType="0" checkInStop="false"/>
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3429" agentKey="0" freeAccess="many" places="499" date="2015-03-02" quoteType="0" checkInStop="false"/>
                              <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="3430" agentKey="0" freeAccess="many" places="499" date="2015-03-03" quoteType="0" checkInStop="false"/>
                           </quotas>
                        </hotelService>
                     </hotelServices>
                  </quotaServices>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="0"/>
                           <spo key="0" for="byPerson" validFrom="0001-01-01" validTo="0001-01-01" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
                              <calculatingKeys/>
                              <comment/>
                           </spo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                        <deletedPrices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetStopSalesAndQuotesByHotelsResponse>
   </soap:Body>
</soap:Envelope>


Метод GetStopSalesAndQuotesCompressed

Данный метод возвращает информацию по квотам и Stop-Sale для версии 9.2 (возвращается информация, представленная массивом данных. Она сохраняется в Zip-архив, который содержит в себе сериализованный объект TourML).
Возвращается информацию по квотам (наличие мест, количество мест, Stop-Sale, запреты на заезд) по всему услугам в туре.
Список принимаемых параметров:

  • сheckPoint – дата, начиная с которой выгружается информация по квотам и их изменениям. Дата создания квоты или дата последнего изменения должны быть больше или равны дате выгрузки информации.

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

Пример

Вызов метода GetStopSalesAndQuotesCompressed с параметром сheckPoint=2015-01-01

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetStopSalesAndQuotesCompressed>
         <prod:checkPoint>2015-01-01</prod:checkPoint>
      </prod:GetStopSalesAndQuotesCompressed>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetStopSalesAndQuotesCompressed

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetStopSalesAndQuotesCompressedResponse</wsa:Action>
      <wsa:MessageID>uuid:fbdfe63c-8881-419c-8bd0-0d6834b2a7ff</wsa:MessageID>
      <wsa:RelatesTo>uuid:80974673-f1f8-4a9a-8f98-7a96526b1167</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-61bdb8cc-520b-4d04-b586-7d747b3e19ba">
            <wsu:Created>2015-02-10T09:56:06Z</wsu:Created>
            <wsu:Expires>2015-02-10T10:01:06Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetStopSalesAndQuotesCompressedResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetStopSalesAndQuotesCompressedResult>PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8VG91ck1MIH
         </GetStopSalesAndQuotesCompressedResult>
      </GetStopSalesAndQuotesCompressedResponse>
   </soap:Body>
</soap:Envelope>


Актуализация цены и бронирование (BOO)

Метод CheckBooking

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

  • XML документ, содержащий заявку, в которой указаны дата заезда, ключ агентства, ключ рассчитанного тура, туристы.

В результате пользователь получает XML документ, содержащий договор.

Пример

Вызов метода CheckBooking можно посмотреть здесь "Функция CheckBooking"


Метод CreateBooking

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

  • XML документ, содержащий заявку, в которой указаны дата заезда, ключ агентства, ключ рассчитанного тура, туристы.

В результате пользователь получает XML документ, содержащий договор

Пример

Вызов метода CreateBooking производится аналогично вызову метода CheckBooking


Метод GetAgencies

Данный метод возвращает список агентств по определенному фильтру.
Список принимаемых параметров:

  • agencyName - название агентства (необязательный параметр)
  • cityCode - ключ города
  • countryCode - ключ страны
  • phoneNumber - телефонный код города
  • mail - электронная почта (необязательный параметр)

В результате пользователь получает список агентств по передаваемым параметрам.
Внимание! Данный метод не может быть вызван из браузера, так как принимает в качестве параметра сложный тип.

Пример

Вызов метода GetAgencies agencyName=?; cityCode=63; countryCode=3; phoneNumber=+7111; mail=?

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products" xmlns:ns="http://tourml.ru/AgenciesArray/2004-09-28">
   <soapenv:Header/>
   <soapenv:Body><prod:GetAgencies>
         <!--Optional:-->
         <ns:agencyInfo agencyName="?">
            <!--Zero or more repetitions:-->
            <ns:phones cityCode="63" countryCode="3" phoneNumber="+7111"/>
            <!--Optional:-->
            <ns:mails>
               <!--Zero or more repetitions:-->
               <ns:mail>?</ns:mail>
            </ns:mails>
         </ns:agencyInfo>
      </prod:GetAgencies>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetAgencies

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetAgenciesResponse</wsa:Action>
      <wsa:MessageID>uuid:9acfc272-40b2-43cf-9cea-4aa6ea9278fc</wsa:MessageID>
      <wsa:RelatesTo>uuid:9e96e7cc-86c6-4e68-901c-e4522568988a</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-185aa0ae-3182-45ac-a6aa-fe24d5f68683">
            <wsu:Created>2015-02-10T10:01:23Z</wsu:Created>
            <wsu:Expires>2015-02-10T10:06:23Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetAgenciesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetAgenciesResult>
            <agencies xmlns="http://tourml.ru/AgenciesArray/2004-09-28">
               <agency>
                  <agencyInfo agencyName="Knokke" cityName="Брюссель" juridicalAgencyName="Knokke">
                     <mails>
                        <mail/>
                     </mails>
                  </agencyInfo>
                  <credentials agencyId="10763" agreementNumber="" expirationDate="2016-02-10T00:00:00+03:00"/>
               </agency>
            </agencies>
         </GetAgenciesResult>
      </GetAgenciesResponse>
   </soap:Body>
</soap:Envelope>


Метод GetAgreementCredentials

Данный метод возвращает ключ агентства и номер договора по логину и паролю онлайн пользователя.
Список принимаемых параметров:

  • agencyLogin – имя пользователя
  • agencyPassword – пароль пользователя

В результате пользователь получает ключ агентства по принадлежащим ему логин/пароль онлайн пользователя.

Пример

Вызов метода GetAgreementCredentials с параметрами: agencyLogin=mega; agencyPassword=mega

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetAgreementCredentials>
         <!--Optional:-->
         <prod:agencyLogin>mega</prod:agencyLogin>
         <!--Optional:-->
         <prod:agencyPassword>mega</prod:agencyPassword>
      </prod:GetAgreementCredentials>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetAgreementCredentials

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetAgreementCredentialsResponse</wsa:Action>
      <wsa:MessageID>uuid:cdb7f4db-3719-4443-9df1-ff54a801761b</wsa:MessageID>
      <wsa:RelatesTo>uuid:04f7b308-cafe-4205-8b07-72f6494e72e3</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-0f7d7066-3f7e-481e-91b2-fd29cf54f55f">
            <wsu:Created>2015-02-10T10:10:25Z</wsu:Created>
            <wsu:Expires>2015-02-10T10:15:25Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetAgreementCredentialsResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetAgreementCredentialsResult>
            <credentials agencyId="10762" agreementNumber="555" expirationDate="2016-05-01T00:00:00" xmlns="http://tourml.ru/agencies/2004-09-28"/>
         </GetAgreementCredentialsResult>
      </GetAgreementCredentialsResponse>
   </soap:Body>
</soap:Envelope>


Метод GetCountries

Данный метод возвращает список стран, по которым имеются туры. В каждой стране – список городов, на которые имеются квоты.
Список принимаемых параметров:

  • параметров нет

В результате пользователь получает список стран, по которым в базе данных есть туры.

Пример

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

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetCountries/>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetCountries

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetCountriesResponse</wsa:Action>
      <wsa:MessageID>uuid:17f68ade-788f-4bcd-9d79-12aef5f9c32b</wsa:MessageID>
      <wsa:RelatesTo>uuid:c7ae0b9b-0055-474f-af27-081b1553756c</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-99d28078-908a-46d1-a62a-4a8a7a0d32ae">
            <wsu:Created>2015-02-10T10:14:10Z</wsu:Created>
            <wsu:Expires>2015-02-10T10:19:10Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetCountriesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetCountriesResult>
            <Country key="3" name="Бельгия">
               <Cities xmlns="http://tourml.ru/citylist/2013-01-29">
                  <City key="63" name="Брюссель"/>
               </Cities>
            </Country>
         </GetCountriesResult>
      </GetCountriesResponse>
   </soap:Body>
</soap:Envelope>


Метод ValidatePriceServices

Данный метод проверяет валидность услуг на даты заездов.
Список принимаемых параметров:

  • priceKey - ключ цены
  • anyType - ключ услуги
  • checkIn - дата начала услуги

В результате пользователь получает проверку валидности услуги на указанную дату.

Пример

Вызов метода ValidatePriceServices с параметрами: priceKey=11342; checkIn=2015-01-30

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:ValidatePriceServices>
         <prod:priceKey>11342</prod:priceKey>
         <!--Optional:-->
         <prod:ids>
            <!--Zero or more repetitions:-->
            <prod:anyType>507</prod:anyType>
         </prod:ids>
         <prod:checkIn>2015-01-30</prod:checkIn>
      </prod:ValidatePriceServices>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода ValidatePriceServices

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/ValidatePriceServicesResponse</wsa:Action>
      <wsa:MessageID>uuid:aae96d14-e941-4562-8a95-ef09429d8136</wsa:MessageID>
      <wsa:RelatesTo>uuid:82511b1a-4d60-4849-905a-2bd2c40d878a</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-bc96cff6-f39e-460c-9752-2fa5e756e610">
            <wsu:Created>2015-02-10T10:21:17Z</wsu:Created>
            <wsu:Expires>2015-02-10T10:26:17Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <ValidatePriceServicesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <ValidatePriceServicesResult>false</ValidatePriceServicesResult>
      </ValidatePriceServicesResponse>
   </soap:Body>
</soap:Envelope>


Работа с заявкой (AGR)

Метод CancelAgreement

Данный метод отправляет запрос на аннуляцию путевки.
Список принимаемых параметров:

  • agencyId - ключ туристического агентства
  • agreementNumber – ключ договора путевки

В результате пользователь получает отправленный запрос на аннуляцию путевки. При передаче agencyId=0 (индивидульно), метод отрабатывать не будет, так как предназначен для работы с агентствами.

Пример

Вызов метода CancelAgreement с параметрами: agencyId=10762; agreementNumber=40216

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:CancelAgreement>
         <!--Optional:-->
         <prod:agencyId>10762</prod:agencyId>
         <!--Optional:-->
         <prod:agreementNumber>40216</prod:agreementNumber>
      </prod:CancelAgreement>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода CancelAgreement

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns="http://tourml.ru/products/2004-04-19">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/CancelAgreementResponse</wsa:Action>
      <wsa:MessageID>uuid:1fe7fd85-ae84-4163-afd4-5c2afbe8606a</wsa:MessageID>
      <wsa:RelatesTo>uuid:1a7d6dc3-032b-4972-857c-a0d171ccf13e</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-cb300e73-1dd2-4a43-9247-258cbfd45ab8">
            <wsu:Created>2015-02-10T10:52:40Z</wsu:Created>
            <wsu:Expires>2015-02-10T10:57:40Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <CancelAgreementResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <CancelAgreementResult date="0001-01-01" time="00:00:00.0000000+03:00" xmlns="http://tourml.ru/bookings/2004-09-28">
            <agreement>
               <header uri="" checkin="2015-02-01" buyerPerson="0" mainPerson="0" agreementKey="40216" agreementCode="BE50201002" country="Бельгия" city="Брюссель" days="4" quantity="2" price="640" pricePaid="0" currency="EU" creationDate="2015-01-27" payUntil="0001-01-01" status="waitcancel" errorStatus="unknown" commission="0">
                  <comment/>
               </header>
               <packets>
                  <packet id="_1">
                     <inline>
                        <TourML version="1.0" date="2015-02-10" time="13:52:40">
                           <header name="Фирма-владелец" uri="" vendor="Megatec" xmlns="http://tourml.ru/products/2004-04-19"/>
                           <references xmlns="http://tourml.ru/products/2004-04-19">
                              <countries>
                                 <country key="460" name="Россия" nameLat="Russia"/>
                                 <country key="3" name="Бельгия" nameLat="Belgium"/>
                              </countries>
                              <resorts/>
                              <cities>
                                 <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
                                 <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
                              </cities>
                              <categories>
                                 <category key="707724292" name="4*" nameLat="4*"/>
                              </categories>
                              <hotels>
                                 <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
                              </hotels>
                              <buildings>
                                 <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
                              </buildings>
                              <airlines>
                                 <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
                              </airlines>
                              <airports>
                                 <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
                                 <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
                              </airports>
                              <aircrafts>
                                 <aircraft key="4" name="aerobus A-310" code="310"/>
                              </aircrafts>
                              <flights>
                                 <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
                                    <flightTime key="1" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
                                 </flight>
                                 <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
                                    <flightTime key="2" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
                                 </flight>
                              </flights>
                              <roomTypes>
                                 <roomType key="38" name="2A" nameLat="2A" code="2A" numBed="2" numExBed="0"/>
                              </roomTypes>
                              <roomLocations/>
                              <roomViews/>
                              <roomCategories>
                                 <roomCategory key="20" name="Standart" nameLat="Standart" code="STD"/>
                              </roomCategories>
                              <roomDescriptions>
                                 <roomDescription key="20" catKey="20"/>
                              </roomDescriptions>
                              <roomAccomodations>
                                 <roomAccomodation key="325" name="2A" nameLat="2A" code="2A" numBed="2">
                                    <adult place="0" order="0"/>
                                    <adult place="0" order="0"/>
                                 </roomAccomodation>
                              </roomAccomodations>
                              <rooms>
                                 <room key="1116" typeKey="38" roomDescKey="20" accomodationKey="325"/>
                              </rooms>
                              <serviceClasses/>
                              <serviceDescriptions/>
                              <serviceDescriptions1/>
                              <serviceDescriptions2/>
                              <transfers/>
                              <excursions/>
                              <transports/>
                              <cabines/>
                              <ships/>
                              <boardings/>
                              <currencies>
                                 <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
                              </currencies>
                              <tariffs>
                                 <tariff key="89" name="Экономический класс" nameLat="Coach economy" code="Y"/>
                              </tariffs>
                              <tourTypes>
                                 <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
                              </tourTypes>
                           </references>
                           <sources xmlns="http://tourml.ru/products/2004-04-19">
                              <source name="Фирма-владелец" uri="http://">
                                 <packets>
                                    <packet>
                                       <packetHeader>
                                          <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
                                          <spo key="192" for="byPerson" validFrom="2015-02-01" validTo="2015-02-04" currencyKey="2" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
                                             <calculatingKeys/>
                                             <dates>
                                                <date>2015-02-01T00:00:00</date>
                                             </dates>
                                             <comment/>
                                          </spo>
                                       </packetHeader>
                                       <services>
                                          <hotelServices>
                                             <hotelService mealKey="10" roomKey="1116" buildingKey="3231">
                                                <variant providerKey="0" dayBeg="1" nights="3" days="4" men="2" id="_201682">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Заказ на бронирование" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </hotelService>
                                          </hotelServices>
                                          <flightServices>
                                             <flightService tariffKey="89" flightKey="525">
                                                <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" id="_201681">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </flightService>
                                             <flightService tariffKey="89" flightKey="524">
                                                <variant providerKey="0" dayBeg="4" nights="0" days="0" men="2" id="_201683">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </flightService>
                                          </flightServices>
                                          <excursionServices/>
                                          <transferServices/>
                                          <cruiseServices/>
                                          <extraServices/>
                                       </services>
                                       <prices>
                                          <serviceSet ids="_201681 _201682 _201683">
                                             <price gross="640">
                                                <date key="40216" from="2015-02-01" to="0001-01-01"/>
                                             </price>
                                          </serviceSet>
                                       </prices>
                                    </packet>
                                 </packets>
                              </source>
                           </sources>
                        </TourML>
                     </inline>
                  </packet>
               </packets>
               <persons/>
            </agreement>
         </CancelAgreementResult>
      </CancelAgreementResponse>
   </soap:Body>
</soap:Envelope>


Метод GetAgreementsByCode

Данный метод возвращает список путевок по кодам.
Список принимаемых параметров:

  • agency - ключ агентства
  • codes - номер путевки

В результате пользователь получает информацию по выбранной путевке.

Пример

Вызов метода GetAgreementsByCode с параметрами agency=10762; codes=BE50201002

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetAgreementsByCode>
         <!--Optional:-->
         <prod:agency>10762</prod:agency>
         <!--Optional:-->
         <prod:codes>
            <!--Zero or more repetitions:-->
            <prod:string>BE50201002</prod:string>
         </prod:codes>
      </prod:GetAgreementsByCode>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetAgreementsByCode

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns="http://tourml.ru/products/2004-04-19">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetAgreementsByCodeResponse</wsa:Action>
      <wsa:MessageID>uuid:2066fb3d-778c-4c31-9229-809eb7811e33</wsa:MessageID>
      <wsa:RelatesTo>uuid:b77371dc-547b-4a3f-8050-2ace1e6f8a96</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-2ae91584-9612-414d-8dc4-46d3a3506d2c">
            <wsu:Created>2015-02-10T11:12:48Z</wsu:Created>
            <wsu:Expires>2015-02-10T11:17:48Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetAgreementsByCodeResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetAgreementsByCodeResult date="0001-01-01" time="00:00:00.0000000+03:00" xmlns="http://tourml.ru/bookings/2004-09-28">
            <agreement>
               <header uri="" checkin="2015-02-01" buyerPerson="0" mainPerson="0" agreementKey="40216" agreementCode="BE50201002" country="Бельгия" city="Брюссель" days="4" quantity="2" price="640" pricePaid="0" currency="EU" creationDate="2015-01-27" payUntil="0001-01-01" status="inWork" errorStatus="unknown" commission="0">
                  <comment/>
               </header>
               <packets>
                  <packet id="_1">
                     <inline>
                        <TourML version="1.0" date="2015-02-10" time="14:12:48">
                           <header name="Фирма-владелец" uri="" vendor="Megatec" xmlns="http://tourml.ru/products/2004-04-19"/>
                           <references xmlns="http://tourml.ru/products/2004-04-19">
                              <countries>
                                 <country key="460" name="Россия" nameLat="Russia"/>
                                 <country key="3" name="Бельгия" nameLat="Belgium"/>
                              </countries>
                              <resorts/>
                              <cities>
                                 <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
                                 <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
                              </cities>
                              <categories>
                                 <category key="707724292" name="4*" nameLat="4*"/>
                              </categories>
                              <hotels>
                                 <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
                              </hotels>
                              <buildings>
                                 <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
                              </buildings>
                              <airlines>
                                 <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
                              </airlines>
                              <airports>
                                 <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
                                 <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
                              </airports>
                              <aircrafts>
                                 <aircraft key="4" name="aerobus A-310" code="310"/>
                              </aircrafts>
                              <flights>
                                 <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
                                    <flightTime key="1" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
                                 </flight>
                                 <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
                                    <flightTime key="2" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
                                 </flight>
                              </flights>
                              <roomTypes>
                                 <roomType key="38" name="2A" nameLat="2A" code="2A" numBed="2" numExBed="0"/>
                              </roomTypes>
                              <roomLocations/>
                              <roomViews/>
                              <roomCategories>
                                 <roomCategory key="20" name="Standart" nameLat="Standart" code="STD"/>
                              </roomCategories>
                              <roomDescriptions>
                                 <roomDescription key="20" catKey="20"/>
                              </roomDescriptions>
                              <roomAccomodations>
                                 <roomAccomodation key="325" name="2A" nameLat="2A" code="2A" numBed="2">
                                    <adult place="0" order="0"/>
                                    <adult place="0" order="0"/>
                                 </roomAccomodation>
                              </roomAccomodations>
                              <rooms>
                                 <room key="1116" typeKey="38" roomDescKey="20" accomodationKey="325"/>
                              </rooms>
                              <serviceClasses/>
                              <serviceDescriptions/>
                              <serviceDescriptions1/>
                              <serviceDescriptions2/>
                              <transfers/>
                              <excursions/>
                              <transports/>
                              <cabines/>
                              <ships/>
                              <boardings/>
                              <currencies>
                                 <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
                              </currencies>
                              <tariffs>
                                 <tariff key="89" name="Экономический класс" nameLat="Coach economy" code="Y"/>
                              </tariffs>
                              <tourTypes>
                                 <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
                              </tourTypes>
                           </references>
                           <sources xmlns="http://tourml.ru/products/2004-04-19">
                              <source name="Фирма-владелец" uri="http://">
                                 <packets>
                                    <packet>
                                       <packetHeader>
                                          <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
                                          <spo key="192" for="byPerson" validFrom="2015-02-01" validTo="2015-02-04" currencyKey="2" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
                                             <calculatingKeys/>
                                             <dates>
                                                <date>2015-02-01T00:00:00</date>
                                             </dates>
                                             <comment/>
                                          </spo>
                                       </packetHeader>
                                       <services>
                                          <hotelServices>
                                             <hotelService mealKey="10" roomKey="1116" buildingKey="3231">
                                                <variant providerKey="0" dayBeg="1" nights="3" days="4" men="2" id="_201682">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Заказ на бронирование" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </hotelService>
                                          </hotelServices>
                                          <flightServices>
                                             <flightService tariffKey="89" flightKey="525">
                                                <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" id="_201681">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </flightService>
                                             <flightService tariffKey="89" flightKey="524">
                                                <variant providerKey="0" dayBeg="4" nights="0" days="0" men="2" id="_201683">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </flightService>
                                          </flightServices>
                                          <excursionServices/>
                                          <transferServices/>
                                          <cruiseServices/>
                                          <extraServices/>
                                       </services>
                                       <prices>
                                          <serviceSet ids="_201681 _201682 _201683">
                                             <price gross="640">
                                                <date key="40216" from="2015-02-01" to="0001-01-01"/>
                                             </price>
                                          </serviceSet>
                                       </prices>
                                    </packet>
                                 </packets>
                              </source>
                           </sources>
                        </TourML>
                     </inline>
                  </packet>
               </packets>
               <persons/>
            </agreement>
         </GetAgreementsByCodeResult>
      </GetAgreementsByCodeResponse>
   </soap:Body>
</soap:Envelope>


Метод GetAgreementsByKeys

Данный метод возвращает список путевок по ключам.
Список принимаемых параметров:

  • codes - ключ договора

В результате пользователь получает информацию по выбранному ключу договора

Пример

Вызов метода GetAgreementsByKeys с параметром codes=40216

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetAgreementsByKeys>
         <!--Optional:-->
         <prod:codes>
            <!--Zero or more repetitions:-->
            <prod:int>40216</prod:int>
         </prod:codes>
      </prod:GetAgreementsByKeys>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetAgreementsByKeys

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns="http://tourml.ru/products/2004-04-19">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetAgreementsByKeysResponse</wsa:Action>
      <wsa:MessageID>uuid:b1cc99a4-d23c-4583-9168-6f56adf574e8</wsa:MessageID>
      <wsa:RelatesTo>uuid:5e132e43-23ed-49ae-8dc4-246d1f8545a4</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-1adcdd22-98e3-4916-9bae-8a42e2a3acab">
            <wsu:Created>2015-02-10T11:24:31Z</wsu:Created>
            <wsu:Expires>2015-02-10T11:29:31Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetAgreementsByKeysResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetAgreementsByKeysResult date="0001-01-01" time="00:00:00.0000000+03:00" xmlns="http://tourml.ru/bookings/2004-09-28">
            <agreement>
               <header uri="" checkin="2015-02-01" buyerPerson="0" mainPerson="0" agreementKey="40216" agreementCode="BE50201002" country="Бельгия" city="Брюссель" days="4" quantity="2" price="640" pricePaid="0" currency="EU" creationDate="2015-01-27" payUntil="0001-01-01" status="inWork" errorStatus="unknown" commission="0">
                  <comment/>
               </header>
               <packets>
                  <packet id="_1">
                     <inline>
                        <TourML version="1.0" date="2015-02-10" time="14:24:31">
                           <header name="Фирма-владелец" uri="" vendor="Megatec" xmlns="http://tourml.ru/products/2004-04-19"/>
                           <references xmlns="http://tourml.ru/products/2004-04-19">
                              <countries>
                                 <country key="460" name="Россия" nameLat="Russia"/>
                                 <country key="3" name="Бельгия" nameLat="Belgium"/>
                              </countries>
                              <resorts/>
                              <cities>
                                 <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
                                 <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
                              </cities>
                              <categories>
                                 <category key="707724292" name="4*" nameLat="4*"/>
                              </categories>
                              <hotels>
                                 <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
                              </hotels>
                              <buildings>
                                 <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
                              </buildings>
                              <airlines>
                                 <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
                              </airlines>
                              <airports>
                                 <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
                                 <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
                              </airports>
                              <aircrafts>
                                 <aircraft key="4" name="aerobus A-310" code="310"/>
                              </aircrafts>
                              <flights>
                                 <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
                                    <flightTime key="1" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
                                 </flight>
                                 <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
                                    <flightTime key="2" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
                                 </flight>
                              </flights>
                              <roomTypes>
                                 <roomType key="38" name="2A" nameLat="2A" code="2A" numBed="2" numExBed="0"/>
                              </roomTypes>
                              <roomLocations/>
                              <roomViews/>
                              <roomCategories>
                                 <roomCategory key="20" name="Standart" nameLat="Standart" code="STD"/>
                              </roomCategories>
                              <roomDescriptions>
                                 <roomDescription key="20" catKey="20"/>
                              </roomDescriptions>
                              <roomAccomodations>
                                 <roomAccomodation key="325" name="2A" nameLat="2A" code="2A" numBed="2">
                                    <adult place="0" order="0"/>
                                    <adult place="0" order="0"/>
                                 </roomAccomodation>
                              </roomAccomodations>
                              <rooms>
                                 <room key="1116" typeKey="38" roomDescKey="20" accomodationKey="325"/>
                              </rooms>
                              <serviceClasses/>
                              <serviceDescriptions/>
                              <serviceDescriptions1/>
                              <serviceDescriptions2/>
                              <transfers/>
                              <excursions/>
                              <transports/>
                              <cabines/>
                              <ships/>
                              <boardings/>
                              <currencies>
                                 <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
                              </currencies>
                              <tariffs>
                                 <tariff key="89" name="Экономический класс" nameLat="Coach economy" code="Y"/>
                              </tariffs>
                              <tourTypes>
                                 <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
                              </tourTypes>
                           </references>
                           <sources xmlns="http://tourml.ru/products/2004-04-19">
                              <source name="Фирма-владелец" uri="http://">
                                 <packets>
                                    <packet>
                                       <packetHeader>
                                          <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
                                          <spo key="192" for="byPerson" validFrom="2015-02-01" validTo="2015-02-04" currencyKey="2" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
                                             <calculatingKeys/>
                                             <dates>
                                                <date>2015-02-01T00:00:00</date>
                                             </dates>
                                             <comment/>
                                          </spo>
                                       </packetHeader>
                                       <services>
                                          <hotelServices>
                                             <hotelService mealKey="10" roomKey="1116" buildingKey="3231">
                                                <variant providerKey="0" dayBeg="1" nights="3" days="4" men="2" id="_201682">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Заказ на бронирование" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </hotelService>
                                          </hotelServices>
                                          <flightServices>
                                             <flightService tariffKey="89" flightKey="525">
                                                <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" id="_201681">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </flightService>
                                             <flightService tariffKey="89" flightKey="524">
                                                <variant providerKey="0" dayBeg="4" nights="0" days="0" men="2" id="_201683">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </flightService>
                                          </flightServices>
                                          <excursionServices/>
                                          <transferServices/>
                                          <cruiseServices/>
                                          <extraServices/>
                                       </services>
                                       <prices>
                                          <serviceSet ids="_201681 _201682 _201683">
                                             <price gross="640">
                                                <date key="40216" from="2015-02-01" to="0001-01-01"/>
                                             </price>
                                          </serviceSet>
                                       </prices>
                                    </packet>
                                 </packets>
                              </source>
                           </sources>
                        </TourML>
                     </inline>
                  </packet>
               </packets>
               <persons/>
            </agreement>
         </GetAgreementsByKeysResult>
      </GetAgreementsByKeysResponse>
   </soap:Body>
</soap:Envelope>


Метод GetAgreementsByNumber

Данный метод возвращает информацию по забронированным путевкам.
Список принимаемых параметров:

  • agency - ключ туристического агентства
  • codes – ключ договора

В результате пользователь получает информацию по выбранному ключу агенства, и выбранному ключу договора.

Пример

Вызов метода GetAgreementsByNumber с параметрами: agency=10762; codes=40216

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetAgreementsByNumber>
         <!--Optional:-->
         <prod:agency>10762</prod:agency>
         <!--Optional:-->
         <prod:codes>
            <!--Zero or more repetitions:-->
            <prod:int>40216</prod:int>
         </prod:codes>
      </prod:GetAgreementsByNumber>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetAgreementsByNumber

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns="http://tourml.ru/products/2004-04-19">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetAgreementsByNumberResponse</wsa:Action>
      <wsa:MessageID>uuid:7091dbeb-807e-49ce-bff8-71c680b37341</wsa:MessageID>
      <wsa:RelatesTo>uuid:4a7b9f1e-a539-496c-a674-cafe8612a374</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-d6f759d1-d008-4241-beef-82661ed6252a">
            <wsu:Created>2015-02-10T11:32:49Z</wsu:Created>
            <wsu:Expires>2015-02-10T11:37:49Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetAgreementsByNumberResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetAgreementsByNumberResult date="0001-01-01" time="00:00:00.0000000+03:00" xmlns="http://tourml.ru/bookings/2004-09-28">
            <agreement>
               <header uri="" checkin="2015-02-01" buyerPerson="0" mainPerson="0" agreementKey="40216" agreementCode="BE50201002" country="Бельгия" city="Брюссель" days="4" quantity="2" price="640" pricePaid="0" currency="EU" creationDate="2015-01-27" payUntil="0001-01-01" status="inWork" errorStatus="unknown" commission="0">
                  <comment/>
               </header>
               <packets>
                  <packet id="_1">
                     <inline>
                        <TourML version="1.0" date="2015-02-10" time="14:32:49">
                           <header name="Фирма-владелец" uri="" vendor="Megatec" xmlns="http://tourml.ru/products/2004-04-19"/>
                           <references xmlns="http://tourml.ru/products/2004-04-19">
                              <countries>
                                 <country key="460" name="Россия" nameLat="Russia"/>
                                 <country key="3" name="Бельгия" nameLat="Belgium"/>
                              </countries>
                              <resorts/>
                              <cities>
                                 <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460"/>
                                 <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
                              </cities>
                              <categories>
                                 <category key="707724292" name="4*" nameLat="4*"/>
                              </categories>
                              <hotels>
                                 <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
                              </hotels>
                              <buildings>
                                 <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
                              </buildings>
                              <airlines>
                                 <airline key="18" name="Lufthunsa" nameLat="en_Lufthunsa" code="LH"/>
                              </airlines>
                              <airports>
                                 <airport key="64" name="BRU" nameLat="BRU" code="BRU" cityKey="63" distance="0"/>
                                 <airport key="12" name="Домодедово" nameLat="Домодедово" code="DME" cityKey="1" distance="0"/>
                              </airports>
                              <aircrafts>
                                 <aircraft key="4" name="aerobus A-310" code="310"/>
                              </aircrafts>
                              <flights>
                                 <flight key="525" code="069" fromCityKey="1" toCityKey="63" airlineKey="18">
                                    <flightTime key="1" fromAirportKey="12" toAirportKey="64" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="06:10:00" timeEnd="09:15:00"/>
                                 </flight>
                                 <flight key="524" code="068" fromCityKey="63" toCityKey="1" airlineKey="18">
                                    <flightTime key="2" fromAirportKey="64" toAirportKey="12" dateBegin="2012-01-01" dateEnd="2021-01-01" weekDays="1234567" aircraftKey="4" timeBegin="07:05:00" timeEnd="10:10:00"/>
                                 </flight>
                              </flights>
                              <roomTypes>
                                 <roomType key="38" name="2A" nameLat="2A" code="2A" numBed="2" numExBed="0"/>
                              </roomTypes>
                              <roomLocations/>
                              <roomViews/>
                              <roomCategories>
                                 <roomCategory key="20" name="Standart" nameLat="Standart" code="STD"/>
                              </roomCategories>
                              <roomDescriptions>
                                 <roomDescription key="20" catKey="20"/>
                              </roomDescriptions>
                              <roomAccomodations>
                                 <roomAccomodation key="325" name="2A" nameLat="2A" code="2A" numBed="2">
                                    <adult place="0" order="0"/>
                                    <adult place="0" order="0"/>
                                 </roomAccomodation>
                              </roomAccomodations>
                              <rooms>
                                 <room key="1116" typeKey="38" roomDescKey="20" accomodationKey="325"/>
                              </rooms>
                              <serviceClasses/>
                              <serviceDescriptions/>
                              <serviceDescriptions1/>
                              <serviceDescriptions2/>
                              <transfers/>
                              <excursions/>
                              <transports/>
                              <cabines/>
                              <ships/>
                              <boardings/>
                              <currencies>
                                 <currency key="2" name="Euro" nameLat="Euro" code="EU"/>
                              </currencies>
                              <tariffs>
                                 <tariff key="89" name="Экономический класс" nameLat="Coach economy" code="Y"/>
                              </tariffs>
                              <tourTypes>
                                 <tourType key="2" name="Стандартный тур" nameLat="en_Стандартный тур"/>
                              </tourTypes>
                           </references>
                           <sources xmlns="http://tourml.ru/products/2004-04-19">
                              <source name="Фирма-владелец" uri="http://">
                                 <packets>
                                    <packet>
                                       <packetHeader>
                                          <tour key="192" name="Тур в Брюссель № 42" tourTypeKey="2" countryKey="3"/>
                                          <spo key="192" for="byPerson" validFrom="2015-02-01" validTo="2015-02-04" currencyKey="2" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
                                             <calculatingKeys/>
                                             <dates>
                                                <date>2015-02-01T00:00:00</date>
                                             </dates>
                                             <comment/>
                                          </spo>
                                       </packetHeader>
                                       <services>
                                          <hotelServices>
                                             <hotelService mealKey="10" roomKey="1116" buildingKey="3231">
                                                <variant providerKey="0" dayBeg="1" nights="3" days="4" men="2" id="_201682">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Заказ на бронирование" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </hotelService>
                                          </hotelServices>
                                          <flightServices>
                                             <flightService tariffKey="89" flightKey="525">
                                                <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" id="_201681">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </flightService>
                                             <flightService tariffKey="89" flightKey="524">
                                                <variant providerKey="0" dayBeg="4" nights="0" days="0" men="2" id="_201683">
                                                   <info>
                                                      <additionalAttributes d19p1:status="Ok" xmlns:d19p1="http://tourml.ru/products/2004-04-19" xmlns="http://www.megatec.ru/tourml/extensions"/>
                                                   </info>
                                                </variant>
                                             </flightService>
                                          </flightServices>
                                          <excursionServices/>
                                          <transferServices/>
                                          <cruiseServices/>
                                          <extraServices/>
                                       </services>
                                       <prices>
                                          <serviceSet ids="_201681 _201682 _201683">
                                             <price gross="640">
                                                <date key="40216" from="2015-02-01" to="0001-01-01"/>
                                             </price>
                                          </serviceSet>
                                       </prices>
                                    </packet>
                                 </packets>
                              </source>
                           </sources>
                        </TourML>
                     </inline>
                  </packet>
               </packets>
               <persons/>
            </agreement>
         </GetAgreementsByNumberResult>
      </GetAgreementsByNumberResponse>
   </soap:Body>
</soap:Envelope>


Метод GetSimpleDogovorsBronni

Данный метод возвращает список путевок в формате Бронни.
Список принимаемых параметров:

  • agency - подстрока (часть имени) названия агентства. В итоговом запросе будет конструкция
    LIKE 'agency - название агентства'
    
  • dateFrom - дата, с которой будут выводится созданные путевки
  • dateTo - дата, по которую будет выводится список созданных путевок

В результате пользователь получает список путевок на выбранные даты.

Пример

Вызов метода GetSimpleDogovorsBronni с параметрами: agency=агентство; dateFrom=2015-01-01; dateTo=2015-03-01

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetSimpleDogovorsBronni>
         <!--Optional:-->
         <prod:agency>агентство</prod:agency>
         <prod:dateFrom>2015-01-01</prod:dateFrom>
         <prod:dateTo>2015-03-01</prod:dateTo>
      </prod:GetSimpleDogovorsBronni>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetSimpleDogovorsBronni

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetSimpleDogovorsBronniResponse</wsa:Action>
      <wsa:MessageID>uuid:56ed19bd-82f6-4727-ac9b-f279c6445070</wsa:MessageID>
      <wsa:RelatesTo>uuid:b13771b3-9ed3-43a5-b4e2-a4f436419f75</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-b2887d84-6bf2-4fc4-b0f6-4206933e4dbc">
            <wsu:Created>2015-02-10T11:38:10Z</wsu:Created>
            <wsu:Expires>2015-02-10T11:43:10Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetSimpleDogovorsBronniResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetSimpleDogovorsBronniResult xmlns="http://tourml.ru/bookings/2004-09-28"/>
      </GetSimpleDogovorsBronniResponse>
   </soap:Body>
</soap:Envelope>


Метод GetSimpleDogovorsByCreateDates

Данный метод возвращает список путевок в формате Бронни по датам создания.
Список принимаемых параметров:

  • dateFrom - дата, с которой будут выводится созданные путевки
  • dateTo - дата, по которую будет выводится список созданных путевок
  • agency - подстрока (часть имени) названия агентства. В итоговом запросе будет конструкция
    LIKE 'agency - название агентства'
    
  • BTKey - значение колонки DG_BTKey из таблицы tbl_Dogovors.

В результате пользователь получает список путевок по дате создания, начиная от переданной в параметрах дате, и выбранному названию агентства.

Пример

Вызов метода GetSimpleDogovorsByCreateDates с параметрами: dateFrom=2015-01-01; dateTo=2015-03-01; agency=Агентство; BTKey=0

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetSimpleDogovorsByCreateDates>
         <prod:dateFrom>2015-01-01</prod:dateFrom>
         <prod:dateTo>2015-03-01</prod:dateTo>
         <!--Optional:-->
         <prod:agency>Агентство</prod:agency>
         <prod:BTKey>0</prod:BTKey>
      </prod:GetSimpleDogovorsByCreateDates>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetSimpleDogovorsByCreateDates

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetSimpleDogovorsByCreateDatesResponse</wsa:Action>
      <wsa:MessageID>uuid:44f6e49b-abf0-4539-8804-1c992989ca72</wsa:MessageID>
      <wsa:RelatesTo>uuid:fce72291-3a87-45d7-a546-dc37e1fcad55</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-34d0d561-d61d-4456-aa79-ad4693de104e">
            <wsu:Created>2015-02-10T11:51:02Z</wsu:Created>
            <wsu:Expires>2015-02-10T11:56:02Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetSimpleDogovorsByCreateDatesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetSimpleDogovorsByCreateDatesResult xmlns="http://tourml.ru/bookings/2004-09-28">
            <simpleDogovor key="40218" code="BE50130002" agentKey="0"/>
            <simpleDogovor key="40216" code="BE50201002" agentKey="0"/>
         </GetSimpleDogovorsByCreateDatesResult>
      </GetSimpleDogovorsByCreateDatesResponse>
   </soap:Body>
</soap:Envelope>


Подбор вариантов (GBI)

Метод GetBookingInfo

Данный метод возвращает информацию о путевке.
Список принимаемых параметров:

  • XML документ, содержащий заявку, в которой указаны дата заезда, ключ агентства, ключ рассчитанного тура, туристы.

В результате пользователь получает информацию о путевке в XML документе.

Пример

Вызов метода GetBookingInfo производится аналогично вызову метода CheckBooking


Подбор перелетов (FLF)

Методы в данной группе отсутствуют.


Любые другие (MICS)

Метод GetCourse

Данный метод возвращает информацию о кросс-курсе валют.
Список принимаемых параметров:

  • rateCodeFrom - код валюты, кросс-курс которой нужно вывести
  • rateCodeTo - код валюты 2
  • exchangeDate - дата, на которую необходимо взять курсы валют

В результате пользователь получает информацию о кросс-курсе валют на выбранную дату.

Пример

Вызов метода GetCourse с параметрами: rateCodeFrom=$; rateCodeTo=рб; exchangeDate=2015-01-30

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetCourse>
         <!--Optional:-->
         <prod:rateCodeFrom>$</prod:rateCodeFrom>
         <!--Optional:-->
         <prod:rateCodeTo>рб</prod:rateCodeTo>
         <prod:exchangeDate>2015-01-30</prod:exchangeDate>
      </prod:GetCourse>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetCourse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetCourseResponse</wsa:Action>
      <wsa:MessageID>uuid:a8bdf07f-9f86-441e-9bdb-b5916179dab6</wsa:MessageID>
      <wsa:RelatesTo>uuid:87094986-6a43-4494-9967-15b52dacaf1c</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-80aeff76-8768-4d35-9716-e7f72eca643f">
            <wsu:Created>2015-02-10T12:02:02Z</wsu:Created>
            <wsu:Expires>2015-02-10T12:07:02Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetCourseResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetCourseResult>34.425800</GetCourseResult>
      </GetCourseResponse>
   </soap:Body>
</soap:Envelope>


Метод GetNationalCourse

Данный метод возвращает возвращает курс национальной валюты.
Список принимаемых параметров:

  • rateCode - код валюты, курс которой нужно получить
  • exchangeDate - дата, на которую необходимо взять курс валют

В результате пользователь получает информацию о курсе национальной валюты на выбранную дату.

Пример

Вызов метода GetNationalCourse с параметрами: rateCode=Eu; exchangeDate=2015-03-01

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetNationalCourse>
         <!--Optional:-->
         <prod:rateCode>Eu</prod:rateCode>
         <prod:exchangeDate>2015-03-01</prod:exchangeDate>
      </prod:GetNationalCourse>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetNationalCourse

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetNationalCourseResponse</wsa:Action>
      <wsa:MessageID>uuid:fae0aa47-ee83-41cf-9736-986b02dc5193</wsa:MessageID>
      <wsa:RelatesTo>uuid:d9f9b5ae-9cf0-4dac-82f7-2855178b3197</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-b53c06ed-70e2-4e35-82d7-3aef0026b01a">
            <wsu:Created>2015-02-10T12:05:01Z</wsu:Created>
            <wsu:Expires>2015-02-10T12:10:01Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetNationalCourseResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetNationalCourseResult>46.812200</GetNationalCourseResult>
      </GetNationalCourseResponse>
   </soap:Body>
</soap:Envelope>


Метод GetNationalRateCode

Данный метод возвращает код национальной валюты.
Список принимаемых параметров:

  • параметров нет

В результате пользователь получает код национальной валюты

Пример

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

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetNationalRateCode/>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetNationalRateCode

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetNationalRateCodeResponse</wsa:Action>
      <wsa:MessageID>uuid:262e1c56-2635-49b9-8273-e0190843523c</wsa:MessageID>
      <wsa:RelatesTo>uuid:55ecd152-ab90-4dad-be07-c7e5f1061dde</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-566ea04d-35e9-428e-8cee-0d37f8336fa4">
            <wsu:Created>2015-02-10T12:18:26Z</wsu:Created>
            <wsu:Expires>2015-02-10T12:23:26Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetNationalRateCodeResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetNationalRateCodeResult>рб</GetNationalRateCodeResult>
      </GetNationalRateCodeResponse>
   </soap:Body>
</soap:Envelope>


Метод GetReferences

Данный метод возвращает справочники по фильтрам.
Список принимаемых параметров:

  • queryType - идентификатор запроса
  • param - ключ фильтра

В результате пользователь получает

Пример

Вызов метода GetReferences с параметром spoKey=11

queryType — cервис авторизации

  1. .D0.9F.D0.BE.D0.BB.D1.83.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D1.81.D0.BF.D1.80.D0.B0.D0.B2.D0.BE.D1.87.D0.BD.D0.BE.D0.B9_.D0.B8.D0.BD.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D1.86.D0.B8.D0.B8_.28.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D1.8F_GetReferences.29


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetReferences>
         <!--Optional:-->
         <prod:queryType>HotelByCityId</prod:queryType>
         <!--Optional:-->
         <prod:param>63</prod:param>
      </prod:GetReferences>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetReferences

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetReferencesResponse</wsa:Action>
      <wsa:MessageID>uuid:0aad755d-d6f4-4be6-8968-b3222bb85055</wsa:MessageID>
      <wsa:RelatesTo>uuid:58730678-460e-4761-ae60-c9c6de84b413</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-73cb1385-44ae-4264-aa13-9df1acd2687b">
            <wsu:Created>2015-02-10T12:22:20Z</wsu:Created>
            <wsu:Expires>2015-02-10T12:27:20Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetReferencesResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <TourML version="1.0" date="2015-02-10" time="15:22:19" xmlns="http://tourml.ru/products/2004-04-19">
            <header name="Название ТО" uri="URL" vendor="Megatec">
               <comment/>
               <loadTime timeValue="0" lastKey="-1" xmlns="http://www.megatec.ru/tourml/extensions"/>
            </header>
            <references>
               <countries>
                  <country key="3" name="Бельгия" nameLat="Belgium"/>
               </countries>
               <resorts/>
               <cities>
                  <city key="63" name="Брюссель" nameLat="en_Брюссель" code="BRU" countryKey="3"/>
               </cities>
               <categories>
                  <category key="707724292" name="4*" nameLat="4*"/>
                  <category key="707724289" name="1*" nameLat="1*"/>
               </categories>
               <hotels>
                  <hotel key="234" name="4 (L) 'Palace'" nameLat="4 (L) 'Palace'" countryKey="3" cityKey="63"/>
                  <hotel key="675" name="4" nameLat="4" countryKey="3" cityKey="63"/>
                  <hotel key="3231" name="Zeebrugge" nameLat="Zeebrugge" code="zee" countryKey="3" cityKey="63"/>
               </hotels>
               <buildings>
                  <building key="234" name="Основной корпус" nameLat="Base build" categoryKey="707724289" hotelKey="234"/>
                  <building key="675" name="Основной корпус" nameLat="Base build" categoryKey="707724289" hotelKey="675"/>
                  <building key="3231" name="Основной корпус" nameLat="Base build" categoryKey="707724292" hotelKey="3231"/>
               </buildings>
               <airlines/>
               <airports/>
               <aircrafts/>
               <flights/>
               <roomTypes/>
               <roomLocations/>
               <roomViews/>
               <roomCategories/>
               <roomDescriptions/>
               <roomAccomodations/>
               <rooms/>
               <serviceClasses/>
               <serviceDescriptions/>
               <serviceDescriptions1/>
               <serviceDescriptions2/>
               <transfers/>
               <excursions/>
               <transports/>
               <cabines/>
               <ships/>
               <boardings/>
               <currencies/>
               <tariffs/>
               <tourTypes/>
            </references>
            <sources>
               <source name="Название ТО" uri="URL">
                  <quotaServices/>
                  <packets>
                     <packet>
                        <packetHeader>
                           <tour key="0"/>
                           <spo key="0" for="byPerson" validFrom="0001-01-01" validTo="0001-01-01" state="Created" issue="0001-01-01T00:00:00.0000000+03:00">
                              <calculatingKeys/>
                              <comment/>
                           </spo>
                        </packetHeader>
                        <services>
                           <hotelServices/>
                           <flightServices/>
                           <excursionServices/>
                           <transferServices/>
                           <cruiseServices/>
                           <extraServices/>
                        </services>
                        <prices/>
                        <deletedPrices/>
                     </packet>
                  </packets>
               </source>
            </sources>
         </TourML>
      </GetReferencesResponse>
   </soap:Body>
</soap:Envelope>


Специальные (SPEC)

Метод GetInfo

Внутренний метод для тестовых целей.

Метод Info

Внутренний метод для тестовых целей.

Метод GetVersion

Данный метод возвращает версию базы данных Мастер-Тур и текущей бизнес-логики сервиса Список принимаемых параметров:

  • параметров нет

В результате пользователь получает версию базы данных Мастер-Тур и текущей бизнес-логики сервиса/

Пример

Вызов метода GetSPOArrayByKeyCompressed с параметром spoKey=11

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://tourml.ru/service/2004-08-13/products">
   <soapenv:Header/>
   <soapenv:Body>
      <prod:GetVersion/>
   </soapenv:Body>
</soapenv:Envelope>

Возвращаемый результат метода GetSPOArrayByKeyCompressed

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
   <soap:Header>
      <wsa:Action>http://tourml.ru/service/2004-08-13/products/GetVersionResponse</wsa:Action>
      <wsa:MessageID>uuid:79819ab6-b844-4f3b-811e-91fe960afd77</wsa:MessageID>
      <wsa:RelatesTo>uuid:50744140-8022-4b5c-9248-4e280b4fad64</wsa:RelatesTo>
      <wsa:To>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:To>
      <wsse:Security>
         <wsu:Timestamp wsu:Id="Timestamp-84a9457c-6450-4187-9410-55532949d0ff">
            <wsu:Created>2015-02-10T12:36:40Z</wsu:Created>
            <wsu:Expires>2015-02-10T12:41:40Z</wsu:Expires>
         </wsu:Timestamp>
      </wsse:Security>
   </soap:Header>
   <soap:Body>
      <GetVersionResponse xmlns="http://tourml.ru/service/2004-08-13/products">
         <GetVersionResult>
            <AssemblyVersion>9.2.0.59449</AssemblyVersion>
            <BuildDate>12.01.2015 13:08:16</BuildDate>
            <MTVersion>9.2.20.25;9.2.0.59449</MTVersion>
            <StartDate>2015-02-10T15:36:34.9153568+03:00</StartDate>
         </GetVersionResult>
      </GetVersionResponse>
   </soap:Body>
</soap:Envelope>


Авторизация при использовании web-сервиса

При работе с web-сервисом TourML перед запросом данных требуется произвести авторизацию. Web-сервис позволяет использовать несколько методов авторизации, доступные для использования из различных программных средств.

Основным методом авторизации является использование WSE (Web Services Enhancements). По умолчанию web-сервис использует именно этот механизм авторизации. Более детально о механизме безопасности WSE можно прочитать по следующей ссылке:

http://msdn.microsoft.com/en-us/library/aa894200.aspx

Для упрощения работы c web-сервисом предусмотрен механизм упрощенной авторизации, позволяющий производить работу с web-сервисом без использования механизма WSE. Данный вариант авторизации является опциональным и должен быть разрешен явным образом через установку настройки в конфигурационном файле web-сервиса. Более детально о механизме упрощенной авторизации будет рассказано ниже.

Авторизация с использованием WSE

При работе со средой разработки Microsoft Visual Studio в секцию Reference проекта необходимо добавить ссылку на библиотеку Microsoft.Web.Services2.dll

Ниже приведен пример кода на языке c#, позволяющий создать подключение к веб-сервису. Обратите внимание на то, что после автоматического создания прокси-класса с помощью MS Visial Studio, необходимо внести изменения в сгенерированный код.

Нужно указать в качестве базового класса следующий класс:

Microsoft.Web.Services2.WebServicesClientProtocol 

Более подробно можно ознакомится с авторизацией по следующей ссылке:

http://msdn.microsoft.com/en-us/library/ms996952.aspx

Пример работа с WSE авторизацией при использовании библиотекой WSE

SoapContext reqCtx = sp.RequestSoapContext;

UsernameToken tok = new UsernameToken("login", "password",  asswordOption.SendHashed);
reqCtx.Security.Tokens.Add(tok);
MessageSignature sig = new MessageSignature(tok);
sig.SignatureOptions = SignatureOptions.IncludeAction;
reqCtx.Security.Elements.Add(sig);
ServiceClient.ServiceProxy.Version ver = sp.GetVersion();

Пример работа с WSE авторизацией без использовании библиотеки WSE

Передача запроса в виде XML

1.Создание дайджеста пароля:

DateTime dt = DateTime.Now.ToUniversalTime();
//Создание строк nonce, passwordDigest
private void GetPasswordDigest(out string nonce, out string digest, DateTime dt)
{
DateTime created = dt;
//строка, сгенеренная случайным образом. Внимание! Сервис не
//даст одну и ту же строку передавать несколько раз.
byte[] baNonce = new byte[20];
byte[] baCreated;
Random r = new Random(Environment.TickCount);
r.NextBytes(baNonce);
string cr = String.Format("{0:yyyy-MM-ddTHH:mm:ssZ}", created);
baCreated = Encoding.UTF8.GetBytes(cr);
string password = "pass";
byte[] baPassword = Encoding.UTF8.GetBytes(password);
int baDigestLength = baNonce.Length + baCreated.Length + baPassword.Length;
byte[] baDigest = new byte[baDigestLength];
Array.Copy(baNonce, 0, baDigest, 0, baNonce.Length);
Array.Copy(baCreated, 0, baDigest, baNonce.Length, baCreated.Length);
Array.Copy(baPassword, 0, baDigest, baNonce.Length + baCreated.Length, baPassword.Length);
byte[] hash = SHA1Managed.Create().ComputeHash(baDigest);
nonce = Convert.ToBase64String(baNonce);
digest = Convert.ToBase64String(hash);
}

2.Подпись XML. Обязательно хоть что-нибудь должно быть подписано. Для упрощения задачи можно подписать только wsa:Action.

const string wsaNS = "xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/03/addressing\";
const string wsuNS = "xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\";
string action = http://tourml.ru/service/2004-08-13/products/GetVersion;
//wsa:Action в канонической форме (с нужными namespace'ами) запишится так 
string strToSign = String.Format("<wsa:Action {0} {1} wsu:Id=\"Id-622cdaf1-1721-4fff-8235-7ace4e4549ab\">{2}</wsa:Action>",wsaNS,wsuNS,action);
//DigestValue - считаем от этой строки Base64(SHA1())
signatureInfo += String.Format("<ds:DigestValue>{0}</ds:DigestValue>", GetBase64SHA1(strToSign));

3.SignatureValue - подпись всех элементов SignatureInfo, которые также канонизированы по стандарту xml-exc-c14n.

header += String.Format("<SignatureValue>{0}</SignatureValue>", GetBase64SHA1(signatureInfo));

Более подробную справочную информацию обо всех этапах формирования XML-запроса для работы с WSE-авторизацией можно получить по следующим ссылкам:

http://www.w3.org/TR/xml-exc-c14n/
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf
http://www.xml.com/pub/a/2001/08/08/xmldsig.html
http://www.citforum.ru/security/internet/web_service/
http://www.faqs.org/rfcs/rfc3075.html

Пример работы без использования WSE авторизации

С целью упрощения авторизации на веб-сервисе (для закачки информации по турам и квотам) из языков программирования типа PHP, в сервисе предусмотрена возможность передачи логина и пароля через заголовок WebRequest и параметрами через POST запрос. Данная возможность является опциональной и включается с помощью настройки в конфигурационном файле web-сервиса.

<add key="allowSimpleAuth" value="true"/>

Внимание! Настройка добавляется в web.config web-сервиса

Запрос с использованием GET

При вызове метода веб-сервиса можно в качестве параметров передать информацию о логине и пароле

Login=test1&Password=qUqP5cyxm6YcTAhz05Hph5gvu9M=

где в качестве пароля выступает Base64(SHA1(‘пароль’, true))

Запрос с использованием SOAP

В каждом методе веб-сервиса есть описание заголовка и Soap-запроса к этому методу. Для правильной работы необходимо использовать протокол SOAP 1.1.
Например, для метода GetValidTourList:
Заголовок:

POST /Service.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: http://tourml.ru/service/2004-08-13/products/GetValidTourListFrom

Для передачи логина и пароля в заголовок добавляются следующие элементы:

Login      : логин 
Password: Base64(SHA1(пароль))

Soap запрос:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetValidTourListFrom xmlns="http://tourml.ru/service/2004-08-13/products">
      <checkPoint>dateTime</checkPoint>
    </GetValidTourListFrom>
  </soap:Body>
</soap:Envelope>
Пример упрощенной авторизации на языке c#
const string xsiNS = "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"";
const string xsdNS = "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"";
const string soapNS = "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\";

string message = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
message += String.Format("<soap:Envelope {0} {1} {2}>", xsiNS, xsdNS, soapNS);
message += "<soap:Body><GetValidTourListFrom xmlns=\"http://tourml.ru/service/2004-08-13/products\"><checkPoint>2009-01-06</checkPoint></GetValidTourListFrom></soap:Body></soap:Envelope>";

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://localhost:3153/service.asmx");
wr.Method = "POST";
wr.ContentType = "text/xml; charset=utf-8";

//Прописываем Soap запрос
Stream connectionStream = wr.GetRequestStream();
StreamWriter sw = new StreamWriter(connectionStream, Encoding.UTF8);
sw.Write(message);
sw.Close();
//Прописываем логин и пароль
wr.Headers.Add("Login", "test");
wr.Headers.Add("Password", Convert.ToBase64String(SHA1Managed.Create().ComputeHash(Encoding.UTF8.GetBytes("test"))));
wr.Headers.Add("SOAPAction", "http://tourml.ru/service/2004-08-13/products/GetValidTourListFrom");
WebResponse resp = wr.GetResponse();

Вызов методов веб-сервиса. Возможные проблемы при авторизации

Если метод вызывается через браузер и если Вы используете браузер Internet Explorer, то при возникновении любой ошибки на этапе авторизации возвращается HTTP 500 - Внутренняя ошибка сервера. Internet Explorer скрывает текст возникшей ошибки. В данном случае стоит воспользоваться каким-либо альтернативным браузером (Opera, Mozilla), где сообщение от сервера выведется на экран. Также текст ошибок можно получать, воспользовавшись логгерами Http, которые отслеживают запросы\ответы по этому протоколу. Логгерами можно воспользоваться также при обращениях к сервису с клиента.

Запрос Возникшая ошибка Пояснение
GetStopSalesAndQuotes(2009-05-05) System.Data.SqlClient.SqlException: Cannot open database AvalonTest requested by the login. The login failed.

Login failed for user 'ESYSTEM'.

at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)

at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)

at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)…


Проблема на стороне оператора. Веб-сервис не может получить доступ к базе данных под учетной записью, указанной в web.config веб-сервиса.
GetSPOPageByKey(253,0,5000) System.Data.SqlClient.SqlException: The transaction log for database 'AvalonTest' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases Проблема на стороне оператора. Требуется передать указанную ошибку администратору базы данных оператора.
GetSPOPageByKey(253,0,5000) System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Серверу не удалось обработать запрос. ---> System.Data.SqlClient.SqlException: Could not find stored procedure 'sp_GetPricePage'.

в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)

в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)

в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)

в System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader

В базе данных оператора отсутствует хранимая процедура 'sp_GetPricePage'. Проблема на стороне оператора. Требуется передать указанную ошибку администратору базы данных оператора. По поводу обновления или установки данной процедуры оператор может связаться со службой поддержки компании Мегатек.
GetSPOPageByKey(253,0,5000) (При вызове из браузера) System.Web.Services.Protocols.SoapException: Username was not specified Указанный метод требует указание логина\пароля. И не может быть вызван из браузера напрямую.
GetSPOPageByKey(253,0,5000) System.Exception: WSE authorization error 565


Или


System.Web.Services.Protocols.SoapHeaderException: Microsoft.Web.Services2.Security.SecurityFault:

The security token could not be authenticated or authorized --->

System.ArgumentNullException: Значение не может быть неопределенным.

Имя параметра: secret

Не удалось авторизоваться с переданным логином\паролем.
GetSPOPageByKey(253,0,5000) System.Web.Services.Protocols.SoapHeaderException: Microsoft.Web.Services2.Security.SecurityFault:

The security token could not be authenticated or authorized ---> System.Exception: Password has expired.

Истек срок действия переданного логина.
GetStopSalesAndQuotes(2009-05-05) System.Web.Services.Protocols.SoapException: You are not allowed to use this function С переданным логином\паролем нельзя вызвать эту функцию. В списке групп функций, доступных по этому логину, отсутствует группа с вызываемой процедурой.

Функции загрузки информации о турах

Формат TourML

TourML - xml-документ, в котором передается информация о турах, ценах, услугах, входящих в эти цены, квотах.

Формат TourML был разработан для того, чтобы стать единым “языком”, который будут понимать различные системы и программные средства, работающие в туристической сфере.

Описание формата TourML

Структурно xml-документ разделен на 3 части.

  1. header – заголовок документа
  2. references (необязательна) – секция справочников
  3. sources – секция цен
  • header обязателен, но содержит необязательную для синхронизации информацию о том, кто и с помощью какой реализации сформировал документ.
  • name (обязателен)– строка, содержащая значение, указывающее на владельца документа (но не информации, которая в нем находится). Обычно это название компании, которая формирует документ. Как правило, не используется при синхронизации.
  • uri (необязателен)– уникальный идентификатор владельца документа.

Элемент loadTime содержит следующие данные:

  • timeValue - информация о времени загрузки (не используется)
  • lastKey - для постраничной загрузки максимальный (наибольший) ключ тура, который передается для выгрузки следующей страницы
<header name="ООО МегаТур" uri="www.megatour.com" xmlns="http://tourml.ru/products/2004-04-19">
  <loadTime timeValue="100" xmlns="http://www.megatec.ru/tourml/extensions" lastKey="3451235"/>
</header>

Элемент references содержит информацию об используемых при описании цен, СПО или квот справочниках. Этот элемент является необязательным, однако, практически всегда используется, так как трудно описать информацию не сославшись как какой-либо справочник. Например, при описании СПО, необходимо ссылаться на страны, валюту и т.д. Таким образом, элементы справочников должны присутствовать в документе практически всегда для сохранения ссылочной целостности.

Элементы справочников, используемые во всем документе, описываются только в данном разделе.

Уникальность первичных ключей элементов справочников поддерживается в пределах элемента references.

В справочниках содержатся следующие разделы

  • countries – раздел, описывающий страны
  • resorts – раздел, описывающий регионы
  • cities – раздел, описывающий города
  • categories – раздел, описывающий категории звездности отелей и кают
  • hotels – раздел, описывающий отели
  • buildings – раздел, описывающий корпуса отелей
  • airlines – раздел, описывающий авиакомпании
  • airports – раздел, описывающий аэропорты
  • aircrafts – раздел, описывающий авиасуда
  • flights – раздел, описывающий перелеты
  • roomTypes – раздел, описывающий типы номеров
  • roomLocations – раздел, описывающий расположение номера
  • roomViews – раздел, описывающий вид из номера
  • roomCategories – раздел, описывающий уровень комфортности
  • roomDescriptions – используемые комбинации расположения номера, вида из номера и уровня комфортности номера
  • roomAccomodations – раздел, описывающий проживание в номере
  • rooms – используемые комбинации типов номеров, проживания и описания номера (roomDescriptions)
  • serviceClasses – раздел, описывающий типы услуг
  • serviceDescriptions – раздел, описывающий дополнительные услуги
  • serviceDescriptions1– раздел, описывающий дополнительные услуги
  • serviceDescriptions2– раздел, описывающий дополнительные услуги
  • transfers – раздел, описывающий услуги переезда
  • excursions – раздел, описывающий экскурсионные услуги
  • transports – раздел, описывающий транспорт
  • cabines – раздел, описывающий каюты
  • ships – раздел, описывающий морские суда
  • boardings – питание
  • currencies – валюта
  • tariffs – тарифа перелетов
  • tourTypes – типы туров

Пример - справочник городов:

   <countries>
     <country key="29" name="Греция" nameLat="Greece" code="GRC" />
     <country key="375" name="Россия" nameLat="Russia" code="RUS" />
     <country key="99999999" fake="true" stdKey="UNKNOWN" name="UNKNOWN" nameLat="UNKNOWN" code="UNKNOWN" />
   </countries>

У каждого элемента из указанных выше разделов существуют атрибуты:

  • key (обязателен) - ключ в таблице соответствующего справочника.
  • fake (необязателен) - указывает на то, что первичный ключ является фиктивным (если значение true). Даже в том случае, когда первичный ключ является фиктивным, он должен быть уникален. Обычно ключ (key) такой фиктивной записи равен значению 99999999 или 0. Все остальные атрибуты заполняются значением UNKNOWN.
  • stdKey (необязателен) – стандартный ключ элемента справочника. Используется в тех случаях, когда принимающая сторона заранее не имеет данных справочников и не может синхронизировать запись по идентификатору. Реализация может при синхронизации отдавать приоритет атрибуту stdKey перед атрибутами code, name и nameLat, однако вследствие того, что туроператоры не заполняют это поле надлежащим образом, как правило, в нем содержится мусор не имеющий ничего общего со стандартным ключом (ISO кодом).

Также могут включать в себя дополнительные атрибуты типа Name, NameLat, Code и др.

Элемент sources может содержать информацию о квотах или о ценах какого-либо тура. Информация о ценах содержится в элементах packet, который состоит из 3-х частей:

  • packetHeader - общая информация о туре и СПО
  • services - информация об услугах, включенных в цены
  • prices - цены и даты заезда + ссылки на услуги
  • deletedPrices – удаленные цены и даты заезда + ссылки на услуги.

packetHeader имеет следующую структуру:

<packetHeader>
  <tour key="2054" name="Халкидики" tourTypeKey="2" countryKey="29" />
  <spo key="3206" for="byRoom" validFrom="2009-09-25" validTo="2009-10-07" currencyKey="2" state="Created" issue="2009-08-03T13:04:06.0000000+04:00">
    <dates />
    <comment />
  </spo>
  <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
    <priceQuantity>3736</priceQuantity>
  </spoInfo>
</packetHeader>

Где:

  • tour key - ключ тура
  • name - название тура
  • tourTypeKey, countryKey - тип тура и страна - описаны в разделе справочники.
  • spo key - ключ соответствующего СПО
  • for="byRoom" (или "byPerson") - показывает за что указаны цены - за комнату или за человека.
  • validFrom="2009-09-25" validTo="2009-10-07" - промежуток времени, на который распространяется данное СПО
  • currencyKey - валюта, в которой заведены цены - описана в разделе справочники.
  • state="Created" (или "Modified") - статус тура - создан (изменен)
  • issue="2009-08-03T13:04:06.0000000+04:00" - дата и время последнего изменения тура.
  • <dates /> - даты, на которые есть заезды в указанном туре (будет реализовано в следующей версии)
  • <comment /> - комментарий к СПО (будет реализовано в следующей версии)
  • spoInfo содержит элемент priceQuantity, в котором указано количество доступных цен для тура.
  • services - информация об услугах, на которые есть ссылки из раздела цен.

Услуги разделены по следующим группам: Услуга проживания. Например,

<hotelService mealKey="44" roomKey="4648" buildingKey="3413">
  • mealKey - тип питания из справочника boardings
  • roomKey - тип комнаты
  • buildingKey - тип здания

Услуга перелета. Например,

<flightService tariffKey="89" flightKey="631">
  • tariffKey - тариф на перелет из справочника tariffs
  • flightKey - перелет из справочника Flights (описывает город вылета-прилета, авиакомпанию).

Справочник Flights включает в себя элементы FlightTimes (расписания перелетов). Услуга экскурсий. Например,

<excursionServices transportKey="23" excursionKey="12">
  • transportKey,excursionKey - сслылки на справочники тип транспорта (transports) и экскурсия (excursions)

Услуга трансфера. Например,

<transferService transferKey="1989" transportKey="210">
  • transferKey, transportKey - соответствующие ссылки на справочники transfers и transports

Услуга круиз. Например,

<cruiseServices shipKey="123" cabineKey="12">
  • shipKey, cabineKey - ссылки на справочники cabines и ships.

Остальные услуги - страховка, виза, доп. услуги и т.д. Например,

<extraService classKey="6" subKey="30037" subKey1="5162" subKey2="17" countryKey="460" cityKey="1">
  • classKey - тип услуги из справочника serviceClasses
  • subKey - описание услуги из справочника serviceDescriptions
  • subKey1 - дополнительное описание 1 из справочника serviceDescriptions1
  • subKey2 - дополнительное описание 2 из справочника serviceDescriptions2
  • countryKey - ссылка на страну из справочника Country
  • cityKey - ссылка на город из справочника City

Внутри элемента каждой такой услуги приведены варианты этой услуги (элемент variant) в зависимости от продолжительности, дня начала предоставления и других параметров

<flightService tariffKey="330" flightKey="2284">
    <variant providerKey="0" dayBeg="1" nights="0" days="0" men="1" allowDelete="true" allowEditMainService="true" allowEditSubService="true" id="_39839489">
        <info>
            <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions" />
        </info>
    </variant>
    <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" allowDelete="true" allowEditMainService="true" allowEditSubService="true" id="_39839488">
        <info>
            <additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions" />
        </info>
    </variant>
</flightService>

Элемент variant имеет следующие атрибуты:

  • providerKey - ключ партнера, предоставляющего услугу (не используется - возвращается 0)
  • dayBeg - день начала предоставления услуги
  • nights - продолжительность услуги в ночах
  • days - продолжительность услуги в днях
  • men - количество человек, на которое рассчитана данная услуга
  • id - ключ услуги, на который ссылается serviceSet из раздела prices
  • allowDelete - флаг, показывающий можно ли удалить данную услугу
  • allowEditMainService - флаг, показывающий можно ли изменять услугу
  • allowEditSubService - флаг, показывающий можно ли изменять SubService (подчиненную услугу) у данной услуги

У элемента variant существует вложенный опциональный элемент info, в который выводится дополнительные атрибуты услуги (если хотя бы одна из них true):

  • allowEditCity - у услуги возможно редактирование города
  • allowEditPartner - у услуги возможно редактирование партнера, предоставляющего услугу
  • allowEditDuration - у услуги возможно редактировать продолжительность

Invisible - флаг, показывающий что услуга скрытая (сейчас этот флаг не используется, поскольку скрытые услуги отсеиваются на этапе выгрузки из базы) Как для атрибутов у variant так и для атрибутов info справедливо следующее правило: если какой-то из флагов имеет значение false, то он не возвращается в ответе. То есть

<additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions" />

означает

allowEditCity = true
allowEditPartner = true
allowEditDuration = false
Invisible = false

prices - раздел, в котором сгруппированы обсчитанные услуги и указаны цены на пакеты из этих услуг, в зависимости от дат заезда. В элементе serviceSet в атрибуте ids указан список id услуг пакета (ключей элементов variant, описанных выше).

<serviceSet ids="_2000051 _2000056 _2000061 _2000066 _2000071 _2000076 _2000081 _2000441">
    <price gross="3586">
        <date key="67222503" from="2009-09-25" to="2009-09-25" />
        <date key="67222504" from="2009-09-27" to="2009-09-27" />
    </price>
    <price gross="3756">
        <date key="67222793" from="2009-09-29" to="2009-09-29" />
    </price>
</serviceSet>

В элементах price указаны цены (gross) за набор услуг пакета. Внутри элемента price вложены элементы data, имеющие следующие атрибуты:

  • key - ключ обсчитаной цены
  • from, to - промежуток дат, на который распространяется эта цена.

При проверке бронирования данный ключ + дата из промежутка from, to должны передаваться в качестве переметров. Таким образом, это означает, что пакет с ключем 67222503 на 2009-09-25 стоит (предварительная цена) 3586 (валюта берется из описания СПО) и состоит из следующих услуг: "_2000051 _2000056 _2000061 _2000066 _2000071 _2000076 _2000081 _2000441".

Порядок работы с web-сервисом

Web-сервис TourML позволяет организовать полный цикл взаимодействия с программным комплексом Мастер-Тур – от получения цен до бронирования и аннуляции заявок. Ниже рассмотрен полный цикл работы с web-сервисом.

Получение списка доступных спецпредложений

Первым шагом при работе с web-сервисом является получение списка спецпредложений, выставленных оператором для просмотра в онлайне. Эта операция может быть выполнена с помощью двух методов:

  • GetValidTourList
  • GetValidTourListFrom

Результат выполнения данных методов - TourML документ, в котором содержится список доступных СПО, а также их актуальность.

Разделы документа, которые будут заполнены: В разделах packet (которых будет по количеству доступных СПО) будет заполнен элемент packetHeader, содержащий информацию о СПО и количестве цен.

 
 <sources xmlns="http://tourml.ru/products/2004-04-19">
    <source name="ООО МегаТур" uri="http://www.mega tour.com/">
      <quotaServices />
      <packets>
        <packet>
          <packetHeader>
            <tour key="311" name="Test Tour" tourTypeKey="5" countryKey="90">
            </tour>
            <spo key="467" for="byPerson" validFrom="2009-01-11" validTo="2009-12-29" currencyKey="1" state="Created" issue="2009-01-10T14:12:00.0000000+03:00">
              <dates />
              <comment />
            </spo>
            <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
              <priceQuantity>20520</priceQuantity>
            </spoInfo>
          </packetHeader>
          <services>
            <hotelServices />
            <flightServices />
            <excursionServices />
            <transferServices />
            <cruiseServices />
            <extraServices />
          </services>
          <prices />
        </packet>
        <packet>
         ........
        </packet>

При выгрузке информации об СПО будут заполнены только те справочники, на которые есть ссылки в элементах tour и spo, а именно: страна, валюта, тип тура.

<references xmlns="http://tourml.ru/products/2004-04-19">
   <countries>
     <country key="86" name="Турция" nameLat="TURKEY" code="TR" />
     <country key="90" name="Австрия" nameLat="AUSTRIA" code="AT" />
     <country key="9" name="Египет" nameLat="Egypt" code="EG" />
   </countries>
   <resorts />
   <cities />
   <categories />
   <hotels />
   <buildings />
   <airlines />
   <airports />
   <aircrafts />
   <flights />
   <roomTypes />
   <roomLocations />
   <roomViews />
   <roomCategories />
   <roomDescriptions />
   <roomAccomodations />
   <rooms />
   <serviceClasses />
   <serviceDescriptions />
   <serviceDescriptions1 />
   <serviceDescriptions2 />
   <transfers />
   <excursions />
   <transports />
   <cabines />
   <ships />
   <boardings />
   <currencies>
     <currency key="1" name="US Dollar" nameLat="US Dollar" code="$" />
   </currencies>
   <tariffs />
   <tourTypes>
     <tourType key="32" name="Сложный тур" nameLat="Complex tour" />
     <tourType key="5" name="Специальное предложение" nameLat="Special offer" />
     <tourType key="0" name="Не определен" nameLat="Not detected" />
   </tourTypes>
 </references>

Загрузка цен по конкретному спецпредложению

На втором шаге с помощью метода GetSPOPageByKey выполняется загрузка цен по конкретному спецпредложению. Метод принимает следующие параметры:

  • SpoKey – ключ СПО
  • minPriceKey – ключ цены, начиная с которой осуществлять выгрузку
  • pageSize – количество записей получаемых за один запрос (не больше 5000)

Внимание!

Количество записей (pageSize) рекомендуется брать не более 5000, поскольку это значение гарантирует приемлемую производительность сервиса.

Выгрузка страницы с 5000 ценами занимает порядка 5-20 секунд, в зависимости от производительности сервера и его текущей загрузки.

Пример

Пусть требуется выгрузить СПО с ID = 25. Из результатов метода GetValidTourList мы знаем, что в данном СПО 26430 цен.

Первый запрос мы отправляем с параметрами 25, 0, 5000. В качестве ответа сервиса получим TourML, в котором будут описаны первые 5000 прайсов указанного СПО.

Чтобы выполнить загрузку следующей страницы нам нужно передать в качестве параметров 25, maxPriceID, 5000, где maxPriceID - максимальный ID цены которая вернулась в предыдущем запросе.

В ответе сервиса ID прайсов возвращаются в тегах date, сгруппированных по цене,

<serviceSet ids="_10818">
   <price gross="10990">
     <date key="12575" from="2014-05-24" to="2014-05-24"/>
   </price>
</serviceSet>

где:

  • ids - ключи услуги, поле TL_TSKey из таблицы TP_SERVICELISTS
  • price gross - цена, поле TP_Gross из таблицы TP_PRICES
  • date key - ключ цены, поле TP_Key из таблицы TP_PRICES

Чтобы найти maxPriceID нужно перебрать все теги date и выбрать тот, у которого атрибут key максимальный. В последних версиях сервиса доступен атрибут lastKey у элемента loadTime, в котором указан maxPriceID. Если lastKey=-1, то загрузка окончена и этот TourML - последняя страница.

<header name="" uri="http://notfound.net">
    <loadTime timeValue="100" lastKey="87546090" xmlns="http://www.megatec.ru/tourml/extensions" /> 
</header>

Таким образом, чтобы выгрузить весь тур (26430 цен) необходимо отправить 6 запросов. Последний запрос также можно отправить с pageSize = 5000. Сервис вернет оставшиеся 1430 цен.

Загрузка информации о квотах

Для получения информации о квотах необходимо использовать метод GetStopSalesAndQuotes.

Внимание!

В результат работы метода GetStopSalesAndQuotes(DateTime checkPoint) попадают только те данные, которые изменялись за период c checkPoint по текущую дату. Такой вариант работы подразумевает ведение своей собственной базы с занесением в нее информации по квотам и стопам.

В разделе references приведены справочники, на которые ссылаются отобранные перелеты или гостиницы.

<references>
 <countries>
    <country key="460" name="Россия" nameLat="Russia" code="RU" /> 
    <country key="86" name="Турция" nameLat="TURKEY" code="TR" /> 
 </countries>
 <resorts /> 
 <cities>
     <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460" /> 
     <city key="187" name="АНТАЛИЯ" nameLat="ANTALYA" code="AYT" countryKey="86" /> 
  </cities>

В разделе

 <sources>
    <source name="name" uri="http://www.name.ru/">
        <quotaServices>
 

приведена информация по квотам.

Информация по квотам на перелет

Для каждого авиаперелета и тарифа формируется следующая информация:

<flightService flightKey="552" tariffKey="330">

где flightKey - ключ перелета, tariffKey - ключ тарифа.

<flightService flightKey="526" tariffKey="89">
  <stopsales>
    <stopsale dateFrom="2009-05-01" dateTo="2009-05-02" typeVisit="byPeriod" status="Modified" />
  </stopsales>
</flightService>

В элементах <stopsale> приведена информация об остановках продаж на период времени с dateFrom по dateTo.

<flightService flightKey="526" tariffKey="89">
  <quotas> 
    <quota date="2009-05-05" places="125" freeAccess="many" typeQuantity="byPerson" typeVisit="byPeriod"   status="Created" duration=”5,6” /> 
  </quotas> 
</flightService>

Квоты по датам преведены в элементах <quota>.

  • Атрибут date - дата, на которую проверяется квота.
  • Атрибут places - количество свободных мест (отображается если настройка isShowQuantity установлена в true)
  • Атрибут freeAccess - в зависимости от результата проверки квот и настроек <quoteQualifiers> может принимать значения "byQuery", "none", "little", "many".
  • Атрибут duration – продолжительность, на которую заведена квота. Если квота без продолжительности, то атрибут не выводится.

Остальные атрибуты всегда остаются такими typeQuantity="byPerson" typeVisit="byPeriod". Если атрибут status="Deleted", то это означает, что данная квота или стоп сейл были удалены из базы данных.

Примеры возвращаемых данных:

<flightService flightKey="10823" tariffKey="332">
  <quotas>
    <quota date="2009-05-28" places="0" freeAccess="byQuery" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" /> - квота на заданное число не задана. 
    <quota date="2009-05-31" places="0" freeAccess="none" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" /> на заданное число нет мест 
  <quota date="2009-06-10" places="17" freeAccess="little" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" /> 
</flightService>

на заданное число есть 17 мест.

Если на какое либо число отсутствует квота в разделе <quotas>, то считается что данная услуга также имеет статус "под запрос" (byQuery).

Информация по квотам на проживания
<hotelService buildingKey="3239" roomTypeKey="1" roomDescriptionKey="20">
  <quotas>
    <quota date="2009-07-15" places="0" freeAccess="byQuery" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" /> 
    <quota date="2009-07-16" places="0" freeAccess="byQuery" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" duration=”5,6” /> 
  </quotas>
</hotelService>
  • buildingKey - ключ гостиницы
  • roomTypeKey - тип комнаты (HotelRoom.RoomKey)
  • roomDescriptionKey - категория комнаты (HotelRoom.RoomsCategoryKey)
  • typeQuantity="byRoom" - квота предоставляется на комнату
  • Атрибут duration – продолжительность, на которую заведена квота. Если квота без продолжительности, то атрибут не выводится.

"byPerson" - квота предоставляется на человека. При проверке нужно учитывать количество людей. (используется реже)

typeVisit="byPeriod" - квота задана на указанный день. Квоты должны проверяться на все дни тура

"byCheckin" - на заезд. проверка квот идет только на первый день. Если в первый день заезда места есть, то считается что есть. (используется реже)

Примеры возвращаемых данных:

<hotelService buildingKey="3275" roomTypeKey="79" roomDescriptionKey="51">
  <stopsales>
    <stopsale dateFrom="2009-08-14" dateTo="2009-08-15" typeVisit="byPeriod" status="Modified" />
    <stopsale dateFrom="2009-08-17" dateTo="2009-08-18" typeVisit="byPeriod" status="Modified" />
  </stopsales>
  <quotas>
    <quota date="2009-08-16" places="1" freeAccess="little" typeQuantity="byRoom" typeVisit="byPeriod" status="Modified" />
  </quotas>
</hotelService>

При использовании метода GetStopSalesAndQuotes2.

<hotelService buildingKey="3233" roomDescriptionKey="20" roomTypeKey="1"> 
  <quotas>
    <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="2778" agentKey="0" freeAccess="many" places="20" date="2013-10-01" quoteType="0" checkInStop="false"/>
    <quota status="Modified" typeQuantity="byRoom" typeVisit="byPeriod" uniqueKey="2779" agentKey="0" freeAccess="many" places="20" date="2013-10-02" quoteType="0" checkInStop="true"/>
  </quotas>
</hotelService>
  • checkInStop - атрибут, отвечающий за наличие запрета на заезд. Принимает значение true - запрет на заезд выставлен, false - запрет на заезд не выставлен.
<hotelService buildingKey="3233" roomDescriptionKey="20" roomTypeKey="1">
  <stopsales>
    <stopsale status="Modified" typeVisit="byPeriod" uniqueKey="22" dateFrom="2013-11-02" dateTo="2013-11-02" quoteType="1"/>
    <stopsale status="Modified" typeVisit="byPeriod" uniqueKey="20" dateFrom="2013-11-09" dateTo="2013-11-09" duration="2" quoteType="1"/>
    <stopsale status="Modified" typeVisit="byPeriod" uniqueKey="28" dateFrom="2013-11-11" dateTo="2013-11-11" quoteType="0"/>
  </stopsales>
</hotelService>
  • duration - продолжительность услуги. Атрибут не отображается, если он равен "0".
  • quoteType - тип Stop-Sale. 1 - частный Stop-Sale. 0 - общий Stop-Sale.
Предупреждение


Информация о квотах и Stop-Sale!
quoteType указанный в тэге </quotas>...</quotas> указывают на тип квоты.
quoteType указанный в тэге <stopsales>...</stopsales> указывают на тип Stop-Sale.

Загрузка информации по авиаперелетам (расписание и квоты)

Для получения информации по авиаперелетам необходимо использовать метод GetFlightQuotes.

GetFlightQuotes(int cityFrom, int cityTo, DateTime checkPoint)

Возвращает информацию по авиаперелетам (расписание и квоты) с городом вылета cityFrom, городом прилета cityTo, с датой вылета равной CheckPoint.

Возвращается расписание на все перелеты, на которые есть вылеты на будущие даты, по тарифам, указанным в настройке tarifsToLoadFlightQuotes.

На даты вылетов по указанным тарифам также должна выводиться информация по квотам (число свободных для бронирования мест). В данном методе эта информация в настоящее время не заполняется.

Проверка бронирования и бронирование

Перед бронированием какого-либо обсчитанного тура, требуется произвести проверку бронирования с помощью функции CheckBooking. Результатом такой проверки является xml документ, содержащий в себе информацию по услугам тура, статусу этих услуг, цене. В таком же формате приходят и ответы на запросы CreateBooking.

Запрос на проверку бронирования\бронирование (booking) состоит из 3-х частей:

  • Header
  • Packets
  • Persons
Раздел Header

Раздел заполняется следующим образом:

<header id="int" checkin="2009-10-29" buyerPerson="1" mainPerson="1" agreementKey="0"> 
<comment>Данная заявка выполнена для проверки работы сервиса. Саму заявку в работу оправлять не нужно</comment> 
 </header>

Где:

  • id - agencyID из функции GetAgreementCredentials (вызов этой функции будет описан в разделе порядок работы)
  • checkin - дата, на которую производится проверка (дата, на которую планируется заезд по проверяемой цене, указанной в <calculated key="00000000" />).

Даты, на которую действует указанная цена, можно узнать из TourML при загрузке цен оператора.

<date key="00000000" from="2009-10-29" to="2009-10-30" />

Если в указанную дату нет заезда, то вернется сообщение об ошибке (Could not find price key 00000000).

Раздел Packets

В разделе Packets передаются пакеты, которые будут бронироваться. В элементе <calculated> в атрибуте key передается ключ цен 044B

<packet id="_1"> 
  <calculated key="00000000" /> 
</packet>

У самого пакета есть атрибут id, на который будут ссылаться туристы при привязке.

Раздел Persons

В разделе Persons передается информация о клиентах

<person key="1" sourceKey="0" packets="_1" firstNameRus="TEST" lastNameRus="TEST" firstNameLat="TEST" lastNameLat="TEST" sex="male" birthday="1982-03-03" nationalityRus="" nationalityLat="" isTourist="true">
 <contacts>
  <phones /> 
  <addresses /> 
  <emails /> 
  </contacts>
 <passports>
  <passport type="foreign" series="1111" number="111111111" emittedBy="ОВД" emittedWhen="1990-01-01" validTo="2007-03-03" /> 
  </passports>
</person>

У элемента person есть следующие атрибуты:

  • key="1" — уникальный ключ клиента. На него ссылаются в атрибутах buyerPerson="1" mainPerson="1" в Header
  • sourceKey="0" — Ключ туриста у внешней системы (не используется)
  • packets="_1" — id пакета, к которому будет привязан турист (турист привязывается ко всем услугам этой рассчитаной цены)
  • firstNameRus="TEСT" — Имя клиента русскими буквами
  • lastNameRus="TEСT" — Фамилия клиента русскими буквами
  • firstNameLat="TEST" — Имя клиента латиницей
  • lastNameLat="TEST" — Фамилия клиента латиницей
  • sex="male" — пол клиента. Может принимать значения male, female, child, infant
  • birthday="1982-03-03" — дата рождения клиента
  • nationalityRus="" - национальность (русскими буквами)
  • nationalityLat="" - национальность (латиницей)
  • isTourist="true" — признак является ли клиент туристом

В раздел паспортов необходимо добавить хотя бы один паспорт. Элемент паспорт

  • type="foreign" — тип паспорта foreign (загран), national (национальный)
  • series="1111" — серия
  • number="111111111" — номер
  • emittedBy="ОВД" — Кем выдан
  • emittedWhen="1990-01-01" — Когда выдан
  • validTo="2007-02-02" — Дата окончания действия
Предупреждение


Все описанные данные о клиентах являются обязательными!
Если Вы бронируете тестовую путевку в рабочую базу оператора, ОБЯЗАТЕЛЬНО у туристов   
задавайте имя-фамилия ТЕСТ-ТЕСТ
Если бронируйте реальную путевку, ОБЯЗАТЕЛЬНО указывайте корректные данные.

В качестве ответа на проверку бронирования\бронирование возвращается XML документ с информацией о путевке, которая приведена в разделе agreement. Этот раздел состоит из четырех частей:

  • header
  • packets
  • persons
  • penaltyConditions

В заголовке (header) приведена общая информация о путевке, характеризуемая следующими атрибутами:

  • checkin — дата заезда (дата на которую идет проверка бронирования)
  • buyerPerson — ключ клиента, который является покупателем
  • mainPerson — ключ клиента, который является главным туристом
  • agreementKey — ключ путевки (при проверке бронирования < 0, при бронировании реальный ключ из базы)
  • agreementCode — код путевки (при проверке бронирования < 0, при бронировании реальный код из базы)
  • country — Название страны тура
  • city — Название города тура
  • days — продолжительность тура
  • quantity — количество туристов
  • price — цена (туристу к оплате), включает в себя комиссию
  • pricePaid — уже оплачено
  • currency — валюта путевки
  • creationDate — текущая дата
  • payUntil — дата, до которой нужно произвести оплату
  • status — статус брони
  • errorStatus — статус ошибки
  • reasonRus — в случае ошибки или отказа бронирования здесь указываются причины
  • reasonLat — в случае ошибки или отказа бронирования здесь указываются причины (латиницей)
  • commission — комиссия агентству
Статус' Расшифровка статуса
Общие статусы
Ок Заявка подтверждена
Waitlist Заявка в листе ожидания
rejected Бронирование отклонено
Annulled Путевка аннулирована
Error Ошибка
Waitcancel В ожидании отмены по пользовательскому запросу
Cancel Не используется
Статусы ошибок
Unknown Передается во всех остальных случаях
agencyNotFound Не найдено агентство по логину/паролю
priceNotFound Не найден запрашиваемый прайс

Для того, чтобы определить произошла ошибка или нет необходимо проверить дополнительный атрибут reasonRus, reasonLat, в которых передаются дополнительные комментарии.

Например, в ответе в разделе Header приходит следующее значение:

status="waitlist" errorStatus="unknown"
  • status - это статус заявки (путевки).
  • waitlist — означает что можно бронировать под запрос,
  • ок - подтверждено
  • rejected - в случае если бронирование не возможно по каким-то причинам.
  • errorStatus особой функциональной нагрузки не несет

Если какая-то ошибка произошла или по каким-то причинам нельзя бронировать, то в атрибутах reasonRus и reasonLat указывается причина ошибки:

status="rejected" errorStatus="unknown" reasonRus="Бронирование выполнить нельзя т.к. отсутствует квота на услугу А_П::Москва/Дубровник/LLM9351, DME-DBV, 07:00-08:20/Y Эконом класс/. " reasonLat="Booking could
not be done, because quota on service А_П::Москва/Дубровник/LLM9351, DME-DBV, 07:00-08:20/Y Эконом класс/ is absent. 

Элемент Packets содержит пакеты, помеченные атрибутом id, состоящие из наборов услуг, разбитых на группы (аналогично тому, как разбивались варианту услуг в TourML):

  • hotelServices
  • flightServices
  • excursionServices
  • transferServices
  • cruiseServices
  • extraServices

Каждая из услуг описывается набором атрибутов, например:

<hotelService key="-12" name="HOTEL::АНТАЛИЯ/_NO_CENDER-4*,7 ночей/Double(Standart),Взр./AI Всё включено/" dayBeg="1" nights="7" days="7" men="2" reasonRus="Места есть" reasonLat="Places available" 
sourceKey="0" buildingKey="1037" roomKey="1113" mealKey="38" />

Атрибуты, общие для всех типов услуг:

  • key – ключ услуги (при реальном бронировании ключ услуги из услуг договора)
  • name — наименование услуги
  • dayBeg — день начала предоставления услуги
  • nights — продолжительность услуги в ночах
  • days — продолжительность услуги в днях
  • men — количество человек, пользующихся услугой
  • reasonRus - Объяснение причины, по которой услуга не доступна при бронировании (например, нет мест)
  • reasonLat - То же самое, что reasonRus, но на английском
  • sourceKey - Идентификатор услуги у внешней системы (не используется)

Дополнительные атрибуты, для различных типов услуг:

Услуги проживания(hotelService):

  • mealKey - тип питания из справочника boardings
  • roomKey - тип комнаты
  • buildingKey - тип здания

Услуги авиаперелета(flightService):

  • tariffKey - тариф на перелет из справочника tariffs
  • flightKey - перелет из справочника Flights (описывает город вылета-прилета, авиакомпанию).

Услуги экскурсии(excursionServices):

  • transportKey,excursionKey - сслылки на справочники тип транспорта (transports) и экскурсия (excursions)

Услуги трансфера(transferService):

  • transferKey – ссылка на справочник трансферов
  • transportKey – ссылка на справочник транспортов

Услуги круиз(cruiseServices):

  • shipKey – ссылка на справочник
  • cabineKey - ссылки на справочники cabines и ships.

Остальные услуги(extraService):

  • classKey - тип услуги из справочника serviceClasses
  • subKey - описание услуги из справочника serviceDescriptions
  • subKey1 - дополнительное описание 1 из справочника serviceDescriptions1
  • subKey2 - дополнительное описание 2 из справочника serviceDescriptions2
  • countryKey - ссылка на страну из справочника Country
  • cityKey - ссылка на город из справочника City

В разделе Persons передается информация о клиентах. Формат данных такой же, как описан выше для запроса. Ответ функции CreateBooking отличается от ответа функции CheckBooking только тем, что при создании путевки возвращаются реальные ключи из базы.

Получение ключа агентства (функция GetAgreementCredentials)

В функцию бронирования и проверки бронирования необходимо передавать ключ агентства. Для получения ключа необходимо воспользоваться функцией GetAgreementCredentials.

В качестве входных параметров в функцию передаются логин и пароль web–пользователя агентства (логин-пароль под которым агентство заходит в Мастер-Веб).

Результатом выполнения этого метода будет xml-документ следующего вида

<RegisterAgencyResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <credentials agencyId="10795" agreementNumber="w2435" expirationDate="2009-12-11T00:00:00" xmlns="http://tourml.ru/agencies/2004-09-28" />
</RegisterAgencyResponse>

где,

  • agencyId – id агентства, к которому принадлежит указанный пользователь.
  • AgreementNumber — номер договора с агентством
  • ExpirationDate - дата истечения договора.

Метод возвращает тот номер договора, у которого текущая дата попадает между начальной и конечной датой договора, есть признак Договор по умолчанию, или дата обновления самая поздняя.

Если такого логина не существует, то вернется сообщение об ошибке

<RegisterAgencyResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <credentials agencyId="0" expirationDate="0001-01-01T00:00:00" xmlns="http://tourml.ru/agencies/2004-09-28" />
  <error errorStatus="loginNotFound" errorDescriptionRus="Логина test не существует." errorDescriptionLat="The login test  does not exist." xmlns="http://tourml.ru/agencies/2004-09-28" />  
</RegisterAgencyResponse>

Если неправильно указан пароль, то возвращается следующее сообщение об ошибке:

<RegisterAgencyResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <credentials agencyId="0" expirationDate="0001-01-01T00:00:00" xmlns="http://tourml.ru/agencies/2004-09-28" />
  <error errorStatus="passwordIncorrect" errorDescriptionRus="Неверный пароль." errorDescriptionLat="The incorrect password." xmlns="http://tourml.ru/agencies/2004-09-28" />
</RegisterAgencyResponse>
Получение справочной информации (функция GetReferences)

Для получения справочной информации по идентификатору и ключу необходимо воспользоваться функцией GetReferences.

В качестве входных параметров в функцию передаются идентификатор запроса и ключ фильтра:

Значение "queryType" Значение "param" Описание
GetPartnerByDgKey Ключ путевки Возвращает партнеров, указанных в услугах, связанных с данной путевкой.
HotelByCityId Ключ города Выводит все отели данного города.
HotelByCountryId Ключ страны Выводит все отели данной страны.
HotelById Ключ отеля Выводит отель с заданным ключом.
CityByCountryId Ключ страны Выводит все города данной страны.
CityById Ключ города Выводит город с заданным ключом.
CountryById Ключ страны Выводит страну с заданным ключом.
RoomAccomodationById Ключ типа размещения Выводит тип размещения с заданным ключом.
RoomTypeById Ключ типа комнаты Выводит тип комнаты с заданным ключом.
RoomCategoryById Ключ категории номер Выводит категорию номера с заданным ключом.
BoardingById Ключ типа питания Выводит тип питания с заданным ключом.
HotelRoomById Ключ размещения Выводит размещение с заданным ключом.

Если передан 0, то в этом случае можно получить все данные из указанного справочника, используя типы запросов:

  • CityById,
  • CountryById,
  • RoomAccomodationById,
  • RoomTypeById,
  • RoomCategoryById,
  • BoardingById,
  • HotelRoomById
Порядок работы при проверки бронирования и бронировании

Для того, чтобы забронировать тур у оператора, необходимо выполнить следующие действия:

  • По логину и паролю получить id агентства, от которого будет производиться бронирование.
  • Из TourML, полученного с помощью методов загрузки данных, необходимо выбрать ключ цены для бронирования, а также дату, на которую планируется тур, с учетом атрибутов from,to.
  • С помощью функции CheckBooking произвести проверку бронирования. Если status="waitlist" или status="OK", то можно вызывать метод createBooking.
  • Произвести бронирование с помощью метода CreateBooking. Ключ и код путевки, которые вернулись в ответе, необходимо сохранить для дальнейшей работы (например, для получения путевки из базы )

Пример запроса\ответа, а также созданная в Мастер-Туре путевка, приведены в приложении Б, посвященному разделу бронирования.

Работа с путевкой

Для получения информации по забронированной путевке можно воспользоваться методом GetAgreementsByNumber, который по коду забронированной путевки и ключу агентства возвращает xml-документ, аналогичный тому, что возвращается при проверке бронирования и бронировании. Необходимо отправить следующий запрос:

<GetAgreementsByNumber xmlns="http://tourml.ru/service/2004-08-13/products">
	<agency>10795</agency> - ключ агентства
	<codes>
		<int>43037</int> - ключ путевки
	</codes>
</GetAgreementsByNumber>

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

Рекомендации по составлению запросов

Web-сервис это сложный программный комплекс, работа с которым требует определенных навыков. Ниже представлены рекомендации по составлению вопросов при обращении в службу технической поддержки. Следование этим рекомендациям позволит специалистам технической поддержки ответить на Ваши вопросы наиболее полно и оперативно.

  • Проверьте, не описан ли Ваш вопрос в разделе часто задаваемых вопросов
  • Указывайте в запросе, какой метод web-сервиса Вы вызывали и с какими параметрами. Такая информация крайне полезна для повторения ситуации. Повторение ситуации, описываемой в Вашем запросе, облегчает понимание запроса и позволяет более оперативно решать возникшие вопросы

Ответы на часто задаваемые вопросы

Основные моменты, касающиеся работы веб-сервиса работы с TourML описаны в ответах на часто задаваемые вопросы.

Приложение A. Функции загрузки информации о турах и ценах

Функции загрузки информации о турах и ценах описаны в приложении A.

Приложение B. Функции проверки бронирования и бронирования

Функции проверки бронирования и бронирования описаны в приложении B.

Приложение С. Функции работы с путевкой

Функции работы с путевкой описаны в приложении С.