Инструкция по использованию API для создания заявок в системе туристического оператора «Библио-Глобус»

Инструкция по использованию API для создания заявок в системе туристического оператора «Библио-Глобус»

1. Общее

API системы Библио-Глобус zayavkaapi работает по модели RESTful web services. Методы сервиса zayavkaapi принимают HTTP POST запросы, в теле которых должен быть указан XML. В ответ вызывающая сторона получает XML. Если при выполнении метода сервиса возникли ошибки, то метод возвращает коды ошибок в XML.

При формировании запроса необходимо формировать XML в том регистре, в котором дано опсание запросов. Другими слоами, XML протокол API zayavkaapi чувствителен к регистру.

XML запроса должен быть в кодировке UTF-8. XML ответа отдается в кодировке UTF-8.

2. Доступ к API

Доступ к API могут получить только агентства, имеющие логин и пароль для доступа к системе туристического оператора Библио-Глобус. Если у вас нет логина и пароля для доступа к системе туристического оператора Библио-Глобус, вам необходимо связаться с нашими сотрудниками, отвечающими за работу с агентствами по телефону:
8 (495) 504-25-00
Любимов Александр — доб. 1448

Авторизация при работе с сервисами описана здесь.

3. Создание заявки через API

Создание заявки происходит в три этапа. Первый этап - это получение прайса в формате XML и всех необходимых значений параметров из прайса. Эти параметры необходимо использовать при создании заявки. Прочитать про выгрузку данных в формате XML можно тут.

Второй этап - это запрос на получение цены на тур, с указанными параметрами. После запроса на цену заявка не создается в системе Библио-Глобус. В ответ на такой запрос система вернет стоимость тура. Если клиента устраивает стоимость тура, то необходимо сделать второй запрос.

Третий этап - запрос перевода заявки в статус "Тур подобран. Просим забронировать".

Оба запроса (из второго и третьего этапов) делаются с одним и тем же телом запроса за исключением второго запроса: здесь добавляется еще один элемент (см. ниже).

Оба запроса (из второго и третьего этапов) необходимо посылать на следующий адрес:

https://www.bgoperator.ru/zayavkaapi?prx=<значение prx из XML прайса>&action=createtour

Важно: протокол https, хост www.bgoperator.ru должны быть указаны. Параметры prx и action должны быть указаны именно в таком порядке. Значение параметра prx необходимо брать из XML прайс листа (подбронее тут). Без выполнения этих требований запрос к API не будет обработан.

Важно: в одном HTTP POST запросе к API могут быть вместе указаны запросы обоих типов. Другими словами одним запросом можно запросить цену для одного тура, а для другого изменение статуса на "Тур подобран. Просим забронировать".

3.1. Первый запрос: получение стоимости тура

Запрос на цены туров может содержать описание нескольких туров. Каждый тур - это тег <tour>. В каждом туре могут несколько групп туристов. Группа туристов определяется датой начала основого проживания и набором проживаний. Проживание в данном случае - это тип номера+питание. В группу могут входить несколько туристов. Каждая группа туристов в туре - это тег <group>. Все группы заключаются в тег <groups>.
Для каждого тура в атрибуте clientTourId тега <tour> можно указать произвольный идентификатор клиентского тура, который система вернет при ответе "как есть". Таким образом клиентская сторона сможет сопоставить запрос и ответ.

Формат запроса:

В данным запросе указан тур в Индинезию с основным проживанием на острове Бали и двуми проживаниями (before и after) в Бангкоке.

<tours>
  <tour clientTourId="
1">
    <countryId>
100410504525</countryId>
    <templateId>
121178311485</templateId>
    <groups>
      <group>
       
<startDate>01.03.2014</startDate>
       
<ins>0-100000-USD-0</ins>
              <roommeal duration="7">104623691678</roommeal>
              <roommealb duration="1">104625776787</roommealb>
              <roommeala duration="1">104625776787</roommeala>
       
<sr>43UpM9e04HAuj04HAu+04HAvK04HAvf08YLk208YLkN08YLki08YLk*0CpWZQ0CpWZl0CpWa10CpWaM0H1hOo0H1hP40H1hPP0H1hPk</sr>
             <otv>102510005340</otv>
              <persons>
         
<person>
           
<birthday>11.06.1982</birthday>
                     <firstName>IVAN</firstName>
                     <lastName>IVANOV</lastName>
                     <citizenship>100410000050</citizenship>
                     <passportSeries>62</passportSeries>
                     <passportNumber>12345678</passportNumber>
                     <passportTill>11.11.2016</passportTill>
                     <email>mail@mail.ru</email>
                     <phone>89993334444</phone>
                     <gender>m</gender>
                 </person>
                 
              </persons>
      </group>
     

    </groups>
  </tour>
  …
</tours>

countryId — страна туризма. Идентификатор страны в системе Библио-Глобус.
templateId — значений тега <id_price> из XML прайса. В запрос к API этот параметр должен быть передан без изменений, так, как указан в XML прайсе.
comissionId — значений тега <ic> из XML прайса. В запрос к API этот параметр должен быть передан без изменений, так, как указан в XML прайсе.
Важно: для одной заявки может быть указан только один из двух тегов: либо <templateId>, либо <comissionId>. Это определяется наличием в XML прайсе тега <ic>. Если он указан, то в запросе к API необходимо указывать тег <comissionId>. В противном случае необходимо указывать тег <templateId>.
groups / group / startDate — дата начала основого проживания в формате DD.MM.YYYY. Соответствует тегу <dt> из XML прайса. В запрос к API этот параметр должен быть передан без изменений, так, как указан в XML прайсе.
groups / group / ins — страховка. Необязательный параметр. Список доступных страховок можно посмотреть в прайсе с параметром &xml=21. В секции insurance выведется список страховок. В данный тег необходимо передавать значение из тега value.
Важно: если не указывать страховку, то в создаваемую заявку будет добавлена страховка по-умолчанию.
groups / group / roommeal — основное проживание. Идентификатор названия номера-типа питания в системе Библио-Глобус. Соответствует тегу <id_ns> из XML прайса. В атрибуте duration этого тега указывается длительность проживания (ночей). Соответствует тегу <o_duration> из XML прайса.
groups / group / roommealb — первое дополнительное проживание до основного. Суффикс b значит before. Идентификатор названия номера-типа питания в системе Библио-Глобус. Соответствует тегу <id_ns_b> из XML прайса. В атрибуте duration этого тега указывается длительность проживания (ночей). Соответствует тегу <b_duration> из XML прайса.
groups / group / roommealab — второе дополнительное проживание до основного. Суффикс ab значит after before. Идентификатор названия номера-типа питания в системе Библио-Глобус. Соответствует тегу <id_ns_ab> из XML прайса. В атрибуте duration этого тега указывается длительность проживания (ночей). Соответствует тегу <ab_duration> из XML прайса.
groups / group / roommealba — второе дополнительное проживание после основного. Суффикс ba значит before after. Идентификатор названия номера-типа питания в системе Библио-Глобус. Соответствует тегу <id_ns_ba> из XML прайса. В атрибуте duration этого тега указывается длительность проживания (ночей). Соответствует тегу <ba_duration> из XML прайса.
groups / group / roommeala — первое дополнительное проживание после основного. Суффикс a значит after. Идентификатор названия номера-типа питания в системе Библио-Глобус. Соответствует тегу <id_ns_a> из XML прайса. В атрибуте duration этого тега указывается длительность проживания (ночей). Соответствует тегу <a_duration> из XML прайса.
groups / group / sr — зачение тега <sr> из XML прайса. В запрос к API этот параметр должен быть передан без изменений, так, как указан в XML прайсе.
groups / group / otv — в запрос к API этот параметр должен быть распарсен из JSON прайса из параметра href2.
groups / group / persons / person / birthday — дата рождения туриста в формате DD.MM.YYYY.
groups / group / persons / person / firstName — имя туриста так, как указано в загран. паспорте в верхнем регистре.
groups / group / persons / person / lastName — фамилия туриста так, как указано в загран. паспорте в верхнем регистре.
groups / group / persons / person / middleName — отчество туриста, необязательное поле
groups / group / persons / person / notHaveMiddleName — признак отсутствия отчества, необязательное поле
Важно: для заявок по России или Абхазии необходимо указывать отчество туриста или признак отсутствия отчества.
groups / group / persons / person / passportSeries — серия загран. паспорта туриста.
groups / group / persons / person / passportNumber — номер загран. паспорта туриста.
groups / group / persons / person / passportTill — дата окончания действия загран. паспорта туриста в формате DD.MM.YYYY.
groups / group / persons / person / email — контактный e-mail туриста.
groups / group / persons / person / phone — контактный телефон туриста.
groups / group / persons / person / gender — пол в формате формате m (мужской) или f (женский).

Формат ответа:

<tours>
  
<tour clientTourId="1">
    <sum>
      <currency>USD</currency>
      <fullamount>1193.0</fullamount>
     
<comission>119.0</comission>
         <amount>1074.0</amount>
    </sum>
    <sum>
      <currency>RUR</currency>
      <fullamount>74563.0</fullamount>
     
<comission>7438.0</comission>
         <amount>67125.0</amount>
    </sum>
  </tour>
  …
</tours>

currency — валюта, в которой указаны полная стоимость, комиссия и сумма к оплате
fullamout — полная стоимость тура
comission — комиссия
amount — сумма к оплате

3.2. Второй запрос: подтверждение заявки

Запрос на перевод заявки в статус  "Тур подобран. Просим забронировать" оформляется точно так же, как и запрос на получение цены. Для Каждого тура, для которого необходимо поменять статус на "Тур подобран. Просим забронировать" необходимо в любое место тега <tour> вставить тег <confirm/>. После данного запроса агентство увидит созданную заявку в личном кабинете на сайте туроператора Библио-Глобус в списке заявок .

Формат запроса:

<tours>
  <tour clientTourId="
2">
    <confirm/>
    <countryId>100410504525</countryId>
    <templateId>
121178311485</templateId>
    <groups>
      <group>
       
<startDate>01.03.2014</startDate>
       
<ins>0-100000-USD-0</ins>
              <roommeal duration="7">104623691678</roommeal>
              <roommealb duration="1">104625776787</roommealb>
              <roommeala duration="1">104625776787</roommeala>
       
<sr>43UpM9e04HAuj04HAu+04HAvK04HAvf08YLk208YLkN08YLki08YLk*0CpWZQ0CpWZl0CpWa10CpWaM0H1hOo0H1hP40H1hPP0H1hPk</sr>
             <otv>102510005340</otv>
               <persons>
         
<person>
           
<birthday>11.06.1982</birthday>
                     <firstName>IVAN</firstName>
                     <lastName>IVANOV</lastName>
                     <citizenship>100410000050</citizenship>
                     <passportSeries>62</passportSeries>
                     <passportNumber>12345678</passportNumber>
                     <passportTill>11.11.2016</passportTill>
                     <email>mail@mail.ru</email>
                     <phone>89993334444</phone>
                     <gender>m</gender>
                 </person>
                 
              </persons>
      </group>
     

    </groups>
  </tour>
  …
</tours>

Формат ответа:

<tours>
  <tour clientTourId="2">
   
<id>104400000842366804</id>
       <number>214150198</number>
   </tour>
  …
</tours>

id — внутернний идентификатор заявки (тура) в системе Библио-Глобус.
number — номер заявки

Обработка запроса прерывается, если найдена хотя бы одна ошибка. В этом случае в ответ посылается XML вида:

<errors clientTourId="2">
  <error>126</error>
  <info>104400000842366804</info>
</errors>

Некоторые ошибки снабжаются тегом <info>, в который записывается дополнительная информация, соответствующая ошибке.

3.3. Добавление информации о заказчике тура

Данный запрос нужно выполнять, если необходимо передать данные о заказчике тура для системы ГАИС ЭП (Электронная путевка)

POST запрос посылается на следующий адрес

https://www.bgoperator.ru/zayavkaapi?idTour=<id заявки>&action=addCustomerInfo

Формат запроса:

<customer>
    <contractNumber>123456</contractNumber>
    <contractData>31.12.2022</contractData>
    <contractCost>71500</contractCost>
    <firstName>IVAN</firstName>
    <lastName>IVANOV</lastName>
    <middleName>IVANOVICH</middleName>
    <address>Moscow, Pokrovka, 35</address>
    <phone>89997777777</phone>
    <email>mail@mail.ru</email>
    <citizen>100410000050</citizen>
    <passportSeries>4444</passportSeries>
    <passportNumber>666666</passportNumber>
</customer>

customer / contractNumber — Номер договора
customer / contractData — Дата договора в формате DD.MM.YYYY
customer / contractCost — Цена договора в рублях, целое число
customer / firstName — Имя
customer / lastName — Фамилия
customer / middleName — Отчество, необязательное поле
customer / address — Адрес регистрации
customer / phone — Телефон, необязательное поле
customer / email — email, необязательное поле
customer / citizen — Идентификатор страны гражданства в системе Библио-Глобус
customer / passportSeries — Серия паспорта
customer / passportNumber — Номер паспорта

Формат ответа:

<status>OK</status>


3.4. Получение информации о заказчике тура

GET запрос посылается на следующий адрес

https://www.bgoperator.ru/zayavkaapi?idTour=<id заявки>&action=showCustomerInfo

Формат ответа:

<tours>
  <customer tourId="id заявки">
      <contractNumber>123456</contractNumber>
      <contractData>31.12.2022</contractData>
      <contractCost>71500</contractCost>
      <firstName>IVAN</firstName>
      <lastName>IVANOV</lastName>
      <middleName>IVANOVICH</middleName>
      <address>Moscow, Pokrovka, 35</address>
      <phone>89997777777</phone>
      <email>mail@mail.ru</email>
      <citizen>100410000050</citizen>
      <passportSeries>4444</passportSeries>
      <passportNumber>666666</passportNumber>
  </customer>
</tours>

customer / contractNumber — Номер договора
customer / contractData — Дата договора
customer / contractCost — Цена договора
customer / firstName — Имя
customer / lastName — Фамилия
customer / middleName — Отчество
customer / address — Адрес регистрации
customer / phone — Телефон
customer / email — email
customer / citizen — Идентификатор страны гражданства в системе Библио-Глобус
customer / passportSeries — Серия паспорта
customer / passportNumber — Номер паспорта


4. Аннуляция заявки

Аннуляция выполняется в два этапа. Первый этап - получение суммы фактических затрат на аннуляцию и специального параметра - ticket, необходимого для проведения аннуляции. Если аннуляция возможно без фактических затрат, то в ответе вернется только ticket. Оба запроса - это GET запросы.

4.1. Первый запрос: получение фактических затрат и ticket

Запрос посылается на следующий адрес

https://www.bgoperator.ru/zayavkaapi?idTour=<id заявки>&action=canceltour

Формат ответа:

<tours>
  
<tour>
    <sum>
      <currency>EUR</currency>
      <amount>20</amount>
          <ticket>39c1cb27c6306f0ff79ec605dc12ea8e</ticket>
    </sum>
  </tour>
</tours>

currency — валюта фактических затрат на аннуляцию
amount — сумма фактических затрат на аннуляцию
ticket — параметр, необходимый в следующем запросе на аннуляцию

4.2. Второй запрос: аннуляция

Запрос посылается на следующий адрес

https://www.bgoperator.ru/zayavkaapi?idTour=<id заявки>&action=canceltour&confirm=yes&ticket=<ticket из предыдущего ответа>

Формат ответа:

<status>OK</status>

5. Изменение контактных данных туристов в заявке

POST запрос посылается на следующий адрес

https://www.bgoperator.ru/zayavkaapi?idTour=<id заявки>&action=addContactInfo

Формат запроса:

<persons>
  
<person id="102300000815141601">
    <email>test@mail.ru</email>
    <phone>+7 916 1234567</phone>

  </person>

  <person id="...">
    ...
  </person>
</persons>

person id
— id туриста в заявке, который можно получить из запроса showtransfers (п. 6.1).

В теле запроса можно указать более одного туриста.

Формат ответа:

<status>OK</status>

6. Добавление паспортных данных в заявку

Добавление паспортных данных возможно только, если данные для указанного туриста не заполнены. Паспортные данные - номер, серия и дату окончания действия паспорта - нужно укзаывать сразу все. Без указания хотя бы одного поля паспортных данных запрос будет считаться ошибочным.

POST запрос посылается на следующий адрес

https://www.bgoperator.ru/zayavkaapi?idTour=<id заявки>&action=addPassport

Формат запроса:

<persons>
  
<person id="102300000815141601">
    <passportSeries>62</passportSeries>
    <passportNumber>1234567</passportNumber>

    <passportTill>11.12.2020</
passportTill>
  <person id="...">
    ...
  </person>
</persons>

person id
— id туриста в заявке, который можно получить из запроса showtransfers (п. 6.1).

В теле запроса можно указать более одного туриста.

Формат ответа:

<status>OK</status>


7. Добавление трансферов в заявку

Добавление или изменение трансферов в заявку происходит в три этапа. На каждом этапе используются данные из предыдущего этапа. Первый этап - это получение возможных трансферов для каждого туриста в заявке. Второй этап - это получение так называемых полетных данных. Полетные данные - это id рейса и информация о рейсе в формате человекочитаемой строки. Третий этап - это непосредственно добавление трансферов на основе информации, полученной на первых двух этапах.

Изменение трансферов по запросам не отличается от добавления трансферов в заявку. Существующие трансферы будут заменены на новые, указанные в запросе.

7.1. Первый запрос: получение доступных трансферов

Данный запрос позвляет получить доступные трансферы для каждого туриста в заявке. В общем случае трансфер характеризуется датой отправления, точкой отправления и точкой прибытия.

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

Формат запроса:

GET запрос посылается на следующий адрес

https://www.bgoperator.ru/zayavkaapi?idTour=<id заявки>&action=showtransfers

Формат ответа:

<tours>
  <persons tourId="
104400000817245901">
    <person id="102300000817246001">
     
<firstName>JOHN</firstName>
     
<lastName>DOE</lastName>
          <birthday>11.06.1982</birthday>
          <transferSlot dir="to" point="102640012614" ptype="h" date="14.03.2015">
              <variant id="103825996892" price="80.00" currency="USD" ttype="ind" point="103940001962" pid="103840004162" ptype="a">ШАРМ ЭЛЬ ШЕЙХ(аэропорт) - Шарм-эль-шейх(отель) / minibus 10</roommeal>
              ...
          </transferSlot>
          <transferSlot dir="from" point="102640012614" ptype="h" date="15.03.2015">
              <variant id="103825996895" price="80.00" currency="USD" ttype="ind" point="103940001962" pid="103840004167" ptype="a">Шарм-эль-шейх(отель) - ШАРМ ЭЛЬ ШЕЙХ(аэропорт) / minibus 10</roommeal>
              ...
          </transferSlot>
      </person>
     
   </persons>
</tours>

persons tourId — id заявки в системе Библио-Глобус. В данном теге для каждого туриста - <person> - указываются возможные трансферы.
persons / person id — id туриста в заявке в системе Библио-Глобус.
persons / person / firstName — имя туриста.
persons / person / lastName — фамилия туриста.
persons / person / birthday — дата рождения туриста в формате DD.MM.YYYY.
persons / person / transferSlot — трансферный слот описывает возможность добавления трансфера. Внутри данного тега содержатся возможные варианты трансферов. Атрибуты тега <transferSlot> задают описание одной из точек трансфера.
persons / person / transferSlot dir — направление трансфера. "to" - трансфер к точке, задаваемой атрибутами тега <transferSlot>. "from" - трансфер от точки, задаваемой атрибутами тега <transferSlot>
persons / person / transferSlot point — id точки трансфера. Точка может быть отелем, аэропортом или городом.
persons / person / transferSlot ptype — тип точки трансфера, задаваемой атрибутом point. "h" - отель, "a" - аэропорт, "c" - город.
persons / person / transferSlot date — дата трансфера.
persons / person / transferSlot / variant — данный тег задает оидн из возможных вариантов трансфера и описывает вторую точку трансфера. Содержимое тега есть человекочитаемое название трансфера.
persons / person / transferSlot / variant id — id варианта трансфера.
persons / person / transferSlot / variant price — стоимость варианта трансфера.
persons / person / transferSlot / variant currency — валюта стоимости варианта трансфера.
persons / person / transferSlot / variant ttype — типа варианта трансфера. "ind" - индивидуальный трансфер, "grp" - групповой трансфер.
persons / person / transferSlot / variant point — id точки трансфера. Точка может быть отелем, аэропортом или городом.
persons / person / transferSlot / variant ptype — тип точки трансфера, задаваемой атрибутом point. "h" - отель, "a" - аэропорт, "c" - город.
persons / person / transferSlot / variant pid — содержимое данного атрибута считается системным, но обязательным для заполнения при добавлении/изменении трансферов в заявке с пакетным туром (НЕ туром без перелета).

7.2. Второй запрос: получение полетных данных

Для того, чтобы добавить трансфер необходимо знать полетные данные.

Формат запроса:

GET запрос посылается на следующий адрес

https://www.bgoperator.ru/zayavkaapi?idTour=<id заявки>&action=showflightdata&idAir=<id аэропорта>&dt=<дата трансфера>&dir=<прилет/вылет в/из аэропорта>

Здесь:

id аэропорта — это id точки с ptype="a" из ответа на предыдущий запрос. Например, это id из point="103940001962".

дата трансфера — это дата date из тега <transferSlot>. Формат DD.MM.YYYY.

прилет/вылет в/из аэропорта — "a" (arrival) в случае трансфера из аэропорта (прилет). "d" (departure) в случае трансфера в аэропорт (вылет).

Формат ответа:

<tours>
  <flights
idAirport="103940001962" date="14.03.2015" dir="a">
    <flight id="103162337682">UN 651 (Y)#14.03.2015#10:45-14:25</flight>
     
   </flights>
</tours>

flights
idAirport — id аэропорта, переданного, как параметр в запросе.
flights date — дата трансфера, переданного, как параметр в запросе.
flights dir — "a" (arrival) в случае трансфера из аэропорта (прилет). "d" (departure) в случае трансфера в аэропорт (вылет).
flights / flight — содержимое тега есть человекочитаемая информация о рейсе. Эта строка и называется полетными данными.
flights / flight id — id рейса в системе Библио-Глобус.

7.3. Третий запрос: добавление трансферов в заявку

Запрос на добавление/изменение трансферов в заявку - это POST запрос, посылаемый на следующий адрес:

https://www.bgoperator.ru/zayavkaapi?idTour=<id заявки>&action=addtransfers

Формат запроса:

<persons tourId="104400000817245901">
  <person id="102300000817246001">
        <transferSlot date="14.03.2015" variantId="103840004178" pointFrom="103940001962" pointTo="102640012614" dir="to" id="1" pid="103840004162">
            <flight id="103162337682">UN 651 (Y)#14.03.2015#10:45-14:25</flight>
        </transferSlot>
        <transferSlot date="15.03.2015" variantId="103840004180" pointFrom="102640012614" pointTo="103940001962" dir="from" id="2" pid="103840004167">
            <flight id="103139177213">SU2075 (Y)#18.06.2014#19:15-00:05</flight>
        </transferSlot>
    </person>
   
</persons>

persons tourId — id заявки в системе Библио-Глобус. В данном теге для каждого туриста - <person> - указываются возможные трансферы.
persons / person id — id туриста в заявке в системе Библио-Глобус.
persons / person / transferSlot variantId — id выбранного варианта трансфера для данного трансферного слота.
persons / person / transferSlot date — дата трансфера.
persons / person / transferSlot pointFrom — id точки отправления. Берется из атрибута point из ответа за запрос из п. 6.1.
persons / person / transferSlot pointTo — id точки прибытия. Берется из атрибута point из ответа за запрос из п. 6.1.
persons / person / transferSlot dir — направление трансфера. "to" - трансфер к точке, задаваемой атрибутами тега <transferSlot>. "from" - трансфер от точки, задаваемой атрибутами тега <transferSlot>
persons / person / transferSlot pid — системный атрибут, который необходимо заполнять "как есть" при добавлении/изменении трансферов в заявке с пакетным туром (НЕ туром без перелета).
persons / person / transferSlot id — пользовательский атрибут, который можно заполнять на стороне клиента для анализа возможных ошибок в ответе.
persons / person / transferSlot / flight — данный тег со всеми атрибутами необходимо заполнять в точности так, как он приходит в ответе в п. 6.2.

Формат ответа:

В ответ на добаление/изменение трансферов приходит такая же информация, что и на запрос на создание заявки. А именно новая стоимость заявки. См. пункт 3.2.

8. Создание заявки на покупку авиабилетов

Создание заявки происходит в три этапа.
Первый этап - это получение данных о доступных для покупки авиабилетов рейсах в формате JSON и всех необходимых значений параметров. Эти параметры необходимо использовать при создании заявки на покупку авиабилетов. Прочитать про выгрузку данных о доступных рейсах можно тут.

Второй этап - это запрос на получение цены заявки с указанными параметрами. После запроса цены заявка в системе Библио-Глобус не создается. В ответ на такой запрос система вернет стоимость заявки. Если клиента устраивает цена, то необходимо сделать второй запрос.

Третий этап - запрос на создание заявки.
Заявка на покупку авиабилетов при безошибочной операции создается в состоянии "Подтверждено"

Оба запроса (из второго и третьего этапов) делаются с одним и тем же телом запроса за исключением второго запроса: здесь добавляется еще один элемент (см. ниже).

Оба запроса (из второго и третьего этапов) необходимо посылать на следующий адрес:

https://www.bgoperator.ru/zayavkaapi?prx=<значение prx из JSON первого этапа>&action=createaviatour

Важно: протокол https, хост www.bgoperator.ru должны быть указаны. Параметры prx и action должны быть указаны именно в таком порядке. Значение параметра prx необходимо брать из JSON, полученного в первом этапе. Без выполнения этих требований запрос к API не будет обработан.

Важно: в одном HTTP POST запросе к API могут быть вместе указаны запросы обоих типов. Другими словами одним запросом можно запросить цену для одного перелета, а для другого - создание заявки.

8.1. Первый запрос: получение стоимости заявки

Запрос цены может содержать описание нескольких маршрутов. В одной заявке (тег <tour>) допускается указание только одной группы пассажиров, следующих по одному маршруту, который может состоять из перелетов в один конец, либо из перелетов туда-обратно, в том числе с пересадками.

Формат запроса:

В данном запросе указан маршрут перелета Москва-Сочи-Москва рейсами FV5503/FV5504

<tours>
<tour clientTourId="1">
  <group>
    <fls>
      <fl>
        <cab>Y</cab>
         <ac>FV</ac>
         <fln>5503</fln>
         <dep>
          <fd>03.03.2017</fd>
          <ft>16:10:00</ft>
          <cc>VKO</cc>
         </dep>
         <arr>
          <fd>03.03.2017</fd>
          <ft>18:50:00</ft>
          <cc>AER</cc>
         </arr>
      </fl>
      <fl>
        <cab>Y</cab>
        <ac>FV</ac>
        <fln>5504</fln>
        <dep>
         <fd>10.03.2017</fd>
         <ft>20:05:00</ft>
         <cc>AER</cc>
        </dep>
        <arr>
         <fd>10.03.2017</fd>
         <ft>22:40:00</ft>
         <cc>VKO</cc>
        </arr>
      </fl>
     </fls>
     <persons>
      <person>
       <birthday>11.06.1988</birthday>
       <firstName>Ivan</firstName>
       <lastName>Ivanov</lastName>
       <citizenship>100410000050</citizenship>
       <passportSeries>70</passportSeries>
       <passportNumber>1234567</passportNumber>
       <passportTill>11.11.2022</passportTill>
       <gender>m</gender>
      </person>
      <person>
       <birthday>22.03.1991</birthday>
       <firstName>Daria</firstName>
       <lastName>Ivanova</lastName>
       <citizenship>100410000050</citizenship>
       <passportSeries>75</passportSeries>
       <passportNumber>1234567</passportNumber>
       <passportTill>11.11.2022</passportTill>
       <gender>f</gender>
      </person>
     </persons>
     <contactEmail>test@email.ru</contactEmail>
     <contactPhone>74957656565</contactPhone>
   </group>
 </tour>
</tours>


Важно: все данные по перелетам должны передаваться из данных, получаемых в первом этапе.

group / fls / fl / cab — класс перелета (Y - эконом, C - бизнес)
group / fls / fl / ac — код авиакомпании, соответствует значению ключа "ac" в объекте рейса в ответном JSON первого этапа
group / fls / fl / fln — номер рейса, соответствует значению ключа "fn" в объекте рейса в ответном JSON первого этапа
group / fls / fl / dep / fd — дата вылета, соответствует значению ключа "d" в объекте "dep" объекта рейса в ответном JSON первого этапа
group / fls / fl / dep / ft — время вылета, соответствует значению ключа "t" в объекте "dep" объекта рейса в ответном JSON первого этапа
group / fls / fl / dep / cc — IATA код аэропорта вылета,  соответствует значению ключа "n" в объекте "dep" объекта рейса в ответном JSON первого этапа
group / fls / fl / arr / fd — дата прибытия, соответствует значению ключа "d" в объекте "arr" объекта рейса в ответном JSON первого этапа
group / fls / fl / arr / ft — время прибытия, соответствует значению ключа "t" в объекте "arr" объекта рейса в ответном JSON первого этапа
group / fls / fl / arr / cc — IATA код аэропорта прибытия,  соответствует значению ключа "n" в объекте "arr" объекта рейса в ответном JSON первого этапа
group / persons / person / birthday — дата рождения пассажира в формате DD.MM.YYYY.
group / persons / person / firstName — имя пассажира
group / persons / person / lastName — фамилия пассажира
group / persons / person / middleName — отчество пассажира, необязательное поле
groups / group / persons / person / notHaveMiddleName — признак отсутствия отчества, необязательное поле
Важно: для заявок по России или Абхазии необходимо указывать отчество туриста или признак отсутствия отчества.
group / persons / person / passportSeries — серия паспорта/св-ва о рождении пассажира
group / persons / person / passportNumber — номер паспорта/св-ва о рождении пассажира
group / persons / person / passportTill — дата окончания действия загран. паспорта туриста в формате DD.MM.YYYY (заполняется для загран.паспорта, для общегражданского паспорта передается пустым)
group / persons / person / gender — пол в формате m (мужской) или f (женский)
group / persons / person / citizenship —идентификатор страны гражданства пассажира в системе Библио-Глобус.

Важно! Правила по заполнению паспортных данных пассажиров.

Фамилия и имя:

Серия и номер паспорта:

Формат ответа:

<tours>
   <tour clientTourId ="1">

   <group>
      <sum>
         <currency>RUB</currency>
         <fullamount>4446<fullamount>
      </sum>

   </group>
   </tour>
</tours>

 

currency — валюта, в которой указана стоимость заявки
fullamout — полная стоимость заявки

Обработка запроса прерывается, если найдена хотя бы одна ошибка. В этом случае в ответ посылается XML вида:

<errors clientTourId="2">
  <error>165</error>
</errors>

8.2. Второй запрос: подтверждение заявки

Запрос на создание заявки оформляется точно так же, как и запрос на получение цены. Для каждого тега <tour>, для которого нужно создать заявку, необходимо в любое место тега <tour> вставить тег <confirm/>. После обработки этого запроса в личном кабинете агентства на сайте туроператора Библио-Глобус в списке заявок появится созданная заявка в статусе "Подтверждено".

Формат запроса:

<tours>
<tour clientTourId="1">

<confirm/>
  <group>
    <fls>
      <fl>
        <cab>Y</cab>
         <ac>FV</ac>
         <fln>5503</fln>
         <dep>
          <fd>03.03.2017</fd>
          <ft>16:10:00</ft>
          <cc>VKO</cc>
         </dep>
         <arr>
          <fd>03.03.2017</fd>
          <ft>18:50:00</ft>
          <cc>AER</cc>
         </arr>
      </fl>
      <fl>
        <cab>Y</cab>
        <ac>FV</ac>
        <fln>5504</fln>
        <dep>
         <fd>10.03.2017</fd>
         <ft>20:05:00</ft>
         <cc>AER</cc>
        </dep>
        <arr>
         <fd>10.03.2017</fd>
         <ft>22:40:00</ft>
         <cc>VKO</cc>
        </arr>
      </fl>
     </fls>
     <persons>
      <person>
       <birthday>11.06.1988</birthday>
       <firstName>Ivan</firstName>
       <lastName>Ivanov</lastName>
       <citizenship>100410000050</citizenship>
       <passportSeries>70</passportSeries>
       <passportNumber>1234567</passportNumber>
       <passportTill>11.11.2022</passportTill>
       <gender>m</gender>
      </person>
      <person>
       <birthday>22.03.1991</birthday>
       <firstName>Daria</firstName>
       <lastName>Ivanova</lastName>
       <citizenship>100410000050</citizenship>
       <passportSeries>75</passportSeries>
       <passportNumber>1234567</passportNumber>
       <passportTill>11.11.2022</passportTill>
       <gender>f</gender>
      </person>
     </persons>
     <contactEmail>test@email.ru</contactEmail>
     <contactPhone>74957656565</contactPhone>
   </group>
 </tour>
</tours>

Формат ответа:

<tours>
   <tour clientTourId ="1">
      <number>877200530</number>
      <id>104400000810006050</id>
      <price>4045.0</price>
   </tour>
</tours>


tour / number — номер заявки в системе Библио-Глобус
tour / id — id  заявки в системе Библио-Глобус
tour / price — цена заявки

Обработка запроса прерывается, если найдена хотя бы одна ошибка создания заявки. В этом случае в ответ посылается XML вида:

<tours>
   <tour clientTourId ="1">
      <error>
         <code>AV160</code>
         <descr>duplicate booking 877200000</descr>
         <repeat>0</repeat>
      </error>
   </tour>
</tours>

group / fls / fl / cab — класс перелета (Y - эконом, C - бизнес)

error / code — код ошибки
error / descr — краткое описание ошибки
error / repeat — повторять отправку запроса позже: 0 - нет, 1 - да.

9. Добавление сообщения в заявку

POST запрос посылается на следующий адрес

https://www.bgoperator.ru/zayavkaapi?idTour=<id заявки>&action=addMessage

Формат запроса:

<messages>
 <message>

  <text>Прошу добавить трансфер</text>
  <dep>6</dep>
 </message>
</messages>

text — Сообщение
dep — Департамент

Номера департаментов:

2 - Визовый отдел
3 - Отдел оплат
5 - Отдел выдачи документов
6 - Отдел бронирования
7 - Авиа отдел
8 - Отдел страхования
9 - Возврат денежных средств
10 - Отдел билетный-онлайн
11 - Отдел РЖД

Формат ответа:

<status>OK</status>

10. Получение сообщений из заявки

GET запрос посылается на следующий адрес

https://www.bgoperator.ru/zayavkaapi?idTour=<id заявки>&dateTime=<дата со временем>&action=showmessages

dateTime - Дата, от которой показываются сообщения

Формат ответа:

<tours>
  <messages tourId="id заявки">
    <message id="id сообщения">
      <dateTime>12.07.2023 12:38:38</dateTime>
      <user>Агентство</user>
      <text>Прошу добавить трансфер</text>
      <dep>6</dep>
    </message>
  </messages>
</tours>


message / dateTime — Дата создания сообщения
message / user — Имя пользователя
message / text — Сообщение
message / dep — Департамент, присутствует только если сообщение от Агентсва/Клиента

11. Коды ошибок

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

101 - Создание заявки невозможно, общая ошибка
102 - Отсутствует или незаполнен один из двух тегов comissionId или templateId
103 - Отказ в доступе к api из-за некорректного логина или пароля
104 - Заполнены и comissionId, и templateId. Заполнено должно быть что-то одно
105 - Указанный templateId не существует
106 - Указанный comissionId не существует
107 - Не указана страна (countryId)
108 - Указана некорректная страна (countryId)
109 - Не указана валюта (currency)
110 - Указана некорректная валюта (currency)
111 - Указана неверная дата начала тура группы (startDate)
112 - Указана неверная дата конца тура группы (endDate)
113 - Указана неверная дата рождения (birthday)
114 - Не указан тип номера с питанием (roommealId)
115 - Указан некорректный тип номера с питанием (roommealId)
116 - Не указана длительность (атрибут duration тега roommealId)
117 - Указана некорректная длительность (атрибут duration тега roommealId)
118 - Не указан параметр sr
119 - Указан некорректный параметр sr
120 - Невозможно подобрать рейсы
121 - Невозможно подобрать вариант размещения
122 - Не указано гражданство (citizenship)
123 - Указано некорректное гражданство (citizenship)
124 - Указан неверный срок действия паспорта (passportTill)
125 - Невозможно посчитать стоимость тура
126 - Обнаружен дубль бронирования. В тег <info> добавляется внутренний идентификатор тура-дубля.
127 - Не указано ни одного проживания
128 - Превышен лимит создания заявок. Создание заявки на данный момент невозможно
129 - Заявка не найдена
130 - Невозможно прочитать/создать трансферы. Общая ошибка
131 - Неверная комбинация атрибутов date, pointTo, pointFrom
132 - Неверный variantId (id трансфера)
133 - Неверный комбинация атрибутов date, pointTo, pointFrom для данного person. В тег <info> добавляется id туриста
134 - Не указан variantId (id трансфера)
135 - Не указан id заявки
136 - Не указан id туриста
137 - Турист не найден
138 - Не указан pointTo
139 - Указан несуществующий pointTo
140 - Не указан pointFrom
141 - Указан несуществующий pointFrom
142 - Не указан id рейса
143 - Рейс не найден
144 - Неверный формат даты проживания в трансферном слоте
145 - Неверный формат направления трансфера dir
146 - Неверный формат даты в полётных данных
147 - Неверный формат полётных данных
148 - Уже нельзя изменить трансфер (ограничение по времени)
149 - Не указан pid у тега variant
150 - Неверный pid у тега variant
154 - Неверный формат пола
155 - Необходимо заполнить хотя бы что-то из контактной информации
156 - Email не соответствует формату
157 - Аннуляция невозможна
158 - Заявка уже аннулирована
159 - Имя не заполнено
160 - Фамилия не заполнена
161 - Номер или серия паспорта не заполнены
163 - Паспортные данные уже заполнены
164 - Не указаны рейсы
165 - Некорректная дата вылета рейса
166 - Не указаны туристы
167 - Не указан код аэропорта одного или нескольких рейсов
168 - Некорректная серия ЗП/паспорта/св-ва о рождении одного или нескольких туристов, либо неверный документ для указанного возраста
169 - Некорректный номер ЗП/паспорта/св-ва о рождении одного или нескольких туристов
170 - Количество групп более одной недопустимо для авиа-заявок
171 - Недопустимые символы. Фамилия туриста при бронировании перелета за рубеж должна содержать только латинские буквы
172 - Недопустимые символы. Фамилия туриста при бронировании перелета по России должна содержать либо только латинские буквы, либо только кириллицу
173 - Недопустимые символы. Имя туриста при бронировании перелета за рубеж должно содержать только латинские буквы
174 - Недопустимые символы. Имя туриста при бронировании перелета по России должно быть заполнено аналогично фамилии: если фамилия заполнена латиницей - имя должно содержать только латинские буквы, если фамилия заполнена кириллицей - имя должно содержать только кириллицу
175 - Не заполнен контактный телефон для группы
176 - Некорректно заполнен контактный телефон для группы, допустимы только цифры без пробелов
177 - Не заполнен контактный email для группы
178 - Некорректно заполнен контактный email для группы
179 - Не заполнен срок действия паспорта одного или нескольких туристов (passportTill)
180 - Срок действия паспорта одного или нескольких туристов истекает раньше конца поездки
181 - Слишком мало туристов в группе
182 - Слишком много туристов в группе
183 - Не заполнен текст сообщения
184 - Не заполнен департамент
185 - Ошибка получения сообщений
186 - Ошибка создания сообщений
188 - Недопустимые символы. Отчество туриста при бронировании перелетов за рубеж должно содержать только латинские буквы
189 - Недопустимые символы. Отчество туриста при бронировании перелета по России должно быть заполнено аналогично фамилии: если фамилия заполнена латиницей - отчество должно содержать только латинские буквы, если фамилия заполнена кириллицей - отчество должно содержать только кириллицу
190 - Отчество не заполнено
191 - Не заполнен email туриста
192 - Некорректный email туриста
193 - Не заполнен телефон туриста
194 - Некорректный телефон туриста
195 - Турист находится в списке нежелательных клиентов отеля
196 - Некорректный параметр dateTime
197 - Не заполнен номер договора
198 - Не заполнена дата договора
199 - Неверный формат даты договора
200 - Не заполнена цена договора
201 - Неверный формат цены договора
202 - Не заполнен адрес заказчика
203 - Указана неверная страна для прайс-листа (templateId)
204 - Указана неверная страна для комиссии (comissionId)
205 - Ошибка добавления информации о заказчике тура
206 - Ошибка получения информации о заказчике тура

При создании заявки на покупку авиабилетов возможны следующие ошибки:

AV141 - unknown error: общая ошибка создания заявки
AV142 - obsolete data: данные устарели, создание заявки невозможно
AV143 - incorrect passport data: неверные паспортные данные
AV144 - connection faiulure: нет соединения с удаленным сервером
AV145 - data temporary unavailable: данные временно недоступны
AV146 - system error: ошибка системы
AV147 - quota depleted: квота исчерпана
AV150 - cached duplicate booking XXXXXXXXXX: повторный запрос, дубликат бронирования, заявка номер XXXXXXXXXX
AV151 - cached obsolete data: повторный запрос с устаревшими данными, создание заявки невозможно
AV154 - cached system error: повторный запрос, ошибка системы
AV155 - cached unknown error: повторный запрос, общая ошибка создания заявки
AV160 - duplicate booking XXXXXXXXXXXX: дубликат бронирования, заявка номер XXXXXXXXXX