Спецификация метода HotelTreeResults

Пример вызова


Протокол: HTTP GET
Адресная строка: api/HotelTreeResults/Index?treeId={treeId}&id_Profile={id_Profile}&securityKey={securityKey}&timestamp={timestamp}&mock={mock}


Метод апи: Index
Возвращает полную (если timestamp == 0) или разностную (если в поле timestamp передано время, начиная с которой формируется разница) выдачу отелей по идентификатору дерева treeId

Информация о запросе

Ниже приведены параметры запроса и их краткое описание

Параметры запроса

Название параметраОписаниеТИП
treeId идентификатор дерева из ответа HotelTreeInitialize

GET.

id_Profile идентификатор финансового профиля

GET.

securityKey ключ для доступа к сервису, предоставляется по запросу на support@corteos.ru

GET.

timestamp отсечка по времени, для получения частичных результатов, при получении первого ответа следует указать 0, перед запросом следует зафиксировать DateTime.Now.Ticks и в каждом следующем переопросе его итеративно передавать

GET.

mock использовать в ответе фиктивные данные для разработки

GET.


Описание работы сервиса

Диаграмма бизнес-процесса

Сервис HotelTreeResults является вторым шагом бизнес-процесса поиска гостиниц, возвращает отстроенное на данный момент времени дерево.

Пример успешного ответа

<?xml version="1.0" encoding="utf-8" ?>
<Response HasErrors="false" HasWarnings="false">
  <EngineResponse>
    <HotelTreeResponse>
      <Errors/>
      <HotelTree Date="2017-07-24T11:19:19.8953478+03:00" TreeID="6f548caf9441b06b84db868e44a41cd1">
        <States>
          <Status id_System="3" methodName="HotelTreeInitMethodAcase" isFinished="true" StatusDescription="Поиск в системе Academservice завершен успешно" DateChanged="2017-07-24T11:20:12.536144+03:00"/>
        </States>
        <Items>
          <HotelTreeItem Stars="3" Longitude="37.389736" Latitude="55.828133" ComparisionPrice="5960" ComparisionPriceWithMeal="5960" Has3D="false" SortingRate="0" State="1" Timestamp="636364920123841707" AccessKey="146f5332-4138-4811-b015-8efbef4df202" HasAirportTransfer="true" HasFitness="false" HasInternet="true" HasParking="true" HasSpa="false" HasPool="false">
            <HotelName>
              <BS Rus="Аквариум Отель" En="Aquarium Hotel"/>
            </HotelName>
            <HotelType>Hotel</HotelType>
            <Phone/>
            <ThumbnailUrl>http://images.acase.ru/hotels_images/800300_00.jpg</ThumbnailUrl>
            <Address>
              <BS Rus="Международная улица, 20" En="20 Mezhdunarodnaya street"/>
            </Address>
            <CurrencyExchangeRate>1</CurrencyExchangeRate>
            <CurrencyCode>RUB</CurrencyCode>
            <MealCurrencyCode>RUB</MealCurrencyCode>
            <MealCurrencyExchangeRate>1</MealCurrencyExchangeRate>
            <TripAdvisorRate ServicesRate="0" PriceRate="0" CleannessRate="0" ComfortRate="0" LocationRate="0" PersonnelRate="0" FeedbackQuantity="0"/>
            <Accessors>
              <Accessor id_System="3" id_City="6297" HotelName="Аквариум Отель" id_ProviderGroup="3000" id_Profile="5388">
                <HotelCode>800300</HotelCode>
                <Adults>1</Adults>
                <ChildAges/>
                <Checkin>2017-07-29</Checkin>
                <Checkout>2017-07-31</Checkout>
                <CurrentPaymentType>0</CurrentPaymentType>
                <Details City="2"/>
              </Accessor>
            </Accessors>
          </HotelTreeItem>
          ...
        </Items>
      </HotelTree>
    </HotelTreeResponse>
  </EngineResponse>
  <Errors/>
  <Warnings/>
</Response>

Структура ответа

Дерево отелей (см. HotelTreeResults)

Дерево отелей — ответ сервиса HotelTreeResults - контейнер, содержащий в себе несколько отелей, имеющих следующие характеристики:

Каждое дерево отелей характеризуется уникальным кодом - TreeID, которое назначается при вызове метода HotelTreeInitialize и в дальнейшем используется при переопросе сервиса для получения новых вариантов размещения.

Поля класса:

Тип XML-тип Название Комментарий Наличие в ответах Пример
DateTime Attribute Date дата и время выдачи дерева всегда 2017-07-24T11:19:19.8953478+03:00
uint Attribute TreeID уникальный идентификатор дерева всегда 6f548caf9441b06b84db868e44a41cd1
States Element States / Status состояния поиска в конкретном поставщике всегда -
Items Element Items / HotelTreeItem информация об одном отеле всегда -

States / Status

States — состояния поиска в конкретном поставщике.

Status — текущий статус в конкретном поставщике.

Поля класса:

Тип XML-тип Название Комментарий Наличие в ответах Пример
int Attribute id_System идентификатор поставщика всегда 3
string Attribute MethodName имя исполняемого в движке метода всегда HotelTreeInitMethodAcase
bool Attribute IsFinished закончен ли поиск в данном поставщике всегда true
string Attribute StatusDescription описание статуса всегда Поиск в системе Academservice завершен успешно
DateTime Attribute DateChanged последняя дата и время изменения состояния всегда 2017-07-24T11:20:12.536144+03:00

Items / HotelTreeItem

HotelTreeItem — информация об одном отеле

Поля класса:

Тип XML-тип Название Комментарий Наличие в ответах Пример
int Attribute Stars количество звезд всегда 3
double Attribute Longitude географическая долгота, координаты местоположения отеля всегда 37.389736
double Attribute Latitude географическая широта, координаты местоположения отеля всегда 55.828133
double Attribute ComparisionPrice наименьшая цена за указанный период всегда 5960
double Attribute ComparisionPriceWithMeal наименьшая цена с питанием за указанный период всегда 5960
bool Attribute Has3D имеется ли трехстронний договор с данным поставщиком (true/false) всегда false
int Attribute SortingRate приоритет данного поставщика в системе Кортеос всегда 0
int Attribute State статус элемента дерева (1 - свежесозданный, 2 - обновлённый) всегда 1
uint Attribute Timestamp таймстемп выдачи данных всегда 636364920123841707
bool Attribute HasAirportTransfer имеется ли услуга трансфера из аэропорта/в аэропорт (true/false) всегда true
bool Attribute HasFitness имеется финтес зал (true/false) всегда false
bool Attribute HasInternet имеется интернет (true/false) всегда true
bool Attribute HasParking имеется парковка (true/false) всегда true
bool Attribute HasSpa имеется спа (true/false) всегда false
bool Attribute HasPool имеется бассейн (true/false) всегда false
HotelName Element HotelName название отеля на русском и английском всегда -
string Element HotelType тип отеля - отель, хостел и т.п. всегда Hotel
string Element Phone телефон отеля всегда
string Element ThumbnailUrl небольшая картинка, логотип отеля< всегда http://images.acase.ru/hotels_images/800300_00.jpg
Address Element Address адрес отеля на русском и английском всегда
double Element CurrencyExchangeRate курс обмена валют всегда 1
string Element CurrencyCode код валюты всегда RUB
string Element MealCurrencyCode код валюты (питание) всегда RUB
double Element MealCurrencyExchangeRate курс обмена валют (за питание) всегда 1
TripAdvisorRate Element TripAdvisorRate рейтинг отеля в сервисе TripAdvisor всегда
Accessors Element Accessors аксессор всегда
double Element VAT информация об НДС при оплате, если НДС не включен или неизвестен, то 0 всегда 1034.98
double Element VATDouble численное значение НДС при оплате. Если НДС включен, но значение неизвестно, то значение -1 всегда, если НДС включен 1034.98
string Element PriceChangeLog история изменения цены при применении сборов всегда, если применяются сборы
double Element CommissionDouble численное значение комиссии агентства всегда, если комиссия есть 0

Примеры ошибок

Системная ошибка

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

<?xml version="1.0" encoding="utf-8" ?>
<Error>
  <Message>The request is invalid.</Message>
  <MessageDetail>
    The parameters dictionary contains a null entry for parameter 'id_Profile' of non-nullable type 'System.Int32' for method 'System.Net.Http.HttpResponseerrorText HotelTreeResults(System.String, Int32, System.String, Int64, Boolean)' in 'HotelEngineAPI.Controllers.HotelSearchController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
  </errorTextDetail>
</Error>

Логическая ошибка

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

<?xml version="1.0" encoding="utf-8" ?>
<Error>
  <Message>An error has occurred.</Message>
  <ExceptionMessage>Передан некорректный идентификатор профайла</ExceptionerrorText>
  <ExceptionType>
    HotelEngineAPI.Controllers.Exceptions.SecurityException
  </ExceptionType>
</Error>

Ошибка уровня движка

Возникает в том случае, если при исполнении входного запроса на уровне движка произошла какая-то ошибка

<?xml version="1.0" encoding="utf-8" ?>
<Response HasErrors="true" HasWarnings="false">
  <EngineResponse>
    <HotelTreeResponse>
      <Errors>
        <Error>Служба поиска гостиниц временно недоступна, попробуйте повторить свой запрос позже.</Error>
      </Errors>
    </HotelTreeResponse>
  </EngineResponse>
  <Warnings />
</Response>

Тестовая форма

Заполните недостающие данные в тестовой форме и нажмите кнопку "отправить" для проверки работы запроса.