Инструкция для работы с ценами Туристического оператора "Библио-Глобус"

  1. Аутентификация
  2. Выгрузка списка отелей и НСов партнера
  3. Выгрузка списка цен
  4. Удаление списка цен
  5. Добавление списка цен
  6. Коды ошибок

  1. Аутентификация

  2. Используется аутентификация через форму и получение/передачу Cookie.

    Аутентификация реализована на получении и передаче токенов в заголовках Cookie/Set-Cookie. Для получения аутентификационных токенов необходимо сделать POST запрос на адрес https://login.bgoperator.ru/auth, передав в теле запроса учетные данные в параметрах "login" и "pwd". В случае успешного прохождения аутентификации будет возвращен набор токенов в заголовках Set-Cookie (куки Axxx, Zxxx, L, где xxx - число). Полученные токены необходимо передавать и обновлять во всех последующих запросах к API. Если токен просрочен, вернется 401 статус ответа.

    Пример запроса и ответа:
    POST /auth HTTP/1.1
    Host: login.bgoperator.ru
    Content-Type: application/x-www-form-urlencoded

    login=...&pwd=...

    HTTP/1.1 302
    Set-Cookie: Axxx=...; Path=/; domain=.bgoperator.ru; Secure; HttpOnly
    Set-Cookie: Zxxx=...; Path=/; domain=.bgoperator.ru; Secure; HttpOnly
    Set-Cookie: L=...; Path=/; domain=.bgoperator.ru; Secure; HttpOnly

    В случае необходимости учетные данные из заголовков Basic-аутентификации могут быть считаны, однако приоритетным является получение и передача аутентификационных токенов в заголовке Cookie. Если для работы Вашего программного обеспечения требуется полный цикл Basic-аутентификации, пожалуйста, обратитесь в службу технической поддержки (112@bgoperator.com).

    Инструкция по выгрузке цен туроператора Библио-Глобус:
    http://export.bgoperator.ru/load-xml-prices.html

  3. Выгрузка списка отелей и НСов партнера

  4. Для получения справочника отелей и НСов партнера необходимо выполнить запрос:
    https://www.bgoperator.ru/yandex?action=partnernsinfo

    idPartner id партнера (опциональный параметр)

    Информация лежит в формате JSON:
    [
      {
        "id" : "102610178074",
        "hname" : "ДИВНЫЙ, Оздоровительный Комплекс",
        "ns" : [
          {
            "id" : "104610628418",
            "nsname" : "1-НО МЕСТН. ЭКОНОМ с одной кроватью (коттедж 1й этаж) AO"
          },
          {
            "id" : "104610538225",
            "nsname" : "1-НО МЕСТН. ЭКОНОМ с одной кроватью (коттедж 1й этаж) BB"
          },
          ...
        ]
      }
    ]
  5. Выгрузка списка цен

  6. Аналог отображения матрицы цен. Для получения списка цен необходимо выполнить запрос:
    https://www.bgoperator.ru/accomodation?task=apigetnsprice&nsId=104610284380&pBeg=01.01.2000&pEnd=01.02.2000&groupId=0,

    nsId id НСа
    pBeg дата начала периода получения цен
    pEnd дата конца периода получения цен
    groupId номер группы

    В формате XML лежит информация:
    <prices>
      <pricenode>
        <id>109400010812175280:1</id>
        <price>10.0000</price>
        <agemin>12</agemin>
        <agemax>99</agemax>
        <group>0</group>
        <idspec>0</idspec>
        <percvalue>0.0000</percvalue>
        <paydays>0</paydays>
        <staydays>0</staydays>
        <dbeg>01.01.2000</dbeg>
        <dend>01.02.2000</dend>
        <dspbeg_beg>01.01.1970</dspbeg_beg>
        <dspbeg_end>31.12.4712</dspbeg_end>
        <dspend_beg>01.01.1970</dspend_beg>
        <dspend_end>31.12.4712</dspend_end>
        <daysbeg>0</daysbeg>
        <daysend>0</daysend>
        <ispercent>0</ispercent>
        <isblocked>0</isblocked>
        <valut>EUR</valut>
        <mindaystill>0</mindaystill>
        <maxdaystill>0</maxdaystill>
        <idns>104610284380</idns>
        <idvr>102510005340</idvr>
        <iddu>101910005076</iddu>
        <idbase>null</idbase>
        <dregbeg>01.01.2000 13:23:53</dregbeg>
        <dregend>31.12.4712 00:00:00</dregend>
        <inbase>1</inbase>
      </pricenode>
      ...
    </prices>

    где:
    тег значение
    id идентификатор цены
    price цена
    agemin/agemax минимальный/максимальный возраст проживающего [0;99]
    group принадлежность цены к группе; возможные значения [0;8]; значение по умолчанию 0
    idspec
    idspec идентификатор спецпредложений
    109810011744 Блокировка расчета с указанием кол-ва дней до заезда (заносить только в БС)
    109810098819 Блокировка заездов по дням недели (заносить только в БС)
    109818961800 Блокировка расчета для указанного кол-ва ночей проживания (заносить только в БС)
    109820469834 Раннее бронирование на прилеты (в % от себя)
    109832837270 Раннее бронирование на completed stay (в % от себя)
    109820435510 Раннее бронирование на даты проживания (в % от себя)
    109832398442 Таксы (заносить только в БС)
    109810009261 на прилеты
    109810009264 на прилеты с указанием кол-ва ночей проживания
    109810009262 на период completed stay
    109810009263 с указанием даты выезда
    109810009260 на даты проживания
    109878776851 на даты проживания с указанием кол-ва ночей проживания
    109810009265 с ограничением дат прилета и отлета
    109820438905 Kick Back на даты проживания (в % от себя, заносить только в БС)
    109820493332 Дельта per person per NIGHT на прилеты с указанием кол-ва дней до заезда (заносить только в БС)
    109820493334 Дельта per person per NIGHT на период completed stay с указанием кол-ва дней до заезда (заносить только в БС)
    109820493331 Дельта per person per NIGHT на даты проживания с указанием кол-ва дней до заезда (заносить только в БС)
    109820563003 Дельта per person per TOUR на период completed stay с указанием кол-ва дней до заезда (заносить только в БС)
    109820411690 Pay-Stay (бесплатных последних ночей) на даты проживания
    109810024930 Pay-stay (бесплатных последних ночей) completed stay
    109810009267 Pay-stay (бесплатных последних ночей) на прилеты
    109810009268 Pay-stay (бесплатных последних ночей) с указанием дат выезда
    109875696572 Pay-stay (бесплатных первых ночей) completed stay
    109875696574 Pay-stay (бесплатных первых ночей) на прилеты
    109875696575 Pay-stay (бесплатных первых ночей) с указанием дат выезда
    109875696571 Pay-stay (бесплатных ночей по средней цене) completed stay
    109875696570 Pay-stay (бесплатных ночей по средней цене) на прилеты
    109875696569 Pay-stay (бесплатных ночей по средней цене) с указанием дат выезда
    109875696566 Pay-stay (бесплатных самых дешевых ночей) completed stay с указанием кол-ва дней до заезда
    109875696567 Pay-stay (бесплатных самых дешевых ночей) на прилеты с указанием кол-ва дней до заезда
    109875696568 Pay-stay (бесплатных самых дешевых ночей) с указанием дат выезда и кол-ва дней до бронирования
    109875696833 Pay-stay (бесплатных самых дорогих ночей) completed stay
    109875696565 Pay-stay (бесплатных самых дорогих ночей) на прилеты
    109875696564 Pay-stay (бесплатных самых дорогих ночей) с указанием дат выезда
    109820411697 Pay-Stay масштабирование (бесплатных последних ночей) на даты проживания с указанием кол-ва дней до заезда
    109875696581 Pay-stay масштабирование (бесплатных последних ночей) completed stay
    109875696578 Pay-stay масштабирование (бесплатных последних ночей) на прилеты
    109875696576 Pay-stay масштабирование (бесплатных последних ночей) с указанием дат выезда
    109810357708 Разовая услуга (заносить только в БС)
    percvalue значение процента от цены в базовой ячейке
    paydays количество ночей pay (если 0 - любое кол-во)
    staydays количество ночей stay (если 0 - любое кол-во)
    dbeg/dend логическая дата начала/конца действия цены (dd.mm.yyyy)
    dspbeg_beg/dspbeg_end приезд от/до (dd.mm.yyyy, по умолчанию 01.01.1970/31.12.4712 - любая дата)
    dspend_beg/dspend_end выезд от/до (dd.mm.yyyy, по умолчанию 01.01.1970/31.12.4712 - любая дата)
    daysbeg/daysend количество ночей проживания от/до (если 0 - любое кол-во)
    ispercent флаг, указывающий, что цена занесена в % от цены в базовой ячейке
    1 - флаг установлен => цена указана в процентах (percValue) от цены в базовой ячейке (idBase)
    0 - флаг не установлен => цена занесена в абсолютной величине (price)
    isblocked признак заблокированной цены:
    >0 - цена заблокирована (т.е. не используется в расчетах)
    0 - цена не заблокирована
    valut валюта цены
    mindaystill/maxdaystill количество дней до бронирования (если 0 - любое кол-во)
    idns идентификатор Назначенной стоимости (НСа)
    idvr идентификатор Варианта размещения (ВРа)
    iddu идентификатор Услуги
    idbase идентификатор базовой ячейки
    заполняется, если isPercent = 1
    dregbeg/dregend физическая дата начала/окончания действия цены (dd.mm.yyyy HH:mm:ss)
    inbase флаг включения цены в базовую стоимость;
    1 - флаг установлен => цену включать в базовую стоимость;
    для цены должно выполниться 3 условия:
    - тип НСа = Назначенная стоимость
    - ВР ячейки = DBL или SGL
    - у Услуги ячейки атрибут Включать в услугу части тура = "Нет"
    0 - флаг не установлен
  7. Удаление списка цен

  8. Аналог удаления цен кнопкой "Удалить цены с выбранным диапазоном возрастов". Чтобы удалить цены на интервале по НС-у и возрастам нужно выполнить запрос:
    https://www.bgoperator.ru/accomodation?task=apidelprices&nsId=104610284380&pBeg=01.01.2000&pEnd=01.02.2000&ageMin=12&ageMax=99

    nsId id НСа
    pBeg дата начала периода удаления цен
    pEnd дата конца периода удаления цен
    groupId номер группы (если не указывать, удалятся цены во всех группах)
    ageMin возраст начала диапазона удаления цен
    ageMax возраст конца диапазона удаления цен
  9. Добавление списка цен

  10. Аналог копирования всей матрицы цен в текущем номере (на период, из группы). Надо передавать xml в таком же формате, как возвращает Выгрузка списка цен. Сразу можно передать цены нескольких НС-ов в POST-запросе:
    https://www.bgoperator.ru/accomodation?task=apiaddprice
    Если цен в НС-е много, то необходимо сначала копировать в СС, а потом из СС в НС.

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

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

    100 не хватает прав
    101 общая ошибка
    102 неверный период при вставке цен
    103 общая ошибка при копировании цен
    104 общая ошибка при получении цен
    105 общая ошибка при удалении цен