Интеграция со сторонними системами АПИ: различия между версиями

Материал из Центр поддержки системы бронировании
Перейти к навигации Перейти к поиску
(Аннуляция заказа)
м (API Авиабилетов)
 
(не показано 15 промежуточных версий 4 участников)
Строка 1: Строка 1:
 
'''!!!СТАТЬЯ В РАЗРАБОТКЕ!!!'''
 
 
 
==API Авиабилетов==
 
==API Авиабилетов==
  
Для авторизации в системе, в запросе необходимо указать APIKey и ClientID. Эти данные можно узнать в разделе Администрирование - Веб-сервис. Авторизация. Там же можно включить/выключить нотификацию для действий сделанных через АПИ.
+
Чтобы авторизоваться в системе, в запросе необходимо указать APIKey и ClientID. Эти данные можно узнать в разделе Администрирование - Веб-сервис. Авторизация. Там же можно включить/выключить нотификацию для действий, совершенных через АПИ.
  
 
=== API Поиска авиабилетов ===
 
=== API Поиска авиабилетов ===
Строка 98: Строка 95:
 
</tr>
 
</tr>
 
<tr class="row24">
 
<tr class="row24">
<td>Type</td><td>да</td><td>строка</td><td>Тип пассажира возможные значения: ADT - взрослые, CNN - дети со взрослыми, UNN - дети без сопровождения взрослых, INF - младенцы,INS - младенцы с местом</td>
+
<td>Type</td><td>да</td><td>строка</td><td>Тип пассажира возможные значения: ADT - взрослые, CNN - дети, UNN - дети без сопровождения взрослых, INF - младенцы, INS - младенцы с местом</td>
  
 
</tr>
 
</tr>
Строка 105: Строка 102:
 
</tr>
 
</tr>
 
<tr class="row26">
 
<tr class="row26">
<td class="col0">LinkedTo </td><td class="col1">нет </td><td class="col2">целое число </td><td class="col3">Номер взрослого, к которому привязан младенец/ребёнок</td>
+
<td class="col0">LinkedTo </td><td class="col1">нет </td><td class="col2">целое число </td><td class="col3">Номер взрослого, к которому привязан младенец/ребёнок (привязка ребёнка ко взрослому является опциональной)</td>
  
 
</tr>
 
</tr>
Строка 682: Строка 679:
  
  
==Выгрузки статистики продаж через API==
+
==Выгрузки статистики продаж через API (Метапоиск)==
  
 
'''Метапоисковая система''' (метапоисковая машина, метапоисковик) — это поисковая система, которая в отличие от классических поисковых машин не имеет собственной базы данных и собственного поискового индекса, а формирует поисковую выдачу за счет смешивания и переранжирования результатов поиска других поисковых систем.
 
'''Метапоисковая система''' (метапоисковая машина, метапоисковик) — это поисковая система, которая в отличие от классических поисковых машин не имеет собственной базы данных и собственного поискового индекса, а формирует поисковую выдачу за счет смешивания и переранжирования результатов поиска других поисковых систем.
  
Необходимо убедиться, что API запросы на поиск отправляются на доменное имя, указанное для агентства (субагента) в разделе '''Администрирование''' -> '''Настройки агентства'''
+
В разделе статистики заказов из метапоисков можно получить данные по статистике метапоиска (по источнику переходов модуля метрики) <u>за определенный период бронирования заказов</u> в виде файла данных в формате XML.
 
 
 
 
===== Запрос =====
 
Пример запроса
 
<syntaxhighlight lang="text" enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
http://host/index.php?go=settings/download_metasearch_stat&date1=2012-05-01&date2=2012-06-01&partner=aviasales&password=secret
 
</syntaxhighlight>
 
 
 
Параметры запроса
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" | Параметр запроса
 
! scope="col" | Описание
 
|-
 
| date1
 
| YYYY-MM-DD дата.
 
|-
 
| date2
 
| YYYY-MM-DD дата.
 
|-
 
| partner
 
| Идентификатор партнёра - алиас источника переходов модуля метрики.
 
|-
 
| password
 
| Пароль партнёра - пароль источника переходов модуля метрики.
 
|}
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
===== Ответ =====
 
<div class="mw-collapsible-content">
 
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
<bookings>
 
  <booking>
 
    <nemo_id>123123</nemo_id>
 
    <id>JHKHVR</id>
 
    <created_at>2012-05-02 00:02:01</created_at>
 
    <marker>1232:1222.t</marker>
 
    <price>1199</price>
 
    <profit>200</profit>
 
    <currency>RUB</currency>
 
    <state>PAID</state>
 
    <validatingCarrier>UN</validatingCarrier>
 
    <segment>
 
      <flight>
 
        <operatingCarrier>UN</operatingCarrier>
 
        <number>3</number>
 
        <departure>DME</departure>
 
        <departureDate>2012-09-25</departureDate>
 
        <departureTime>09:55</departureTime>
 
        <arrival>LED</arrival>
 
        <arrivalDate>2012-09-25</arrivalDate>
 
        <arrivalTime>11:10</arrivalTime>
 
        <equipment>735</equipment>
 
        <cabin>Y</cabin>
 
      </flight>
 
    </segment>
 
    <adults>1</adults>
 
    <children>0</children>
 
    <infants>0</infants>
 
  </booking>
 
  ...more bookings...
 
</bookings>
 
</syntaxhighlight>
 
 
 
'''Описание параметров'''
 
 
 
<syntaxhighlight lang="text" enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
    /bookings - корневой элемент содержащий информацию о бронированиях.
 
    //booking - информации об одном бронировании.
 
    nemo_id - ид заказа в системе Немо.
 
    id - уникальный идентификатор бронирования в системе поставщика (локатор).
 
    created_at - YYYY-MM-DD HH:MM время и дата бронирования в таймзоне UTC; если даты бронирования нет, то дата начала создания заказа.
 
    marker - маркер переданные в GET параметре marker при переходе на бронирование.   
 
    price - цена билетов.
 
    profit - прибыль партнёра от данного бронирования.
 
    currency - валюта в которой указаны прибыль и цена билета.
 
    state - состояние брони. Допустимые значения PROCESSING/PAID/CANCELLED.
 
    segment - информация о перелётах.
 
    validatingCarrier - информация о бронировании.
 
    //flight - информация об одном перелёте.
 
        operatingCarrier - код авиакомпании осуществляющей рейс.
 
        number - номер рейса.
 
        departure - IATA код аэропорта отправления.
 
        departureDate - дата отправления, 'YYYY-MM-DD', местное время.
 
        departureTime - время отправления, 'HH:MM', местное время.
 
        arrival - IATA код аэропорта назначения.
 
        arrivalDate - дата прибытия, 'YYYY-MM-DD', местное время.
 
        arrivalTime - время прибытия, 'HH:MM', местное время.
 
        equipment - IATA транспортного средства осуществляющего перевозку.
 
        cabin - класс перелёта. "Y" - эконом , "C" - бизнес, "F" - первый.
 
    adults - кол-во взрослых пассажиров.
 
    children - кол-во детей.
 
    infants - кол-во детей до 2 лет.
 
</syntaxhighlight>
 
</div>
 
</div>
 
 
 
Время и дата бронирования '''''created_at''''' передается в таймзоне UTC+4.
 
 
 
Состояние брони '''''state''''' может принимать значения:
 
* '''''PROCESSING''''' - забронирован;
 
* '''''PAID''''' - выписан;
 
* '''''CANCELLED''''' - аннулирован (по любым причинам).
 
  
Прибыль партнёра '''''profit''''' от данного бронирования в формате 00.99 (через точку).
+
Можно получить список заказов с их статусом (забронирован, выписан, аннулирован), сделанных через метапоисковую систему.
Размер прибыли партнера устанавливается для конкретного источника трафика в Модуле метрики и считается как процент от стоимости оплаченного заказа, включая комиссию платежного шлюза и апсейловые продажи. В последующем расчет прибыли может измениться. При возврате авиабилетов сумма ранее засчитанная как прибыль партнера (метапоисковой системы) должна подставляться с минусом в данном периоде.
 
  
Количество детей до 2 лет '''''infants''''' относится только к младенцам без места. Количество младенцев с местом объединяются с количеством детей до 12 лет '''''children'''''.
+
Подробнее можно узнать в статье посвященной взаимодействию с метопоисковиками [[Взаимодействие с метапоисковиками]]
  
 
==Выгрузка информации о заказах ==
 
==Выгрузка информации о заказах ==
'''Выгрузка заказов''' — это экспорт данных заказа или заказов для различных компонентов системы Nemo.
+
'''Выгрузка заказов''' — это экспорт данных заказа или заказов для различных компонентов системы Nemo. Модуль позволяет внешней системе получать данные по заказам для дальнейшей обработки.  
=== Процесс выгрузки ===
+
Подробнее о процессе выгрузки, настройках, форматах выгрузки для различных компонент можно прочитать в статье [[Выгрузка]]
Схематично процесс выгрузки заказов представлен на блок-схеме.
 
 
 
[[Файл:Export.png]]
 
=== Статусы выгрузки заказа ===
 
Коды статусов выгрузки заказа соответствуют кодам состояния HTTP. Фактически указывается последний полученный код состояния HTTP, полученный при выгрузке данных по адресу, указанному в настройках выгрузки. Коды относятся к серверу, на который происходит выгрузка заказов.
 
 
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="20" | Код
 
! scope="col" width="300" | Описание
 
|-
 
| 0
 
| Неизвестный ответ. Адрес для выгрузки не доступен.
 
|-
 
| 200
 
| OK — успешный запрос.
 
|-
 
| 301
 
| Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка.
 
|-
 
| 403
 
| Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу.
 
|-
 
| 404
 
| Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI.
 
|-
 
| 422
 
| Unprocessable Entity — сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом.
 
|-
 
| 500
 
| Любая внутренняя ошибка сервера.
 
|}
 
 
 
=== Выгрузка заказа для компонента «Авиабилеты»===
 
Для компонента '''«Авиабилеты»''' доступна выгрузка заказов в форматах Nemo и/или Софи (при включенном модуле '''«Выгрузка заказов Софи»).
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 
==== Формат Nemo ====
 
<div class="mw-collapsible-content">
 
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<PNR>
 
  <Common>
 
    <id>277749</id>
 
    <Type>FLIGHTS</Type>
 
    <Service>SABRE</Service>
 
    <Locator>SQLJNK</Locator>
 
    <ExternalId>1234567</ExternalId> <!-- Внешний идентификатор -->
 
    <Stamp>123456789</Stamp>
 
    <UtmSource>100</UtmSource> <!-- Источник перехода -->
 
    <BeginDateTime>2014.12.18-10:45</BeginDateTime>
 
    <EndDateTime>2014.12.25-16:40</EndDateTime>
 
    <TicketingDateTime>2014.12.09-15:02</TicketingDateTime>
 
    <VoidDateTime/>
 
    <TotalPrice>
 
      <Amount>10773.8</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </TotalPrice>
 
    <UserId>2964</UserId>
 
    <EEUserId/>
 
    <UserLogin>userLogin</UserLogin>
 
    <GroupId>2963</GroupId>
 
    <CompanyId>2963</CompanyId>
 
    <UserStatus>Менеджер</UserStatus>
 
    <DateCreate>2014.12.09-14:59</DateCreate>
 
    <ExtServices> <!-- Дополнительные услуги -->
 
      <ExtService>
 
        <Type>AeroExpress</Type>
 
        <Price>
 
          <Amount>1440</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </Price>
 
      </ExtService>
 
      <ExtService>
 
        <Type>AlphaInsurance</Type>
 
        <Price>
 
          <Amount>480</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </Price>
 
        <Insurances>
 
          <Insurance>
 
            <Number>Z694.198TEST.2765282</Number>
 
            <Fio>IVANOV IVAN</Fio>
 
          </Insurance>
 
          <Insurance>
 
            <Number>Z694.198TEST.2765283</Number>
 
            <Fio>PETROV PETR</Fio>
 
          </Insurance>
 
        </Insurances>
 
      </ExtService>
 
    </ExtServices>
 
  </Common>
 
  <Payment>
 
    <Title>Testpay</Title>
 
    <Method>Testpay</Method>
 
    <BillingId>117607091</BillingId>
 
    <Date>2014-12-09 15:00:39</Date>
 
    <CreateDate>2014-12-09 15:00:34</CreateDate>
 
    <Status>ticket</Status>
 
    <PenaltyDate/>
 
    <Timelimit>2014-12-10 14:59:55</Timelimit>
 
    <PaymentCharge> <!-- Сбор платежного шлюза -->
 
      <Amount>313.8</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </PaymentCharge>
 
    <Charge> <!-- Общий сбор минус сбор платежного шлюза -->
 
      <Amount>1920</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </Charge>
 
    <BaseFare> <!-- Тариф -->
 
      <Amount>1600</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </BaseFare>
 
    <Book> <!-- Тариф плюс таксы -->
 
      <Amount>8540</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </Book>
 
    <Penalty>
 
      <Amount>0</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </Penalty>
 
    <Total>
 
      <Amount>10773.8</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </Total>
 
    <Commission>
 
      <Amount>0</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </Commission>
 
    <PaidValue>
 
      <Amount>10773.8</Amount>
 
      <CurrencyCode>RUB</CurrencyCode>
 
    </PaidValue>
 
  </Payment>
 
  <Client>
 
    <LastName/>
 
    <Name>SIDOROV PETR</Name>
 
    <MiddleName/>
 
    <Number/>
 
    <Birth/>
 
    <Email>mail@host.com</Email>
 
    <Phone>+74950000000</Phone>
 
  </Client>
 
  <PassengersCount>2</PassengersCount>
 
  <Passengers>
 
    <Passenger>
 
      <passenger_type>ADT</passenger_type>
 
      <lastname>IVANOV</lastname>
 
      <name>IVAN</name>
 
      <gender>F</gender>
 
      <date_of_birth>12.12.1987</date_of_birth>
 
      <doc_type>C</doc_type>
 
      <passport_number>1234567890</passport_number>
 
      <currency_of_passport>24.03.2023</currency_of_passport>
 
      <middlename/>
 
      <passenger_id>37667</passenger_id>
 
      <nationality>RU</nationality>
 
      <email>mail@host.com</email>
 
      <Tickets>
 
        <Active>0</Active>
 
        <Seg/>
 
        <Num>5553984070962</Num>
 
        <Date>2014-12-09 16:01:00</Date>
 
      </Tickets>
 
      <Tickets>
 
        <Active>1</Active>
 
        <Seg/>
 
        <Num>5553984070964</Num>
 
        <Date>2014-12-09 16:03:00</Date>
 
      </Tickets>
 
      <PriceInfo>
 
        <BaseFare>
 
          <Amount>800</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </BaseFare>
 
        <TotalFare>
 
          <Amount>4270</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </TotalFare>
 
        <Commission>
 
          <Amount>0</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </Commission>
 
        <AirlineCommission>
 
          <Amount>0</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </AirlineCommission>
 
      </PriceInfo>
 
    </Passenger>
 
    <Passenger>
 
      <passenger_type>ADT</passenger_type>
 
      <doc_type>C</doc_type>
 
      <middlename/>
 
      <passenger_id>37668</passenger_id>
 
      <lastname>PETROV</lastname>
 
      <name>PETR</name>
 
      <gender>M</gender>
 
      <date_of_birth>20.12.1984</date_of_birth>
 
      <passport_number>1234567899</passport_number>
 
      <currency_of_passport>20.12.2029</currency_of_passport>
 
      <nationality>RU</nationality>
 
      <email>mail@host.com</email>
 
      <Tickets>
 
        <Active>0</Active>
 
        <Seg/>
 
        <Num>5553984070963</Num>
 
        <Date>2014-12-09 16:01:00</Date>
 
      </Tickets>
 
      <Tickets>
 
        <Active>1</Active>
 
        <Seg/>
 
        <Num>5553984070965</Num>
 
        <Date>2014-12-09 16:03:00</Date>
 
      </Tickets>
 
      <PriceInfo>
 
        <BaseFare>
 
          <Amount>800</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </BaseFare>
 
        <TotalFare>
 
          <Amount>4270</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </TotalFare>
 
        <Commission>
 
          <Amount>0</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </Commission>
 
        <AirlineCommission>
 
          <Amount>0</Amount>
 
          <CurrencyCode>RUB</CurrencyCode>
 
        </AirlineCommission>
 
      </PriceInfo>
 
    </Passenger>
 
  </Passengers>
 
  <FlightType>Внутренний</FlightType>
 
  <OrderInfo>
 
    <Info>
 
      <Company>Аэрофлот - Российские авиалинии</Company>
 
      <CompanyCode>SU</CompanyCode>
 
      <OperatingCompanyCode>FV</OperatingCompanyCode>
 
      <StartDate>2014.12.18</StartDate>
 
      <StartTime>10:45</StartTime>
 
      <StartDayOfWeek>Thursday</StartDayOfWeek>
 
      <FlightNumber>6128 (FV6128)</FlightNumber>
 
      <StartAirportCode>VKO</StartAirportCode>
 
      <StartAirportName>Внуково, Москва</StartAirportName>
 
      <StartCountry>Россия</StartCountry>
 
      <StartCountryCode>RU</StartCountryCode>
 
      <EndAirportCode>LED</EndAirportCode>
 
      <EndAirportName>Санкт-Петербург, Пулково</EndAirportName>
 
      <EndCountry>Россия</EndCountry>
 
      <EndCountryCode>RU</EndCountryCode>
 
      <Time>1:30</Time>
 
      <Equip>
 
        <Name>Airbus 319</Name>
 
        <Type>319</Type>
 
      </Equip>
 
      <ClassType>economy</ClassType>
 
      <ClassTypeCode>R</ClassTypeCode>
 
      <Meal/>
 
    </Info>
 
    <Info>
 
      <Company>Аэрофлот - Российские авиалинии</Company>
 
      <CompanyCode>SU</CompanyCode>
 
      <OperatingCompanyCode>FV</OperatingCompanyCode>
 
      <StartDate>2014.12.25</StartDate>
 
      <StartTime>15:10</StartTime>
 
      <StartDayOfWeek>Thursday</StartDayOfWeek>
 
      <FlightNumber>6153 (FV6153)</FlightNumber>
 
      <StartAirportCode>LED</StartAirportCode>
 
      <StartAirportName>Санкт-Петербург, Пулково</StartAirportName>
 
      <StartCountry>Россия</StartCountry>
 
      <StartCountryCode>RU</StartCountryCode>
 
      <EndAirportCode>VKO</EndAirportCode>
 
      <EndAirportName>Внуково, Москва</EndAirportName>
 
      <EndCountry>Россия</EndCountry>
 
      <EndCountryCode>RU</EndCountryCode>
 
      <Time>1:30</Time>
 
      <Equip>
 
        <Name>Airbus 319</Name>
 
        <Type>319</Type>
 
      </Equip>
 
      <ClassType>economy</ClassType>
 
      <ClassTypeCode>R</ClassTypeCode>
 
      <Meal/>
 
    </Info>
 
  </OrderInfo>
 
  <Remarks>Debit</Remarks>
 
</PNR>
 
</syntaxhighlight>
 
 
 
Ремарка ''<Remarks>Debit</Remarks>'' является не обязательной, означает что заказ был оплачен с помощью способа оплаты «Депозит»;
 
если же заказ был оплачен с использованием депозитного кредита, и депозит ушел в минус даже на 1 руб., то будет ''<Remarks>Credit</Remarks>''.
 
 
 
Элемент ''<TotalFare>'' возвращает стоимость уже оплаченного заказа. Если же заказ забронирован, но не оплачен, то значение будет 0 RUB.
 
 
 
Элемент ''<CreateDate>'' в зависимости от состояния брони возвращает время окончания бронирования, если бронирование было завершено, иначе возвращает время создания брони.
 
 
 
Формат поддерживает возможность передачи нескольких номеров электронных билетов на одного пассажира (в том числе войдированных и аннулированных).
 
</div>
 
</div>
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 
 
 
==== Формат Софи ====
 
<div class="mw-collapsible-content">
 
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
 
 
<?xml version="1.0" encoding="UTF-8"?>
 
<order_snapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
  <header currency="RUB" time_gmt="2015-01-13 08:10:54" time="2015-01-13 12:10:54" ord_id="279307" corp_ord_id="MKQFBZ" site="2806"/>
 
  <customer email="cepogilixe@lackmail.net" phone="XXXX9048" name="" corp_code="2806"/>
 
  <products>
 
    <product>
 
    <!--@stamp - валидатор. Парсится из заказа(Сирена и Галилео). Если получить из ГДС не удалось, то передаётся валидатор, настроенный в реквизитах подключения к ГДС.-->
 
      <air_ticket_prod prod_id="0" psg_type="A" title="Москва - Ленинград" taxes="1776" fare="400" origin="MOW" service_fee="100" form_owner="SU" validating_carrier="SU" destination="LED" comission="0.4" stamp="92354802">
 
        <air_seg segment_id="0" carrier="SU" flight_number="6128" op_carrier="FV" departure_datetime="2015-01-16 10:45:00" arrival_datetime="2015-01-16 12:15:00" departure_airport="VKO" arrival_airport="LED" fare_basis="RPROWRF"/>
 
      </air_ticket_prod>
 
    </product>
 
    <product>
 
      <ral_ticket_prod rsrv_id="2496500" prod_id="200" origin="Киевский вокзал" destination="Внуково, Москва" departure_datetime="2015-01-16 06:45:00" cartype="standart" fare="360"/>
 
    </product>
 
    <product>
 
      <service_prod prod_id="300" provider_type="INSURANCE" provider_id="AlphaInsurance" offer_type="alpha_insurance" ext_id="Z694.198TEST.2774397" price="100" count="1" psgr_id="0"/>
 
    </product>
 
    <product>
 
      <payment_prod price="123"/>
 
    </product>
 
  </products>
 
  <reservations>
 
    <reservation rsrv_id="279307" crs="SABRE" rloc="MKQFBZ"/>
 
    <reservation rsrv_id="2496500" crs="AeroExpress" rloc="218812"/>
 
  </reservations>
 
  <passengers>
 
    <passenger doc_number="1234567890" psgr_id="0" doc_country="RU" psgr_type="A" doc_type="C" birth_date="1990-01-04" name="IVAN" gender="M" first_name="IVANOV"/>
 
  </passengers>
 
  <travel_docs>
 
    <travel_doc>
 
      <air_ticket_doc tkt_oper="TKT" tkt_number="5555871998698" tkt_date="2015-01-13 12:10:50" prod_id="0" psgr_id="0" issuingAgent="2807"/>
 
    </travel_doc>
 
    <travel_doc>
 
      <aex_doc rsrv_id="2496500" prod_id="200" psgr_id="0" tkt_oper="TKT" tkt_date="2015-01-13 12:10:54" tkt_number="394612"/>
 
    </travel_doc>
 
    <travel_doc>
 
      <insur_doc main_prod_id="0" prod_id="300" psgr_id="0" tkt_oper="TKT" tkt_date="2015-01-13 12:10:54" tkt_number="Z694.198TEST.2774397"/>
 
    </travel_doc>
 
  </travel_docs>
 
  <payments>
 
    <payment pay_id="117607839" pay_oper="PAY" pay_time="2015-01-13 12:09:52" psp_code="024" psp_name="Rapida" psp_pay_id="" pay_system="ES" amount="2859" fop="CA"/>
 
  </payments>
 
</order_snapshot>
 
</syntaxhighlight>
 
 
 
*service_fee — сбор агентский (только сервисный сбор, '''не включает''' в себя сбор за эквайринг).
 
*comission - комиссия АК
 
*stamp - код Валидатора в ПСС, берется из настроек Немо, если в настройках он не указан, то не передается.
 
*ord_id — идентификатор заказа в НЕМО
 
*corp_ord_id — PNR из ГДС
 
*site — идентификатор агентства в Немо
 
*payment pay_id — номер биллинга Немо.
 
*pay_system — код платежной системы
 
**SB — для сбербанка
 
**ES — для Рапиды
 
**UNT — для Юнителлера
 
*cardholder — держатель карты.
 
*expire_date — срок действия карты, у тех ПШ, что не приходит в ответе — пустой.
 
*card_number — номер карты, в формате: 415481XXXXXX1734
 
*approval_code — код подтверждения.
 
*payment_prod price — сбор за эквайринг.
 
*main_prod_id -  ID основного продукта (авиабилета).
 
*tkt_number - номер полиса для пассажира;
 
*tkt_date - дата и время операции;
 
*tkt_oper - тип операции (TKT/REF).
 
*provider_type - тип поставщика (INSURANCE).
 
*provider_id - AlphaInsurance;
 
*offer_type - название полиса;
 
*price - цена полиса для пассажира;
 
*rloc - номер заказа у поставщика.
 
 
 
</div>
 
</div>
 
 
 
=== Выгрузка заказа для компонента «Отели» ===
 
Для компонента '''«Отели»''' доступна выгрузка заказов в формате Nemo.
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 
==== Формат Nemo ====
 
<div class="mw-collapsible-content">
 
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<PNR>
 
  <Common>
 
      <id>263462</id>
 
      <Type>HOTELS</Type>
 
      <Service>ACADEM</Service>
 
      <Locator>3028655</Locator>
 
      <BeginDateTime>2014.04.15-00:00</BeginDateTime>
 
      <EndDateTime>2014.04.16-00:00</EndDateTime>
 
      <TotalPrice>
 
        <Amount>1950</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </TotalPrice>
 
      <UserId>123</UserId>
 
      <EEUserId />
 
      <UserLogin>userLogin</UserLogin>
 
      <GroupId>332</GroupId>
 
      <UserStatus>Менеджер</UserStatus>
 
      <DateCreate>2014.03.21-16:11</DateCreate>
 
  </Common>
 
  <Payment>
 
      <Status>booked</Status>
 
      <PenaltyDate>2014.04.13-00:00</PenaltyDate>
 
      <Timelimit>2014-04-13 00:00:00</Timelimit>
 
      <Charge>
 
        <Amount>0</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Charge>
 
      <Book>
 
        <Amount>1950</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Book>
 
      <Penalty>
 
        <Amount>0</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Penalty>
 
      <Total>
 
        <Amount>1950</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Total>
 
      <Commission>
 
        <Amount>112</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Commission>
 
      <PaidValue>
 
        <Amount>0</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </PaidValue>
 
  </Payment>
 
  <Client>
 
      <LastName>Сидоров</LastName>
 
      <Name>Владимир</Name>
 
      <MiddleName>Константинович</MiddleName>
 
      <Number>1806326598</Number>
 
      <Birth>1987-05-20</Birth>
 
      <Email>mail@host.com</Email>
 
      <Phone>+79871234567</Phone>
 
  </Client>
 
  <Passengers>
 
      <Passenger>
 
        <nationality>RU</nationality>
 
        <lastname>IVANOV</lastname>
 
        <name>IVAN</name>
 
      </Passenger>
 
  </Passengers>
 
  <Info>
 
      <Name>Интурист</Name>
 
      <City>
 
        <Code>34</Code>
 
        <Name>Великий Новгород</Name>
 
      </City>
 
      <Location />
 
      <StarRating>3</StarRating>
 
      <Days>2</Days>
 
      <Nights>1</Nights>
 
      <CheckInDate>2014.04.15</CheckInDate>
 
      <CheckOutDate>2014.04.16</CheckOutDate>
 
      <CheckInTime>14:00</CheckInTime>
 
      <CheckOutTime>12:00</CheckOutTime>
 
      <OnRequest>false</OnRequest>
 
  </Info>
 
  <Rooms>
 
      <Room>
 
        <Name>Двухместный стандарт (две кровати)</Name>
 
        <Type>SNGL</Type>
 
        <FareId>1</FareId>
 
      </Room>
 
  </Rooms>
 
  <Fares>
 
      <Fare>
 
        <Id>1</Id>
 
        <Price>
 
            <Amount>1950</Amount>
 
            <CurrencyCode>RUB</CurrencyCode>
 
        </Price>
 
        <Meals>Завтрак "Шведский стол",Отсутствует</Meals>
 
        <Description>Одноместный</Description>
 
      </Fare>
 
  </Fares>
 
  <CancelCharges>
 
      <Charge>
 
        <DateFrom>2014.04.13-00:00</DateFrom>
 
        <DateTo>2014.04.15-00:00</DateTo>
 
        <Amount>1488</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Charge>
 
  </CancelCharges>
 
  <ModifyCharges />
 
  <ModificationMethods>
 
      <Method>MOD_PASS_NAMES</Method>
 
      <Method>MOD_DATES</Method>
 
  </ModificationMethods>
 
</PNR>
 
</syntaxhighlight>
 
</div>
 
</div>
 
 
 
=== Выгрузка заказа для компонента «ЖД» ===
 
Для компонента '''«ЖД»''' доступна выгрузка заказов в формате Nemo.
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 
==== Формат Nemo ====
 
<div class="mw-collapsible-content">
 
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<PNR>
 
  <Common>
 
      <id>123456</id>
 
      <Type>TRAINS</Type>
 
      <Service>UFS</Service>
 
      <Locator>64345987</Locator>
 
      <BeginDateTime>2014.04.26-00:15</BeginDateTime>
 
      <EndDateTime>2014.04.26-13:33</EndDateTime>
 
      <TicketingDateTime>2014.06.06-15:10</TicketingDateTime>
 
      <VoidDateTime>2014.06.07-14:19</VoidDateTime>
 
      <TotalPrice>
 
        <Amount>57505.8</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </TotalPrice>
 
      <UserId>123</UserId>
 
      <EEUserId />
 
      <UserLogin>mikhalevtur</UserLogin>
 
      <GroupId>122</GroupId>
 
      <UserStatus>Менеджер</UserStatus>
 
      <DateCreate>2014.04.24-15:03</DateCreate>
 
  </Common>
 
  <Payment>
 
      <Title>Testpay</Title>
 
      <Method>Testpay</Method>
 
      <BillingId>117603370</BillingId>
 
      <Date>2014-04-24 15:10:12</Date>
 
      <CreateDate>2014-06-06 15:10:00</CreateDate>
 
      <Status>cancelled</Status>
 
      <PenaltyDate />
 
      <Timelimit>2014-04-24 15:18:01</Timelimit>
 
      <Charge>
 
        <Amount>52278</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Charge>
 
      <Book>
 
        <Amount>5227.8</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Book>
 
      <Penalty>
 
        <Amount>0</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Penalty>
 
      <TotalAgencyChargeForRefund>
 
        <Amount>100</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </TotalAgencyChargeForRefund>
 
      <Total>
 
        <Amount>57505.8</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </Total>
 
      <PaidValue>
 
        <Amount>0</Amount>
 
        <CurrencyCode>RUB</CurrencyCode>
 
      </PaidValue>
 
  </Payment>
 
  <Client>
 
      <LastName>Сидоров</LastName>
 
      <Name>Владимир</Name>
 
      <MiddleName>Константинович</MiddleName>
 
      <Number>1806326598</Number>
 
      <Birth>1987-05-20</Birth>
 
      <Email>mail@host.com</Email>
 
      <Phone>+79871234567</Phone>
 
  </Client>
 
  <Passengers>
 
      <Passenger>
 
        <name>Владимир</name>
 
        <middlename>Константинович</middlename>
 
        <phone>
 
            <country />
 
            <city />
 
            <number>+79271031610</number>
 
            <expansion />
 
        </phone>
 
        <email>mlsdsar@gmail.com</email>
 
        <nationality>RU</nationality>
 
        <passenger_type>ADT</passenger_type>
 
        <lastname>Сидоров</lastname>
 
        <doc_type>C</doc_type>
 
        <passport_number>1806326598</passport_number>
 
        <passenger_id>1</passenger_id>
 
        <gender>M</gender>
 
        <date_of_birth>20.04.1984</date_of_birth>
 
        <TotalPrice>28752.9</TotalPrice>
 
        <FarePrice>2613.9</FarePrice>
 
        <Charge>26139</Charge>
 
        <RefundMoney>8649.3</RefundMoney>
 
        <ChargeForRefund>100</ChargeForRefund>
 
        <TicketNumber>74944708487545</TicketNumber>
 
        <SeatNumber>033</SeatNumber>
 
        <HasSeat>true</HasSeat>
 
      </Passenger>
 
      <Passenger>
 
        <nationality>RU</nationality>
 
        <middlename>Константинович</middlename>
 
        <passenger_type>ADT</passenger_type>
 
        <lastname>Сидоров</lastname>
 
        <name>Иван</name>
 
        <doc_type>C</doc_type>
 
        <passport_number>1806326554</passport_number>
 
        <passenger_id>2</passenger_id>
 
        <gender>M</gender>
 
        <date_of_birth>05.04.1984</date_of_birth>
 
        <TotalPrice>28752.9</TotalPrice>
 
        <FarePrice>2613.9</FarePrice>
 
        <Charge>26139</Charge>
 
        <TicketNumber />
 
        <SeatNumber>034</SeatNumber>
 
        <HasSeat>true</HasSeat>
 
      </Passenger>
 
  </Passengers>
 
  <Info>
 
      <trainNumber>098ХА</trainNumber>
 
      <trainName />
 
      <departureStation>МОСКВА КАЗ</departureStation>
 
      <arrivalStation>КАЗАНЬ ПАС</arrivalStation>
 
      <trainCategory>1</trainCategory>
 
      <beginStation>Москва</beginStation>
 
      <endStation>Казань</endStation>
 
      <startDate>2014-04-26 00:15:00</startDate>
 
      <endDate>2014-04-26 13:33:00</endDate>
 
      <timeInRoad>47880</timeInRoad>
 
      <carNumber>8</carNumber>
 
      <carType>4</carType>
 
      <choosenSeats>
 
        <type>
 
            <lower>1</lower>
 
        </type>
 
        <type>
 
            <upper>1</upper>
 
        </type>
 
        <type>
 
            <lower_side>0</lower_side>
 
        </type>
 
        <type>
 
            <upper_side>0</upper_side>
 
        </type>
 
        <type>
 
            <undefined>0</undefined>
 
        </type>
 
      </choosenSeats>
 
      <choosenRange>
 
        <start>0</start>
 
        <end>0</end>
 
      </choosenRange>
 
      <serviceClass>В стоимость входит - постельное белье. Наличие установки кондиционирования воздуха не гарантировано.</serviceClass>
 
  </Info>
 
</PNR>
 
</syntaxhighlight>
 
 
 
'''Элемент PNR'''
 
Элемент '''PNR''' — Passenger Name Record — запись, состоящая из группы отдельных элементов (полей), содержащих информацию об одном или более пассажирах, путешествующих вместе, и деталях путешествия.
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| Common
 
| Общая информация по заказу.
 
| Элементы id, Type, Service, Locator, BeginDateTime, EndDateTime, TicketingDateTime, TotalPrice, UserId, EEUserId, UserLogin, GroupId, UserStatus, DateCreate.
 
|-
 
| Payment
 
| Информация о стоимости, штрафах, статусе заказа.
 
| Элементы Status, PenaltyDate, Timelimit, Charge, Book, Penalty, Total, PaidValue.
 
|-
 
| Client
 
| Информация о заказчике.
 
| Элементы Name, MiddleName, Number, Birth, Email, Phone.
 
|-
 
| Passengers
 
| Записи о пассажирах.
 
| Элементы Passenger.
 
|-
 
| Info
 
| Типовая информация по заказу в контексте услуги.
 
| Элементы trainNumber, trainName, departureStation, arrivalStation, trainCategory, beginStation, endStation, startDate, endDate, timeInRoad, carNumber, carType, choosenSeats, choosenRange, serviceClass.
 
|}
 
 
 
'''Элемент Common'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| id
 
| Номер заказа в Немо.
 
| Число. Пример: 268281.
 
|-
 
| Type
 
| Тип услуги.
 
| Строка: Пример: FLIGHTS.<br/>Допустимые значения: <ul><li>FLIGHTS — авиа,</li><li>HOTELS — отели,</li><li>TRAINS — ЖД.</li></ul>
 
|-
 
| Service
 
| Поставщик услуги.
 
| Строка. Пример: UFS.
 
|-
 
| Locator
 
| Идентификатор в системе поставщика.
 
| Число. Пример: 65525140.
 
|-
 
| BeginDateTime
 
| Дата и время отправления первого сегмента.
 
| Дата и время. Пример: 2014.03.06-00:15.
 
|-
 
| EndDateTime
 
| Дата и время прибытия последнего сегмента.
 
| Дата и время. Пример: 2014.03.06-13:33.
 
|-
 
| TicketingDateTime
 
| Дата и время выписки билета.
 
| Дата и время. Пример: 2014.10.17-17:23
 
|-
 
| VoidDateTime
 
| Дата и время возврата билета.
 
| Дата и время. Пример: 2014.10.17-17:23
 
|-
 
| TotalPrice
 
| Общая стоимость заказа.
 
| Элементы Amount — номинал стоимости, CurrencyCode — валюта стоимости.
 
|-
 
| UserId
 
| Идентификатор пользователя в системе Немо, оформившего заказ.
 
| Число. Пример: 123.
 
|-
 
| UserLogin
 
| Логин пользователя в системе Немо, оформившего заказ.
 
| Строка. Пример: userLogin.
 
|-
 
| GroupId
 
| Идентификатор группы пользователя в системе Немо, оформившего заказ.
 
| Число. Пример: 122.
 
|-
 
| UserStatus
 
| Тип пользователя в системе Немо.
 
| Строка. Пример: Менеджер.
 
|-
 
| DateCreate
 
| Дата и время резервирования в системе поставщика.
 
| Дата и время. Пример: 2014.03.05-15:08
 
|}
 
 
 
'''Элемент TotalPrice'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| Amount
 
| Номинал.
 
| Число. Пример: 1884.
 
|-
 
| CurrencyCode
 
| Валюта.
 
| Строка (Код ISO 4217 alfa-3). Пример: RUB.
 
|}
 
 
 
'''Элемент Payment'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| Title
 
| Название платежного шлюза<sup>*</sup>.
 
| Строка. Пример: Testpay.
 
|-
 
| Method
 
| Тип формы оплаты<sup>*</sup>.
 
| Строка. Пример: Testpay.
 
|-
 
| BillingId
 
| Идентификатор транзакции Немо.
 
| Строка. Пример: 117603370.
 
|-
 
| Date
 
| Дата и время оплаты платежной транзакции Немо.
 
| Строка. Пример: 2014-04-24 15:10:12.
 
|-
 
| CreateDate
 
| Дата и время создания платежной транзакции Немо.
 
| Строка. Пример: 2014-06-06 15:10:00.
 
|-
 
| Status
 
| Статус заказа в системе Немо.
 
| Строка. Пример: booked.<br/>Допустимые значения:
 
<ul>
 
<li>pending — в ожидании,</li>
 
<li>booked — зарезервирован,</li>
 
<li>ticket — выписан,</li>
 
<li>cancelled — отменен.</li>
 
</ul>
 
|-
 
| PenaltyDate
 
| Дата и время наступления штрафных санкций.
 
| Дата и время. Пример: 2014-03-05 15:23:40.
 
|-
 
| Timelimit
 
| Таймлимит на оплату и подтверждение заказа.
 
| Дата и время. Пример: 2014-03-05 15:23:40.
 
|-
 
| Charge
 
| Сбор агентства.
 
| См. элемент Common.TotalPrice.
 
|-
 
| Book
 
| Тариф.
 
| См. элемент Common.TotalPrice.
 
|-
 
| Penalty
 
| Штраф.
 
<br/><span style="background-color:#fff0f5;">'''<span style="color:#ff0000;">Внимание!</span>''' На данный момент параметр неактуален и при выгрузке всегда принимает нулевое значение.</span>
 
| См. элемент Common.TotalPrice.
 
|-
 
| TotalAgencyChargeForRefund
 
| Общий сбор агентства за возврат.
 
| См. элемент Common.TotalPrice.
 
|-
 
| Total
 
| Общая стоимость.
 
| См. элемент Common.TotalPrice.
 
|-
 
| PaidValue
 
| Оплачено.
 
| См. элемент Common.TotalPrice.
 
|}
 
 
 
<sup>*</sup> — список возможный платежных шлюзов:<br/>
 
Acquiro, Chronopay, Copayco, CourierNew, Deposit, EasyPay, GatelineNew, ITransfer, Invoice, Offices, PayU, Payture, Platron, PrivatBank, Qiwi, Rapida, Receipt, Sberbank, Sirena, Sirena2, UnitellerNew, WebMoney.
 
 
 
'''Элемент Client'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| Name
 
| Фамилия и имя заказчика.
 
| Строка. Пример: Иванов Иван.
 
|-
 
| MiddleName
 
| Отчество заказчика.
 
| Строка. Пример: Иванович.
 
|-
 
| Number
 
| Серия и номер документа.
 
| Строка. Пример: 1806123456.
 
|-
 
| Birth
 
| Дата рождения заказчика.
 
| Дата. Пример: 1984-06-30.
 
|-
 
| Email
 
| Адрес электронной почты заказчика.
 
| Строка. Пример: client@host.com.
 
|-
 
| Phone
 
| Номер телефона заказчика.
 
| Строка. Пример: +74951234567
 
|}
 
 
 
'''Элемент Passenger'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| lastname
 
| Фамилия пассажира.
 
| Строка. Пример: Сидоров.
 
|-
 
| name
 
| Имя пассажира.
 
| Строка. Пример: Владимир.
 
|-
 
| middlename
 
| Отчество пассажира.
 
| Строка. Пример: Константинович.
 
|-
 
| doc_type
 
| Тип документа.
 
| Строка. Пример: C.<br/>Допустимые значения:
 
<ul>
 
<li>C — Российский паспорт</li>
 
<li>P — Заграничный паспорт</li>
 
<li>A — Иностранный документ</li>
 
<li>S — Паспорт моряка</li>
 
<li>M — Военный билет</li>
 
<li>B — Свидетельство о рождении</li>
 
</ul>
 
|-
 
| passport_number
 
| Серия и номер документа.
 
| Строка. Пример: 1806123456.
 
|-
 
| gender
 
| Пол пассажира.
 
| Строка. Пример: M.<br/>Допустимые значения:
 
<ul>
 
<li>M — мужской</li>
 
<li>F — женский</li>
 
</ul>
 
|-
 
| date_of_birth
 
| Дата рождения пассажира.
 
| Дата. Пример: 20.05.1987.
 
|-
 
| nationality
 
| Гражданство пассажира.
 
| Строка (ISO 3166-1 Alpha-2). Пример: RU.
 
|-
 
| passenger_type
 
| Тип пассажира.
 
| Строка. Пример: ADT.<br/>Допустимые значения:
 
<ul>
 
<li>ADT — взрослый</li>
 
<li>CLD — ребенок до 10 лет<sup>*, **</sup></li>
 
<li>INF — ребенок до 5 лет<sup>*, ***</sup></li>
 
</ul>
 
|-
 
| passenger_id
 
| Порядковый номер пассажира в заказе.
 
| Число. Пример: 2.
 
|-
 
| TotalPrice
 
| Общая стоимость билета со сборами для данного пассажира.
 
| Число. Пример: 1934.
 
|-
 
| FarePrice
 
| Стоимость по тарифу тарифу.
 
| Число. Пример: 1884.
 
|-
 
| Charge
 
| Сбор агентства.
 
| Число. Пример: 50.
 
|-
 
| RefundMoney
 
| Сумма к возврату. Значение, полученное от поставщика, уменьшенное на сумму сбора агентства за возврат.
 
| Число. Пример: 1643.
 
|-
 
| ChargeForRefund
 
| Cбор агентства за возврат.
 
| Число. Пример: 100.
 
|-
 
| TicketNumber
 
| Номер билета.
 
| Число. Пример: 73944708472624.
 
|-
 
| SeatNumber
 
| Номер места.
 
| число. Пример: 21.
 
|-
 
| TariffType
 
| Наименование тарифа.
 
| Строка. Пример: ПОЛНЫЙ.
 
|-
 
| HasSeat
 
| Занимает ли пассажир отдельное место.
 
| Допустимые значения:<ul><li>true — с местом,</li><li>false — без места.</li></ul>
 
|}
 
 
 
<sup>*</sup> — Не включая верхний предел. Возраст ребенка определяется на день совершения поездки.
 
 
 
<sup>**</sup> — Нижний и верхний пределы определяются видом сообщения:
 
* от 5 до 10 лет — Внутригосударственное сообщение, а также международное сообщение со странами-участниками СНГ, Литовской, Латвийской, Эстонской Республиками, Республикой Абхазия.
 
* от 6 до 17 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Россия-Финляндия.
 
* от 4 до 12 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Восток-Запад.
 
 
 
<sup>***</sup> — Верхний предел определяется видом сообщения:
 
* до 5 лет — Внутригосударственное сообщение, а также международное сообщение со странами-участниками СНГ, Литовской, Латвийской, Эстонской Республиками, Республикой Абхазия.
 
* до 6 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Россия-Финляндия.
 
* до 4 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Восток-Запад.
 
 
 
'''Элемент Passenger'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| trainNumber
 
| Номер поезда.
 
| Строка. Пример: 098ХА.
 
|-
 
| trainName
 
| Имя фирменного поезда. Приходит от поставщика.
 
| Строка. Пример: Россия.
 
|-
 
| departureStation
 
| Станция отправления пассажира.
 
| Строка. Пример: МОСКВА КАЗ.
 
|-
 
| arrivalStation
 
| Станция прибытия пассажира.
 
| Строка. Пример: КАЗАНЬ ПАС.
 
|-
 
| trainCategory
 
| Тип поезда.
 
| Число. Пример: 1.<br/>Допустимые значения:
 
<ul>
 
<li>0 — неизвестный тип поезда</li>
 
<li>1 — скорый поезд</li>
 
<li>2 — фирменный поезд</li>
 
<li>3 — скоростной поезд</li>
 
<li>4 — фирменный скоростной поезд</li>
 
</ul>
 
|-
 
| beginStation
 
| Начальная станция в маршруте поезда.
 
| Строка. Пример: Казань
 
|-
 
| endStation
 
| Конечная станция в маршруте поезда.
 
| Строка. Пример: Москва
 
|-
 
| startDate
 
| Дата и время отправления со станции отправления пассажира.
 
| Дата и время. Пример: 2014-03-06 00:15:00.
 
|-
 
| endDate
 
| Дата и время прибытия со станции отправления пассажира.
 
| Дата и время. Пример: 2014-03-06 13:33:00.
 
|-
 
| timeInRoad
 
| Время в пути от станции отправления до станции прибытия пассажира.
 
| Число (секунд). Пример: 47880.
 
|-
 
| carNumber
 
| Номер вагона.
 
| Число. Пример: 7.
 
|-
 
| carType
 
| Тип вагона.
 
| Число. Пример: 1.<br/>Допустимые значения:
 
<ul>
 
<li>1 - общий вагон</li>
 
<li>2 - сидячий вагон</li>
 
<li>3 - плацкарта</li>
 
<li>4 - купе</li>
 
<li>5 - люкс</li>
 
<li>6 - мягкий</li>
 
<li>7 - неизвестный тип</li>
 
</ul>
 
|-
 
| choosenSeats
 
| Элемент описывает количество нижних, нижних боковых, верхних, верхних боковых мест.
 
| Элементы type.
 
|-
 
| choosenRange
 
| Выбранный диапазон мест в вагоне.
 
| Элементы start, end.
 
|-
 
| serviceClass
 
| Описание услуг. Приходит от поставщика.
 
| Текст. Пример: В стоимость входит - постельное белье. Наличие установки кондиционирования воздуха не гарантировано.
 
|}
 
 
 
'''Элемент type'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| lower
 
| Количество нижних мест.
 
| Число. Пример: 1.
 
|-
 
| upper
 
| Количество верхних мест.
 
| Число. Пример: 0.
 
|-
 
| lower_side
 
| Количество нижних боковых мест.
 
| Число. Пример: 1.
 
|-
 
| upper_side
 
| Количество верхних боковых мест.
 
| Число. Пример: 1.
 
|-
 
| undefined
 
| Количество мест неопределенного типа.
 
| Число. Пример: 0.
 
|}
 
 
 
'''Элемент choosenRange'''
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="200" | Элемент
 
! scope="col" width="300" | Описание
 
! scope="col" width="300" | Допустимые значения
 
|-
 
| start
 
| Начало выбранного диапазон мест в вагоне<sup>*</sup>.
 
| Число. Пример: 4.
 
|-
 
| end
 
| Конец выбранного диапазон мест в вагоне<sup>*</sup>.
 
| Число. Пример: 17.
 
|}
 
 
 
<sup>*</sup> — Если диапазон не был зада пользователем на этапе выбора мест, то поля start и end будут содержать нули.
 
 
 
</div>
 
</div>
 
 
 
=== Пакетный экспорт заказов по категориям в формате Nemo ===
 
Сервис выгрузки заказов позволяет экспортировать интересующие выборки по заказам в формате XML. Например, можно выбрать все заказы по дате бронирования и получить информацию по ним в XML-виде.
 
 
 
==== Экспорт заказов под авторизованным пользователем (в личном кабинете) ====
 
[[Файл:Экспортировать_в_XML_(ЛК).png|400px|thumb|right|Фильтры пакетного экспорта заказов в личном кабинете]]
 
Порядок пользования сервисом:
 
# Перейти в личный кабинет
 
# В адресной строке браузера к текущему адресу дописать параметр '''''&exportxml'''''. Должен получиться адрес вида: <syntaxhighlight lang="text" enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0; width: 800px;">
 
http://DOMAIN/index.php?go=poffice/table&exportxml
 
</syntaxhighlight>
 
# После обновления страницы под блоком фильтров должна появиться кнопка '''«Экспортировать в XML»'''. При ее нажатии на странице появляется предложение сохранить в XML-файл выборку отфильтрованных заказов.
 
 
 
Выгружаются только заказы выбранного пользователя/компании с учетом примененных параметров фильтра.
 
 
 
Пользователь может произвести выгрузку только своих заказов.
 
 
 
=== Пакетный экспорт заказов по категориям в формате СОФИ ===
 
Для использования выгрузки заказов в формате СОФИ у агентства должен быть включен модуль "Выгрузка заказов Софи" и заданы настройки:
 
* "Тип выгрузки СОФИ" должен иметь значение "Выгрузка заказов СОФИ" или должна быть включена настройка "Выгрузка одновременно и Nemo, и Софи",
 
* Должен быть указан "Url скрипта для выгрузки в формате СОФИ",
 
* Должен быть указан "Код сайта в системе СОФИ".
 
 
 
Выгрузка конкретного заказа:
 
http://DOMAIN/booking__sofi_export_bookings&booking_id=123456
 
где booking_id — номер заказа в системе Немо.
 
 
 
Выгрузка заказов забронированных за определенный период:
 
http://DOMAIN/booking__sofi_export_bookings&date_begin=01.01.2014&date_end=01.01.2015
 
где [date_begin; date_end] — период бронирования заказа (забронированные заказы с датой бронирования совпадающей с началом/окончанием периода, заданного в запросе, попадают в экспорт), формат — дд.мм.гггг.
 
 
 
==Фиксация оплаты внешним запросом==
 
!!! не нашел, есть просто фиксация оплаты, но это вроде немного не то !!!
 
 
 
==API универсального платежного шлюза==
 
!!! сказано спросить у КШ, я спросил, у него нет информации !!!
 
  
 
== API Синхронизации пользователей и субагентов ==
 
== API Синхронизации пользователей и субагентов ==
 
Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей.
 
Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей.
 +
Модуль является компонентом, включаемым и отключаемым из административной части.
  
Модуль является компонентом, включаемым и отключаемым из административной части.
+
О механизме авторизации B2B-пользователей, синхронизации учетных записей можно прочитать в статье [[Синхронизация пользователей]]
=== Авторизация B2B-пользователей ===
 
 
 
Все B2B-пользователи, загруженные через модуль взаимодействия со сторонней программой, будут иметь случайным образом сгенерированный криптостойкий [[пароль]]. Механизм авторизации работает следующим образом:
 
 
 
1.Система пытается авторизовать пользователя через собственную службу авторизации.
 
2.В случае неудачи, но присутствия в системе введенного логина, она должна попытаться авторизовать пользователя во внешней службе авторизации («САМО-тур»), при включенном компоненте взаимодействия с «САМО-тур».
 
3.В случае неудачного опознавания пользователя выводится соответствующее сообщение и процедура может быть повторена путем повторного ввода логина и пароля.
 
 
 
Регистрация неудачных попыток входа производится только в двух случаях:
 
*Компонент взаимодействия выключен.
 
*Компонент взаимодействия включен и провалены обе попытки авторизации (внутренней и внешней).
 
 
 
Для сторонней авторизации пользователей в системе Nemo внешняя программа должна иметь веб-службу, основанную на WSDL определенного формата. Ссылка на веб-службу прописывается в настройках системы Nemo на странице конфигурации интеграции с внешней системой.
 
 
 
Для импортированных пользователей в Nemo имеется поле «Идентификатор внешней системы», который отвечает за сопоставление с ID пользователя в сторонней системе. Для менеджеров агентств оно равно номеру партнера (агента) во внешней системе, для пользователей — номеру пользователя в «САМО-туре».
 
 
 
Для пользователей, имеющих какое-либо значение в поле «идентификатор во внешней системе», запрещен функционал смены пароля или его восстановления по электронной почте.
 
 
 
Пример запросов и ответов на авторизацию:
 
 
 
'''Request'''
 
<pre><?xml version="1.0" encoding="utf-8"?>
 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
 
  <soap12:Body>
 
    <getAuthorization xmlns="http://tempuri.org/">
 
      <login>string</login>
 
      <pass>string</pass>
 
    </getAuthorization>
 
  </soap12:Body>
 
</soap12:Envelope></pre>
 
 
 
'''Response'''
 
<pre><?xml version="1.0" encoding="utf-8"?>
 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
 
  <soap12:Body>
 
    <getAuthorizationResponse xmlns="http://tempuri.org/">
 
      <getAuthorizationResult>
 
        <session_id>string</session_id>
 
        <user_id>string</user_id>
 
        <login>string</login>
 
        <status>string</status>
 
      </getAuthorizationResult>
 
    </getAuthorizationResponse>
 
  </soap12:Body>
 
</soap12:Envelope></pre>
 
 
 
Сервис реализует функцию «getAuthorization», на вход которой передается конструкция «getAuthorizationRequest»:
 
 
 
*login (строка) - введенный пользователем логин
 
*pass (строка) - введенный пользователем пароль
 
 
 
Функция должна отдавать системе конструкцию getAuthorizationResponse:
 
 
 
*session_id (строка) - пустое значение
 
*user_id (строка) - идентификатор менеджера в системе «САМО-тур»
 
*login (строка) - логин пользователя (для контроля)
 
*status (строка) - может иметь значения:
 
1. adm - администратор
 
2. mgr - менеджер
 
3. usr - пользователь (возвращается всегда это значение)
 
 
 
=== Импорт и синхронизация учетных записей ===
 
 
 
Со стороны внешней системы должно быть приложение, отправляющее в формате XML данные по учетным записям B2B-клиентов (агентств и пользователей). Со стороны Nemo имеется скрипт, который принимает XML в формате, приведенном в описании документов, передаваемых в Nemo, с ключом авторизации, определенным в Nemo в административной части модуля.
 
 
 
Передаваемые элементы с описанием учетных записей и партнеров имеют аккаунт (Account ID) во внешней системе и атрибут action, который может быть в состоянии update или delete, т.е. обновления/добавления и удаления, соответственно.
 
 
 
В административной части модуля в Nemo задается ключ авторизации для защиты от несанкционированного доступа. Значение не должно быть пустым.
 
 
 
Скрипт получает данные об обновлении и добавлении (проходят как одно и то же действие) или удалении информации по аккаунту. XML-данные могут содержать несколько элементов.
 
 
 
Описание передаваемых в Nemo XML-документов:
 
 
 
<pre><?xml version="1.0" encoding="UTF-8" ?>
 
<changes key="ключ_авторизации">
 
    <accounts> - список изменений по аккаунтам пользователей
 
        <item id=3 partnerId=10 action="update" admin="1">
 
            <login>Логин пользователя</login>
 
        </item>
 
        <item id=6 partnerId=15 action="update">
 
            ...
 
        </item>
 
        <item id=9 partnerId=30 action="delete" />
 
    </accounts>
 
    <partners> - список изменений по партнерам
 
        <item id=140 action="update">
 
            <name>Название агентства</name>
 
            <ofname>Официальное Название агентства</ofname>
 
            <phone>Телефон</phone>
 
            <tax>Форма налогообложения</tax>
 
            <group>123</group>
 
            <code>ABCD</item>
 
  </partners></changes></code></pre>
 
 
 
При импорте информации об агентствах будут возвращаться следующие значения:
 
 
 
<table border="1">
 
<tr class="row0" bgcolor="#CCCCCC">
 
<th class="col0">Поле во внешней системе </th><th class="col1"> Путь к элементу xml </th><th class="col2"> Тип данных </th><th class="col3"> Сопоставляемое поле в Nemo </th><th class="col4"> Примечание </th>
 
 
 
</tr>
 
<tr class="row1">
 
<td class="col0">Идентификатор партнера</td><td class="col1">/changes/partners/item[@id]</td><td class="col2 leftalign">Целое число </td><td class="col3 leftalign">Идентификатор во внешней системе для менеджера / администратора </td><td class="col4"></td>
 
</tr>
 
<tr class="row2">
 
<td class="col0">Название юридического лица</td><td class="col1">/changes/partners/item/ofname</td><td class="col2">Строка</td><td class="col3">Полное официальное название юридического лица </td><td class="col4">Необходимо для выписки счетов юридическими лицами</td>
 
 
 
</tr>
 
<tr class="row3">
 
<td class="col0">Сокращенное название</td><td class="col1">/changes/partners/item/name</td><td class="col2">Строка</td><td class="col3 leftalign">Имя агентства </td><td class="col4"></td>
 
</tr>
 
<tr class="row4">
 
<td class="col0">Код агентства</td><td class="col1">/changes/partners/item/code</td><td class="col2">Строка</td><td class="col3">Используется при создании логина администратора</td><td class="col4"></td>
 
 
 
</tr>
 
<tr class="row5">
 
<td class="col0">Номер группы в самотуре</td><td class="col1">/changes/partners/item/group</td><td class="col2">Целое число, либо пусто</td><td class="col3 leftalign">На основании таблицы сопоставлений (см. ниже) определяется, к какой группе агентство принадлежит в Nemo </td><td class="col4"></td>
 
</tr>
 
<tr class="row6">
 
<td class="col0">Форма налогообложения</td><td class="col1">/changes/partners/item/tax</td><td class="col2">Целое число, равное идентификатору во внешней системе</td><td class="col3"></td><td class="col4"></td>
 
</tr>
 
</table>
 
 
 
Для каждого возвращенного агентства Nemo проверяет наличие его в своей базе. Если [[агентство]] не найдено, то создается новое, для него создается менеджер (админ) с логином ABCD-1234, где ABCD – буквенный идентификатор партнера во внешней системе, 1234 — id партнера во внешней системе. Пароль генерируется случайный и криптостойкий.
 
 
 
Если агентство найдено, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. Если изменился буквенный код агентства, то Nemo переименовывает менеджера в соответствии с новым кодом. При импорте информации о пользователях агентств в Nemo будут посылаться следующие поля:
 
 
 
<table border="1">
 
<tr class="row0" bgcolor="#CCCCCC">
 
<th class="col0">Поле во внешней системе</th><th class="col1">Путь к элементу xml</th><th class="col2">Тип данных</th><th class="col3">Сопоставляемое поле в Nemo</th><th class="col4">Примечание</th>
 
 
 
</tr>
 
<tr class="row1">
 
<td class="col0">Идентификатор пользователя</td><td class="col1">/changes/accounts/item[@id]</td><td class="col2">Целое число</td><td class="col3">Идентификатор внешней системы</td><td class="col4">Храним как дополнительное поле </td>
 
</tr>
 
<tr class="row2">
 
<td class="col0">Идентификатор партнера</td><td class="col1">/changes/accounts/item[@partnerId]</td><td class="col2">Целое число</td><td class="col3">Идентификатор внешней системы менеджера агентства</td><td class="col4"></td>
 
 
 
</tr>
 
<tr class="row3">
 
<td class="col0">Логин</td><td class="col1">/changes/accounts/item/login</td><td class="col2">Строка</td><td class="col3">Логин пользователя</td><td class="col4"></td>
 
</tr>
 
<tr class="row4">
 
<td class="col0">Администратор</td><td class="col1">/changes/accounts/item[@admin]</td><td class="col2">0 - нет, 1 - да</td><td class="col3 leftalign">Эксперт по бронированию </td><td class="col4"></td>
 
 
 
</tr>
 
</table>
 
 
 
Для каждого возвращенного пользователя Nemo проверяет наличие его в своей базе. Если пользователь не найден, то создается новый. Пароль генерируется случайный и криптостойкий.
 
 
 
Если [[пользователь]] найден, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. При запросе на удаление пользователя, в Nemo указанный логин удаляться не будет в целях сохранения целостности старых данных, а просто помечается как удаленный, и логин переименовывается и становится вида [логин_пользователя]_X_[числовой идентификатор_пользователя в Само].
 
 
 
<pre><item id=[идентификатор] action="delete" /></pre>
 
 
 
=== Таблица сопоставлений групп ===
 
 
 
В административной части Nemo надо создать отдельную страницу, на которой можно сопоставить имеющиеся  [[Пользователь#Группы в Nemo|группы в Nemo]] номерам групп в САМО-тур (поле group в XML). Выводится список существующих групп для текущего (корневого) агентства.
 
  
 
==API Кросс­авторизации==
 
==API Кросс­авторизации==
Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)
+
'''Авторизация пользователей из внешних систем''' — Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)
  
 
Для этого нужно подключиться к веб-службе авторизации, WSDL-описание которой располагается по адресу:
 
Для этого нужно подключиться к веб-службе авторизации, WSDL-описание которой располагается по адресу:
Строка 2185: Строка 762:
 
</div></div>
 
</div></div>
  
 +
==Передача параметров в форму поиска (FastSearch)==
  
==Передача параметров в форму поиска==
 
{{Contract}}
 
 
В системе Nemo имеется возможность перенаправлять пользователей на страницу с уже заполненными параметрами поиска или сразу напрямую на результаты поиска.
 
В системе Nemo имеется возможность перенаправлять пользователей на страницу с уже заполненными параметрами поиска или сразу напрямую на результаты поиска.
  
=== Применение ===
+
Примеры FastSearch запросов и используемые переменные подробно описаны в статье [[FastSearch - передача параметров в форму]]  
Эта технология может использоватся к примеру для формирования ссылок с баннеров, при клике на которые пользователь попадает на форму, на которой уже могут быть заполнены пункты назначения, даты, количество пассажиров и прочие параметры.
 
 
 
Также, при указании всех необходимых параметров, пользователя можно перебрасывать сразу на процесс поиска авиабилетов с указанными критериями.
 
 
 
Для использования заполнения формы из URL следует включить опцию: '''Администрирование''' → '''Настройки системы''' → '''''Включить FastSearch (передачу параметров поиска)'''''
 
 
 
После этого можно использовать ссылки на форму поиска вида
 
 
 
<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=BER&departure_date=21.10.2009&adults=1&children=0&input_vendors=SU,PS&param_by_get=on</pre>
 
 
 
=== Переменные FastSearch ===
 
Имена полей - такие же как имена инпутов на поисковой форме.
 
 
 
Следите за тем, чтобы значения соответствовали установленным в настройках ограничениям.
 
 
 
Переменные, которые предполагают в качестве значения "true" можно просто не включать в запрос, чтобы их логика не отработала.
 
 
 
==== Форма поиска ====
 
Чтобы перенаправить пользователя на страницу с заполненными параметрами поиска, необходимо указать get-параметр '''&param_by_get=on''', иначе сработают стандартные предустановки полей формы поиска.
 
 
 
==== Процесс поиска ====
 
Если вы указываете все необходимые для поиска параметры, то для того чтобы отправить пользователя сразу на результаты поиска, нужно указать get-параметр '''&fast_search=on'''.
 
 
 
==== Маршрут «В одну сторону» и «Туда и обратно» ====
 
{| style="width: 800px;" class="wikitable"
 
|-
 
! scope="col" width="300" | Элемент
 
! scope="col" width="250" | Переменная
 
! scope="col" width="250" | Допустимые значения
 
|-
 
| Тип маршрута
 
| trip_type
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | OW
 
| В одну сторону
 
|-
 
| RT
 
| Туда и обратно
 
|-
 
| CR
 
| Сложный маршрут
 
|}
 
 
 
|-
 
| Пункт вылета
 
| out_iata
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | MOW
 
| Код аэропорта ИАТА
 
|}
 
 
 
|-
 
| Пункт прилета
 
| in_iata
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | LED
 
| Код аэропорта ИАТА
 
|}
 
 
 
|-
 
| Дата вылета
 
| departure_date
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 25.10.2013
 
| Дата в формате ДД.ММ.ГГГГ
 
|}
 
 
 
|-
 
| Дата обратного вылета
 
| back_departure_date
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 27.10.2013
 
| Дата в формате ДД.ММ.ГГГГ
 
|}
 
 
 
|-
 
| Время вылета
 
| prefered_departure_type
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | not_important
 
| Любое время
 
|-
 
| morning
 
| Утром
 
|-
 
| afternoon
 
| Днем
 
|-
 
| evening
 
| Вечером
 
|-
 
| night
 
| Ночью
 
|}
 
 
 
|-
 
| Время обратного вылета
 
| prefered_back_departure_type
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | not_important
 
| Любое время
 
|-
 
| morning
 
| Утром
 
|-
 
| afternoon
 
| Днем
 
|-
 
| evening
 
| Вечером
 
|-
 
| night
 
| Ночью
 
|}
 
 
 
|-
 
| Поиск только среди прямых рейсов ("Без пересадок")
 
| direct
 
| true
 
|}
 
 
 
===== Дополнительные параметры =====
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="300" | Элемент
 
! scope="col" width="250" | Переменная
 
! scope="col" width="250" | Допустимые значения
 
|-
 
| Нижнее ограничение по цене по умолчанию
 
| money_from
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 0
 
| Целое число большее либо равное 0
 
|}
 
 
 
|-
 
| Верхнее ограничение по цене по умолчанию
 
| money_to
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 10000
 
| Целое число большее 0
 
|}
 
 
 
|-
 
| Поиск в окружных датах
 
| district_date
 
| true
 
|-
 
| Диапазон соседних дат +(-) [дней]
 
| date_range
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее [1..3]
 
|}
 
 
 
|-
 
| Поиск по соседним аэропортам
 
| district_airport
 
| true
 
|-
 
| Класс обслуживания
 
| class
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| econom
 
| Перелет эконом-классом
 
|-
 
| business
 
| Перелет бизнес-классом
 
|-
 
| first
 
| Перелет первым-классом
 
|}
 
 
 
|-
 
| Фильтр по авиакомпании 
 
| input_vendors
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | SU,PS
 
| Коды авиакомпании ИАТА через запятую без пробелов
 
|}
 
 
 
|-
 
| Сортировка
 
| sort
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | price
 
| По стоимости
 
|-
 
| out_date
 
| По расписанию
 
|-
 
| company
 
| По авиакомпании
 
|-
 
| fltduration
 
| По длительности перелёта
 
|}
 
 
 
|}
 
 
 
==== Сложный маршрут ====
 
<span style="font-size: large; color: rgb(255, 0, 0);">!&nbsp;</span><span style="background-color: rgb(255, 240, 245);">&nbsp;Данные переменные применимы только для сложного маршрута ('''trip_type=CR''').</span>
 
 
 
'''[X]''' - номера отдельных перелетов. Нумерация начинается с 0, что означает первый перелет.
 
 
 
Максимальное количество сегментов для сложного маршрута определяется одноименной настройкой в разделе '''Авиабилеты ⇨ Поиск ⇨ Ограничения поиска'''.
 
 
 
{| style="width: 800px;" class="wikitable"
 
|-
 
! scope="col" width="300" | Элемент
 
! scope="col" width="250" | Переменная
 
! scope="col" width="250" colspan="2" | Допустимые значения
 
|-
 
| Пункты вылета
 
| cr_iata[0]<br/>
 
cr_iata[1]<br/>
 
...<br/>
 
cr_iata[8]
 
| width="80" | MOW
 
| Код аэропорта ИАТА
 
|-
 
| Пункты прилета
 
| cr_back_iata[0]<br/>
 
cr_back_iata[1]<br/>
 
...<br/>
 
cr_back_iata[8]
 
| width="80" | LED
 
| Код аэропорта ИАТА
 
|-
 
| Дата вылета
 
| cr_date[0]<br/>
 
cr_date[1]<br/>
 
...<br/>
 
cr_date[8]
 
| width="80" | 25.10.2013
 
| Дата в формате ДД.ММ.ГГГГ
 
|-
 
| Время вылета
 
| cr_pref_departure[0]<br/>
 
cr_pref_departure[1]<br/>
 
...<br/>
 
cr_pref_departure[8]
 
|  colspan="2" style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | not_important
 
| Любое время
 
|-
 
| morning
 
| Утром
 
|-
 
| afternoon
 
| Днем
 
|-
 
| evening
 
| Вечером
 
|-
 
| night
 
| Ночью
 
|}
 
 
 
|-
 
| Класс обслуживания
 
| cr_class[0]<br/>
 
cr_class[1]<br/>
 
...<br/>
 
cr_class[8]
 
| colspan="2" style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| econom
 
| Перелет эконом-классом
 
|-
 
| business
 
| Перелет бизнес-классом
 
|-
 
| first
 
| Перелет первым классом
 
|}
 
 
 
|-
 
| Окружные аэропорты (±XX км)
 
| cr_district_airport[0]<br/>
 
cr_district_airport[1]<br/>
 
...<br/>
 
cr_district_airport[8]
 
| colspan="2" | true
 
|}
 
 
 
==== Пассажиры ====
 
{| style="width: 800px" class="wikitable"
 
|-
 
! scope="col" width="300" | Элемент
 
! scope="col" width="250" | Переменная
 
! scope="col" width="250" | Допустимые значения
 
|-
 
| Взрослых от 12 лет
 
| adults
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0
 
|}
 
 
 
|-
 
| Детей от 2 до 12 лет
 
| children
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0
 
|}
 
 
 
|-
 
| Младенцев до 2 лет
 
| infants
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0
 
|}
 
 
 
|-
 
| Младенцев с местом до 2 лет
 
| infants_seat
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0
 
|}
 
 
 
|-
 
| Молодых от 12 до 24 лет <br/>
 
| youths
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0<br/>
 
<span style="font-size: large; color: rgb(255, 0, 0);">!&nbsp;</span><span style="background-color: rgb(255, 240, 245);">&nbsp;Данный параметр доступен только в новой базовой теме.</span>
 
|}
 
 
 
|-
 
| Пожилых от 65 лет
 
| seniors
 
| style="padding: 0;" |
 
 
 
{| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"
 
|-
 
| width="80" | 1
 
| Целое число большее либо равное 0<br/>
 
<span style="font-size: large; color: rgb(255, 0, 0);">!&nbsp;</span><span style="background-color: rgb(255, 240, 245);">&nbsp;Данный параметр доступен только в новой базовой теме.</span>
 
|}
 
 
 
|}
 
 
 
==== Примеры FastSearch запросов ====
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
<u>'''В одну сторону (простой)'''</u>
 
<div class="mw-collapsible-content">
 
'''Рейс в одну сторону из Москвы в Париж, дата вылета: 25.10.2013, без пересадок, 1 взрослый'''
 
* '''''форма поиска'''''
 
<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&direct=true&adults=2&param_by_get=on</pre>
 
* '''''процесс поиска'''''
 
<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&direct=true&adults=2&param_by_get=on&fast_search=on</pre>
 
</div>
 
</div>
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
<u>'''В одну сторону (с фильтрами по авиакомпаниям)'''</u>
 
<div class="mw-collapsible-content">
 
'''Рейс в одну сторону из Москвы в Париж, дата вылета 25.10.2013, Пассажиры: пожилых - 2, Авиакомпании: Аэрофлот - Российские авиалинии, Международные Авиалинии Украины'''
 
* '''''форма поиска'''''
 
<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&seniors=2&input_vendors=SU,PS&param_by_get=on</pre>
 
* '''''процесс поиска'''''
 
<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&seniors=2&input_vendors=SU,PS&param_by_get=on&fast_search=on</pre>
 
</div>
 
</div>
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
<u>'''Туда-обратно'''</u>
 
<div class="mw-collapsible-content">
 
'''Рейсы туда-обратно Москва ↔ Париж, дата вылета: 25.10.2013, обратно: 27.10.2013, класс перелета: Эконом, Пассажиры: взрослых - 2 младенцев - 1'''
 
* '''''форма поиска'''''
 
<pre>http://SITEMANE/?trip_type=RT&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&back_departure_date=27.10.2013&class=econom&adults=2&infants=1&param_by_get=on</pre>
 
* '''''процесс поиска'''''
 
<pre>http://SITEMANE/?trip_type=RT&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&back_departure_date=27.10.2013&class=econom&adults=2&infants=1&param_by_get=on&fast_search=on</pre>
 
</div>
 
</div>
 
 
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
<u>'''Сложный маршрут'''</u>
 
<div class="mw-collapsible-content">
 
'''из Москвы в Париж, дата вылета 25.10.2013,'''<br/>
 
'''из Парижа в Санкт-Петербург, дата вылета 26.10.2013,'''<br/>
 
'''из Санкт-Петербурга в Москву, дата вылета 29.10.2013,'''<br/>
 
'''1 взрослый'''
 
* '''''форма поиска'''''
 
<pre>http://SITEMANE/?trip_type=CR
 
&cr_iata[0]=MOW&cr_back_iata[0]=PAR&cr_date[0]=25.10.2013
 
&cr_iata[1]=PAR&cr_back_iata[1]=LED&cr_date[1]=26.10.2013
 
&cr_iata[2]=LED&cr_back_iata[2]=MOW&cr_date[2]=29.10.2013
 
&adults=1&param_by_get=on</pre>
 
* '''''процесс поиска'''''
 
<pre>http://SITEMANE/?trip_type=CR
 
&cr_iata[0]=MOW&cr_back_iata[0]=PAR&cr_date[0]=25.10.2013
 
&cr_iata[1]=PAR&cr_back_iata[1]=LED&cr_date[1]=26.10.2013
 
&cr_iata[2]=LED&cr_back_iata[2]=MOW&cr_date[2]=29.10.2013
 
&adults=1&param_by_get=on&fast_search=on</pre>
 
</div>
 
</div>
 
  
=== Взаимодействие FastSearch и Метрики ===
+
FastSearch так же работает и для отелей, подробности в статье [[Fast Search для отелей]]
Для того, чтобы переход был зарегистрирован системой как переход с определенного источника, необходимо передать в запросе дополнительный параметр utm_source (Metrics Session ID). Например:
 
<pre>http://SITEMANE/?(some_parameters=vals&)utm_source=source_alias</pre>
 
где source_alias - алиас источника переходов. [[Модуль метрики | Дополнительная информация по использованию модуля Метрики]].
 
 
 
==== Пример FastSearch запроса с параметром для модуля Метрики ====
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 
<u>'''FastSearch (с учетом источника перехода для модуля Метрики)'''</u>
 
<div class="mw-collapsible-content">
 
'''Рейс в одну сторону из Москвы в Париж, дата вылета: 25.10.2013, без пересадок, 1 взрослый (с учетом источника перехода для модуля Метрики).'''
 
* '''''форма поиска'''''
 
<pre>
 
http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&direct=true&adults=2&param_by_get=on&utm_source=source_alias
 
</pre>
 
* '''''процесс поиска'''''
 
<pre>
 
http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013
 
&direct=true&adults=2&param_by_get=on&fast_search=on&utm_source=source_alias
 
</pre>
 
</div>
 
</div>
 
  
 +
<!-- Т.к. это внутренний формат обмена данными между Немо и одним клиентом, то данную инфу скроем в комментарии
 
==Проверка в сторонней системе возможности тикетинга==
 
==Проверка в сторонней системе возможности тикетинга==
  
При выписки билета через стороннюю систему 1С, отправляется запрос "GetDebtCounterparty", который спрашивает, можно ли с счета в 1С списать средства для оплаты. В ответе содержится заключение от 1С, в случае если ошибок нет, в ответе будет  
+
При выписки билета через стороннюю систему 1С, отправляется запрос "GetDebtCounterparty", который спрашивает, можно ли с счета в 1С списать средства для оплаты. В ответе содержится заключение от 1С, в случае если ошибок нет, то в ответе будет  
 
<pre><m:Opportunity>Да</m:Opportunity></pre>
 
<pre><m:Opportunity>Да</m:Opportunity></pre>
 
Пример запроса "GetDebtCounterparty"
 
Пример запроса "GetDebtCounterparty"
Строка 2832: Строка 920:
 
</pre>
 
</pre>
 
</div></div>
 
</div></div>
 +
 +
-->

Текущая версия на 14:43, 28 ноября 2018

API Авиабилетов

Чтобы авторизоваться в системе, в запросе необходимо указать APIKey и ClientID. Эти данные можно узнать в разделе Администрирование - Веб-сервис. Авторизация. Там же можно включить/выключить нотификацию для действий, совершенных через АПИ.

API Поиска авиабилетов

Это сервис внутри Nemo, который позволяет получить результаты поиска.

Для подключения к веб-службе поиска авиабилетов необходимо открыть доступ нужному пользователю. Это можно сделать в разделе «Администрирование»«Веб-служба. Авторизация».

Подробнее можно узнать в специальной статье Веб-служба поиска авиабилетов

API Бронирования авиабилетов

Сервис позволяет забронировать/войдировать авиабилет с использованием API, описание подключения, запроса, ответов находится в этой статье Веб-служба бронирования

API Выписки авиабилетов

Агентский АПИ выписки позволяет определить валидирующего перевозчика и значение комиссии от авиакомпании для брони, а также запустить процедуру выписки билета. Веб-служба выписки

API Оплаты

Сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов. Агентские АПИ оплаты

API Дополнительных запросов авиабилетов

К дополнительных запросам относятся проверка на доступность, запрос на обновление заказа, чтение тарифных правил. Дополнительные запросы АПИ авиабилетов

Используемые параметры

Параметры, используемые в запросах

Имя элемента Обязательный Тип Описание
BookFlight да сложный Контейнер для тела запроса бронирования
FlightId да числоId перелёта для которого будет производится бронирование(поиск тарифных правил, проверка доступности)
CurrencyCode нетстрокаТрёх буквенный код валюты (обязателен для комиссии в валюте)
Agency да сложный Информация об агентстве
Name да строка Название агентства
Telephone нет сложный Контактный телефон агентства
Typeда строка Тип номера, возможные значения: M - мобильный, H - домашний, B - рабочий, A - агентство
PhoneNumber да строка Номер телефона
CountryAccessCode нет строка Код страны
AreaCityCode нет строкаКод региона/города
Addressда сложный Адрес агентства
Cityда строка Город, в котором расположено агентство
StreetAddress нет сложный Адрес агентства в городе (улица, дом, корпус, офис и т.д.)
PostalCode нет строка Почтовый код, индекс.
CountryCode нет строка Код страны (RU, UA, US и т.д.)
Travellers да сложный Контейнер для информации о пассажирах (для которых будет производится поиск перелёта, бронирование)
Traveller да сложный Информация о пассажире
TypeдастрокаТип пассажира возможные значения: ADT - взрослые, CNN - дети, UNN - дети без сопровождения взрослых, INF - младенцы, INS - младенцы с местом
IsContact нетбулевский Индикатор показывающий является ли данное лицо контактным, возможные значение: true - пассажир является контактным лицом, false - не является. Контактное лицо может быть только одно, если среди пассажиров есть взрослые, то только кто-то из них может быть контактным лицом. Если не указано, то по умолчанию false.
LinkedTo нет целое число Номер взрослого, к которому привязан младенец/ребёнок (привязка ребёнка ко взрослому является опциональной)
Num да число Номер пассажира.
PreferedPlace нет сложный Информация о предпочитаемом месте. Если указаны номер ряда и номер места, то параметры Smoking и Location игнорируются и могут быть не указаны.
SmokingAllowed нет булевский true - место для курящих, false - место для некурящих. По умолчанию false.
Location нет строка Расположение места, возможные значения: W - у окна (Window); M - где-то в середине ряда (Middle); NPW - возле прохода (NearPassengerWay); NS - нет предпочтения (NotSpecified).
RowNumberнетстрока Номер ряда
PlaceNumber нет строка Номер места
SegNumber да строка Номер сегмента
DocumentInfo да сложный Паспортные данные
DocType да строка Тип документа, обязательный.
DocNum да строка Номер документа
CountryCode да строка Страна выдачи, двух буквенный код(RU, US и т.д.)
DocElapsedTimeда строка Срок истечения срока действия паспорта в фирмате dd.mm.yyyy (например 31.12.2012)
VisaInfo нет сложный Информация о визе
Num да строка Номер визы
IssueDate да строка Дата выдачи визы в формате dd.mm.yyyy
IssueCountry да строка Страна выдачи визы
IssuePlace да строка Место выдачи визы
BirthCountry нет строка Страна рождения (IATA код страны)
BirthCity нетстрокаГород рождения (название)
ArrAddress нет сложный Адрес прибытия, для въезжающих в США (не граждан США) информация является обязательной. Если она не заполняется при оформлении брони, то её всё равно придётся заполнять при посадке на самолёт.
CountryCode да строка IATA код страны
State да строка Штат или область въезда
PostalCode да строка Почтовый код
City да строка Город
StreetAddress да строка Адрес: улица, номер дома, квартиры и тп
DocStringFormats нет сложный Список форматов строк паспортных данных, которые будут отправлены в дополнение к стандартным.
DocStringFormat да строка Формат данных, возможные значения: DOCS - строка формата DOCS, FOID - строка формата FOID. Установка данных в формате DOCS как правило необходима для последующей выписки в BSP среде. Установка FOID - всреде ТКП.
PersonalInfo да сложный Персональные данные пассажира
DateOfBirthда строка Дата рождения в формате dd.mm.yyyy (например 31.12.2000)
Nationality да строка Национальность/гражданство, двух буквенный код страны (RU, UA, US и т.д.)
Gender да строка Пол пассажира, обязательный, возможные значения: M - мужской(Male); F - женский(Female).
FirstName да строка Имя пассажира
LastName да строка Фамилия пассажира
BMiddleName да строка Отчество пассажира
Meal нетстрока Код типа питания, возможные значения: NONE - отсутствует (по умолчанию); AVML - Азиатская вегетарианская кухня; BLML - Блюда щадящей диеты; CHML - Детское питание; CHPC - Детский холодный завтрак; СНСС - Детский горячий завтрак; CHHC - Детский ланч, ветчина и сыр; PBJS - Детский ланч, ореховое масло; CHMC - Детский обед макароны с сыром; DBML - Диабетическое питание; FPML - Фрукты; GFML - Питание без клейковины; HFML - Питание богатое клетчаткой; HNML - Индусская кухня; BBML - Питание для младенцев; KSML - Кошерная кухня; SMKB - Кошерный завтрак; SMKL - Кошерный ланч; SMKD - Кошерный обед; LPML - Малобелковое питание; LCML - Низкокалорийное питание; LFML - Низкохолестериновое питание; PRML - Низкопуриновое питание; LSML - Малосоленое питание; MOML - Мюсли; NLML - Безмолочные продукты; ORML - Восточная кухня; RVML - Сырые овощи; SFML - Морепродукты; SPML - Особое питание; VLML - Вегетарианское, молоко и яйца; VGML - Строго вегетарианское питание; VJML - Джайнизское вегетарианское; VOML - Восточное вегетарианское питание.
LoyaltyCard нет сложный Карточка часто летающего пассажира
OpCode да строка IATA код компании авиаперевозчика
Number да строка Номер карточки
ContactInfoнет сложный Контактная информация для пассажира
EmailID нет строка Контактный email
Telephone нет сложный Контактный телефон пассажира, описание аналогично описанию телефона агентства
CancelBookдасложныйКонтейнер для тела запроса отмены брони
BookIDдачислоНомер брони, которая будет отменяться (для которой будет производится выписка, отмена выписки)
GetAirRulesдасложныйКонтейнер для тела запроса поиска тарифных правил
AirAvailдасложныйКонтейнер для тела запроса проверки доступности перелёта
TicketingдасложныйКонтейнер для тела запроса выписки брони
ValCompanyнетстрокаВалидирующий перевозчик, на бланке которого выписывается билет
ComissionнетсложныйКомиссия
Amountнетчисло с плавающей точкойЗначение комиссии в валюте, если указано, то комиссия в процентах игнорируется
PercentнетчислоКомиссия в процентах
VoidTicketдасложныйКонтейнер для тела запроса отмены выписки брони
SearchдасложныйКонтейнер для тела запроса поиска
ODPairsдасложныйКонтейнер для информации о перелёте
TypeдастрокаТип перелёта, возможные значения: OW - в одну сторону, RT - туда-обратно, CR - сложный маршрут
DirectнетбулевскийИндикатор, указывающий какие перелёты искать, только прямые или с пересадками, возможные значения: false - с пересадками, true - только прямые. Если не указан, значение по умолчанию false.
AroundDatesнетчислоВключает поиск по окружным датам, количество дней +/- от даты заезда/возвращения. Применим только для типов перелёта в одну сторону(OW) и туда-обратно(RT). Возможные значения: 0, 1, 2, 3
ODPairдасложныйКонтейнер для информации о сегменте перелёта. Может повторяться 1-6 раз. Поиск по расписанию использует только первый сегмент, поиск сложных перелётов и перелётов туда и обратно не поддерживается
DepDateдастрокаДата вылета, Формат ГГГГ-MM-DDTЧЧ:ММ:СС
DepAirpдастрокаТрёх буквенный код города отправления или конкретного аэропорта в городе отправления.
ArrAirpдастрокаТрёх буквенный код города прибытия или конкретного аэропорта в городе прибытия.
CountдачислоЧисло пассажиров данного типа. Общее количество пассажиров всех типов должно быть не более 9.
RestrictionsнетсложныйКонтейнер дополнительной информации для поиска.
ClassPrefнетстрокаПредпочитаемый класс перелёта, возможные значения: All - все, Economy - эконом, Business - бизнес, First - первый. Если не указан, то по умолчанию All.
OnlyAvailнетбулевскийИскать только доступные, возможные значения: true - только доступные, false - все. Если не указан, то по умолчанию false.
AirVPrefsнетсложныйОбёртка для списка авиакомпаний, по которым будет или не будет проводиться поиск.
AirVPrefдасложныйИнформация об авиакомпании.
IncludeнетбулевскийИндикатор, показывающий включить или исключить в результатах поиска перелёты данной авиакомпании: true - включить, false - исключить. Если не указан, то по умолчанию false.
IncludePrivateFareнетбулевскийВключать приватные цены в результат или нет, возможные значения: true - включать, false - не включать. Если не указан, то по умолчанию false.
ServiceTypesнетсложный хмлКонтейнер массива используемых веб-сервисов при поиске.
ServiceTypeнетстрокаТип веб-сервиса(поставщика). При указании нескольких элементов ServiceType поиск будет проведён для каждого сервиса. Возможные значения: Sirena2000 - поиск в Сирене; SirenaSchedule - поиск в Сирене по расписанию; SabreLFS - поиск в Сэйбр LFS; SabreBFM - поиск в Сэйбр BFM; SabreSchedule - поиск Сэйбр по расписанию; Galileo - поиск в Галилео; AmadeusMPTBS - поиск в Амадеус.

Параметры, используемые в ответах

Имя элемента Обязательный Тип Описание
BookFlightResult да сложный Контейнер для тела ответа бронирования
ID да числоНомер бронирования в системе Nemo.
Status да строка Статус брони, возможные значения: booked - забронировано, canceled - бронь отменена, ticket - выписана; UNDEFINED - статус не определён.
Code да строка Номер бронирования в системе поставщика (в sabre, sirena и т.д.)/код тарифного правила
QueryPlace нет сложный Очередь, в которую помещено бронирование
Number да число Номер очереди
Flight да сложный Перелёт, по которому была сделана бронь (Результаты проверки доступности для перелёта)
Agency да сложный Информация об агентстве
ItinReceiptsнет сложный Маршрут квитанция. Содержит строку в кодировки Encoding (как правило в base64), представляющую маршрут квитанцию в формате Format.
Encoding да строка Кодировка
Format да строкаФормат
Travellersда сложный Контейнер для информации о пассажирах
Traveller да сложный Информация о пассажире
Ticket нет сложный Билет пассажира.
TickectNum да строка Номер билета
Seatsнет сложный Контейнер мест пассажира.
Seat да сложный Место в самолёте
Number да строкаНомер места(ряд+номер в ряду)
Characteristic нетстрока Характеристика места в соответствии со стандартом EDIFACT. См справочник “Таблица характеристик мест”.
SmokingPreference нет строка Статус курения на этом месте, если Y - место для курящих, если N - место для некурящих.
SegmentNumber да число Номер сегмента
PersonalInfo да сложный Личные данные
LoyaltyCard нет сложный Карточка часто летающего пассажира
ContactInfo нет сложный Контактная информация для пассажира
FareStored нет срока: Yes/No Указывает установлена ли / гарантируется ли цена у поставщика. Если параметр отсутствует в ответе, то по умолчанию значение “Yes”.
CancelBookResultдасложныйКонтейнер для тела ответа отмены брони
BookIDдачислоНомер брони, которая отменялась (Номер выписанной брони, выписка которой отменялась)
ResultдасложныйРезультат отмены (войдирования)
SuccessдабулевскийИндикатор, показывающий успешно или нет прошла отмена, возможные значения: true - успешно отменена (войдирование); false - не отменена
GetAirRulesResultдасложныйКонтейнер для тела ответа поиска тарифных правил
FlightIdдачислоНомер перелёта, для которого найдены тарифные правила (будет проводилась проверка доступности)
RulesдасложныйКонтейнер для правил
RuleдасложныйПравило
TarrifдастрокаКод тарифа, для которого правило применяется
NameдастрокаИмя правила
RuleTextдастрокаТекст правила
AirAvailResultдасложныйКонтейнер для тела ответа помещения брони в очередь
IsAvailдабулевскийИндикатор, показывающий доступность перелёта, возможные значения: true - доступен; false - недоступен
VoidTicketResultдасложныйКонтейнер для тела ответа отмены выписки брони
SearchResultнетсложныйКонтейнер тела ответа для результатов поиска.
FlightsдасложныйКонтейнер для перелётов
FlightнетсложныйПредставляет информацию о перелёте. Отсутствует если перелётов не найдено (используется в поисковом ответе)
WebServiceдастрокаВеб-сервис (поставщик) от которого был получен перелёт.
ValCompanyнетстрокаIATA код авиакомпании. Валидирующий перевозчик, на бланках которого должен выписываться билет.
SegmentsдасложныйКонтейнер для сегментов перелёта
SegmentдасложныйПредставляет информацию о сегменте
SegNumдачислоНомер сегмента в перелёте
DepAirpдастрокаIATA код аэропорта отправления
DepTerminalнетстрокаКод терминала отправления
ArrAirpдастрокаIATA код аэропорта прибытия
ArrTerminalнетстрокаКод терминала прибытия
OpAirlineдастрокаКод авиакомпании, выполняющей рейс
MarkAirlineдастрокаКод авиакомпании, продающей билет
FlightNumberдачислоНомер рейса
AircraftTypeдастрокаКод типа самолёта
DepDateTimeдастрокаДата и время отправления, формат ГГГГ-MM-ДДTЧЧ:ММ:СС
ArrDateTimeдастрокаДата и время прибытия, формат ГГГГ-MM-ДДTЧЧ:ММ:СС
StopNumдачислоЧисло остановок
MealдастрокаТип питания, возможные значения: UNDEFINED - неизвестно; N - Нет питания; P - Алкогольные напитки в продаже; B - Завтрак; O - Холодная еда; C - Бесплатные алкогольные напитки; K - Континтальный завтрак; D - Обед; F - Еда в продаже; G - Еда/напитки в продаже; H - Горячая еда; L - Ланч; M - Еда; R - Освежающие еда/напитки бесплатно; V - Освежающие еда/напитки за отдельную плату; S - Закуска
BookingCodesдасложныйКонтейнер для классов перелёта
BookingCodeдастрокаКод класса перелёта. Если производится поиск по расписанию, то может встречаться несколько раз.
FlightTimeнетчислоВремя перелёта в минутах
TimeZoneнет сложныйИнформация о временных зона прибытия и отправления
DepartureдачислоЧасовой пояс отправления, UTC (смещение относительно Гринвича)
ArrivalдачислоЧасовой пояс прибытия, UTC (смещение относительно Гринвича)
ETicketдабулевский Индикатор электронного билета, возможные значения: true - билет является электронным, false - билет не является электронным.
BaggageнетсложныйИнформация о багаже
MeasureдастрокаМера веса. K - килограммы, PC - сумки/клади
ValueдастрокаКоличество багажа
PricingInfoнетсложныйКонтейнер для информации о ценах. Отсутствует в случае, если производится поиск по расписанию.
RefundableдабулевскийИндикатор показывающий является ли билет возвратным или нет, возможные значения: true - возвратный (нет штрафов за возврат), false - невозвратный (могут быть штрафы за возврат)
PassengerFareдасложныйИнформация о ценах для конкретного типа пассажиров.
QuantityдачислоЧисло пассажиров данного типа
BaseFareдасложныйЦена в базовой валюте(за одного пассажира)
EquiveFareнетсложныйЦена в эквивалентной валюте(за одного пассажира), при поиске цены не возвращается
TotalFareнетсложныйПолная стоимость для пассажиров данного типа включая таксы (за одного пассажира), при поиске цены не возвращается
CurrencyдастрокаТрёх буквенный код валюты.
Amountдачисло с плавающей точкойЗначение стоимости.
TaxesнетсложныйКонтейнер для такс, при поиске цены не возвращается
TaxдасложныйОдна такса
CurCodeдастрокаТрёх буквенный код валюты для таксы
TaxCodeдастрокаКод таксы
Amountдачисло с плавающей точкойЗначение таксы
TariffsдасложныйКонтейнер для тарифов
TariffдасложныйКонтейнер для одного тарифа
CodeдастрокаКод тарифа
SegNumдачислоНомер сегмента для которого применяется тариф, если тариф применяется для всех сегментов, то возвращается 0.
FareCalcнетстрокаСтрока расчёта цены
LastTicketDateTimeдастрокаДата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС. Если бронирование не будет аннулировано или выписано до этого времени, то могут быть применены штрафы.

API Отелей

Агентский API Отелей - система, которая предоставляет возможность поиска и бронирования отелей а так же получение информации о времени и размерах штрафов, уникальной информации об отеле, получение статической информации.

Подробнее можно узнать в нашей специальной статье Агентский АПИ отелей


Выгрузки статистики продаж через API (Метапоиск)

Метапоисковая система (метапоисковая машина, метапоисковик) — это поисковая система, которая в отличие от классических поисковых машин не имеет собственной базы данных и собственного поискового индекса, а формирует поисковую выдачу за счет смешивания и переранжирования результатов поиска других поисковых систем.

В разделе статистики заказов из метапоисков можно получить данные по статистике метапоиска (по источнику переходов модуля метрики) за определенный период бронирования заказов в виде файла данных в формате XML.

Можно получить список заказов с их статусом (забронирован, выписан, аннулирован), сделанных через метапоисковую систему.

Подробнее можно узнать в статье посвященной взаимодействию с метопоисковиками Взаимодействие с метапоисковиками

Выгрузка информации о заказах

Выгрузка заказов — это экспорт данных заказа или заказов для различных компонентов системы Nemo. Модуль позволяет внешней системе получать данные по заказам для дальнейшей обработки. Подробнее о процессе выгрузки, настройках, форматах выгрузки для различных компонент можно прочитать в статье Выгрузка

API Синхронизации пользователей и субагентов

Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей. Модуль является компонентом, включаемым и отключаемым из административной части.

О механизме авторизации B2B-пользователей, синхронизации учетных записей можно прочитать в статье Синхронизация пользователей

API Кросс­авторизации

Авторизация пользователей из внешних систем — Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)

Для этого нужно подключиться к веб-службе авторизации, WSDL-описание которой располагается по адресу:

http://hostname/authorization_reol.wsdl

Запрос
?xml version ='1.0' encoding ='UTF-8' ?>
<definitions name='Authorization'
 targetNamespace='http://example.org/Authorization'
 xmlns:tns=' http://example.org/Authorization '
 xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
 xmlns:xsd='http://www.w3.org/2001/XMLSchema'
 xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
 xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
 xmlns='http://schemas.xmlsoap.org/wsdl/'>
 
<message name='getAuthorizationRequest'>
 <part name='login' type='xsd:string'/>
 <part name='pass' type='xsd:string'/>
</message>
<message name='getAuthorizationResponse'>
 <part name='session_id' type='xsd:string'/>
 <part name='user_id' type='xsd:string'/>
 <part name='login' type='xsd:string'/>
 <part name='status' type='xsd:string'/>
</message>
 
<portType name='AuthorizationPortType'>
 <operation name='getAuthorization'>
  <input message='tns:getAuthorizationRequest'/>
  <output message='tns:getAuthorizationResponse'/>
 </operation>
</portType>
 
<binding name='AuthorizationBinding' type='tns:AuthorizationPortType'>
 <soap:binding style='rpc'
  transport='http://schemas.xmlsoap.org/soap/http'/>
 <operation name='getAuthorization'>
  <soap:operation soapAction='urn:xmethods-delayed-quotes#getAuthorization'/>
  <input>
   <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
    encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
  </input>
  <output>
   <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
    encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
  </output>
 </operation>
</binding>
 
<service name='AuthorizationService'>
 <port name='AuthorizationPort' binding='AuthorizationBinding'>
  <soap:address location='http://nemo.local/controllers/authorization/auth_server.php'/>
 </port>
</service>
</definitions>

Передача параметров в форму поиска (FastSearch)

В системе Nemo имеется возможность перенаправлять пользователей на страницу с уже заполненными параметрами поиска или сразу напрямую на результаты поиска.

Примеры FastSearch запросов и используемые переменные подробно описаны в статье FastSearch - передача параметров в форму

FastSearch так же работает и для отелей, подробности в статье Fast Search для отелей