Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Common questions

How to access the product environment?
What types of passengers are used in the API?

3 types of passengers are used:

adult (ADT) —  passengers from 12 years and older

child (CHD) — passengers from 2 to 12 years

infant (INF) —  passengers under 2 years

Note
iconfalse

(lightbulb) If the passenger is 2 years old, he is a CHD

(lightbulb) If the passenger is 12 years old, he is an ADT

What types of payment can be used?

Only one payment method is used - invoice

Code Block
languagexml
themeConfluence
titlePayment type view in ticketing RQ
collapsetrue
<Type>
   <Code>MS</Code>
</Type>
<Other>
   <Remarks>
      <Remark>IN*A*AGENT_NAME</Remark>
   </Remarks>
</Other>

where

MS — payment type code (invoice)

IN*A*AGENT_NAME — agent details

Note
iconfalse

(lightbulb) Processing of payments isn't on our side.

How can I get information about flights commissions and manage agency fees?

You need to contact the sales department.

Enviroment
Is the Multi-City method implemented in API?

Yes

How does the standard ticketing scenatio looks?

searchFlight (AirShoppingRQ) → book (OrderCreateRQ) → reprice (ItinReshopRQ) → demandTicket (AirDocIssueRQ)

(lightbulb)You can read about it here Scenarios

Is it possible to use social categories of passengers - pensioners, youth, sailors, students, etc.?

No. Only 3 types of passengers are used: ADT, CHD, INF.

Can I get a terminal text vuew of the current PNR data? Or just build a template from an XML response?

No, currently only XML display is available.

Can I add DOCO DOCA information?

No,  currently only DOCS, FOID and FQTV SSRs are available.

  • Нужен доступ к WSDL-схеме сервиса. В документе приведена ссылка https://qa-gaia.s7.ru/agent-api/wsdl/0.21?wsdl
    Но по ней получаем ошибку HTTP 400 No required SSL certificate was sent. Скорее всего это означает, что доступ закрыт.

Доступ предоставляется агентам владеющим: basic-auth, сертификатом. Не имея таковых – агенты получают ошибку доступа. Прошу попросить представителей Портбилета оформить в jira задачи на выдачу сертификата, basic-auth.

How to access the test environment?

Подробности по созданию можно найти здесь: создание запроса на сертификат

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

Запроса на предоставление маршутной сети S7 – нет.

  • Все ли тарифы S7 брендированные? Если нет, то может возникнуть проблема с получением всех тарифов для небрендированных тарифов, в документации это не описано.

Тарифы брендированные.

Is the refund method implemented in API?

No, currently the refands are not implemented.

  • При попытке послать запрос на API, через SOAPUI, получаем в ответ 'Unknown operation.'

Подозреваю, что не прописана версия в http header. Указывали версию? Первичная настройка инструмента SoapUI

Expand
titleОбщие вопросы
  • Нас всё устраивает и мы хотим выходить в prod, что нужно сделать?

Прекрасно, выполнить следующие шаги Prod NDC API

  • Какие типы пассажиров используются? 

Мы используем три типа пассажиров: ADT - старше 12-ти лет, CHD - младше 12-ти лет, но старше 2-х лет, INF - до 2-х лет.

  • Какой тип оплаты используется?

Все оплаты происходят только через Invoice. Отметим, что обработка платежей происходит не на нашей стороне.

   Invoice

<ns3:Type>
<ns3:Code>MS</ns3:Code>
</ns3:Type>
<ns3:Other>
<ns3:Remarks>
<ns3:Remark>IN*A*AGENT_NAME</ns3:Remark>
</ns3:Remarks>
</ns3:Other>

где MS — константа, IN*A*AGENT_NAME — реквизиты агента

  • Каким образом можно получить информацию о комиссиях на направлениях, как управлять агентскими сборами?

По данной информации стоит обратиться в Департамент продаж (ДП)

  • Напомните точки доступа приложения.

QA —  https://qa-gaia.s7.ru/agent-api/gaia

PROD — https://api.s7.ru/agent-api/gaia

  • Реализован ли в сервисе метод Multi-City?

Нет

  • Очень интересует. Делаем поиск рейсов, например, на 1 июня. Попадут ли в выдачу рейсы, которые прибывают в аэропорт назначения уже на следующий день, т.е. 2 июня?

Да, такую ситуацию мы учитываем.

  • Как выглядит алгоритм выписки билета, какого сценария придерживаться?

Создаём бронирование (OrderCreateRQ) > Уточняем цену (ItinReshopRQ) > Выписываем билет (AirDocIssueRQ)

  • Есть ли возможность поиска социальных категорий пассажиров – пенсионеры, молодежь, моряки, студенты и т.д.?

Социальных категорий нет. Используем три типа пассажиров:

  1. ADT (взрослый) старше 12 лет;
  2. CHD (ребёнок) от 2-х лет, но не старше 12;
  3. INF (младенец) до 2-х лет.
  • Можно ли получить отображение терминального текста актуальных данных PNR? Или только строить шаблон из ответа XML?

Терминальный текст не реализован.

  • Есть ли возможность  добавить информацию о визе и месте пребывания? (DOCO DOCA)

Данный функционал не реализован

  • Нужен доступ к WSDL-схеме сервиса. В документе приведена ссылка https://qa-gaia.s7.ru/agent-api/wsdl/0.21?wsdl
    Но по ней получаем ошибку HTTP 400 No required SSL certificate was sent. Скорее всего это означает, что доступ закрыт.

Доступ предоставляется агентам владеющим: basic-auth, сертификатом. Не имея таковых – агенты получают ошибку доступа. Прошу попросить представителей Портбилета оформить в jira задачи на выдачу сертификата, basic-auth.

  • Нужен доступ к тестовому сервису: адрес, логин, пароль и/или прочие параметры.

Подробности по созданию можно найти здесь: создание запроса на сертификат

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

Запроса на предоставление маршутной сети S7 – нет.

  • Все ли тарифы S7 брендированные? Если нет, то может возникнуть проблема с получением всех тарифов для небрендированных тарифов, в документации это не описано.

Тарифы брендированные.

  • В документе описано войдирование, но ничего нет про возвраты. Так же нет ничего про очереди.

На текущий момент возвраты, очереди не реализованы в API.

  • При попытке послать запрос на API, через SOAPUI, получаем в ответ 'Unknown operation.'

Подозреваю, что не прописана версия в http header. Указывали версию? Первичная настройка инструмента SoapUI

...

Expand
titleПоиск предложений авиакомпании
  • Что означает блок Penalties в AirShoppingRQ? Какие типы бывают?

Данный блок описывает штрафы соответствующие определённому FareGroup. Штрафы имеют несколько типов: ADE (After departure), PDE (Prior to departure) - это штрафы, если человек обратится после вылета или до, NS (noshow) - неявка на рейс. 

  • В чём отличие BFAirShoppingRQSlice0 от BFAirShoppingRQSlice1 и AirShopping?

AirShopping выполняет поиск предложений с минимальной стоимостью (Y - эконом, C - бизнес). BFAirShoppingRQ это уже поиск предложений для тарифной сетки: basicEconomy, flexEconomy, basicBusiness, flexBusiness. Slice0 показывает варианты для полёта туда, а Slice1 - обратно.

  • Пытаюсь выполнить запрос на любой метод и получаю в ответ ошибку: <ns3:Error Type="101" ShortText="032 - SI" Code="101"/>  Что не так?

Проверьте верность реквизитов доступа к сервису NDC API в блоке Party к выбранной площадке (QA, Prod).

  • В запросе AirShopping, когда указываю пассажиров в разделе Travalers, если нет пассажиров определённой категории (например, INF или CHD) — то полностью блок не указываем, или допустимо же указать там Quantity = 0?

Поддерживаем два решения. Можно не указывать вообще или поставить 0.

  • Есть ли возможность поиска с опцией +- 1 день?

Поиск с опцией на диапазон дат не реализован, но планируется (подробности будут после разработки). Но если зададим поиск,
например, на 25/03 по маршруту DME-OVB, то в поисковой выдаче будут присутствовать рейсы, которые уже закончатся 26/03  – это мы учитываем.

  • Есть ли возможность поиска сложного маршрута, или только OW и RT ?

Есть

  • В вашем API поиск и продажа возможна только на чистые рейсы S7 ? Или возможно на кодшеринговые рейсы S7 тоже?

Рейсы S7, GH и codeshare. Появление интерлайнов планируем выкатить в prod/qa в скором времени, проинформируем дополнительно об этом.

  • Можно ли указать в запросе необходимость поиска только прямых перелетов? Я попробовал указать circuityLimit = 0.0, но получил ошибку, что значение должно быть больше 0.

В circuityLimit нельзя установить значение равное 0, стоит просто его убрать, если не желаете применять. На своей стороне мы определили оптимальные значения circuityLimit и durationLimit, которые соответствует выдаче, как на сайте s7.ru.\

Да, мы можем регулировать выдачу прямые рейсы или нет — отвечает значение DirectPreferences: Exclude - прямые + трансферы, Preferred - только прямые.

  • При запросе разных типов пассажира, коды тарифов (fare basis) в ответе указаны для взрослого. У других типов пассажиров обычно есть суффиксы (/CH25, /IN00, ...) и мы их отображаем. Можно ли их как-то получить?

Упоминаемые Вами суффиксы пассажиров разных типов мы не указываем на ответе AirShoppingRS. Эти данные можно найти в ответе запроса ItinReshopRQ.
Например, выдержка для CHD: <ns3:TicketDesig Application="CH">25</ns3:TicketDesig>

  • Тип самолета (тег Equipment). В ответе есть поле AircraftCode со значением ref, причем это значение совпадает для разных типов самолетов. Это издержки тестовой среды? В боевой будет передаваться код? Можно ли получить справочник по всем типам самолетов, чтобы мы проверили, что коды совпадают с теми, что мы используем и при необходимости добавили новые?

Указывайте всегда на QA/ PROD <ns3:AircraftCode>ref</ns3:AircraftCode>. ref — заглушка.

  • Штрафы (тег Penalty). В тестовом запросе пришло два элемента Detail, один с Type=PDE, другой без Type. Расскажите, пожалуйста, подробнее об этом блоке.

Штрафы имеют несколько типов: ADE (After departure), PDE (Prior to departure) - это штрафы, если пассажир обратится после вылета или до, NS (no-show) - неявка на рейс. Возвраты в API ещё не реализованы, а правила можно посмотреть в ответе запроса FareRulesRQ.

  • Технические остановки. Бывают ли у S7 технические остановки (например дозаправка) без смены номера рейса? Если да, то предоставьте пожалуйста пример, как это выглядит в протоколе.

На сколько помню, то у нас сейчас таких рейсов на текущий момент нет. Но этот момент мы должен быть учтён в рамках flightinfo.

  • Можно ли как-то получить информацию о предоставляемом питании (есть/нет, тип (легкий перекус, горячий обед и т.д.), платно/бесплатно)?

Информация о типе питания есть в ответе запроса flightinfo.

  • Можно ли получать тайм-лимит для выписки на этом этапе?

Тайм-лимит для выписки мы не предоставляем на этапе шоппинга, только после создания брони.

  • Очень интересует. Делаем поиск рейсов, например, на 1 июня. Попадут ли в выдачу рейсы, которые прибывают в аэропорт назначения уже на следующий день, т.е. 2 июня?

Да, такую ситуацию мы учитываем.


Expand
titleБронирование
  • Какие типы документов поддерживаются?

Номер документа в бронировании указывать можно какой угодно. Но тип документа – всегда PP. Например для младенца будет PP VIIMU123456 – свидетельство о рождении.

  • Можно ли указать второй email, моб.телефон?

EmailContact - методом book допускается указание одного адреса. В дальнейшем есть возможность редактировать контакты существующего бронирования используя метод changeBook. Например добавить произвольное кол-во email контактов.
PhoneContact - для CountryCode и AreaCode максимальное количество символов = 15, логика позволяет использовать буквенные символы. Методом book допускается указание произвольного кол-во телефонных контактов.

  • Тайм-лимит вводится вручную? 

Можно установить вручную или автоматически.

  • При выполнении запроса OrderChangeRQ получаем ошибку <ns3:Error Type="LOC" Tag="Property change_book_request can not be empty" RecordID="CHNG_BOOK_RQ_IS_EMPTY"/>

Вводите символы, которые не поддерживаются, например:  ; : * ' " ^ { } [ ] < > & # ! ` = %

Note
Хотим обратить ваше внимание:

На этапах создания брони (OrderCreateRQ), репрайса (ItinReshopRQ) полётные сегменты стоит распределить по блокам OriginDestination по соответствующим направлениям, т.е. рейсы туда вставляем в один OrginDestination, а рейсы обратно в другой блок OriginDestination.

Например, RT DME-SIP:

Code Block
languagexml
                   <ns3:OriginDestination>
                    <ns3:OriginDestinationKey>OD1</ns3:OriginDestinationKey>
                    <ns3:Flight>
                      <ns3:SegmentKey>FL1</ns3:SegmentKey>
                      <ns3:Departure>
                        <ns3:AirportCode>DME</ns3:AirportCode>
                        <ns3:Date>2016-10-04</ns3:Date>
                        <ns3:Time>08:50</ns3:Time>
                      </ns3:Departure>
                      <ns3:Arrival>
                        <ns3:AirportCode>SIP</ns3:AirportCode>
                        <ns3:Date>2016-10-04</ns3:Date>
                        <ns3:Time>11:20</ns3:Time>
                      </ns3:Arrival>
                      <ns3:MarketingCarrier>
                        <ns3:AirlineID>S7</ns3:AirlineID>
                        <ns3:FlightNumber>263</ns3:FlightNumber>
                      </ns3:MarketingCarrier>
                      <ns3:OperatingCarrier>
                        <ns3:AirlineID>S7</ns3:AirlineID>
						 </ns3:OperatingCarrier>
                      <ns3:ClassOfService>
                        <ns3:Code>W</ns3:Code>
                        <ns3:MarketingName></ns3:MarketingName>
                      </ns3:ClassOfService>
                    </ns3:Flight>
                    </ns3:OriginDestination>
                    <ns3:OriginDestination>
                    <ns3:Flight>
                      <ns3:SegmentKey>FL2</ns3:SegmentKey>
                      <ns3:Departure>
                        <ns3:AirportCode>SIP</ns3:AirportCode>
                        <ns3:Date>2016-10-06</ns3:Date>
                        <ns3:Time>12:10</ns3:Time>
                      </ns3:Departure>
                      <ns3:Arrival>
                        <ns3:AirportCode>DME</ns3:AirportCode>
                        <ns3:Date>2016-10-06</ns3:Date>
                        <ns3:Time>14:45</ns3:Time>
                      </ns3:Arrival>
                      <ns3:MarketingCarrier>
                        <ns3:AirlineID>S7</ns3:AirlineID>
                        <ns3:FlightNumber>264</ns3:FlightNumber>
                      </ns3:MarketingCarrier>
                      <ns3:OperatingCarrier>
                        <ns3:AirlineID>S7</ns3:AirlineID>
                      </ns3:OperatingCarrier>
                      <ns3:ClassOfService>
                        <ns3:Code>S</ns3:Code>
                        <ns3:MarketingName></ns3:MarketingName>
                      </ns3:ClassOfService>
                    </ns3:Flight>
                  </ns3:OriginDestination>
  • Обязательно ли внесение отчества при создании бронирования? Какие элементы внесения данных пассажира обязательны?

Отчество необязательно. Необходимы: фамилия и имя, контакты пассажира, полётный сегмент.

  • Соответствует ли установление автоматического тайм лимита при создании брони правилам применения тарифа авиакомпании?
    Не получится ли, что срок выкупа билета истечет раньше, чем установленный автоматический тайм лимит?

Автоматический тайм-лимит присутствует.

  • Для чего нужен ручной тайм лимит?

Более ручной тайм-лимит можно не использовать. Автоматический полностью соответствует актуальным правилам тайм-лимита и исключает ситуацию из вашего 6 вопроса.

  • Нужно ли менять установленный автоматический тайм лимит в зависимости от ремарок авиакомпании о сроках выкупа (SSR). Есть ли такое понятие в NDC?

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

  • Если необходимость корректировать тайм лимит в зависимости от полученной ремарки авиакомпании имеет место, то какой метод это позволяет?

Такой метод не предусмотрен.

  • В каком формате вносятся паспортные данные пассажира? (DOCS? FOID ?)

Присутствуют SSR DOCS, FOID. Ниже пример из терминала при открытии, созданной брони через API.

  • Почему во внесении данных о пассажирах есть обязательное поле – даты выдачи документа, а в отображении PNR данного поля нет. Или оно не обязательное?

Это поле можно не указывать. Бронь сформируется без него.

  • Почему нет паспортных данных по младенцу?

У младенца нет паспорта, однако есть свидетельство о рождении. Данные свидетельства так же вносятся в запросе OrderCreate в блоке <ns3:PassengerDocument>

  • Гражданство – это <ns3:CountryOfResidence>? А национальность? - <ns3:BirthCountry>? Или это одно и тоже? В чем разница?

  <ns3:BirthCountry> </ns3:BirthCountry> — код страны выдачи документа; <ns3:CountryOfResidence> </ns3:CountryOfResidence> — гражданство.

  • Почему нет ассоциации младенца с взрослым?

Ассоциация младенца со взрослым происходит. Привожу текст из документации:


  • Будет ли отображаться информация о EMD, если EMD будет выписано?

Да, информация о EMD будет указана аналогично EMD.

  • Правильно ли я поняла: когда мы через API вносим паспортные данные, то они вносятся в PNR в 2х форматах автоматически: SRDOCR и SRFOID ? При изменении данных обновление информации также производится в обоих ремарках?

Всё верно. В инициирующем запросе на формирование брони (OrderCreateRQ) агент указывает только паспортные данные. SSRCode="DOCS" и SSRCode="FOID" самостоятельно агент не указывает – это наша забота.

  • Какие коды SSR реализованы? Можете прислать список?

SSR DOCS, FOID, CHLD (ребёнок от 2 до 12 лет), INFT (ребёнок до 2 лет), FQTV (информация по мильной программе постоянного пассажира), TKNE (номер ETK), XBAG (сверхнормативный багаж), EXST (доп.место)

  • DOCA и DOCO - это одни из кодов SSR, которые есть согласно вашего ответа в п.14. Если не реализованы эти коды, то как агенты добавляют данную информацию? или S7 не летает по маршрутам, где требуется внесение данных визы и места пребывания?

Опишу подробнее, в созданном PNR можем корректировать SSR, а именно: контакты (телефон, емайл), паспортные данные (DOCS) и FOID, FQTV.
Что касается DOCA/DOCO, то действует принцип, как при покупке билета через сайт. Информация о визе указывается на этапе регистрации на рейс при полётах в Германию, Испанию, США, т.е. на этапах создания брони, выписки билета мы не требуем данные визы. Такой же принцип используется на API.

  • Установление автоматического тайм лимита гарантирует автоматическое снятие брони системой в указанное в тайм лимите время? Не будет заморозки мест?

Да, гарантирует и заморозки не будет.

  • VOID билета разрешен как обычно до 23.59 текущих суток выписки? По какой тайм зоне?

Тайм-зона — GMT +0

  • При запросе дополнительного сервиса – багаж (BaggageCharges) система выдает только сверхнормативный багаж, который платный? Или есть еще другие опции?
    Нужен ли ввод какого-то свободного текста, чтоб забронировать багаж? (например, вес и размеры) или такие данные уже заложены автоматически.

BaggageCharges — предоставляет дополнительный багаж по определенному перелету. Да, он платный и ввод свободного текста не нужен.

...