Common questions

#QuestionAnswer
1

How to access the product environment?

(lightbulb)You can read about it here
2

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

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

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


3

What types of payment can be used?

Only one payment method is used - invoice

<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

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


4

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

You need to contact the sales department.

5

Which endpoints should be used?


#EnviromentEndpoint
1TESThttps://qa-gaia.s7.ru/agent-api/gaia
2PRODhttps://api.s7.ru/agent-api/gaia


6

Is the Multi-City method implemented in API?

Yes.

(lightbulb)You can read about it here

7

How does the standard ticketing scenatio looks?

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

(lightbulb)You can read about it here Scenarios

8

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.
9

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.

10

Can I add DOCO DOCA information?

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

11

How to access the test environment?

(lightbulb)You can read about it here
12Can I get an S7 route map?There is no such request in API.
13

Are all S7 fares branded?

Yes.
14

Is the refund method implemented in API?

No, currently the refands are not implemented.
15Does the service support queues?In the API all requests are synchronous, queues are not used.
16При попытке послать запрос на API, через SOAPUI, получаем в ответ 'Unknown operation.Подозреваю, что не прописана версия в http header. Указывали версию? Первичная настройка инструмента SoapUI16
17Нужен доступ к 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.

Search operation questions

#QuestionAnswer
1

What does the PenaltyList block mean (AirShoppingRS)?

Fare penalties informarion block.

(lightbulb)Penalties types:

NO-SHOW (NS) — a situation, when the passenger fails to show for the flight before the check-in closing and notify the carrier of cancelling the carriage.

AFTER DEPARTURE (ADE),

PRIOR DEPARTURE (PDE) - это штрафы, если человек обратится после вылета или до, NS (noshow) - неявка на рейс. 

(lightbulb)You can see the full fare rules application by FareRulesRQ

2What is the difference between LowFare and BrandedFares search methods?
  1. Low Fare search — search for offers with a minimal price. Solutions include information for a whole requested journey (no matter OW or RT).
  2. Branded fares search — solutions include information only for requested slice of journey (only inbound or outbound itinerary). Pricing also divided by fare family and mostly includes 4 or 2 sub solutions (Basic Economy, Flex Economy, Basic Business, Flex Business) for each itinerary solution.
3How to manage parameters in the Travelers block in AirShoppingRQ?
  1. You can add all types of passengers and specify there quantity (from 0 to 9)

     <ns3:Travelers>
       <ns3:Traveler>
          <ns3:AnonymousTraveler>
             <ns3:PTC Quantity="1">ADT</ns3:PTC>
          </ns3:AnonymousTraveler>
       </ns3:Traveler>
          <ns3:Traveler>
          <ns3:AnonymousTraveler>
             <ns3:PTC Quantity="0">CHD</ns3:PTC>
          </ns3:AnonymousTraveler>
       </ns3:Traveler>
          <ns3:Traveler>
          <ns3:AnonymousTraveler>
             <ns3:PTC Quantity="0">INF</ns3:PTC>
          </ns3:AnonymousTraveler>
       </ns3:Traveler>
     </ns3:Travelers>


  2. You can specify only the required types

     <ns3:Travelers>
       <ns3:Traveler>
          <ns3:AnonymousTraveler>
             <ns3:PTC Quantity="1">ADT</ns3:PTC>
          </ns3:AnonymousTraveler>
       </ns3:Traveler>
     </ns3:Travelers>


4Is it possible to search flights with the option +- 1 day?No.
5Is it possible to search for a complex route, or OW/RT only?

Yes.

(lightbulb)You can read about it here

6Is it possible to search for a partner flights (COdeShare/SPA)?

Yes.

(lightbulb)You can read about it here Scenarios

7Can I request only direct flights?

Yes. It's necessary to specify the following search parameter:

Envelope /Body /AirShoppingRQ /Preferences /Preference /FlightPreferences /Characteristic /DirectPreferences="Preferred"

Preferences>
   <Preference>
      <FlightPreferences>
         <Characteristic>       
		    <DirectPreferences>Preferred</DirectPreferences>
         </Characteristic>
      </FlightPreferences>
   </Preference>
</Preferences>


8Why in the AirShoppingRS we don't receive the Ticket Designator for CHD and INF PTC (CH25, IN00)

You can see this parameter in the ItinReshopRS.

(lightbulb)You can see an example here OW + 2xADT 2xCHD 2xINF + Transfer + SPA | v0.35 | reprice operation

9Do S7 have transit flights (for example technical stops without flight number changing)?

Yes, but you can see information about trasits only in AirShoppingRS. In other RQ/RS trasits information isn't displayed.

(lightbulb)You can see an example here OW + 1xADT + Transit + S7 | v0.35 | searchFlight operation

10Is it possible to receive a ticketing time limit in AirShoppingRS?No. You can receive it only in OrderViewRS (RS to booking request).
11Will we get in response flights that end later than the date specified in the search?Yes.
12Пытаюсь выполнить запрос на любой метод и получаю в ответ ошибку: <ns3:Error Type="101" ShortText="032 - SI" Code="101"/>  Что не так?Проверьте верность реквизитов доступа к сервису NDC API в блоке Party к выбранной площадке (QA, Prod).4
13Тип самолета (тег Equipment). В ответе есть поле AircraftCode со значением ref, причем это значение совпадает для разных типов самолетов. Это издержки тестовой среды? В боевой будет передаваться код? Можно ли получить справочник по всем типам самолетов, чтобы мы проверили, что коды совпадают с теми, что мы используем и при необходимости добавили новые?

Book operation questions

#QuestionAnswer
1

What types of documents are used?

PP tyep only, but in the ID field you can enter information about any document:

<ns3:PassengerDocument>
    <ns3:Type>PP</ns3:Type>
    <ns3:ID>131231231222</ns3:ID>
    <ns3:BirthCountry>RU</ns3:BirthCountry>
    <ns3:DateOfIssue>2008-06-06</ns3:DateOfIssue>
    <ns3:DateOfExpiration>2028-06-06</ns3:DateOfExpiration>
    <ns3:CountryOfResidence>RU</ns3:CountryOfResidence>
</ns3:PassengerDocument>


<ns3:PassengerDocument>
    <ns3:Type>PP</ns3:Type>
    <ns3:ID>rbrtrtvgb123456</ns3:ID>
    <ns3:BirthCountry>RU</ns3:BirthCountry>
    <ns3:DateOfIssue>2008-06-06</ns3:DateOfIssue>
    <ns3:DateOfExpiration>2028-06-06</ns3:DateOfExpiration>
    <ns3:CountryOfResidence>RU</ns3:CountryOfResidence>
</ns3:PassengerDocument>


2Can I specify multiple phone numbers and emails?

Yes, but you need to consider the following logic:

  • e-mails — for each e-mail created a separate Contact element

    <ns3:Contacts>
        <ns3:Contact>
            <ns3:EmailContact>
                <ns3:Address>l.conelly@mail.ru</ns3:Address>
            </ns3:EmailContact>
        </ns3:Contact>
        <ns3:Contact>
            <ns3:EmailContact>
                <ns3:Address>l.ercrvev@mail.ru</ns3:Address>
            </ns3:EmailContact>
        </ns3:Contact>
    </ns3:Contacts>


  • phoneContact — you can specify several phone numbers in one PhoneContact block

    <ns3:Contacts>
        <ns3:Contact>
            <ns3:PhoneContact>
                <ns3:Number CountryCode="+375" AreaCode="29">3277438</ns3:Number>
                <ns3:Number CountryCode="+375" AreaCode="29">44444444</ns3:Number>
                <ns3:Number CountryCode="+375" AreaCode="29">66666666</ns3:Number>
                <ns3:Number CountryCode="+375" AreaCode="29">77777777</ns3:Number>
            </ns3:PhoneContact>
        </ns3:Contact>
    </ns3:Contacts>


  • both types

    <ns3:Contacts>
        <ns3:Contact>
            <ns3:PhoneContact>
                <ns3:Number CountryCode="+375" AreaCode="29">3277438</ns3:Number>
                <ns3:Number CountryCode="+375" AreaCode="29">44444444</ns3:Number>
                <ns3:Number CountryCode="+375" AreaCode="29">66666666</ns3:Number>
                <ns3:Number CountryCode="+375" AreaCode="29">77777777</ns3:Number>
            </ns3:PhoneContact>
            <ns3:EmailContact>
                <ns3:Address>l.conelly@mail.ru</ns3:Address>
            </ns3:EmailContact>
        </ns3:Contact>
        <ns3:Contact>
            <ns3:EmailContact>
                <ns3:Address>l.ercrvev@mail.ru</ns3:Address>
            </ns3:EmailContact>
        </ns3:Contact>
    </ns3:Contacts>


3How to specify TTL?The TTL is calculated automatically. It's possible to enter it manually, but we recommend not using this functionality, as it will be closed soon.
4What characters are forbidden for input?

You can't use the following characters:

; : * ' " ^ { } [ ] < > & # ! ` = %

5What passenger data are required?

Required passenger data:

  • Surname
  • Given
  • Age
  • Contacts
  • PassengerDocument
6Is it possible to change the automatic TTL?There is no such possibility, the TTL is calculated according to the airline requirements.
7Is the automatic time limit matches for the airline fare rules?Yes. TTL is calculated according to the airline requirements, considering the partner airlines.
8In what format are passport data entered (DOCS/FOID)?

In OrderCreateRQ you need to fill the PassengerDocument block.

In GDS both SSRs are created.

9Why is it necessary to enter the date of passport issuance?

The next filling of the PassengerDocument block is required:

ADT, CHD, INF

<ns3:PassengerDocument>
    <ns3:Type>PP</ns3:Type>
    <ns3:ID>131231231222</ns3:ID>
    <ns3:BirthCountry>RU</ns3:BirthCountry>
    <ns3:DateOfIssue>2008-06-06</ns3:DateOfIssue>
    <ns3:DateOfExpiration>2028-06-06</ns3:DateOfExpiration>
    <ns3:CountryOfResidence>RU</ns3:CountryOfResidence>
</ns3:PassengerDocument>

CHD, INF

<ns3:PassengerDocument>
    <ns3:Type>PP</ns3:Type>
    <ns3:ID>rbrtrtvgb123456</ns3:ID>
    <ns3:BirthCountry>RU</ns3:BirthCountry>
    <ns3:DateOfIssue>2008-06-06</ns3:DateOfIssue>
    <ns3:DateOfExpiration>2028-06-06</ns3:DateOfExpiration>
    <ns3:CountryOfResidence>RU</ns3:CountryOfResidence>
</ns3:PassengerDocument>


10Why there is no link between an infant and an adult?The link exists, but is used only at the stage of issuing the ticket for infant.
11What do the elements BirthCountry/CountryOfResidence describe?

BirthCountry — сountry of issue

CountryOfResidence — citizenship

12Will EMD information be displayed in PNR if EMD is issued?Yes, it will be displayed like ticket information
13What SSR codes are implemented?

DOCS

FOID

CHLD

INFT

FQTV

TKNE

XBAG

EXST

14Why there is no possibility to enter DOCA and DOCO SSRs?At the stages of booking and ticketing, we don't require visa data. Visa is required on check-in.
15Does theTTL guarantee automatic cancellation of the reservation?Yes. Booked seats will be free.

ChangeBook operation questions


#QuestionAnswer
1When the document changes, will the information change in both SSRs (DOCS/FOID)?Yes.
2How to buy seats for an existing booking?

Yes.

(lightbulb)You can read about it here

3Is it possible to book additional services if tickets have already been issued?

Yes.

(lightbulb)You can read about seats here

(lightbulb)You can read about bags here

4Is it possible to change the passport data in the existing booking?

Yes.

(lightbulb)You can read about it here

5

When the OrderChangeRQ is executed, we get an error:

<ns3:Error Type="LOC" Tag="Property change_book_request can not be empty" RecordID="CHNG_BOOK_RQ_IS_EMPTY"/>.

It's forbidden to use the following symbols:  ; : * ' " ^ { } [ ] < > & # ! ` = % 

DemandTickets operation questions

#QuestionAnswer
1What is the difference between a ETK and a EMD?

ETK - Electronic Ticket. Document confirming the payment of the itinerary.

EMD - Electronic Miscellaneous Document. Document confirming the payment of services

(lightbulb) In the requests you need to use the following codes:

ETK Type code - 702

EMD Type code - Y


2Is the ticket issued for each segment of the flight?No, the ticket is issued for the whole itinerary, but for each passenger in the booking.
3Is it possible to rуfund ETK/EMD?No, at the moment, only void operation is implemented for ETK/EMD.
4If there are booked extra services in the booking, is the ticket issued at the same time as the EMD or is it not important?EMDs are issued only after the ticket is issued.
5How can we get a terminal view of ETK/EMD?

Issue of terminal type of ETK/EMD is not implemented. You can read the issued ETK/EMD using the operation AirDocDisplayRQ.

(lightbulb)You can read about it here

(lightbulb) In the requests you need to use the following codes:

ETK Type code - 702

EMD Type code - Y


6Is the Remarc parameter mandatory in the Payment block  and, if so, what is its format?

Yes, this is a mandatory parameter. Corresponds to RMK type in Gabriel - text field.

(lightbulb) It's forbidden to use the following symbols:  ; : * ' " ^ { } [ ] < > & # ! ` = % 

                        <Payment>
                            <Type>
                                <Code>MS</Code>
                            </Type>
                            <Other>
                                <Remarks>
                                    <Remark>IN*QUW1725</Remark>
                                </Remarks>
                            </Other>
                        </Payment>


VoidTicket operation questions

#QuestionAnswer
1I can't void a ticket.What could be the reason?Voided the ticket can only use the same validator, under which the ticket was issued. Make sure you use the same validator.
2Are there any features of void operation?
  • You can void the ticket until 23:59 of the current day (day of ticket issue).

(lightbulb) Time in 0 time zone (0UTC).

  • Voided the ticket can only use the same validator, under which the ticket was issued. Make sure you use the same validator.
  • In the requests you need to use the following codes:

ETK Type code - 702

EMD Type code - Y

3When can I void a ticket?

You can void the ticket until 23:59 of the current day (day of ticket issue).

(lightbulb) Time in 0 time zone (0UTC).

4If the ticket is issued on the day of departure, can I void it after departure or only until? If we can't void the ticket after departure, then for what time before we need to void it?The main thing isn't to allow a NO-SHOW (NS) — a situation, when the passenger fails to show for the flight before the check-in closing and notify the carrier of cancelling the carriage. You can void the ticket after departure until 23:59 of the current day (If the ticket is not used), but it is better to void the ticket before departure.


Table of contents:


    • Нас всё устраивает и мы хотим выходить в 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



    • Что означает блок 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 июня?

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


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

Номер документа в бронировании указывать можно какой угодно. Но тип документа – всегда 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"/>

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

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

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

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

                   <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 — предоставляет дополнительный багаж по определенному перелету. Да, он платный и ввод свободного текста не нужен.


    • Стоп. А если я захочу выбрать себе места на рейсе, но уже оформил бронь? Как быть?

Для внесения доп.услуг в существующий PNR - используем запрос OrderChange. На текущий момент запрос позволяет добавить места, ремарки в бронь, а со временем реализуем такую же возможность и для багажа.

    • Возможно ли бронирование дополнительных сервисов в PNR с выписанными ранее билетами?

Да, возможно. Добавление мест, багажа.

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

Поддерживается изменение паспортных данных и FOID


    • ETK и EMD. В чём отличие? 

ETK - электронный билет. EMD (Electronic Miscellaneous Document) - квитанция разных сборов (выбор места, до.багаж). Стоит отметить, что запросах на зачитку/войдирование Type"Code" для ETK - 702, а для EMD - Y.

    • Билет выписывается на каждый сегмент забронированного полёта?

Нет. ETK (электронный билет) оформляется на все сегменты маршрута. Но выписывается ETK на каждого пассажира, указанного в брони.

    • Подскажите, а реализован ли возврат ETK, EMD?

На текущий момент — нет.

    • Если в PNR есть забронированные доп. сервисы, то выписка билетов обязательна одновременно с выпиской EMD? Или EMD может быть выписано до/после выписки билета?

После выписки ETK.

    • Подскажите, пожалуйста, а как нам можно получить терминальный вид квитанции EMD или данные о выписанном EMD для построения своего шаблона?

Выдача терминальнго вида квитанции EMD не реализована в API. Данные о выписанном бланке EMD можно посмотреть с помощью метода AirDocDisplayRQ.

    • Так а все таки поле «Text – свободный текст» обязательно в форме оплаты или нет? Если вы просите указывать там номер договора, то какой формат поля?

Да, необходимо указывать.
Это поле с ремаркой, соответствует типу RMK в Gabriel, т.е. пробелы можно вводить, а такие знаки, как ; : * ' " ^ { } [ ] < > & # ! ` = % уже нельзя.


    • Пытаемся завойдировать билет, но ничего не выходит! Что не так?

(warning) Правило: какой валидатор выписывает билет, тот же валидатор и войдирует. 

Проверьте, что валидаторы одинаковые.

    • Есть какие-то особенности при войдировании ETK, EMD?
    1. ETK, EMD могут быть войдированы до конца текущих суток, когда они были выписаны.  
    2. Войдировать может только тот валидатор, которым была произведена выписка ETK, EMD.
    3. В запросе AirDocVoidRQ стоит обратить внимание на код:

<ns3:Type>
<ns3:Code>702</ns3:Code>  ——> для войдирования ETK
</ns3:Type>

<ns3:Type>
<ns3:Code>Y</ns3:Code>     ——> для войдирования EMD
</ns3:Type>

    • VOID билета разрешен как обычно до 23.59 текущих суток выписки? Есть ли еще какие-нибудь ограничения на VOID?

Более ограничений нет, кроме обычного — войдирование производится до 23-59 (GMT +0) текущих суток выписки.

    • По поводу VOID – а если вылет в день выписки? За сколько часов до вылета можно VOID сделать. Или можно даже и после вылета до 23.59, если билет не использован.

Главное не допустить NO SHOW – ситуация, когда пассажир не явился на рейс, не поставив в известность а/к. Если предупредили, места сняли — войдировать легально после вылета до 23:59, но желательно лучше выполнить до вылета.