Выгрузка цен туристического оператора «Библио-Глобус» в формате JSON

1. Доступ к API

1.1. Получение логина и пароля

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

1.2. Авторизация при работе с API Библио-Глобус

Авторизация устроена следующим образом: если при очередном запросе API выдает ошибку 401, то нужно получить свежие значения COOKIE с именами A1, Z1 и L, отправив POST-запрос к https://login.bgoperator.ru/auth с POST-параметрами login и pwd. Значения COOKIE A1, Z1 и L необходимо передавать дальше в запросы к сервисам. При этом COOKIE с именем Z1 будет меняться при каждом запросе к сервисам - его нужно принимать и передавать в следующий запрос.

1.3. Сжатие данных

Во все запросы необходимо добавлять заголовок Accept-Encoding: gzip. Без него в ответе будет возвращаться статус 406.

2. Выгрузка и синхронизация справочников

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

Для выгрузки справочников необходимо сделать следующие запросы:
http://export.bgoperator.ru/yandex?action=countriesСправочник стран
http://export.bgoperator.ru/auto/jsonResorts.jsonСправочник городов
http://export.bgoperator.ru/yandex?action=hotelsJsonСправочник отелей. Если в запрос добавить параметр id, то информация вернётся только по отелю с указанным id
http://export.bgoperator.ru/yandex?action=vrСправочник вариантов размещения в номере

Формат ответа (для справочников стран, городов и вариантов размещения в номере):
  [
    {
      "id":"100410000051",
      "title_ru":"Таиланд",
      "title_en":"Thailand",
      "code":"TH",
      "town_from":"100510000826#100510397223#100510015827#100510397359#100510397310#100574750001#100510345651#100510324872#100510306889#100510345650#100510397233#100510521482#100510834134#100510001075#100510520127#100510519973#100510397287#100510000892#100510397251#100510000863#100510397178#100568421754#100510397261#100510397299#100510397348",
      "alpha3":"THA",
      "tours":"Да"
    },
    ...
  ]

id — идентификатор объекта в системе

Атрибуты для загрузки:
Страныtitle_ru – русское название страны
title_en – английское название страны
code – код страны
town_from - список идентификаторов городов вылета в данной стране (разделены #)
alpha3 - трехбуквенный код страны
tours - признак того, что в данную страну есть туры (в этом случае атрибут равен Да)
site_cur - валюта страны на сайте Библио-Глобус
Городаtitle_ru – русское название города
title_en – английское название города
country – id страны города
airports – данный атрибут передается в случае, когда в городе есть аэропорт
ap_name – английское название аэропорта
code – iata код аэропорта
Варианты размещенияname – название варианта размещения
name_full – расшифрованное название варианта размещения
AD_number – количество взрослых
CHD_number – количество детей
infnum – количество младенцев

Формат ответа (для справочника отелей):
[
  {
    "key" : "102631286815",
    "name" : "HOLIDAY INN DUBAI AL BARSHA",
    "stars" : "4",
    "countryKey" : "100410510097",
    "cityKey" : "100510535941"
  },
  ...
]

key — идентификатор объекта отеля
name — название отеля
stars — звездность отеля
countryKey — идентификатор страны отеля
cityKey — идентификатор города отеля
inPr - признак того, что по отелю есть действующие цены (значение 0 - нет, 1 - да). Данный атрибут выгружается только при добавлении в вызов GET-параметра &id=<id отеля>.
Если id не передается, то возвращаются только те отели, у которых inPr равен 1.

2.1. Выгрузка курсов валют

Для выгрузки курсов валют, необходимо выполнить следующий запрос:

http://export.bgoperator.ru/auto/auto-kurs.xml

Формат ответа:
<currencies>
  <rate code="EUR" value="46.81" />
  <rate code="USD" value="34.54" />
  <BYR>
    <rate code="EUR" value="13958"/>
    <rate code="USD" value="10231"/>
    <rate code="RUR" value="285"/>
  </BYR>
  <UAH>
    <rate code="EUR" value="16.52"/>
    <rate code="USD" value="12.18"/>
  </UAH>
</currencies>
Элементы внутри тэгов <BYR> и <UAH> содержат курсы к белорусскому рублю и украинской гривне соответственно. Элементы вне указанных тэгов содержат курсы валют к рублю.

3. Выгрузка списка прайс-листов, доступных для загрузки в формате JSON

3.1. Выгрузка списка прайс-листов

Общий список цен на туры Библио-Глобус поделен на прайс-листы. Каждый прайс-лист характеризуется маршрутом, городом вылета, списком доступных длительностей туров и датой вылета. В JSON может быть выгружен список прайс-листов с фиксированным направлением (страной) и городом вылета.

Пример:
http://export.bgoperator.ru/yandex?action=files&flt=100410000049&flt2=100510000863&xml=11
где 100410000049 — идентификатор страны Кипр из справочника стран
100510000863 — идентификатор города Москва из справочника городов

Формат ответа JSON:
{
  "entries":[
    {
      "date":"23.08.2014",
      "route":"Туры на Кипр <b>Трансаэро (аэропорт Пафос \/ Ларнака)<\b>",
      "duration":"/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28",
      "url":"http://export.bgoperator.ru/partners?action=price&tid=211&flt=100410000049&flt2=100510000863&id_price=121132934133&data=23.08.2014&xml=11",
      "id_price":"121132934133",
      "minprice":"281",
      "minindex":"1.35",
      "imp":"1",
      "cur":"EUR",
      "rc":"1"
    },
    ...
  ]
}

date — дата вылета
route — маршрут прайс-листа и авиакомпания
duration — длительности туров в прайс-листе
url — ссылка на прайс-лист в формате JSON для загрузки
stop — наличие этого элемента означает, тур находится в стоп-листе. minprice — минимальная ненулевая цена из прайс-листа за одного человека с вариантом размещения "2 взрослых"("2 AD")
minindex — отношение min_price текущего прайс-листа к наименьшей min_price из всех прайс-листов выгружаемого списка
cur — валюта прайс-листа
imp — флаг (1/0); значением 1 помечены приоритетные прайс-листы Библио-Глобус
rc — флаг (1/0); значением 1 помечены регулярные классы

3.2. Выгрузка соответствия прайс-листов и курортов (городов)

Ссылку на прайс-лист можно формировать самостоятельно. Пример ссылки: http://export.bgoperator.ru/partners?action=price&tid=211&flt=100410000049&flt2=100510000863&id_price=121120015746&data=10.03.2011&xml=11.
Ссылка содержит параметр id_price - прайс-лист. Для получения соответствия курортов и id_price необходимо выполнить следующий запрос:
http://export.bgoperator.ru/yandex?action=jsonpriceresorts&data=10.10.2014&flt2=100510000863.
Обязательные параметры: data - указывает дату, на которую действует соответствие, flt2 - город вылета.
Предлагается следующая процедура работы с этим сервисом.

  1. Для каждого города вылета и даты вылета кэшировать соответствие курортов и прайс-листов: http://export.bgoperator.ru/yandex?action=jsonpriceresorts&data=10.10.2014&flt2=100510000863.
  2. Для того, чтобы найти прайс-листы, соответствующие отелю, необходимо по справочнику определить город отеля и по городу отеля определить прайс-листы (из кэша или запросом, если соответствие еще не закэшировано).
  3. Кэш необходимо очищать каждый день.

Формат ответа (JSON):

{"id_price":[
 {"id":"121174225779", "imp":"Нет", "res": ["100574180976"]},
 {"id":"121174217697", "imp":"Нет", "res": ["100574180976"]},
]}

id — идентификатор прайс-листа
imp — флаг (Да/Нет); зачением Да помечены приоритетные прайс-листы Библио-Глобус
res — массив идентификаторов курортов, которые есть в данном прайс-листе
t — описание прайс-листа (отображается, если в запросе указан параметр &title=1)
a — авиакомпания прайс-листа (отображается, если в запросе указан параметр &title=1)

3.3. Выгрузка списка городов вылета и стран туров

Список возможных городов вылета и стран с турами можно получить по ссылке: http://export.bgoperator.ru/auto/homepage-124331253701.js.
В файле переменная BG_FLTX инициализируется объектом, внутри которого находится информация о городах вылета (поле flt2) и странах туров (поле flt).

Поле flt. Представляет из себя массив элементов вида [100420695633, {"n":"Абхазия"}], где 100420695633 - id страны "Абхазия".

Поле flt2. Содержит информацию о том, из каких городов вылета в какие страны есть туры.
Представляет из себя массив элементов вида [100510000863, {"n":Москва", "f" : 0, "t" : [1,3,1,...,1,1]}], где 100510000863 - id города "Москва".
Поле t содержит массив индикаторов (равный по размеру массиву flt). Индекс элемента (индикатора) в массиве t равен индексу страны в массиве flt.
Если индикатор равен 1, то из текущего города в текущую страну есть только туры без транспорта, иначе - с транспортом (авиа, ж/д и т.п.).

3.4. Выгрузка стопов на проживание и перелеты

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

http://export.bgoperator.ru/yandex?action=flights_stopsИнформация по стопам на перелеты
http://export.bgoperator.ru/yandex?action=hotels_stopsИнформация по стопам на проживание

Формат ответа на запрос стопов на перелеты:
<stopsales>
  <item flight="103119663447" date="2013-10-05" class="E" nights="9"/>
  <item flight="103119663447" date="2013-10-05" class="E" nights="6"/>
  <item flight="103119663447" date="2013-10-05" class="E" nights="5"/>
  …
</stopsales>

flight — идентификатор авиаперелёта в системе Библио-Глобус
date — дата вылета
class — класс авиаперелёта
nights — количество ночей
если атрибут nights не заполнен - это означает, что уставновлен stop-sale на вылет на указанную дату;
если атрибут nights заполнен - это означает, что для данного вылета на указанное количество ночей установлен stop-sale на возврат (обратный перелет)

Формат ответа на запрос стопов на проживание:
<stopsales>
  <item hotel="102640059661" datebeg="2013-10-06" dateend="2013-10-25" ns="104630536730"/>
  <item hotel="102640059661" datebeg="2013-10-06" dateend="2013-10-25" ns="104640059686"/>
  <item hotel="102630316562" datebeg="2013-12-29" dateend="2014-01-02"/>
  …
</stopsales>

Стоп на проживание означает остановку продажи тех туров в отель hotel, у которых период пересекается с интервалом с datebeg по dateend (включительно). Если указан атрибут ns, то остановка продаж действует только на типы номеров ns (название номера, тип питания, вид из окна).

hotel — идентификатор отеля в системе Библио-Глобус
datebeg — дата начала периода стопа
dateend — дата окончания периода стопа
ns - идентификатор типа номера (название номера, тип питания, вид из окна)

4. Выгрузка прайс-листа в формате JSON

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

Если в данной ссылке параметр &xml=11 заменить на &xml=21, то вместе с прайс-листом будут выданы параметры фильтров и дополнительная информация. Если будет добавлен параметр &entr=-1, то в результатах будет только содержимое фильтров.
Формат ответа:
{
  "href0": "http://export.bgoperator.ru/tozaya?prx=104499999900000025&idt=&cntr=100410000049&repl=0&ins=0-30000-EUR",
  "cur": "EUR",
  "prx": "104499999900000025",
  "entries": [
    {
      "tour_date": "27.07.2014",
      "aircompany": "Аэрофлот",
      "town": "Ayia Napa",
      "room": "STANDARD Inland View HB",
      "dt": "27.07.2014",
      "href1": "&templ=121120516103&otn=104610790295&dt=27.07.2014&kol=2&sr=43UpM9e04HAuj08YLk204HAu+08YLkN-CF8yGA&c=YY00000000",
      "id_hotel": "102610001486",
      "id_ns": "104610790295",
      "duration": "2",
      "o_duration": "2",
      "quota": "9",
      "id_price": "121120516103",
      "sr": "43UpM9e04HAuj08YLk204HAu+08YLkN-CF8yGAj2d1f78aeef81c9d7aeeccc8bdfdf93ff",
      "prices": [
        {
          "amount": "1473",
          "RUR": "71205",
          "href2": "&otv=102510005340&p=0250819780.0250819780#",
          "ag": "[14-99][14-99]"
        }
      ]
    }
    ...
  ]
}

cur - валюта туров
prx - параметр, необходимый для создания заявок через API..

Элементы массива entries описывают строки прайс-листа: цены на конкретный отель, номер, питание, длительность для разных вариантов размещения в номере. В туре может быть несколько отелей, тогда на каждый отель будет выведен свой идентификатор номер-типа питания и своя длительность.

tour_date — дата начала тура
aircompany — авиакомпания
town — город, в котором находится отель
hotel — отель проживания вместе со категорией
room — тип номера и питание
dt — дата начала основного проживания в туре (тег может присутствовать не всегда)
flights — информация о рейсах в формате html в том же виде, в котором она выводится на сайте в обычном режиме (не JSON). Выводится только, когда указан параметр novirt (см. ниже)
duration — полная длительность проживания (ночей)
o_duration — длительность основного проживания (ночей) (тег может присутствовать не всегда)
b_duration — длительность до основного проживания (ночей) (b - значит before) (тег может присутствовать не всегда)
ab_duration — вторая длительность до основного проживания (ночей) (ab - значит after before) (тег может присутствовать не всегда)
ba_duration — вторая длительность после основного проживания (ночей) (ba - значит before after) (тег может присутствовать не всегда)
a_duration — длительность после основного проживания (ночей) (a - значит after) (тег может присутствовать не всегда)
id_hotel — идентификатор отеля в системе Библио-Глобус
isstop — массив описывает стоп на тур; возможные значения: avia_to, avia_from, hotel отвечают соответственно за стопы на вылет, на возврат и на отель
id_ns — идентификатор названия номера-типа питания в системе Библио-Глобус
b_id_ns — идентификатор названия номера-типа питания в системе Библио-Глобус  до основного проживания (b - значит before) (тег может присутствовать не всегда). b_id_h - идентификатор, соответствующего ему отеля
ab_id_ns — второй идентификатор названия номера-типа питания в системе Библио-Глобус  до основного проживания (ab - значит after before) (тег может присутствовать не всегда). ab_id_h - идентификатор, соответствующего ему отеля
ba_id_ns — второй идентификатор названия номера-типа питания в системе Библио-Глобус после основного проживания (ba - значит before after) (тег может присутствовать не всегда). ba_id_h - идентификатор, соответствующего ему отеля
a_id_ns — идентификатор названия номера-типа питания в системе Библио-Глобус после основного проживания (a - значит after) (тег может присутствовать не всегда). a_id_h - идентификатор, соответствующего ему отеля
quota — количество доступных для бронирования мест в отеле тура
ic, id_price, sr — служебные теги, нужные для создания заявки через API системы Библио-Глобус (теги могут присутствовать не всегда)
flt2_retid города возвращения. Поле появляется только в том случае, когда город возвращения отличается от города вылета
prices — массив, описывающий цены
prices / amount — стоимость в валюте страны
prices / RUR — стоимость в рублях. Выводится, если валюта страны отличается от рубля
href0 + href1 + (prices / href2) - URL, по которому открывается HTML форма создания заявки
Пример: prices / isstop=["avia_to", "avia_from"] - стоп на вылет и стоп на возврат
prices / ag — элемент описывает возраста туристов; диапазоны возрастов перечисляются через запятую; границы возрастов включаются в диапазоны
Примеры:
prices / ag="2-11,12+" - 1 взрослый + 1 ребенок
prices / ag="12+,12+" - 2 взрослых

Если значение prices / amount пустое, значит цены для выбранной комбинации не существует.

Для получения доступных цен по наземному обслуживанию необходимо отправить запрос с указанием параметра id_price=-1 для конкретного выбранного направления и даты.

Пример:
http://export.bgoperator.ru/partners?action=price&tid=211&id_price=-1&flt=100410000049&data=29.06.2013&xml=11
где 100410000049 — идентификатор страны Кипр из справочника стран
data=29.06.2013 — дата начала проживания в отеле в формате DD.MM.YYYY

Формат ответа на запрос цен на наземное обслуживание будет аналогичен формату ответа на запрос прайс-листа.

4.1. Расширенные параметры выгрузки цен и фильтрация

Вывод цен в формате JSON по умолчанию ограничивается первыми 60 элементами из прайс-листа. Для получения большего количества элементов прайс-листа вам необходимо указать дополнительный параметр entr в строке запроса. Значение параметра entr равняется количеству отелей, выдаваемых на странице, плюс 1. entr должен быть больше чем 1. Например, при entr = 3, количество отелей на каждой странице будет 4.
Внимание! Параметр m больше недействителен.

Дополнительные параметры запроса, позволяющие отфильтровать выдаваемые элементы прайс-листа.

f1 — город в стране (идентификатор города), можно указывать несколько значений
Пример: добавление &f1=100510001069 к строке запроса покажет цены только на отели Лимассола

f3 — звездность отеля (строка, название звездности отеля), можно указывать несколько значений
Пример: добавление &f3=3*&f3=4* к строке запроса покажет цены только на отели 3* и 4*

F4 — отель (идентификатор отеля), можно указывать несколько значений
Пример: добавление &F4=102610001472&F4=102610001641 к строке запроса покажет цены только на отели AKTEA BEACH VILLAGE 4* и ALMYRA 4*

f7 — длительность (число), можно указывать несколько значений
Пример: добавление &f7=7&f7=9 к строке запроса покажет цены только на 7 и 9 ночей. Максимальное количество ночей - 28.

f8 — тип питания (строка, название типа питания), можно указывать несколько значений
Пример: добавление &f8=BB&f8=HB к строке запроса покажет цены только на номера с питанием BB и HB

novirt=0 — этот параметр (именно в таком виде) необходимо указать,
если нужно вывести прайс с конкретизациями перелётов (для выбора туров с конкретными перелётами)
Внимание! Если тур был куплен без услуги конкретизации рейсов, то, согласно договору, Библио-Глобус имеет право сменить время вылета, аэропорт и авиакомпанию. Рейс может быть изменен даже если на момент бронирования был доступен только один рейс
Внимание! Услуга конкретизации рейсов при создании тура платная.
Внимание! При необходимости создания тура с конкретизацией рейсов через XML API значение тега <sr> необходимо брать из прайса, сформированного с параметром novirt=0

stop=0 - при указании такаго параметра будут выведены, среди прочих, туры из стоп-листа

p — описание групп и возрастов туристов. Каждому туристу соответствует группа символов 0DDMMYYYYS. Группы разделены точками.
DDMMYYYY - дата рождения туриста.
S - строка, состоящая из неповторяющихся цифр от 0 до 4. Цифры соответствуют группам, в которые входит турист.
Примеры.
0010119600.0010119600 - группа 0, состоящая из двух взрослых
02103196001.01612195023.00704200802 - 4 группы.
0-ая группа: 1 взрослый + 1 ребенок;
1-ая группа: 1 взрослый;
2-ая группа: 1 взрослый + 1 ребеонк;
3-я группа: 1 взрослый

Список категорий отелей:
5*4* (Superior)3*plus2*DE LUX
5*sup (Grand Deluxe)4*plus3*2* (Tourist)CLASS A
5* (Cat. Deluxe)4* (Cat. A)3* (Cat. B)2* (Cat. B)CLASS B
5* (Deluxe)4*3* (Cat. A)2* (Cat. C)CLASS C
3* (First)1*APARTMENT

Список типов питания:
BBзавтраки
HBзавтраки и ужины
FBзавтраки, обеды и ужины
AIвсе включено
UAI, ULTRA ALLультра все включено
AOбез питания

4.2. Расширенная информация по прайс-листу

При добавлении в запрос параметра &xml=31 в JSON-ответе выводится расширенная информация по составу тура.

Формат фрагмента ответа:

"tourComposition": [
  {
    "type": "flight",
    "id": "103151365832;103173777714;",
    "data": "26.03.2016",
    "id2": "103123196731;",
    "dl": "4",
    "d2": "30.03.2016",
    "n": "0",
    "q": "00"
  },
  {
    "type": "transfer",
    "title": "Трансфер26.03.2016DEGAULLE-PARIS(airport)-Paris(hotel)/group/bus",
    "id": "103875523965",
    "data": "26.03.2016"
  },
  {
    "type": "accomodation",
    "title": "Проживание: с26.03.2016по30.03.2016(4ночи)",
    "id": "104618112854",
    "n": "2",
    "q": "0"
  },
  {
    "type": "transfer",
    "title": "Трансфер30.03.2016Paris(hotel)-DEGAULLE-PARIS(airport)/group/bus",
    "id": "103875523957",
    "data": "30.03.2016"
  },
  {
    "type": "flight",
    "id": "103123196731;",
    "data": "30.03.2016",
    "id2": "103151365832;103173777714;",
    "dl": "4",
    "d2": "26.03.2016",
    "n": "1",
    "q": "00"
  },
  {
    "type": "medins",
    "title": "ECONOM-CLASS30000EUR"
  },
  {
    "type": "excursion",
    "id": "103625040753",
    "data": "26.03.2016"
  }
  {
    "type": "extra",
    "id": "105827587196"
  }
]
  

4.2.1 Информация по перелетам

flight — элемент, описывающий авиарейс
  id — идентификаторы авиаперелётов в системе Библио-Глобус, разделённые ";"
  data — дата рейса
  id2 — идентификаторы рейсов, связанных ("туда-обратно") с рейсами id
  data2 — дата рейса
  q — индикатор наличия мест; принимает значение 0 (места эконом класса необходимо запрашивать) или строки из двух символов (например, a4). В этом случае первый символ отвечает за места эконом класса, второй - за бизнес класс. Каждый символ - это либо ненулевая цифра (количество мест в наличии), либо 0 (необходимо запрашивать), либо a (много мест), либо c (мест нет).

Для получения детальной информации по перелёту (id и data) необходимо выполнить следующий запрос: http://export.bgoperator.ru/yandex?action=flightdetails&id=103139130550&data=10.10.2014

4.2.2 Информация по трансферам

transfer — элемент, описывающий трансфер
  title — строковое представление трансфера
  data — дата трансфера
  id — идентификатор трансфера в системе Библио-Глобус.
Чтобы получить альтернативы для текущего трансфера, необходимо выполнить запрос вида:
http://export.bgoperator.ru/partners?action=title&id=103820000045&data=12.12.2015&id_valut=EUR&xml=11,
подставив в него id и data из текущего трансфера и валюту id_valut из верхней секции прайс-листа.
Система выдаст в JSON-формате список альтернативных вариантов трансферов с ценами. Трансферы могут быть прикреплены к заявкам, создаваемым через API.

4.2.3 Информация по экскурсиям и доп. услугам

excursion — элемент, описывающий экскурсию
  id — идентификатор экскурсии в системе Библио-Глобус
  data — дата экскурсии
Чтобы получить список экскурсий с описаниями и ценами, необходимо выполнить запрос вида:
http://export.bgoperator.ru/partners?xml=11&action=title&id=300010000000&flt=100410000049&data=31.03.2016&n=2&id_price=121120516103,
подставив в него страну экскурсий flt, дату экскурсий data, количество человек n и прайс-лист id_price, по которому возможны экскурсии. Система выдаст в JSON-формате список экскурсий.

Формат фрагмента ответа:

"103618102053": {
  "1005": [
    "100510001070",
    "100510001067"
    ],
  "2005": [
    "Protaras",
    "AyiaNapa"
    ],
  "name": "Accompaniment around Cyprus HALF DAY STANDARD CAR / Индивидуальная экскурсия по Кипру на полдня по эксклюзивно разработанному маршруту от 1 до 4 человек на стандартной машине",
  "ps": 230,
  "dates": [
    "31.03.2016"
  ]
}

1005 — список id городов, из которых возможна текущая экскурсия
2005 — список названий городов, соответствующий списку 1005
name — название экскурсии
ps — цена экскурсии из городов из списка 1005. Значением является число или элемент с полями adt, chd и inf, в которых указаны цены за взрослого, ребенка и младенца соответственно.
data — даты экскурсий из городов из списка 1005

Список дополнительных услуг, услуг аренды автомобилей, книг на продажу и билетов на продажу могут быть получены по аналогичной ссылке. Для этого в запросе нужно изменить параметр id соответственно на 300110000000, 300210000000, 300310000000 и 300410000000.

5. Выгрузка горящих спецпредложений туроператора

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

Пример:
http://export.bgoperator.ru/yandex?action=minprice&cityId=100510000863
где 100510000863 — идентификатор города Москва из справочника городов

Формат содержимого файла:
<root>
  <entry>
    <country>
      <id>100410000049</id>
      <name>КИПР</name>
    </country>
    <city>100510000863</city>
    <aircompany>Трансаэро</aircompany>
    <cost>
      <amount>295</amount>
      <valute>EUR</valute>
    </cost>
    <duration>3</duration>
    <date>30.09.2012</date>
    <tourname>ТУРЫ НА КИПР</tourname>
    <url>
      http://www.bgoperator.ru/main5.shtml?action=price&tid=211&flt=100410000049&flt2=100510000863&id_price=121175915306&data=30.09.2012&f3=3*
    </url>
  </entry>
  …
</root>

country / id — идентификатор страны
country / name — название страны
city — идентификатор города вылета
aircompany — название авиакомпании
cost / amount — сумма в валюте
cost / valute — код валюты
duration — длительность тура
date — дата вылета
tourname — название маршрута прайс-листа
url — ссылка на прайс-лист

6. Выгрузка спецпредложений с мгновенным подтверждением

Списки спецпредложений хранятся в автогенерируемых файлах, доступных по ссылкам вида http://export.bgoperator.ru/auto/auto-spo-{flt2}-124331253701.js, где flt2 - идентификатор города вылета в системе Библио-Глобус.
Пример: http://export.bgoperator.ru/auto/auto-spo-100510000863v2-124331253701.js

Формат содержимого файла:
[
  {
    "data" : "09.07.2014",
    "URL" : "http://www.bgoperator.ru/price.shtml?action=price&idt=&tid=211&id_price=121125221707&flt2=100510000863&flt=100411293179&data=09.07.2014&f7=2&f7=4&f7=6&f7=7&F4=102625929987&p=0070619780.0070619780&otn=104625930011&otv=102510005340&f8=BB&ok=0",
    "hotelTown" : "Мармарис",
    "hotelPic" : "http://www.bgoperator.ru/pr_img/sm1240100354/20140405/2803980246/5091069817120126.png",
    "cntryName" : "Турция",
    "hotelURL" : "http://www.bgoperator.ru/price.shtml?flt=100411293179&tid=26&code=102625929987&action=shw",
    "hotelId" : "102625929987",
    "hotelName" : "Gold Kaya Hotel 3*",
    "meal" : "BB",
    "dur" : "2, 4, 6, 7",
    "amount" : "173",
    "val" : "USD",
    "RUR" : "6124"
  },
  ...
]

data — дата вылета
URL — поисковый URL, по которому ищутся предложения, среди которых есть текущее
hotelTown — название курорта
hotelPic — ссылка на картинку отеля
cntryName — название страны тура
hotelURL — ссылка на страницу отеля
hotelId — индентификатор отеля в системе Библио-Глобус
hotelName — название отеля
meal — питание
dur — список длительностей через запятую
amount — сумма в валюте за наименьшую длительность
val — валюта тура
RUR — сумма в рублях за наименьшую длительность
ok — (ВАЖНО) данное поле присутствует и равно 0, если текущее предложение является предложением с мгновенным подтверждением

7. Поисковый запрос цен на чартерные авиаперелеты

Запрос возвращает стоимость чартерной перевозки для указанного количества и возрастов туристов. Формат запроса:

http://export.bgoperator.ru/site?action=biletblock&vr0=1&vr1=1&vr2=0&idfrom=100510000863&idto=100510001068&datefrom=2017-01-20&dateto=2017-01-27&class=Y&cur=EUR
где
vr0 — количество взрослых
vr1 — количество детей
vr2 — количество инфантов
idfrom — id города вылета в системе Библио-Глобус либо IATA-код аэропорта вылета.
idto — id города прилета в системе Библио-Глобус либо IATA-код аэропорта прилета.
datefrom — дата вылета в формате YYYY-MM-DD
dateto — дата возврата в формате YYYY-MM-DD. Если идет поиск перелета в одну сторону, этот параметр должен отсутствовать в запросе
class — класс перелета. Y - экономический, C - бизнес
cur — валюта ответа. Опциональный параметр. По-умолчанию RUB. Возможные значения RUB,EUR,USD

Формат содержимого файла:
{
    "prx": "104499999900000071",
    "offers": [{
        "price": 4446,
        "nodes": ["FV550320170303", "FV550420170310"]
    }],
    "nodes": {
        "FV550320170303": {
            "ac": "FV",
            "fn": "5503",
            "dep": {
                "d": "03.03.2017",
                "t": "16:10:00",
                "n": "VKO"
            },
            "arr": {
                "d": "03.03.2017",
                "t": "18:50:00",
                "n": "AER"
            }
        },
        "FV550420170310": {
            "ac": "FV",
            "fn": "5504",
            "dep": {
                "d": "10.03.2017",
                "t": "20:05:00",
                "n": "AER"
            },
            "arr": {
                "d": "10.03.2017",
                "t": "22:40:00",
                "n": "VKO"
            }
        }
    }
}
    

prx — идентификатор сессии
nodes — описание рейсов, участвующих в ценах. Каждый узел имеет уникальное имя, которое используется при описании цены
  ac — код авиакомпании
  fn — номер рейса
  dep — описание точки отправления
    d — дата вылета. формат DD.MM.YYYY
    t — время вылета. Формат HH:MM:SS или HH:MM
    n — IATA-код аэропорта
  arr — описание точки прибытия. Структура полей эквивалентна описанной в "dep"
offers — список цен на сочетания рейсов
  price — цена в валюте запроса, целое число
  nodes — список рейсов, к которым применяется цена. Названия узлов из структуры "nodes"