Формирование логов для службы TravellineServer подчинается тем же правилам, что описаны и в мануале http://support.ucs.ru/ru/node/9533
То есть, на каждый запрос TRY, должен быть ответ DONE.
На примере интеграции с Travelline разберем типовые запросы/ответы.
Происходит запрос к базе данных на предмет получения настроек подключения к сервису Travelline через "Сервисы и оборудования" :
6088 49408/26788 KB 17.01.2019 18:21:26.843 TRY: 1.12.SQL_Get_Tab_Enabled.CreateReadQuery
-----------------------------------------------------------
select * from Plugins where enabled = 1
В ответ приходит строка такого формата :
6088 49488/26788 KB 17.01.2019 18:21:26.869 DONE: 1.12.810140.FreeQuery [62 ms, 7 records, 17.69 KB]
6088 49500/26788 KB 17.01.2019 18:21:26.869 Plugin Code=TTravelLineCM; IsDisabled=0; ComputerName=A-SAZONOV/A-SAZONOV; ServiceName=ShelterTravelLineServer/ShelterTravelLineServer; UserName=/СИСТЕМА
Далее возвращается xml с настройками из Shelter :
TTravelLineCM.Init ParamStr = <?xml version="1.0"?>
<xml>
<ID value="7" fieldtype="3"/> id записи из таблицы PLUGINS
<DriverName value="TTravelLineCM" fieldtype="1"/> наименование плагина
<ShelterHost fieldtype="24" value="127.0.0.1"/> IP адрес ПК, где запущен ShelterOnlineServer
<ShelterPort fieldtype="24" value="7779"/> порт, на котором работает ShelterOnlineServer
<MaxResultToLogSize fieldtype="24" value="1024"/> максимальный размер запроса/ответа, который будет отображаться в лог-файле
<ErrorEmail fieldtype="24" value=""/> почта для отправки уведомлений об ошибках при сохранении броней (параметры подключения настраиваются через shelter.ini, секция [Exception Log])
<SuccessEmail fieldtype="24" value=""/> почта для отправки уведомлений об успешном сохранении броней (параметры подключения настраиваются через shelter.ini, секция [Exception Log])
<ConnectTimeout fieldtype="24" value="10000"/> Таймаут соединения с сервером Travelline. Указывается в миллисекундах (1 с = 1000 мс)
<ReadTimeout fieldtype="24" value="10000"/> Таймаут чтения отвта от сервера Travelline. Указывается в миллисекундах (1 с = 1000 мс)
<DateType fieldtype="24" value="4"/> тип периода обновления цен (один год)
<DateTo fieldtype="6" value="42735"/> дата, до которой будет выгружаться доступность и стоимость (если настроен параметр фиксированная дата из пункта выше, в противном случае тип периода от текущей даты)
<LangCode fieldtype="24" value="RU"/> Код локализации ответа
<UpdateRoomKindsInterval fieldtype="24" value="3600"/> Значение интервала выгрузки типов номеров в секундах
<UpdateAvailAndRatesInterval fieldtype="24" value="300"/> Значение интервал выгрузки тарифов и броней в секундах
<UpdateBookingsInterval fieldtype="24" value="300"/> Значение интервал запроса броней в секундах
<ForceUpdate fieldtype="24" value="0"/> принудительное обновление цен (Запустит выгрузки немедленно, независимо от времени последней выгрузки (даже если не прошло время равное соответствующему интервалу выгрузки с момента последней выгрузки)
<RoomAllocate fieldtype="24" value="0"/> автоматическое распределение броней по номерам
<URL fieldtype="24" value="https://www.qatl.ru/Api/TLConnect.svc"/> Service URL (в данном случае указан тестовый сервис для UCS)
<WSDLLocation fieldtype="24" value="https://www.qatl.ru/Api/TLConnect.svc?singleWsdl"/> WSDLLocation (в данном случае указан тестовый сервис для UCS)
<Account fieldtype="24" value="***"/> логин для подключения к сервису Travelline (не логин для входа в личный кабинет Travelline)
<Password fieldtype="24" value="***"/> пароль для подклчюения к сервису Travelline (не пароль для входа в личный кабинет Travelline)
<HotelCode fieldtype="24" value="2540"/> код гостиницы (в данном случае указан тестовый сервис для UCS)
<Proxy fieldtype="24" value=""/> Адрес proxy сервера. Коннект через промежуточный proxy сервер
<UpdateAvailAndRatesLastUpdate fieldtype="24" value="43638=43273.7445036574"/> дата последнего обновления цен и доступности
<UpdateBookingsLastUpdate fieldtype="24" value="43273.745203287"/> дата последнего запроса броней
<UpdateChannelsLastUpdate fieldtype="24" value="43035.7475101273"/>
</xml>
Далее выполняются необходимые запросы :
getversion, HotelsList, getdebtors, default_values и пр.
ВНИМАНИЕ!!! В ответе на запросы ошибок быть не должно.
1. Получение информации по обекту - идентификация (метод HotelAvailRQ )
После выполнения внутренних запросов между службами TravellineServer, OnlineServer и БД Shelter, формируется и отправляется запрос по HTTP-протоколу (
Список кодов состояния HTTP) к сервису Travelline, вызывается метод HotelAvailRQ (получение информации по объекту) :
6088 51404/28624 KB 17.01.2019 18:21:30.577 TRY: HotelAvailRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
<NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/> адрес сервиса Travelline, логин и пароль для подключения к сервису
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<OTA_HotelAvailRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-01-17T18:21:30.550+03:00" Version="1.11"> версия протокола 1.11
<AvailRequestSegments>
<AvailRequestSegment>
<HotelSearchCriteria>
<Criterion>
<HotelRef HotelCode="2540"/> код отеля
</Criterion>
</HotelSearchCriteria>
</AvailRequestSegment>
</AvailRequestSegments>
</OTA_HotelAvailRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ответ :
6088 52176/28792 KB 17.01.2019 18:21:32.208 DONE: HotelAvailRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OTA_HotelAvailRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
<RoomStays>
<RoomStay>
<RoomTypes>
<RoomType RoomType="116015" RoomTypeCode="116015"> код API категории номера
<RoomDescription Name="Standard"> название категории номера
<Text/>
</RoomDescription>
<Occupancy MinOccupancy="1" MaxOccupancy="2"/> количество мест
<Amenities>
<Amenity RoomAmenity="91" Quantity="2">Rollaway bed</Amenity>
</Amenities>
</RoomType>
</RoomTypes>
<RatePlans>
<RatePlan RatePlanCode="13614" InvBlockCode="2384"> код API тарифа
<RatePlanDescription Name="Проживание без завтрака"> название тарифа
<Text>Гор</Text>
</RatePlanDescription>
</RatePlan>
</RatePlans>
</RoomStay>
</RoomStays>
<Profiles>
<ProfileInfo>
<Profile ProfileType="12">
<CompanyInfo/>
</Profile>
</ProfileInfo>
</Profiles>
<Services>
<Service ServicePricingType="Per person per night" Type="Common" ID="213890">
<ServiceDetails>
<Comments>
<Comment Name="ServiceName">
<Text>Кровать</Text>
</Comment>
<Comment Name="ServiceDescription">
<Text>Кровать</Text>
</Comment>
</Comments>
</ServiceDetails>
</Service>
<Service ServicePricingType="Per person per night" Type="Meal" ID="383085">
<ServiceDetails>
<Comments>
<Comment Name="ServiceName">
<Text/>
</Comment>
<Comment Name="ServiceDescription">
<Text/>
</Comment>
</Comments>
</ServiceDetails>
</Service>
</Services>
<Success/>
</OTA_HotelAvailRS>
</s:Body>
</s:Envelope>
В ответ возвращаются категории номеров - <RoomTypes> (код API категории RoomType="116015") и тарифы <RatePlans> (код API тарифа RatePlanCode="13614")
ВНИМАНИЕ!!! Если в ответ на описанный выше метод, сервис Travelline вернул ошибку : <Errors><Error Language="EN" Type="4" Code="450" Tag="">Unable to process</Error></Errors>
То она обозначает, что неверно введен логин/пароль для подключения к сервису Travelline. Пароль для входа в личный кабинет и пароль для подключения к сервису Travelline - это разные пароли!
Если в Travelline заведена категория номера, но в Shelter не указан код API для этой категории, в логе можно будет увидеть ошибку :
6088 52196/28732 KB 17.01.2019 18:21:32.213 TRY: TTravelLineThread.CheckRoomKinds
6088 52196/28732 KB 17.01.2019 18:21:32.213 ERROR: TravelLine RoomKind (id=116015; code=116015; name=Standard) is not found in Shelter
Если не указан договор по умолчанию, в логе будет фигурировать следующая ошибка :
ERROR: Default Contract not found
Этой ошибке предшествует запрос :
<?xml encoding="utf-8" version="1.0"?>
<getdebtorcontracts langcode="RU" gds="TRAVELLINE" version="12" debtor="54" hotel="0"/>
Что бы понять, для какой организации не указан договор, можно воспользоваться следующим методом :
1. Запустить Shelter
2. Перейти в модуль "Договорная работа" и найти организацию с уникальным номером организации (не путать в фильтре с уникальным номером) - debtor="54":

Решение : завести договор, перезапустить службы поочердено (ShelterOnlineServer, потом ShelterTravellineServer)
Для Shelter Light заводить договор не надо.
Если не указан код отеля, в логе будет фигурировать следующая ошибка :
ERROR: Hotel Code is not listed in reference
Решение : указать код отеля в Shelter (в справочники-гостиницы и в "Сервисы и оборудования")
Для корректной выгрузки, помимо сопоставления API категорий номеров и API тарифов в Shelter и Travelline, необходимо убедиться, что для категорий, участвующих в выгрузке, настроен тариф. В противном случае, в логе можно наблюдать такую ошибку:
ERROR: UpdateAvailAndRates: [GetVacancyList Error]
Решение : проверить настройки тарифов
2. Выгрузка доступности (метод HotelAvailNotifRQ)
После успешной идентификации и проверки сопоставления кодов API, вызывается метод HotelAvailNotifRQ :
4152 53876/29780 KB 17.01.2019 19:46:55.238 TRY: HotelAvailNotifRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
<NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-01-17T19:46:55.236+03:00" Version="1.11">
<AvailStatusMessages HotelCode="2540"> - код гостиницы
<AvailStatusMessage BookingLimit="6"> - передаем доступность АСУ в Travelline
<StatusApplicationControl Start="2019-12-03" End="2019-12-22" InvTypeCode="116015"/> дата начала/окончания периода выгрузки доступности (код категории API 116015)
</AvailStatusMessage>
</AvailStatusMessages>
</OTA_HotelAvailNotifRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
ВНИМАНИЕ! Выгрузка доступности происходит периодами.
Ответ :
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OTA_HotelAvailNotifRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
<Success/>
</OTA_HotelAvailNotifRS>
</s:Body>
</s:Envelope>
Так же, стоит обратить внимание на корректность сопоставления кодов API для тарифов.
3. Выгрузка стоимости (метод HotelRateAmountNotifRQ)
Далее выгружается стоимость по тарифу :
8216 54464/30088 KB 26.02.2019 13:19:44.061 TRY: HotelRateAmountNotifRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
<NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-02-26T13:19:43.472+03:00" Version="1.11">
<RateAmountMessages HotelCode="2540">
<RateAmountMessage>
<StatusApplicationControl RatePlanCode="214804" InvTypeCode="116015"/> "214804" - код API тарифа, "116015" - API код категории номера
<Rates>
<Rate Start="2019-02-26" End="2019-02-28"> - период выгрузки стоимости
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="5999" NumberOfGuests="1"/> - цена за одноместное размещение
<BaseByGuestAmt AmountAfterTax="5999" NumberOfGuests="2"/> - цена за двухместное размещение
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
<RateAmountMessage>
<StatusApplicationControl RatePlanCode="214804" InvTypeCode="116015"/> "214804" - код API тарифа, "116015" - API код категории номера
<Rates>
<Rate Start="2019-03-01" End="2019-03-02"> - период выгрузки стоимости
<BaseByGuestAmts>
<BaseByGuestAmt AmountAfterTax="7999" NumberOfGuests="1"/> - цена за одноместное размещение
<BaseByGuestAmt AmountAfterTax="7999" NumberOfGuests="2"/> - цена за двухместное размещение
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
ВНИМАНИЕ! Выгрузка стоимости происходит периодами.
Если клиент говорит, что выгружается неверная цена, первое, что необходимо сделать, это проверить стоимость в Shelter через калькулятор. В моём случае стоимость такая :

И на другие даты, соответственно :

Ответ :
8216 54456/30152 KB 26.02.2019 13:19:44.415 DONE: HotelRateAmountNotifRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OTA_HotelRateAmountNotifRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
<Success/>
</OTA_HotelRateAmountNotifRS>
</s:Body>
</s:Envelope>
Так же, можно столкнуться с таким ответом :
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OTA_HotelRateAmountNotifRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
<Warnings>
<Warning Language="EN" Type="3" Code="150" Tag="/OTA_HotelRateAmountNotifRQ/RateAmountMessages/RateAmountMessage[1]">Price integration is disabled.</Warning>
</Warnings>
<Success/>
</OTA_HotelRateAmountNotifRS>
</s:Body>
</s:Envelope>
Данная ошибка возвращается от Travelline. Она может означать, что для данного тарифа отключена возможность выгрузки цен. По какой причине - лучше уточнять у специалистов Travelline.
3. Запрос недоставленных броней (метод HotelReadReservationRQ)
8216 44856/38908 KB 26.02.2019 14:12:19.911 TRY: HotelReadReservationRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
<NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-02-26T14:16:19.909+03:00" Version="1.11">
<ReadRequests>
<HotelReadRequest HotelCode="2540">
<SelectionCriteria SelectionType="Undelivered"/>
</HotelReadRequest>
</ReadRequests>
</OTA_ReadRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ответ :
8216 44936/38908 KB 26.02.2019 14:12:56.857 DONE: HotelReadReservationRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OTA_ResRetrieveRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
<Success/>
</OTA_ResRetrieveRS>
</s:Body>
</s:Envelope>
Означает, что на момент вызова метода, Travelline недоставленные брони не вернул.
В случае, если Travelline возвращает новые брони, ответ будет таким :
216 45020/38972 KB 26.02.2019 14:16:21.305 DONE: HotelReadReservationRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OTA_ResRetrieveRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
<ReservationsList>
<HotelReservation CreateDateTime="2019-02-26T14:15:48.187" LastModifyDateTime="2019-02-26T14:15:52.843" ResStatus="Confirmed"> - статус брони
<POS>
<Source>
<RequestorID Type="22" ID="TRAVELLINE"/>
<BookingChannel Type="7"> - Означает, что бронь пришла от Travelline. Если бронь из канала бронирования, то будет фигурировать поле CODE с кратким кодом канала и названием канала
<TPA_Extensions>
<BookingWebSource Code="" Url="http://b.tlintegration.com/2540/"/>
</TPA_Extensions>
</BookingChannel>
</Source>
</POS>
<UniqueID Type="14" ID="20190304-2540-4911576"/> - Номер брони из Travelline. Если бронь из канала бронирования, то у нее будет свой номер с параметром ID_Context="External"
<RoomStays>
<RoomStay IndexNumber="0">
<RoomTypes>
<RoomType RoomTypeCode="116015" InvBlockCode="2384" Quantity="1"/> "116015" код категории номера
</RoomTypes>
<RatePlans>
<RatePlan RatePlanID="214804"/> "214804" код API тарифа
</RatePlans>
<RoomRates>
<RoomRate EffectiveDate="2019-03-04" ExpireDate="2019-03-04" RatePlanCode="214804">
<Total AmountAfterTax="5999.0000" CurrencyCode="RUB"/>
</RoomRate>
</RoomRates>
<GuestCounts>
<GuestCount AgeQualifyingCode="AdultBed" Count="1" ResGuestRPH="1"/> 1 взрослый гость на основном месте
</GuestCounts>
<TimeSpan Start="2019-03-04T14:00:00" Duration="1" End="2019-03-05T12:00:00"/> Дата заезда/выезда
<Guarantee GuaranteeCode="PayOnArrival"/> - оплата при заезде
<CancelPenalties CancelPolicyIndicator="true">
<CancelPenalty>
<Deadline AbsoluteDeadline="2019-03-03T14:00:00Z"/>
<PenaltyDescription>
<Text>При отмене менее чем за 24 часа до времени заезда (14:00) дополнительная плата не взимается</Text>
</PenaltyDescription>
</CancelPenalty>
</CancelPenalties>
<Total AmountAfterTax="5999.0000" CurrencyCode="RUB" DecimalPlaces="0"/> стоимость брони
<BasicPropertyInfo HotelCode="2540"/>
</RoomStay>
</RoomStays>
<ResGuests>
<ResGuest ResGuestRPH="1">
<Profiles>
<ProfileInfo>
<Profile>
<Customer>
<PersonName>
<GivenName>Алексей</GivenName> - имя гостя
<MiddleName/>
<Surname>Сазонов</Surname> - фамилия гостя
</PersonName>
<CitizenCountryName Code="RUS"/>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
</ResGuests>
<ResGlobalInfo>
<TimeSpan Start="2019-03-04T14:00:00" Duration="1" End="2019-03-05T12:00:00"/>
<Comments>
<Comment>
<Text>Комментарий гостя: ДОПОЛНИТЕЛЬНЫЙ КОММЕНТАРИЙ - ТЕСТОВАЯ БРОНЬ</Text> - дополнительная информация от гостя
</Comment>
</Comments>
<Guarantee GuaranteeCode="PayOnArrival">
<GuaranteesAccepted>
<GuaranteeAccepted GuaranteeID="AT_ARRIVAL"/>
</GuaranteesAccepted>
</Guarantee>
<Total AmountAfterTax="5999.0000" CurrencyCode="RUB"/>
<Profiles>
<ProfileInfo>
<Profile>
<Customer>
<PersonName>
<GivenName>Алексей</GivenName>
<MiddleName/>
<Surname>Сазонов</Surname>
</PersonName>
<Telephone PhoneNumber="+74959214198"/> - телефон гостя
<Email>a.sazonov@ucs.ru</Email> - почта гостя
<CitizenCountryName Code="RUS"/>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGlobalInfo>
<TPA_Extensions>
<Shelter agent="1215133281" debtor="1215133281" contract="" paymentMethod="910"/>
</TPA_Extensions>
</HotelReservation>
</ReservationsList>
<Success/>
</OTA_ResRetrieveRS>
</s:Body>
</s:Envelope>
Существует несколько статусов брони :
Unconfirmed – бронь не подтверждена
Confirmed – бронь подтверждена
Cancelled – бронь отменена
Released – номер освобожден заранее
Pending – ожидается оплата
Перед сохранением брони в Shelter, происходит обмен данными между TravellineServer, OnlineServer и базой данных Shelter на предмет проверки настроек и корректности сопоставления тарифов, категорий номеров и пр.
После успешного сохранения брони в Shelter, формируется уникальный внутренний номер брони, к примеру :
<reservation id="16934" code="20190304-2540-4911576" extno="8534"/>
Далее формируется xml с ответом об успешном сохранении брони :
4. Отправка уведомления о плучении брони (метод NotifReportRQ)
8216 45152/38944 KB 26.02.2019 14:16:33.456 TRY: NotifReportRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
<NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<OTA_NotifReportRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.11">
<Success/>
<NotifDetails HotelCode="2540">
<HotelNotifReport>
<HotelReservations>
<HotelReservation LastModifyDateTime="2019-02-26T14:15:52.843" ResStatus="Reserved"> - подтверждение сохранения брони
<UniqueID Type="14" ID="20190304-2540-4911576"/> - номер брони от Travelline
<ResGlobalInfo>
<HotelReservationIDs>
<HotelReservationID ResID_Type="14" ResID_Value="16934"/> - уникальный внутренний номер
</HotelReservationIDs>
</ResGlobalInfo>
</HotelReservation>
</HotelReservations>
</HotelNotifReport>
</NotifDetails>
</OTA_NotifReportRQ>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ответ :
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OTA_NotifReportRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
<Success/>
</OTA_NotifReportRS>
</s:Body>
</s:Envelope>
В случае, если сохранение брони не выполнилось, то уникальный внутренний номер брони не будет сформирован, а в Travelline не отправится уведомление о сохранении брони. В таком случае бронь в Travelline будет в статусе обработки, и каждый раз при вызове метода недоставленных броней будет возвращаться.