...
Разберем структуру запроса более детально:
OuterId - идентификатор заявки в SAP, по нему система понимает, что делать - обновить существующую командировку(если с таким номером уже был переход ранее) или создать новую
CustomRoute - участки маршрута, целостность которых мы контролируем
RoutePart - элемент маршрута, один участок
Origin - string, обязательный элемент, название или цифровой идентификатор города из справочника городов
Destination - string, обязательный элемент, название или цифровой идентификатор города из справочника городов
DateDepart - datetime, обязательный элемент, дата отправления пассажира в пункт назначения
DateReturn - datetime, не обязательный элемент, нужен для участков вида туда и обратно
DepartureAdvanceShiftDays - int, обязательный, на сколько дней назад можно сдвинуть вылет в пункт назначения
DeparturePostShiftDays - int, обязательный, на сколько дней вперед можно сдвинуть вылет в пункт назначения
ReturnAdvanceShiftDays - int, обязательный, на сколько дней назад можно сдвинуть возвращение в пункт отправления, для маршрута в одну сторону передаем 0
ReturnPostShiftDays - int, обязательный, на сколько дней вперед можно сдвинуть возвращение в пункт отправления, для маршрута в одну сторону передаем 0
BookingSequence - int, обязательный, в том случае, если нам нужно бронировать услуги друг за другом(например, сперва один участок, а потом другой), то тут передаем последовательность этой процедуры бронирования. Если нас это не волнует, а мы работаем в стандартном режиме: сперва транспорт, потом гостиницы, потом сервисы, то всегда передаем 1
Persons - список пассажиров командировки, подробности о структуре данных можно почитать на SSO портале.
CustomOptions - контейнер бизнес-правил в формате ключ-значение(строки), которые содержат информацию о том, как должна система вести себя с командировкой
routeControl - true для командировок, false для личных поездок, включает или выключает логику контроля маршрута
automaticServices - transport,hotel - какие услуги можно бронировать в автоматическом режиме(типы услуг, доступны transport - авиа или жд и hotel - гостиница)
allowedExtraServices - какие дополнительные сервисы можно заказывать, в настоящий момент только transfer
personalDays - список личных дней через запятую в формате dd-MM-yyyy, правило бронирований отеля такое, что в одном заказе не может быть и личный, и рабочий день
updateMode - update - говорит о том, что нужно обновить информацию о командировки(полное перетирание данных новыми)
AccountDetails - информация о пользователе для создания аккаунта на лету или входа в систему. Если пассажир также является пользователем, его все равно надо передать в секции Persons, т.е. дублируем данные для унификации.