XML - результаты поиска/Поиск туров/Интерфейс - Результаты поиска — различия между версиями

Материал из TourClient - Руководство пользователя
Перейти к: навигация, поиск
(Запрос к сервису)
(Запрос к сервису)
 
(не показаны 32 промежуточных версий 4 участников)
Строка 9: Строка 9:
  
 
=== Запрос к сервису ===  
 
=== Запрос к сервису ===  
 +
* Все параметры TourSearchRequest или TourSearchGroupByAllocationRequest задают ограничения на найденные в результате запроса туры
 +
* Если параметр не задан, это означает что такого ограничения нет и поиск от данного параметра не зависит
 +
* Опциональные входные параметры могут не присутствовать вообще, либо может быть задано пустое значение: <allocCatId></allocCatId>.
 +
* Работа параметра SeatStatus подробнее описана в [[Ограничение результатов запроса по наличию мест]].
 +
* Работа параметра currency подробнее описана в [[Пересчет цен в запрошенную валюту]].
 +
* Должен быть задан либо roomSizeId либо adults и children. В первом случае поиск будет ограничен конкретным размещением, во втором случае в результат могут попасть разные размещения с подходящими параметрами.
 +
 +
 
<source lang="xml">
 
<source lang="xml">
  
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<Request>
 
<Request>
     <TourSearchRequest>
+
     <TourSearchRequest>            <!-- либо <TourSearchGroupByAllocationRequest> для поиска с группировкой по отелям  -->
         <dataOffset>0</dataOffset>  <!-- Смещение блока запрашиваемого данных, относительно всех найденных результатов.  -->
+
         <dataOffset>0</dataOffset>  <!-- [Обязательно] Смещение блока запрашиваемого данных, относительно всех найденных результатов.  -->
         <dataLimit>50</dataLimit>  <!-- Размер блока данных. -->
+
         <dataLimit>50</dataLimit>  <!-- [Обязательно] Размер блока данных. -->
         <!-- Суммарно эти параметры опеределяют запрошенную страницу  -->
+
        <searchMethod>DB</searchMethod>  <!-- [Опционально] Тип поиска. DB - поиск по базе данных, Online - комбинированный поиск -->
 +
 
 +
         <!-- Суммарно эти параметры определяют запрошенную страницу  -->
  
         <seatStatus>3</seatStatus>  <!-- -->
+
         <seatStatus>3</seatStatus>  <!-- [Опционально] Наличие мест. 1 - есть места, 2 - по запросу, 3 - все туры, 5 - есть билет, отель под запрос -->
  
         <cityId>1000</cityId>      <!-- Идентификатор города вылета. -->
+
         <cityId>1000</cityId>      <!-- [Обязательно] Идентификатор города вылета. -->
         <countryId>12</countryId>  <!-- Идентификатор страны прилета. -->
+
         <countryId>12</countryId>  <!-- [Обязательно] Идентификатор страны прилета. -->
        <roomSizeId>14</roomSizeId> <!-- Идентификатор размещения (DBL,SNGL,TRL...). -->
+
  
         <adults>2</adults>         <!-- Количество взрослых. -->
+
         <roomSizeId>14</roomSizeId> <!-- [Опционально] Идентификатор размещения (DBL,SNGL,TRL...). -->
        <children>0</children>      <!-- Количество детей. -->
+
  
 +
        <adults>2</adults>          <!-- [Опционально]Количество взрослых. -->
 +
        <children>0</children>      <!-- [Опционально]Количество детей. -->   
 +
       
 +
       
 
         <childAge1>0</childAge1>    <!-- Возраст первого ребенка. -->
 
         <childAge1>0</childAge1>    <!-- Возраст первого ребенка. -->
 
         <childAge2>0</childAge2>    <!-- Возраст второго ребенка. -->
 
         <childAge2>0</childAge2>    <!-- Возраст второго ребенка. -->
Строка 33: Строка 45:
 
         <durationTill>14</durationTill> <!-- Продолжительность (количество ночей в отеле). ДО. -->
 
         <durationTill>14</durationTill> <!-- Продолжительность (количество ночей в отеле). ДО. -->
  
         <departureFrom>2014-07-25</departureFrom>  <!-- Дата вылета ОТ. -->
+
         <departureFrom>2014-07-25</departureFrom>  <!-- [Обязательно] Дата вылета ОТ. -->
         <departureTill>2014-08-10</departureTill>  <!-- Дата вылета ДО. -->
+
         <departureTill>2014-08-10</departureTill>  <!-- [Обязательно] Дата вылета ДО. -->
  
         <ticket>1</ticket>          <!-- Наличие билета. Пустое значение - все туры.
+
         <ticket>1</ticket>          <!-- [Опционально] Наличие билета.  
                                         true - только с билетом включенным в стоимость.
+
                                         true - только с билетом включенным в стоимость,
                                         false - только без билета
+
                                         false - только без билета,
 
                                       1 - только с авиабилетом, 2 - только с ж/д билетом,
 
                                       1 - только с авиабилетом, 2 - только с ж/д билетом,
 
                                       3 - только с билетом на автобус, 4 - только с билетом на паром
 
                                       3 - только с билетом на автобус, 4 - только с билетом на паром
Строка 44: Строка 56:
 
                                     -->
 
                                     -->
  
         <currency>3</currency>          <!-- Валюта, в которой необходимо вернуть цены (валюта запроса). -->
+
         <currency>3</currency>          <!-- [Обязательно] Валюта, в которой необходимо вернуть цены (валюта запроса). -->
 
                                         <!-- 1 - USD, 2 - EUR, 3 - RUB, 4 - UAH -->
 
                                         <!-- 1 - USD, 2 - EUR, 3 - RUB, 4 - UAH -->
         <priceFrom>500</priceFrom>      <!-- Цена от (в валюте запроса). -->
+
         <priceFrom>500</priceFrom>      <!-- [Опционально] Цена ОТ (в валюте запроса). -->
         <priceTill>50000</priceTill>    <!-- Возраст первого ребенка. -->
+
         <priceTill>50000</priceTill>    <!-- [Опционально] Цена ДО (в валюте запроса). -->
  
  
         <operatorIds>              <!-- Массив идентификаторов туроператоров. -->
+
         <operatorIds>              <!-- [Опционально] Массив идентификаторов туроператоров. -->
 
             <id>111</id>
 
             <id>111</id>
 
             <id>222</id>
 
             <id>222</id>
Строка 56: Строка 68:
 
         </operatorIds>
 
         </operatorIds>
  
         <resortIds>                  <!-- Массив идентификаторов курортов. -->
+
         <resortIds>                  <!-- [Опционально] Массив идентификаторов курортов. -->
 
             <id>111</id>
 
             <id>111</id>
 
             <id>222</id>
 
             <id>222</id>
Строка 62: Строка 74:
 
         </resortIds>
 
         </resortIds>
  
         <resortPlaceIds>            <!-- Массив идентификаторов районов. -->
+
         <resortPlaceIds>            <!-- [Опционально] Массив идентификаторов районов. -->
 
             <id>111</id>
 
             <id>111</id>
 
             <id>222</id>
 
             <id>222</id>
Строка 68: Строка 80:
 
         </resortPlaceIds>
 
         </resortPlaceIds>
  
         <allocCatId>7</allocCatId>  <!-- Идентификатор категории отеля. -->
+
         <allocCatIds> <!-- [Опционально] Идентификатор категории отеля. -->
        <allocRate>3.56</allocRate> <!-- Рейтинг отеля (не менее заданного) -->
+
            <id>7</id>
 +
            <id>8</id>
 +
            <id>9</id>
 +
        </allocCatIds> 
  
         <allocationIds>              <!-- Массив идентификаторов отелей. -->
+
        <allocRate>3.56</allocRate>  <!-- [Опционально] Рейтинг отеля (не менее заданного) -->
 +
 
 +
         <allocationIds>              <!-- [Опционально] Массив идентификаторов отелей. -->
 
             <id>111</id>
 
             <id>111</id>
 
             <id>222</id>
 
             <id>222</id>
Строка 77: Строка 94:
 
         </allocationIds>
 
         </allocationIds>
  
         <mealIds>                  <!-- Массив идентификаторов питаний. -->
+
         <mealIds>                  <!-- [Опционально] Массив идентификаторов питаний. -->
 
             <id>111</id>
 
             <id>111</id>
 
             <id>222</id>
 
             <id>222</id>
Строка 83: Строка 100:
 
         </mealIds>
 
         </mealIds>
  
         <roomViewIds>              <!-- Массив идентификаторов видов из номера. -->
+
         <roomViewIds>              <!-- [Опционально] Массив идентификаторов видов из номера. -->
 
             <id>111</id>
 
             <id>111</id>
 
             <id>222</id>
 
             <id>222</id>
Строка 89: Строка 106:
 
         </roomViewIds>
 
         </roomViewIds>
  
         <roomTypeIds>              <!-- Массив идентификаторов типов номеров. -->
+
         <roomTypeIds>              <!-- [Опционально] Массив идентификаторов типов номеров. -->
 
             <id>111</id>
 
             <id>111</id>
 
             <id>222</id>
 
             <id>222</id>
Строка 95: Строка 112:
 
         </roomTypeIds>
 
         </roomTypeIds>
  
     </TourSearchRequest>
+
        <allocPlaceTypeId>1</allocPlaceTypeId> <!-- [Опционально] Тип расположения отеля (городской - 2, загородный - 4, пляжный - 1 ). -->
     <TourExtraEntities>            <!-- Дополнительные объекты которые нужно добавить к объекту тур. Возможные значения перечислены в ниже. -->
+
        <allocationTypeId>2</allocationTypeId> <!-- [Опционально] Тип отеля(хостел - 41,мотель - 161, гостиница - 2 и пр...). -->
 +
        <allocPlaceValueIds>
 +
            <id>1</id>
 +
            <id>3</id>            <!-- [Опционально] Значение расположения отеля(1-я линия - 1, 2-я линия - 3, 3-я линия - 4 и пр..). -->
 +
            <id>4</id>
 +
        </allocPlaceValueIds>
 +
 
 +
        <offerFlags>              <!-- [Опционально] Фильтр по флагам туров. Принимают значения true/false -->
 +
            <promoPrice>true</promoPrice>                <!-- Цена тура отмечена как ПРОМО -->
 +
            <comboTour>true</comboTour>                  <!-- Тур комбинированный -->
 +
            <hasProgram>true</hasProgram>                <!-- У тура есть программа -->
 +
            <regularFlight>true</regularFlight>          <!-- Тур с регулярными перелетами -->
 +
            <directFlight>true</directFlight>            <!-- Тур с прямым перелетом -->
 +
            <connectionFlight>true</connectionFlight>    <!-- Тур с пересадкой на перелете -->
 +
        </offerFlags>
 +
 
 +
     </TourSearchRequest>            <!-- либо </TourSearchGroupByAllocationRequest> для поиска с группировкой по отелям  -->
 +
     <TourExtraEntities>            <!-- [Опционально] Дополнительные объекты которые нужно добавить к объекту тур. Возможные значения перечислены в ниже. -->
 
         <entity>OnlineSeatsState</entity>
 
         <entity>OnlineSeatsState</entity>
 
         <entity>ExtraCharges</entity>
 
         <entity>ExtraCharges</entity>
Строка 110: Строка 144:
 
         <entity>RoomView</entity>
 
         <entity>RoomView</entity>
 
         <entity>Operator</entity>
 
         <entity>Operator</entity>
 +
        <entity>ComboTour</entity> <!-- Признак комбинированного тура -->
 +
        <entity>OfferFlags</entity> <!-- Флаги тура (promoPrice, ComboTour, hasProgram) -->
 
     </TourExtraEntities>
 
     </TourExtraEntities>
 
</Request>
 
</Request>
Строка 115: Строка 151:
  
 
</source>
 
</source>
 +
 +
<br>
  
 
=== Ответ сервиса ===
 
=== Ответ сервиса ===
Строка 123: Строка 161:
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<Result>
 
<Result>
    <Tours>
+
<Tours>  <!-- Массив объектов Тур. -->
        <Tour>...</Tour>
+
    <Tour>...</Tour>
        <Tour>...</Tour>
+
    <Tour>...</Tour>
        <Tour>...</Tour>
+
    <Tour>...</Tour>
        ...
+
    ...
    </Tours>
+
</Tours>
    <SearchStatus>
+
<SearchStatus>  <!-- Статус поиска. -->
      ...
+
    ...
    </SearchStatus>
+
</SearchStatus>
</Result>
+
</Result>  
  
 
</source>
 
</source>
Строка 143: Строка 181:
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<Result>
 
<Result>
     <Error>Текст ошибки</Error>
+
     <Error code="код ошибки">Текст ошибки</Error>
 
</Result>         
 
</Result>         
  
 
</source>
 
</source>
 +
Внимание! Атрибут с кодом ошибки может отсутствовать!

Текущая версия на 10:26, 1 декабря 2021

Работа с сервисом осуществляется путем отправки POST запросов на адрес http://tourclient.ru/f/exml/user_id/tours_export .

Где user_id - ID пользователя AgentPassport.

POST-параметр request должен содержать xml запроса.

В результате сервис вернет ответ в формате xml.

Запрос к сервису

  • Все параметры TourSearchRequest или TourSearchGroupByAllocationRequest задают ограничения на найденные в результате запроса туры
  • Если параметр не задан, это означает что такого ограничения нет и поиск от данного параметра не зависит
  • Опциональные входные параметры могут не присутствовать вообще, либо может быть задано пустое значение: <allocCatId></allocCatId>.
  • Работа параметра SeatStatus подробнее описана в Ограничение результатов запроса по наличию мест.
  • Работа параметра currency подробнее описана в Пересчет цен в запрошенную валюту.
  • Должен быть задан либо roomSizeId либо adults и children. В первом случае поиск будет ограничен конкретным размещением, во втором случае в результат могут попасть разные размещения с подходящими параметрами.


<?xml version="1.0" encoding="UTF-8"?>
<Request>
    <TourSearchRequest>             <!-- либо <TourSearchGroupByAllocationRequest> для поиска с группировкой по отелям  -->
        <dataOffset>0</dataOffset>  <!-- [Обязательно] Смещение блока запрашиваемого данных, относительно всех найденных результатов.  -->
        <dataLimit>50</dataLimit>   <!-- [Обязательно] Размер блока данных. -->
        <searchMethod>DB</searchMethod>  <!-- [Опционально] Тип поиска. DB - поиск по базе данных, Online - комбинированный поиск -->
 
        <!-- Суммарно эти параметры определяют запрошенную страницу  -->
 
        <seatStatus>3</seatStatus>  <!-- [Опционально] Наличие мест. 1 - есть места, 2 - по запросу, 3 - все туры, 5 - есть билет, отель под запрос -->
 
        <cityId>1000</cityId>       <!-- [Обязательно] Идентификатор города вылета. -->
        <countryId>12</countryId>   <!-- [Обязательно] Идентификатор страны прилета. -->
 
        <roomSizeId>14</roomSizeId> <!-- [Опционально] Идентификатор размещения (DBL,SNGL,TRL...). -->
 
        <adults>2</adults>          <!-- [Опционально]Количество взрослых. -->
        <children>0</children>      <!-- [Опционально]Количество детей. -->     
 
 
        <childAge1>0</childAge1>    <!-- Возраст первого ребенка. -->
        <childAge2>0</childAge2>    <!-- Возраст второго ребенка. -->
 
        <durationFrom>7</durationFrom>  <!-- Продолжительность (количество ночей в отеле). ОТ. -->
        <durationTill>14</durationTill> <!-- Продолжительность (количество ночей в отеле). ДО. -->
 
        <departureFrom>2014-07-25</departureFrom>  <!-- [Обязательно] Дата вылета ОТ. -->
        <departureTill>2014-08-10</departureTill>  <!-- [Обязательно] Дата вылета ДО. -->
 
        <ticket>1</ticket>          <!-- [Опционально] Наличие билета. 
                                        true - только с билетом включенным в стоимость,
                                        false - только без билета,
                                      1 - только с авиабилетом, 2 - только с ж/д билетом,
                                      3 - только с билетом на автобус, 4 - только с билетом на паром
                                      5 - только с билетом на автомобиль
                                    -->
 
        <currency>3</currency>          <!-- [Обязательно] Валюта, в которой необходимо вернуть цены (валюта запроса). -->
                                        <!-- 1 - USD, 2 - EUR, 3 - RUB, 4 - UAH -->
        <priceFrom>500</priceFrom>      <!-- [Опционально] Цена ОТ (в валюте запроса). -->
        <priceTill>50000</priceTill>    <!-- [Опционально] Цена ДО (в валюте запроса). -->
 
 
        <operatorIds>               <!-- [Опционально] Массив идентификаторов туроператоров. -->
            <id>111</id>
            <id>222</id>
            <id>333</id>
        </operatorIds>
 
        <resortIds>                  <!-- [Опционально] Массив идентификаторов курортов. -->
            <id>111</id>
            <id>222</id>
            <id>333</id>
        </resortIds>
 
        <resortPlaceIds>             <!-- [Опционально] Массив идентификаторов районов. -->
            <id>111</id>
            <id>222</id>
            <id>333</id>
        </resortPlaceIds>
 
        <allocCatIds> <!-- [Опционально] Идентификатор категории отеля. -->
            <id>7</id>
            <id>8</id>
            <id>9</id>
        </allocCatIds>   
 
        <allocRate>3.56</allocRate>  <!-- [Опционально] Рейтинг отеля (не менее заданного) -->
 
        <allocationIds>              <!-- [Опционально] Массив идентификаторов отелей. -->
            <id>111</id>
            <id>222</id>
            <id>333</id>
        </allocationIds>
 
        <mealIds>                   <!-- [Опционально] Массив идентификаторов питаний. -->
            <id>111</id>
            <id>222</id>
            <id>333</id>
        </mealIds>
 
        <roomViewIds>               <!-- [Опционально] Массив идентификаторов видов из номера. -->
            <id>111</id>
            <id>222</id>
            <id>333</id>
        </roomViewIds>
 
        <roomTypeIds>               <!-- [Опционально] Массив идентификаторов типов номеров. -->
            <id>111</id>
            <id>222</id>
            <id>333</id>
        </roomTypeIds>
 
        <allocPlaceTypeId>1</allocPlaceTypeId> <!-- [Опционально] Тип расположения отеля (городской - 2, загородный - 4, пляжный - 1 ). -->
        <allocationTypeId>2</allocationTypeId> <!-- [Опционально] Тип отеля(хостел - 41,мотель - 161, гостиница - 2 и пр...). -->
        <allocPlaceValueIds>
            <id>1</id>
            <id>3</id>             <!-- [Опционально] Значение расположения отеля(1-я линия - 1, 2-я линия - 3, 3-я линия - 4 и пр..). -->
            <id>4</id>
        </allocPlaceValueIds> 
 
        <offerFlags>               <!-- [Опционально] Фильтр по флагам туров. Принимают значения true/false -->
            <promoPrice>true</promoPrice>                 <!-- Цена тура отмечена как ПРОМО -->
            <comboTour>true</comboTour>                   <!-- Тур комбинированный -->
            <hasProgram>true</hasProgram>                 <!-- У тура есть программа -->
            <regularFlight>true</regularFlight>           <!-- Тур с регулярными перелетами -->
            <directFlight>true</directFlight>             <!-- Тур с прямым перелетом -->
            <connectionFlight>true</connectionFlight>     <!-- Тур с пересадкой на перелете -->
        </offerFlags>
 
    </TourSearchRequest>            <!-- либо </TourSearchGroupByAllocationRequest> для поиска с группировкой по отелям  -->
    <TourExtraEntities>             <!-- [Опционально] Дополнительные объекты которые нужно добавить к объекту тур. Возможные значения перечислены в ниже. -->
        <entity>OnlineSeatsState</entity>
        <entity>ExtraCharges</entity>
        <entity>City</entity>
        <entity>Country</entity>
        <entity>RoomSize</entity>
        <entity>Resort</entity>
        <entity>ResortPlace</entity>
        <entity>Allocation</entity>
        <entity>AllocCat</entity>
        <entity>Meal</entity>
        <entity>RoomType</entity>
        <entity>RoomView</entity>
        <entity>Operator</entity>
        <entity>ComboTour</entity> <!-- Признак комбинированного тура -->
        <entity>OfferFlags</entity> <!-- Флаги тура (promoPrice, ComboTour, hasProgram) -->
    </TourExtraEntities>
</Request>


Ответ сервиса

Сервис возвращает ответ, содержащий массив объектов Тур (Tours) и объект Статус поиска (SearchStatus)

<?xml version="1.0" encoding="UTF-8"?>
<Result>
<Tours>  <!-- Массив объектов Тур. -->
    <Tour>...</Tour>
    <Tour>...</Tour>
    <Tour>...</Tour>
    ...
</Tours>
<SearchStatus>  <!-- Статус поиска. -->
    ...
</SearchStatus>
</Result>

Подробное описание возвращаемых данных можно посмотреть в Описании объектов.


В случае ошибки сервис вернет:

<?xml version="1.0" encoding="UTF-8"?>
<Result>
    <Error code="код ошибки">Текст ошибки</Error>
</Result>

Внимание! Атрибут с кодом ошибки может отсутствовать!