ПРОТОКОЛ БИЛЕТНОЙ СИСТЕМЫ

Версия 12.12.2018

ОПИСАНИЕ
ОБЩАЯ СХЕМА ИСПОЛЬЗОВАНИЯ ПРОТОКОЛА
ВИД ОТВЕТА
АВТОРИЗАЦИЯ (command = AUTH)
СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ (command = CREATE_USER)*
ПОЛУЧЕНИЕ СПИСКА ГОРОДОВ (command = GET_CITIES)
ПОЛУЧЕНИЯ СПИСКА ТИПОВ МЕСТ ПРОВЕДЕНИЯ (command = GET_VENUE_TYPES)
ПОЛУЧЕНИЕ СПИСКА МЕСТ ПРОВЕДЕНИЯ (command = GET_VENUES)
ПОЛУЧЕНИЕ СПИСКА МЕРОПРИЯТИЙ (command = GET_ALL_ACTIONS)*
ПОЛУЧЕНИЕ СПИСКА МЕРОПРИЯТИЙ (command = GET_ACTIONS_V2)
ПОЛУЧЕНИЕ ИНФОРМАЦИИ О МЕРОПРИЯТИИ, РАСШИРЕННЫЙ МЕТОД (command = GET_ACTION_EXT)
ПОЛУЧЕНИЕ СПИСКА МЕСТ ПО ID СЕАНСА (command = GET_SEAT_LIST)
ДОБАВЛЕНИЕ ПРОМОКОДОВ (command = ADD_PROMO_CODES)
БРОНИРОВАНИЕ МЕСТ В СХЕМЕ ЗАЛА С РАЗМЕЩЕНИЕМ (command = RESERVATION)
БРОНИРОВАНИЕ МЕСТ В СХЕМЕ ЗАЛА БЕЗ РАЗМЕЩЕНИЯ (command = RESERVATION)
РАЗБРОНИРОВАНИЕ МЕСТА (command = RESERVATION)
ПОЛУЧЕНИЕ СПИСКА ЗАБРОНИРОВАННЫХ МЕСТ (command = GET_CART)
СОЗДАНИЕ ЗАКАЗА (command = CREATE_ORDER)
СОЗДАНИЕ ЗАКАЗА (command = CREATE_ORDER_EXT)*
ОТМЕНА ЗАКАЗА (command = CANCEL_ORDER)*
ОПЛАТА ЗАКАЗА (command = PAY_ORDER)*
ПОЛУЧЕНИЕ ЗАКАЗОВ ПОЛЬЗОВАТЕЛЯ (command = GET_ORDERS)
ПОЛУЧЕНИЕ ЗАКАЗОВ ПОЛЬЗОВАТЕЛЯ (command = GET_ORDERS_EXT)
ПОЛУЧЕНИЕ СПИСКА СЕАНСОВ, ПО КОТОРЫМ БЫЛИ КУПЛЕНЫ БИЛЕТЫ (command = GET_ACTION_EVENTS_GROUPED_BY_TICKETS)
ПОЛУЧЕНИЕ КУПЛЕННЫХ БИЛЕТОВ ПО ID ПРЕДСТАВЛЕНИЯ (command = GET_TICKETS_BY_ACTION_EVENT)
ПОЛУЧЕНИЕ ШАБЛОНА БИЛЕТА В ФОРМАТЕ SVG
ПОЛУЧЕНИЕ КУПЛЕННЫХ БИЛЕТОВ ПО ID ЗАКАЗА (command = GET_TICKETS_BY_ORDER)
ПОЛУЧЕНИЕ ИНФОРМАЦИИ ПО ПРОДАННЫМ БИЛЕТАМ ЗА КОНКРЕТНЫЙ ДЕНЬ (command = GET_TICKETS_BY_DAY)
ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ПОЛЬЗОВАТЕЛЕ (command = GET_USER_INFO)
ОТПРАВКА БИЛЕТОВ НА ПОЧТУ (command = SEND_TICKETS_TO_EMAIL)
УДАЛЕНИЕ (command = DELETE)
ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ЗАКАЗЕ (command = GET_ORDER_INFO)
ПОЛУЧЕНИЕ ПОЧТЫ (command = GET_EMAIL)
ОТПРАВКА GCM ТОКЕНА НА СЕРВЕР (command = SET_PUSH_TOKEN)
ПОЛУЧИТЬ НОВОСТИ (command = GET_NEWS)
ПРОВЕРКА КДП (command = CHECK_KDP)
ПОЛУЧЕНИЕ ДАННЫХ ДЛЯ ФИЛЬТРА (command = GET_FILTER)
ПРИВЯЗКА ПОЧТЫ (command = BIND_EMAIL)
ПОДТВЕРЖДЕНИЕ ПОЧТЫ (command = CONFIRM_EMAIL)
ПОЛУЧЕНИЕ КАРТ (МЭК) (command = GET_MECS)
ВОЗВРАТ БИЛЕТОВ (command = REFUND_TICKETS)*
СТАТУС ЗАКАЗА
ФАЙЛ В ФОРМАТЕ docx
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 09.05.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 20.05.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 15.06.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.06.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 23.06.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 08.07.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.07.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 16.08.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 02.09.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 25.10.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 25.11.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 15.12.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 27.12.2016
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 04.02.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 05.05.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 18.05.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 08.06.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 06.07.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 13.07.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.07.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 09.08.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 23.08.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 02.10.2017
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 18.02.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 01.03.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 12.03.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 19.08.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 16.10.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 06.12.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 12.12.2018
ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 10.04.2019

ОПИСАНИЕ

Для взаимодействия осуществляются HTTPS POST запросы в формате JSON в кодировке UTF-8. Ответ возвращается в формате JSON в кодировке UTF-8.

URL тестовой зоны https://api.bil24.pro:1240/json
URL реальной зоны https://api.bil24.pro/json

Типы полей:
число int - целое значение в диапазоне от -2 147 483 648 до 2 147 483 647
число Uint - целое беззнаковое значение в диапазоне от 0 до 2 147 483 647
число long - целое значение в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
число Ulong - целое беззнаковое значение в диапазоне от 0 до 9 223 372 036 854 775 807
число cur - вещественное значение, содержащее до 2 знаков после точки, например 134.66
boolean - литерал принимающий значения true или false
строка - строковое значение неограниченной длины

ОБЩАЯ СХЕМА ИСПОЛЬЗОВАНИЯ ПРОТОКОЛА

Команды протокола делятся на сессионные и несессионные.
Список несессионных команд:
1. GET_FILTER
2. GET_CITIES
3. GET_VENUE_TYPES
4. GET_VENUES
5. GET_ALL_ACTIONS
6. GET_ACTIONS_V2
7. GET_ACTION_EXT
8. GET_SEAT_LIST
9. GET_TICKETS_BY_DAY

Нет необходимости выполнять команду AUTH раньше какой-либо из перечисленных команд. Для их выполнения не нужен идентификатор сессии (sessionId).

Для выполнения сессионных команд нужно иметь sessionId. Получить его первоначально нужно с помощью команды AUTH (для билетных систем CREATE_USER). Полученные данные пользователя рекомендуется сохранить и использовать повторно. Сессия пользователя определяется sessionId и действует бессрочно.

В общем случае, sessionId понадобится перед командой BIND_EMAIL (RESERVATION для билетных систем).

ВИД ОТВЕТА

На все запросы возвращается результат в формате JSON:
{
 "resultCode": 0,
 "description": "OK"
 "command": "COMMAND"
 …………………………
}

Поле Тип Обязательность Описание
resultCode число int Обязательное Результат запроса
description строка Обязательное Описание
command строка Обязательное Команда, переданная в запросе

Данные поля присутствуют в каждом ответе.
Если resultCode не равен 0, то поле description содержит описание ошибки. Других полей не будет.
Значения поля resultCode:

Значение Описание

-1

Непредвиденная ошибка (ошибка протокола, ошибка передачи данных, прочие ошибки...), описание смотреть в поле description

0

Результат команды успешен

1

Неверные идентификаторы сессии (userId или sessionId)

Сообщения для пользователя

101 Стандартное сообщение.
102 Почта не привязана. Проверять при запросах RESERVATION.

ПРИ КАЖДОМ ЗАПРОСЕ указывать два обязательных поля:

Поле Тип Обязательность Описание
fid число Ulong Обязательное идентификатор интерфейса (frontend id)

token

строка

Обязательное

токен интерфейса



АВТОРИЗАЦИЯ (command = AUTH)

Описание: авторизация пользователя. Для интерфейса Билетная система вместо данного метода необходимо использовать метод CREATE_USER.
Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное AUTH
userId число Ulong Обязательное, если есть sessionId id пользователя в БС
sessionId строка Обязательное, если есть userId id сессии пользователя

Состав полей ответа:

Поле Тип Обязательность Описание
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
frontendType число Uint Обязательное тип интерфейса

Данные для запроса брать из cookies, если ранее уже выполнялся данный запрос. Если запрос выполняется первый раз, то userId и sessionId в запросе не передавать.
Пример запроса:
{
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "AUTH",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "AUTH",
 "frontendType": 2,
 "resultCode": 0,
 "description": "OK"
}
После получения ответа, сохранить данные и использовать в запросах, где необходимы эти поля.

СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ (command = CREATE_USER)*

Описание: метод создает нового пользователя, который в дальнейшем может использоваться для бронирования мест, создания и оплаты заказа и получения билетов. Используется вместо метода AUTH для интерфейса Билетная система.
*только для интерфейса Билетная система

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное CREATE_USER

Состав полей ответа:

Поле Тип Обязательность Описание
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя

Пример запроса:
{
 "command": "CREATE_USER",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "CREATE_USER",
 "resultCode": 0,
 "description": "OK"
}
После получения ответа, сохранить данные и использовать в запросах, где необходимы эти поля.

ПОЛУЧЕНИЕ СПИСКА ГОРОДОВ (command = GET_CITIES)

Описание: получение списка всех городов, присутствующих в системе. Для получения списка только тех городов, в которых есть актуальные события, необходимо использовать метод GET_FILTER. Использование метода GET_FILTER является предпочтительным.
Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_CITIES

Состав полей ответа:

Поле Тип Обязательность Описание
cityList массив Обязательное список городов

cityList:

Поле Тип Обязательность Описание
cityId число Ulong Обязательное id города в БС
cityName строка Обязательное наименование города в БС

Пример запроса:
{
 "command": "GET_CITIES",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "cityList": [
  {
   "cityId": 1,
   "cityName": "Сочи"
  },
  {
   "cityId": 2,
   "cityName": "Краснодар"
  }
 ],
 "command": "GET_CITIES",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЯ СПИСКА ТИПОВ МЕСТ ПРОВЕДЕНИЯ (command = GET_VENUE_TYPES)

Описание: получение списка всех типов мест проведения, присутствующих в системе.
Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_VENUE_TYPES

Состав полей ответа:

Поле Тип Обязательность Описание
venueTypeList массив Обязательное список типов мест проведения

venueTypeList:

Поле Тип Обязательность Описание
venueTypeId число Uint Обязательное id типа места проведения
venueTypeName строка Обязательное наименование типа места проведения


ПОЛУЧЕНИЕ СПИСКА МЕСТ ПРОВЕДЕНИЯ (command = GET_VENUES)

Описание: получение списка всех мест проведения, присутствующих в системе. Для получения актуальных мест проведения, необходимо использовать метод GET_FILTER.
Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_VENUES
cityId число Ulong Обязательное id города в БС
venueTypeId число Uint Необязательное Тип мест проведения, если не указан,
в ответе будут все места проведения в городе

Состав полей ответа:

Поле Тип Обязательность Описание
venueList массив Обязательное список мест проведения

venueList:

Поле Тип Обязательность Описание
venueId число Ulong Обязательное id места проведения
venueName строка Обязательное наименование места проведения
venueTypeId число Uint Обязательное id типа места проведения
venueTypeName строка Обязательное наименование типа места проведения
address строка Обязательное адрес места проведения
geoLat строка (##.######) Обязательное широта места проведения
geoLon строка (##.######) Обязательное долгота места проведения
imageUrl строка Обязательное ссылка на изображение места проведения
description строка Обязательное описание места проведения


ПОЛУЧЕНИЕ СПИСКА МЕРОПРИЯТИЙ (command = GET_ALL_ACTIONS)*

Описание: метод возвращает все данные метода GET_FILTER, плюс список всех доступных мероприятий. Позволяет одним запросом получить всю необходимую информацию для Билетных систем.*Только для интерфейса Билетная система
Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_ALL_ACTIONS

Состав полей ответа:

Поле Тип Обязательность Описание
cityList массив Обязательное список городов
kindList массив Обязательное список видов
actionList массив Обязательное список мероприятий

cityList:

Поле Тип Обязательность Описание
cityId число Ulong Обязательное id города
cityName строка Обязательное название города
venueList массив Обязательное список мест проведений

venueList:

Поле Тип Обязательность Описание
venueId число Ulong Обязательное id места проведения
venueName строка Обязательное наименование места проведения

kindList:

Поле Тип Обязательность Описание
kindId число Uint Обязательное id вида
kindName строка Обязательное наименование вида

actionList:

Поле Тип Обязательность Описание
actionId число Ulong Обязательное id представления
actionName строка Обязательное краткое наименование представления
fullActionName строка Обязательное полное наименование представления
kindId число Uint Обязательное id вида
kindName строка Обязательное наименование вида
organizerId число Ulong Обязательное id организатора
organizerName строка Обязательное название организатора
legalOwner строка Обязательное название устроителя
duration число Uint Обязательное продолжительность представления в минутах
posterName строка Обязательное название постера
description строка Обязательное описание
smallPosterUrl строка Обязательное url постера (320 x 335)
bigPosterUrl строка Обязательное url постера (640 x 670)
bookletUrl строка Необязательное url буклета представления
kdp* boolean Обязательное true - у представления есть КДП
rating число Uint Обязательное рейтинг от 0 до 10
age строка Обязательное возрастное ограничение
actionEventList массив Обязательное список сеансов

actionEventList:

Поле Тип Обязательность Описание
actionEventId число Ulong Обязательное id сеанса
day строка Обязательное дата проведения сеанса в формате dd.MM.yyyy
time строка Обязательное время проведения сеанса в формате HH:mm
cityId число Ulong Обязательное id города
venueId число Ulong Обязательное id места проведения
seatingPlanId число Ulong Обязательное id схемы зала
seatingPlanName строка Обязательное название схемы зала
placementUrl строка Необязательное ссылка на схему зала. Если поле отсутствует, схема зала без размещения
eTicket boolean Обязательное false - МЭБ на контроле представления не принимается
fullNameRequired boolean Обязательное если true, при создании заказа параметр fullName (полное имя покупателя)
является обязательным
categoryLimitList массив Обязательное список категорий, сгруппированных по лимитам (категории без размещения)

categoryLimitList:

Поле Тип Обязательность Описание
remainder число Uint Необязательное Общее ограничение мест по списку категорий.
Если параметр отсутствует, смотрим availability
categoryList массив Обязательное список категорий, объединенных одним лимитом

categoryList:

Поле Тип Обязательность Описание
categoryPriceId число Ulong Обязательное id ценовой категории
categoryPriceName строка Обязательное наименование ценовой категории
price число cur Обязательное стоимость ценовой категории
availability число int Обязательное количество доступных мест в категории




ПОЛУЧЕНИЕ СПИСКА МЕРОПРИЯТИЙ (command = GET_ACTIONS_V2)

Описание: метод возвращает список представлений по городу.
Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_ACTIONS_V2
cityId число Ulong Обязательное id города

Состав полей ответа:

Поле Тип Обязательность Описание
actionList массив Обязательное список мероприятий

actionList:

Поле Тип Обязательность Описание
actionId число Ulong Обязательное id представления
actionName строка Обязательное краткое наименование представления
fullActionName строка Обязательное полное наименование представления
duration число Uint Обязательное продолжительность представления в минутах
kindId число Uint Обязательное id вида
kindName строка Обязательное наименование вида
posterName строка Обязательное название постера
smallPosterUrl строка Обязательное url постера (320 х 335)
bigPosterUrl строка Обязательное url постера (640 х 670)
minSum число cur Обязательное минимальная стоимость сеанса
firstEventDate строка Обязательное первая дата сеанса
lastEventDate строка Обязательное последняя дата сеанса
rating число Uint Обязательное рейтинг от 0 до 10
kdp boolean Обязательное true - у представления есть КДП*
cityId число Ulong Обязательное id города, переданный в запросе
cityName строка Обязательное наименование города
actionEventTime строка Необязательное формат HH:mm
поле присутствует, если сеанс идет в одно и тоже время
venueMap объект Обязательное список мест проведений. key - venueId, value - venueName


* КДП (код доступа к представлению - временное решение). Перед открытием схемы зала или нажатием кнопки забронировать (в схеме зала без размещения) пользователь должен ввести КДП (метод для проверки КДП - CHECK_KDP)
Пример запроса:
{
 "cityId": 1,
 "command": "GET_ACTIONS_V2"
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "actionList": [
  {
    "actionId": 193,
    "actionName": "Любовь Успенская",
    "fullActionName": "Королева городского романса",
    "duration": 120,
    "kindId": 0,
    "kindName": "События",
    "posterName": "Название постера",
    "smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=193&hash=gznpw8zi9rog7k7e923ko32ap",
    "bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=193&hash=hwyb7h53x926q0tiiopdgjpp0",
    "minSum": 1500,
    "firstEventDate": "27.05.2016",
    "lastEventDate": "27.05.2016",
    "rating": 10,
    "kdp": false,
    "cityId": 1,
    "cityName": "Сочи",
    "actionEventTime": "19:30",
    "venueMap": {
     "1": "Зимний театр"
    }
  },
  {
    "actionId": 219,
    "actionName": "Кармен",
    "fullActionName": "Ледовый мюзикл",
    "duration": 180,
    "kindId": 0,
    "kindName": "События",
    "posterName": "Название постера",
    "smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=219&hash=sc8zn3tgamlvtpdjbgprv3dy2",
    "bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=219&hash=qwejy8em5q5clku76dyxshd58",
    "minSum": 1000,
    "firstEventDate": "10.06.2016",
    "lastEventDate": "02.10.2016",
    "rating": 10,
    "kdp": false,
    "cityId": 1,
    "cityName": "Сочи",
    "actionEventTime": "18:30",
    "venueMap": {
     "7": "ЛД \"Айсберг\""
    }
  }
 ],
  "command": "GET_ACTIONS_V2",
  "resultCode": 0,
  "description": "OK"
}

ПОЛУЧЕНИЕ ИНФОРМАЦИИ О МЕРОПРИЯТИИ, РАСШИРЕННЫЙ МЕТОД (command = GET_ACTION_EXT)

Описание: метод возвращает информацию о представлении в конкретном городе, места где оно проводится и сеансы
Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_ACTION_EXT
cityId число Ulong Обязательное id города
actionId число Ulong Обязательное id представления
userId* число Ulong Необязательное id пользователя


* userId - на схеме зала будут окрашены места данного пользователя
Состав полей ответа:

Поле Тип Обязательность Описание
action объект Обязательное представление

action:

Поле Тип Обязательность Описание
actionId число Ulong Обязательное id представления
actionName строка Обязательное краткое наименование представления
fullActionName строка Обязательное полное наименование представления
kindId число Uint Обязательное id вида
kindName строка Обязательное наименование вида
cityId число Ulong Обязательное id города
cityName строка Обязательное название города
organizerId число Ulong Обязательное id организатора
organizerName строка Обязательное название организатора
legalOwner строка Обязательное название устроителя
posterName строка Обязательное название постера
duration число Uint Обязательное продолжительность представления в минутах
description строка Обязательное описание
smallPosterUrl строка Обязательное url постера (320 x 335)
bigPosterUrl строка Обязательное url постера (640 x 670)
bookletUrl строка Необязательное url буклета представления
kdp* boolean Обязательное true - у представления есть КДП
rating число Uint Обязательное рейтинг от 0 до 10
age строка Обязательное возрастное ограничение
venueList массив Обязательное список мест проведений

*kdp - Код доступа к представлению (КДП). Если параметр равен true, то забронировать места можно только если ввести КДП
venueList:

Поле Тип Обязательность Описание
venueId число Ulong Обязательное id места проведения
venueName строка Обязательное наименование места проведения
address строка Обязательное адрес места проведения
geoLat строка (##.######) Обязательное широта места проведения
geoLon строка (##.######) Обязательное долгота места проведения
imageUrl строка Обязательное ссылка на изображение места проведения
description строка Обязательное описание места проведения
cityPass boolean Обязательное true - место проведение,
где действуют скидки и преференции
actionEventList массив Обязательное список сеансов

actionEventList:

Поле Тип Обязательность Описание
actionEventId число Ulong Обязательное id сеанса
day строка Обязательное дата проведения сеанса в формате dd.MM.yyyy
time строка Обязательное время проведения сеанса в формате HH:mm
seatingPlanId число Ulong Обязательное id схемы зала
seatingPlanName строка Обязательное название схемы зала
placementUrl строка Необязательное ссылка на схему зала.
если поле отсутствует, схема зала без размещения
eTicket boolean Обязательное false - МЭБ на контроле представления не принимается
categoryLimitList массив Обязательное список категорий, сгруппированных по лимитам
(категории без размещения)

Существует 3 вида схем:
1. Только без размещения. placementUrl будет отсутствовать, смотрим categoryLimitList.
2. Только с размещением. Смотрим placementUrl, categoryLimitList будет пустой.
3. Комбинированная. Смотрим placementUrl и categoryLimitList.

categoryLimitList:

Поле Тип Обязательность Описание
remainder число Uint Необязательное Общее ограничение мест по списку категорий.
Если параметр отсутствует,
смотрим availability
categoryList массив Обязательное список категорий, объединенные одним лимитом



categoryList:

Поле Тип Обязательность Описание
categoryPriceId число Ulong Обязательное id ценовой категории
categoryPriceName строка Обязательное наименование ценовой категории
price число cur Обязательное стоимость ценовой категории
availability* число int Обязательное количество доступных мест в категории



*availability - количество доступных мест в категории. Если remainder отсутствует, то ориентируемся на availability. Если remainder присутствует, то нужно внимательно использовать эти параметры. К примеру общее ограничение remainder на 3 категории может быть 100, но и в каждой категории availability также может быть 100.

Список сеансов actionEventList возвращается в отсортированном виде по дате проведения.

Пример запроса:
{
 "cityId": 1,
 "actionId": 80,
 "userId": 1269,
 "command": "GET_ACTION_EXT",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "action": {
  "actionId": 193,
  "actionName": "Любовь Успенская",
  "fullActionName": "Королева городского романса",
  "kindId": 0,
  "kindName": "События",
  "cityId": 1,
  "cityName": "Сочи",
  "duration": 120,
  "posterName": "Королева городского романса",
  "description": ""Настоящая Любовь"",
  "smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=193&hash=gznpw8zi9rog7k7e923ko32ap",
  "bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=193&hash=hwyb7h53x926q0tiiopdgjpp0",
  "rating": 10,
  "kdp": false,
  "venueList": [
    {
    "venueId": 1,
    "venueName": "Зимний театр",
    "address": "г. Сочи, ул. Театральная, 2",
    "geoLat": "43.572313",
    "geoLon": "39.730626",
    "imageUrl": "https://api.bil24.pro:1240/image?type=venue&id=1&hash=rrre3fih28k8n68kmjwkdhe91",
    "description": "У каждого города есть своя "визитная карточка".",
    "actionEventList": [
     {
      "actionEventId": 681,
      "day": "27.05.2016",
      "time": "19:30",
      "placementUrl": "https://api.bil24.pro:1240/image?type=seatingPlan&userId=21173&actionEventId=681",
      "eTicket": true,
      "categoryLimitList": []
     }
     ]
   }
   ]
 },
 "command": "GET_ACTION_EXT",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ СПИСКА МЕСТ ПО ID СЕАНСА (command = GET_SEAT_LIST)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_SEAT_LIST
actionEventId число Ulong Обязательное id сеанса
availableOnly boolean Необязательное если присутствует и равно true,
метод вернет только доступные для продажи места

Состав полей ответа:

Поле Тип Обязательность Описание
actionEventId число Ulong Обязательное id сеанса
availableOnly boolean Обязательное если равно true,
в ответе только доступные для продажи места
categoryList массив Обязательное список ценовых категорий
seatList массив Обязательное список мест

categoryList:

Поле Тип Обязательность Описание
categoryPriceId число Ulong Обязательное id ценовой категории
categoryPriceName строка Обязательное название ценовой категории
price число cur Обязательное номинальная стоимость
availability число int Обязательное количество доступных мест в категории

seatList:

Поле Тип Обязательность Описание
seatId число Ulong Обязательное id места
categoryPriceId число Ulong Обязательное id ценовой категории
price число cur Обязательное номинальная стоимость
placement boolean Обязательное если true, место имеет координаты
location объект Обязательное, если placement = true координаты места
available boolean Обязательное если true, место доступно к продаже

location:

Поле Тип Обязательность Описание
sector строка Обязательное сектор
row строка Обязательное ряд
number строка Обязательное место



ДОБАВЛЕНИЕ ПРОМОКОДОВ (command = ADD_PROMO_CODES)

Описание: Добавление промокодов для использования пользователем. За один раз можно добавить до 10 промокодов включительно. Регистр символов промокода значения не имеет. В ответе будет столько же промокодов и в том же регистре, как в запросе, поделенные на 3 группы: новые промокоды для пользователя, уже существующие у пользователя промокоды и ошибочные промокоды.

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное ADD_PROMO_CODES
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
promoCodeList массив Обязательное список промокодов


Состав полей ответа:

Поле Тип Обязательность Описание
newPromoCodeList массив Обязательное список новых добавленных промокодов
existPromoCodeList массив Обязательное список уже существующих промокодов
errorPromoCodeList массив Обязательное список ошибочных промокодов




БРОНИРОВАНИЕ МЕСТ В СХЕМЕ ЗАЛА С РАЗМЕЩЕНИЕМ (command = RESERVATION)

Описание: бронирование мест в схеме зала с размещением. Перед созданием заказа необходимо забронировать хотя бы одно место. При получении ошибки в ответе гарантируется, что ни одно место из списка не было забронировано (транзакционные свойства бронирования). Если список мест содержит ранее успешно забронированные места, они исключаются из списка. Все места в списке должны принадлежать одному сеансу.

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное RESERVATION
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
seatList массив Обязательное список id мест для брони
kdp число int Необязательное код доступа к представлению (КДП)
type строка Обязательное RESERVE_BY_PLACE


Состав полей ответа:

Поле Тип Обязательность Описание
type строка Обязательное RESERVE_BY_PLACE
seatList массив Обязательное Список всех забронированных мест пользователя
cartTimeout число Uint Обязательное Время жизни брони в секундах,
через которое вся бронь пользователя снимется


seatList:

Поле Тип Обязательность Описание
seatId число Ulong Обязательное id места
categoryPriceId число Ulong Обязательное id ценовой категории
price число cur Обязательное номинальная стоимость
placement boolean Обязательное если true, место имеет координаты
location объект Обязательное, если placement = true координаты места
available boolean Обязательное true


location:

Поле Тип Обязательность Описание
sector строка Обязательное сектор
row строка Обязательное ряд
number строка Обязательное место


Пример запроса:
{
 "type": "RESERVE_BY_PLACE",
 "seatList": [
    100
 ],
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "RESERVATION",
 "fid": 1,
  "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "type": "RESERVE_BY_PLACE",
 "command": "RESERVATION",
 "resultCode": 0,
 "description": "OK"
}

БРОНИРОВАНИЕ МЕСТ В СХЕМЕ ЗАЛА БЕЗ РАЗМЕЩЕНИЯ (command = RESERVATION)

Описание: бронирование мест в схеме зала без размещения. Перед созданием заказа необходимо забронировать хотя бы одно место. При получении ошибки в ответе гарантируется, что ни одно место из списка не было забронировано (транзакционные свойства бронирования). Бронирование производится указанием ценовой категории и количества мест в данной категории. При одновременном бронировании мест в нескольких ценовых категориях, все ценовые категории должны принадлежать одному сеансу. Ценовые категории должны быть без размещения, в противном случае необходимо использовать метод бронирования мест в схеме зала с размещением.

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное RESERVATION
userId число Ulong Обязательное id пользователя
sessionId строка Обязательное id сессии пользователя
categoryQuantityMap массив Обязательное key - id категории,
value - кол-во мест для брони
kdp число int Необязательное код доступа к представлению (КДП)
type строка Обязательное RESERVE


Состав полей ответа:

Поле Тип Обязательность Описание
type строка Обязательное RESERVE
seatList массив Обязательное Список всех забронированных мест пользователя
cartTimeout число Uint Обязательное Время жизни брони в секундах,
через которое вся бронь пользователя снимется


seatList:

Поле Тип Обязательность Описание
seatId число Ulong Обязательное id места
categoryPriceId число Ulong Обязательное id ценовой категории
price число cur Обязательное номинальная стоимость
placement boolean Обязательное если true, место имеет координаты
location объект Обязательное, если placement = true координаты места
available boolean Обязательное true


location:

Поле Тип Обязательность Описание
sector строка Обязательное сектор
row строка Обязательное ряд
number строка Обязательное место


Пример запроса:
{
 "type": "RESERVE",
 "categoryQuantityMap": {
   "1072": 1
 },
 "userId": 139,
 "sessionId": "8f91a3ae4d43f7250537a13c4c4745ea",
 "command": "RESERVATION",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780",
 "kdp": 123
}
Пример ответа:
{
 "type": "RESERVE",
 "command": "RESERVATION",
 "resultCode": 0,
 "description": "OK"
}

РАЗБРОНИРОВАНИЕ МЕСТА (command = RESERVATION)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное RESERVATION
userId число Ulong Обязательное id пользователя
sessionId строка Обязательное id сессии пользователя
actionEventId число Ulong Необязательное id сеанса, используется для type = UN_RESERVE_ALL
seatList массив Обязательное, если type = UN_RESERVE список id мест
type строка Обязательное UN_RESERVE, UN_RESERVE_ALL


Состав полей ответа:

Поле Тип Обязательность Описание
type строка Обязательное type, переданный в запросе
seatList массив Обязательное Список всех забронированных мест пользователя
cartTimeout число Uint Обязательное Время жизни брони в секундах,
через которое вся бронь пользователя снимется


seatList:

Поле Тип Обязательность Описание
seatId число Ulong Обязательное id места
categoryPriceId число Ulong Обязательное id ценовой категории
price число cur Обязательное номинальная стоимость
placement boolean Обязательное если true, место имеет координаты
location объект Обязательное, если placement = true координаты места
available boolean Обязательное true


location:

Поле Тип Обязательность Описание
sector строка Обязательное сектор
row строка Обязательное ряд
number строка Обязательное место


Пример 1. запроса снятия брони со всех мест:
{
 "type": "UN_RESERVE_ALL",
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "RESERVATION",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример 2. запроса снятия брони со всех мест конкретного сеанса:
{
 "type": "UN_RESERVE_ALL",
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "actionEventId": 5,
 "command": "RESERVATION"
}
Пример 3. запроса снятия брони со списка мест:
{
 "type": "UN_RESERVE",
 "seatList": [
   4790
 ],
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "RESERVATION",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "command": "RESERVATION",
 "type": "UN_RESERVE",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ СПИСКА ЗАБРОНИРОВАННЫХ МЕСТ (command = GET_CART)

Описание: метод возвращает места, забронированные пользователем, сгруппированные по сеансам.

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_CART
userId число Ulong Обязательное id пользователя
sessionId строка Обязательное id сессии пользователя
rawCoordinates boolean Необязательное если присутствует и равно true,
то в ответе поля sector, row, number
будут иметь стандартные значения (как везде).
Рекомендуется всегда передавать true


Состав полей ответа:

Поле Тип Обязательность Описание
totalSum число cur Обязательное Общая сумма бронирования
time число Uint Обязательное Время жизни брони в секундах,
через которое вся бронь пользователя снимется
totalServiceCharge число cur Обязательное сервисный сбор в корзине
actionEventList массив Обязательное список сеансов, на которые забронированы места


actionEventList:

Поле Тип Обязательность Описание
actionEventId число Ulong Обязательное id сеанса
day строка Обязательное дата проведения сеанса в формате dd.MM.yyyy
time строка Обязательное время проведения сеанса в формате HH:mm
actionId число Ulong Обязательное id представления
actionName строка Обязательное краткое наименование представления
fullActionName строка Обязательное полное наименование представления
smallPosterUrl строка Обязательное url постера (320 х 335)
bigPosterUrl строка Обязательное url постера (640 х 670)
cityId число Ulong Обязательное id города
cityName строка Обязательное наименование города
venueId число Ulong Обязательное id места проведения
venueName строка Обязательное наименование места проведения
seatList массив Обязательное список забронированных мест
serviceCharge число cur Обязательное сервисный сбор по сеансу


seatList:

Поле Тип Обязательность Описание
seatId число Ulong Обязательное id забронированного места
categoryPriceName строка Обязательное наименование ценовой категории места
sector* строка Необязательное сектор
row* строка Необязательное ряд
number* строка Необязательное место
price число cur Обязательное стоимость
serviceCharge число cur Обязательное сервисный сбор по месту


*Если схема зала местовая, то поля sector, row, number будут присутствовать в ответе.

Пример запроса:
{
 "userId": 1,
 "sessionId": "ce91f8ec80d1ddb2abf03d02470cc8b2",
 "command": "GET_CART",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "time": 588,
 "totalSum": 1200,
 "totalServiceCharge": 0,
  "actionEventList": [
  {
   "actionEventId": 344,
   "day": "02.06.2016",
   "time": "18:00",
   "actionName": "SOPRANO ШОУ",
   "fullActionName": "Михаил Турецкий представляет вечер любви",
   "smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=80&hash=r9qfi771jid3pf0or7vxc8xrb",
   "bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=80&hash=m3b37t9tynyes52fxx7zw6gdl",
   "cityId": 1,
   "cityName": "Сочи",
   "venueId": 10,
   "venueName": "Зимний театр",
   "serviceCharge": 0,
   "seatList": [
    {
      "seatId": 524692,
     "categoryPriceName": "Шестая",
     "price": 600,
     "sector": "Сектор Партер",
     "row": "Ряд 9",
     "number": "Место 11",
     "serviceCharge": 0
     },
    {
     "seatId": 524691,
     "categoryPriceName": "Шестая",
      "price": 600,
     "sector": "Сектор Партер",
     "row": "Ряд 9",
      "number": "Место 10",
     "serviceCharge": 0
    }
    ]
   }
  ],
 "command": "GET_CART",
 "resultCode": 0,
 "description": "OK"
}

СОЗДАНИЕ ЗАКАЗА (command = CREATE_ORDER)

Описание: cоздание заказа из забронированных мест. Для интерфейса Билетная система вместо данного метода необходимо использовать метод CREATE_ORDER_EXT.

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное CREATE_ORDER
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
email строка Необязательное почта, на которую надо отправить
билеты после успешной оплаты
(ТОЛЬКО ДЛЯ КАССЫ и ПРИГЛАСИТЕЛЬНЫХ)
phone строка Необязательное номер телефона покупателя
(ТОЛЬКО ДЛЯ КАССЫ и
ПРИГЛАСИТЕЛЬНЫХ)
fullName строка Необязательное Полное имя покупателя,
которое отобразится на билете
successUrl строка Обязательное редирект на successUrl после успешной оплаты
failUrl строка Обязательное редирект на failUrl после НЕуспешной оплаты
discount число cur Необязательное скидка в %
(ТОЛЬКО ДЛЯ КАСС И ПРИГЛАСИТЕЛЬНЫХ)
serviceCharge число cur Необязательное сервисный сбор в %
(ТОЛЬКО ДЛЯ КАСС)

Состав полей ответа:

Поле Тип Обязательность Описание
formUrl строка Обязательное ссылка для оплаты
orderId число Ulong Обязательное id заказа
paid поле устарело true - заказ сразу оплачен
status число Обязательное статус заказа
statusExtStr строка Обязательное статус заказа
statusExtInt число int Обязательное статус заказа

Пример запроса:
{
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "successUrl": "https://site.ru/success.php",
 "failUrl": "https://site.ru/fail.php",
 "command": "CREATE_ORDER",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "formUrl": "https://test.paymentgate.ru/testpayment/merchants/bil24/mobile_payment_ru.html?mdOrder=b8bb4b76-3a73-4816-92d4-954aa7d01e&pageView=MOBILE",
 "statusExtStr": "NEW",
 "statusExtInt": 0,
 "command": "CREATE_ORDER",
 "resultCode": 0,
 "description": "OK"
}

СОЗДАНИЕ ЗАКАЗА (command = CREATE_ORDER_EXT)*

Описание: Создание заказа из забронированных мест. Используется вместо метода CREATE_ORDER для интерфейса Билетная система. После создания заказ принимает статус NEW.
*только для интерфейса Билетная система

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное CREATE_ORDER_EXT
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
longReservation boolean Необязательное true - долговременное бронирование
email строка Необязательное почта, на которую надо отправить билеты
после успешной оплаты
phone строка Необязательное номер телефона покупателя
fullName строка Необязательное полное имя покупателя,
которое отобразится на билете

Состав полей ответа:

Поле Тип Обязательность Описание
orderId массив Обязательное id заказа
externalOrderId число Ulong Обязательное список строковых идентификаторов заказа в ВБС
discount число cur Обязательное скидка в рублях
serviceCharge число cur Обязательное сервисный сбор (СС) в рублях
sum число cur Обязательное сумма заказа, номинал,
без учета скидки и СС
totalSum число cur Обязательное общая сумма
quantity число Uint Обязательное количество билетов в заказе
orderTimeout число PInt Обязательное квремя жизни заказа в минутах

Пример запроса:
{
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "CREATE_ORDER_EXT",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "orderId": 64,
 "discount": 10,
 "serviceCharge": 99,
 "sum": 1000,
 "totalSum": 1089,
 "quantity": 5,
 "command": "CREATE_ORDER_EXT",
 "resultCode": 0,
 "description": "OK"
}

ОТМЕНА ЗАКАЗА (command = CANCEL_ORDER)*

Описание: отмена ранее созданного заказа. Отменить можно только заказ со статусом NEW. В результате запроса заказ примет статус CANCELLING или CANCELLED. При попытке отменить заказ не со статусом NEW, ошибки не произойдет, статус заказа не изменится, а в ответе придет актуальный статус заказа. Когда статус заказа примет значение CANCELLED, места, входящие в заказ, станут свободными.
*только для интерфейса Билетная система

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное CANCEL_ORDER
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
orderId число Ulong Обязательное id заказа

Состав полей ответа:

Поле Тип Обязательность Описание
orderId число Ulong Обязательное id заказа
statusExtStr строка Обязательное статус заказа
statusExtInt число int Обязательное статус заказа

Пример запроса:
{
 "orderId": 64,
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "CANCEL_ORDER",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "orderId": 64,
 "statusExtStr": "CANCELLED",
 "statusExtInt": -2,
 "command": "CANCEL_ORDER",
 "resultCode": 0,
 "description": "OK"
}

ОПЛАТА ЗАКАЗА (command = PAY_ORDER)*

Описание: оплата ранее созданного заказа. Оплатить можно только заказ со статусом NEW. В результате запроса заказ примет статус PROCESSING или PAID. При попытке оплатить заказ не со статусом NEW, ошибки не произойдет, статус заказа не изменится, а в ответе придет актуальный статус заказа.
*только для интерфейса Билетная система

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное PAY_ORDER
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
orderId число Ulong Обязательное id заказа

Состав полей ответа:

Поле Тип Обязательность Описание
orderId число Ulong Обязательное id заказа
statusExtStr строка Обязательное статус заказа
statusExtInt число int Обязательное статус заказа

Пример запроса:
{
 "orderId": 64,
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "PAY_ORDER",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "orderId": 64,
 "statusExtStr": "PAID",
 "statusExtInt": 2,
 "command": "PAY_ORDER",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ ЗАКАЗОВ ПОЛЬЗОВАТЕЛЯ (command = GET_ORDERS)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_ORDERS
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя

Состав полей ответа:

Поле Тип Обязательность Описание
orderList массив Обязательное список заказов

orderList:

Поле Тип Обязательность Описание
orderId число Ulong Обязательное id заказа в БС
date строка Обязательное дата создания заказа в формате datePattern
datePattern строка Обязательное формат даты
discount число cur Обязательное скидка в рублях
serviceCharge число cur Обязательное сервисный сбор в рублях
sum число cur Обязательное сумма заказа
quantity число Uint Обязательное количество билетов в заказе
userMessage строка Обязательное сообщение пользователю от банка
status число Обязательное статус заказа
statusExtStr строка Обязательное статус заказа
statusExtInt число int Обязательное статус заказа
formUrl строка Необязательное ссылка для оплаты

Пример запроса:
{
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "GET_ORDERS",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "orderList": [
  {
   "orderId": 64,
   "date": "06.08.2015 18:48",
   "datePattern": "dd.MM.yyyy HH:mm",
   "discount": 0,
   "serviceCharge": 0,
   "sum": 600,
   "quantity": 4,
    "statusExtStr": "PAID",
    "statusExtInt": 2,
    "formUrl": "https://test.paymentgate.ru/testpayment/merchants/bil24/mobile_payment_ru.html?mdOrder=2a2637b4-3d2b-44c4-b29f-4c3b39d17722&pageView=MOBILE",
  }
  ],
 "command": "GET_ORDERS",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ ЗАКАЗОВ ПОЛЬЗОВАТЕЛЯ (command = GET_ORDERS_EXT)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_ORDERS_EXT
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
fromDate строка Обязательное дата в формате
dd.MM.yyyy HH:mm:ss
rawCoordinates boolean Необязательное если присутствует и равно true,
то в ответе поля sector, row,
number, categoryName будут иметь
стандартные значения (как везде).
Рекомендуется всегда передавать true

Состав полей ответа:

Поле Тип Обязательность Описание
orderList массив Обязательное список заказов
orderDatePattern строка Обязательное формат даты заказа
ticketDatePattern строка Обязательное формат даты билета

orderList:

Поле Тип Обязательность Описание
orderId число Ulong Обязательное id заказа в БС
date строка Обязательное дата создания заказа в
формате orderDatePattern
discount число cur Обязательное скидка в рублях
serviceCharge число cur Обязательное сервисный сбор в рублях
sum число cur Обязательное сумма заказа
quantity число Uint Обязательное количество билетов в заказе
ticketList массив Обязательное список билетов
status число Обязательное статус заказа
statusExtStr строка Обязательное статус заказа
statusExtInt число int Обязательное статус заказа

Пример запроса:
{
 "fromDate": "01.01.2016 00:00:00",
 "userId": 1,
 "sessionId": "sessionId",
 "command": "GET_ORDERS_EXT",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "orderDatePattern": "dd.MM.yyyy HH:mm:ss",
 "ticketDatePattern": "dd.MM.yyyy HH:mm",
 "orderList": [
  {
   "orderId": 3037,
   "date": "12.12.2016 13:29:53",
   "discount": 0,
   "serviceCharge": 30.00,
   "sum": 630.00,
   "quantity": 2,
   "ticketList": [
    {
     "ticketId": 29965,
     "date": "09.01.2017 10:00",
     "actionName": "Звёздные войны: Пробуждение силы",
     "venueName": "Кинотеатр Люксор",
     "sector": "Сектор Партер",
     "row": "Ряд 2",
     "number": "Место 12",
      "categoryName": "Категория: Третья",
     "price": 300
    },
    {
     "ticketId": 29966,
     "date": "09.01.2017 10:00",
     "actionName": "Звёздные войны: Пробуждение силы",
     "venueName": "Кинотеатр Люксор",
     "sector": "Сектор Партер",
     "row": "Ряд 1",
     "number": "Место 13",
     "categoryName": "Категория: Третья",
     "price": 300
    }
   ],
   "statusExtStr": "PAID",
   "statusExtInt": 2,
  },
  {
   "orderId": 2438,
   "date": "30.08.2016 00:14:55",
   "discount": 0,
   "serviceCharge": 0.00,
   "sum": 0.00,
   "quantity": 1,
   "ticketList": [
    {
     "ticketId": 29095,
     "date": "31.07.2017 09:00",
     "actionName": "КЛУБ ЛЮБИМЫХ",
     "venueName": "территория Сочи",
     "categoryName": "Категория: Золотая",
     "price": 0
    }
   ],
   "status": 1
  }
 ],
 "command": "GET_ORDERS_EXT",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ СПИСКА СЕАНСОВ, ПО КОТОРЫМ БЫЛИ КУПЛЕНЫ БИЛЕТЫ (command = GET_ACTION_EVENTS_GROUPED_BY_TICKETS)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_ACTION_EVENTS_GROUPED_BY_TICKETS
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя

Состав полей ответа:

Поле Тип Обязательность Описание
list массив Обязательное список сеансов
dayPattern строка Обязательное шаблон дня сеанса (dd.MM.yyyy)
timePattern строка Обязательное шаблон времени сеанса (HH:mm)

list:

Поле Тип Обязательность Описание
actionEventId число Ulong Обязательное id сеанса
actionName строка Обязательное краткое наименование представления
fullActionName строка Обязательное полное наименование представления
day строка Обязательное день сеанса в формате dayPattern
time строка Обязательное время сеанса в формате timePattern
bigPosterUrl строка Обязательное ссылка на постер
smallPosterUrl строка Обязательное ссылка на постер
cityName строка Обязательное название города
venueName строка Обязательное наименование места проведения
quantity число Uint Обязательное количество билетов
sum число cur Обязательное общая сумма билетов
ticketsUrl строка Обязательное ссылка на билеты в формате pdf

Пример запроса:
{
 "userId": 11,
 "sessionId": "c6721d3c35c247da84ac460004840b68",
 "command": "GET_ACTION_EVENTS_GROUPED_BY_TICKETS",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "dayPattern": "dd.MM.yyyy",
 "timePattern": "HH:mm",
 "list": [
  {
   "actionEventId": 5,
   "actionName": "Балет Спящая красавица",
   "day": "28.09.2015",
   "time": "11:01",
   "bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=2&hash=lpmbkeg1lae6najf2zd099kgs"
  },
  {
   "actionEventId": 22,
   "actionName": "Кино Эверест",
   "day": "30.09.2015",
   "time": "15:00",
   "bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=11&hash=rf8qt7yz5z4s96hmko0kmkuf8"
  },
  {
   "actionEventId": 8,
   "actionName": "Концерт группы Scooter",
   "day": "12.10.2015",
   "time": "21:05",
   "bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=3&hash=mtpqe8hih74wyla45p983zmt3"
  }
 ],
 "command": "GET_ACTION_EVENTS_GROUPED_BY_TICKETS",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ КУПЛЕННЫХ БИЛЕТОВ ПО ID ПРЕДСТАВЛЕНИЯ (command = GET_TICKETS_BY_ACTION_EVENT)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_TICKETS_BY_ACTION_EVENT
userId число Ulong Обязательное id пользователя
sessionId строка Обязательное id сессии пользователя
actionEventId число Ulong Обязательное id сеанса
sizeQrCode число Uint Обязательное размер Qr кода
(задается одна сторона,
картинка будет квадратная)
widthBarCode число Uint Обязательное ширина Bar кода
heightBarCode число Uint Обязательное высота Bar кода
type строка Обязательное тип изображения. PNG, JPG
rawCoordinates boolean Необязательное если присутствует и равно true,
то в ответе поля sector, row, number,
categoryName будут иметь
стандартные значения (как везде).
Рекомендуется всегда передавать true

Состав полей ответа:

Поле Тип Обязательность Описание
datePattern строка Обязательное формат даты в билете
(пример: dd.MM.yyyy HH:mm)
actionId число Ulong Обязательное id представления, переданный в запросе
actionName строка Обязательное Имя представления
ticketList массив Обязательное список билетов

ticketList:

Поле Тип Обязательность Описание
ticketId число Ulong Обязательное id билета
date строка Обязательное дата представления
venueName строка Обязательное наименование места проведения
venueAddress строка Обязательное адрес места проведения
actionName строка Обязательное название представления
sector строка Необязательное сектор
row строка Необязательное ряд
number строка Необязательное место
categoryName строка Обязательное информация о категории места
price число cur Обязательное цена билета
totalPrice число cur Обязательное цена билета с учетом СС
serviceCharge число cur Обязательное СС
qrCodeImg строка Обязательное Qr код в Base64 в формате,
переданном в запросе
barCodeImg строка Обязательное Bar код в Base64 в формате,
переданном в запросе
barCodeNumber строка Обязательное значение штрихкода
smallPosterUrl строка Обязательное url постера (320х335)
legalOwner строка Обязательное Данные организатора
age строка Обязательное Возрастное ограничение

Пример запроса:
{
 "actionEventId": 5,
 "sizeQrCode": 500,
 "widthBarCode": 500,
 "heightBarCode": 100,
 "type": "PNG",
 "userId": 11,
 "sessionId": "c6721d3c35c247da84ac460004840b68",
 "command": "GET_TICKETS_BY_ACTION_EVENT",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "datePattern": "dd.MM.yyyy HH:mm",
 "actionEventId": 5,
 "actionName": "Кармен",
 "ticketList": [
   {
    "ticketId": 10075,
    "date": "28.09.2015 11:01",
    "venueName": "Зимний театр",
    "venueAddress": "ул. Театральная, 2",
    "actionName": "Кармен",
    "sector": "Сектор Партер",
    "row": "Ряд 1",
    "number": "Место 22",
    "categoryName": "Категория Х",
    "price": 1000,
    "totalPrice": 0,
    "serviceCharge": 0,
    "qrCodeImg": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AQAAAADjreInAAACwElEQVR42u3dS27jMBBFUe2A+99l7YCdjmjWq6KCbiCjJ1zDA1n2YUaEWB8y1/zVKy53H9d+fX1eV2N9/XXx9/25s34mBI939zqVEse1J9c9xH2h979nDx5v7mPNijUxRv5uz6v91R76Jnj8e/z3/FkfZebk4+S+xuPf6sfMOTPLmml/xONf5WsonaulHUvcYCT+cf2Fx7v5jJ/jf98/xN94vJuv2VCNk/dESvmP/Cse7+ajpkTHLNGyhNY57h4Uj3+F32kjTZWWKFrvy1d4vLeXqHgVyXacMCVbOmSgkWkmPN7b6zpJEqalYNZWXJETCY+39zVI0OVRqyu3MkPmj",
    "barCodeImg": "iVBORw0KGgoAAAANSUhEUgAAAfQAAABkAQAAAABYvP/QAAAAYklEQVR42u3LsQ2AIBBG4TMWVzICm+hiJDAabMIIV1KY/GpcwuI1r3n5TFGyK3atLer0njQ1dNk6o5iPJ+qpmUZYXsd323urfCgMj8fj8Xg8Ho/H4/F4PB6Px+PxeDz+Z/4GLPLRZ1RHc5UAAAAASUVORK5CYII="
    "barCodeNumber": "0123456789123",
    "smallPosterUrl": "https://..."
    "legalOwner": "Организатор...",
    "age": "18+",
    }
 ],
 "command": "GET_TICKETS_BY_ACTION_EVENT",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ ШАБЛОНА БИЛЕТА В ФОРМАТЕ SVG

ПОЛУЧЕНИЕ КУПЛЕННЫХ БИЛЕТОВ ПО ID ЗАКАЗА (command = GET_TICKETS_BY_ORDER)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_TICKETS_BY_ORDER
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
orderId число Ulong Обязательное id заказа
sizeQrCode число Uint Необязательное размер Qr кода
(задается одна сторона,
картинка будет квадратная)
widthBarCode число Uint Необязательное ширина Bar кода
heightBarCode число Uint Необязательное высота Bar кода
type строка Необязательное тип изображения. PNG, JPG
rawCoordinates boolean Необязательное если присутствует и равно true,
то в ответе поля sector, row,
number, categoryName будут
иметь стандартные значения (как везде).
Рекомендуется всегда передавать true

Состав полей ответа:

Поле Тип Обязательность Описание
corderDatePattern строка Обязательное формат даты заказа
(например: dd.MM.yyyy HH:mm:ss)
actionEventDatePattern строка Обязательное формат даты сеанса в билете
(например: dd.MM.yyyy HH:mm)
orderId число Ulong Обязательное id заказа, переданный в запросе
date строка Обязательное дата заказа в формате orderDatePattern
discount число cur Обязательное скидка
serviceCharge число cur Обязательное сервисный сбор (СС)
sum число cur Обязательное сумма без СС
totalSum число cur Обязательное общая сумма
quantity число Uint Обязательное количество билетов
status число Обязательное статус заказа
statusExtStr строка Обязательное статус заказа
statusExtInt число int Обязательное статус заказа
ticketList массив Обязательное список билетов

ticketList:

Поле Тип Обязательность Описание
ticketId число Ulong Обязательное id билета
seatId число Ulong Обязательное id места
date строка Обязательное дата представления в формате
actionEventDatePattern
venueName строка Обязательное наименование места проведения
venueAddress строка Обязательное адрес места проведения
actionName строка Обязательное название представления
sector строка Необязательное сектор
row строка Необязательное ряд
number строка Необязательное место
categoryName строка Обязательное информация о ценовой категории места
price число cur Обязательное цена билета
totalPrice число cur Обязательное цена билета с учетом СС
serviceCharge число cur Обязательное СС
qrCodeImg строка Обязательное Qr код в Base64 в формате,
переданном в запросе
barCodeImg строка Обязательное Bar код в Base64 в формате,
переданном в запросе
barCodeNumber строка Обязательное значение штрихкода
barCodeType строка Обязательное тип штрихкода:
EAN_13, ITF, CODE_128A,
CODE_128B, CODE_128C,
CODE_39
smallPosterUrl строка Обязательное url постера (320х335)
legalOwner строка Обязательное Данные организатора
age строка Обязательное Возрастное ограничение
statusInt число Обязательное статус билета
statusStr строка Обязательное статус билета

Статус билета:

statusInt statusStr
0 Не использовал
1 Вошел
2 Вышел
3 Вернул билет
4 Возврат билета в ВБС
5 Впустил контроллер

Пример запроса:
{
 "orderId": 5,
 "sizeQrCode": 500,
 "widthBarCode": 500,
 "heightBarCode": 100,
 "type": "PNG",
 "userId": 11,
 "sessionId": "c6721d3c35c247da84ac460004840b68",
 "command": "GET_TICKETS_BY_ACTION_EVENT",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "orderDatePattern": "dd.MM.yyyy HH:mm:ss",
 "actionEventDatePattern": "dd.MM.yyyy HH:mm",
 "orderId": 5,
 "date": "27.09.2015 10:01:01",
 "discount": 0,
 "serviceCharge": 0,
 "sum": 1000,
 "totalSum": 1000,
 "quantity": 5,
 "statusExtStr": "PAID",
 "statusExtInt": 2,
 "ticketList": [
    {
    "ticketId": 10075,
    "date": "28.09.2015 11:01",
    "venueName": "Зимний театр",
    "venueAddress": "ул. Театральная, 2",
    "actionName": "Кармен",
    "sector": "Сектор Партер",
    "row": "Ряд 1",
    "number": "Место 22",
    "categoryName": "Категория Х",
    "price": 1000,
    "totalPrice": 0,
    "serviceCharge": 0,
     "qrCodeImg": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0AQAAAADjreInAAACwElEQVR42u3dS27jMBBFUe2A+99l7YCdjmjWq6KCbiCjJ1zDA1n2YUaEWB8y1/zVKy53H9d+fX1eV2N9/XXx9/25s34mBI939zqVEse1J9c9xH2h979nDx5v7mPNijUxRv5uz6v91R76Jnj8e/z3/FkfZebk4+S+xuPf6sfMOTPLmml/xONf5WsonaulHUvcYCT+cf2Fx7v5jJ/jf98/xN94vJuv2VCNk/dESvmP/Cse7+ajpkTHLNGyhNY57h4Uj3+F32kjTZWWKFrvy1d4vLeXqHgVyXacMCVbOmSgkWkmPN7b6zpJEqalYNZWXJETCY+39zVI0OVRqyu3MkPmj",
     "barCodeImg": "iVBORw0KGgoAAAANSUhEUgAAAfQAAABkAQAAAABYvP/QAAAAYklEQVR42u3LsQ2AIBBG4TMWVzICm+hiJDAabMIIV1KY/GpcwuI1r3n5TFGyK3atLer0njQ1dNk6o5iPJ+qpmUZYXsd323urfCgMj8fj8Xg8Ho/H4/F4PB6Px+PxeDz+Z/4GLPLRZ1RHc5UAAAAASUVORK5CYII="
    "barCodeNumber": "0123456789123",
    "smallPosterUrl": "https://..."
    "legalOwner": "Организатор...",
    "age": "18+",
    }
 ],
 "command": "GET_TICKETS_BY_ACTION_EVENT",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ ИНФОРМАЦИИ ПО ПРОДАННЫМ БИЛЕТАМ ЗА КОНКРЕТНЫЙ ДЕНЬ (command = GET_TICKETS_BY_DAY)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_TICKETS_BY_DAY
date строка Обязательное дата в формате dd.MM.yyyy

Состав полей ответа:

Поле Тип Обязательность Описание
date строка Обязательное дата в формате dd.MM.yyyy
cityList массив Обязательное список городов

cityList:

Поле Тип Обязательность Описание
cityId число Ulong Обязательное id города
actionList массив Обязательное список представлений

actionList:

Поле Тип Обязательность Описание
actionId число Ulong Обязательное id представления
actionEventList массив Обязательное список сеансов

actionEventList:

Поле Тип Обязательность Описание
actionEventId число Ulong Обязательное id сеанса
ticketList массив Обязательное список билетов

ticketList:

Поле Тип Обязательность Описание
ticketId число Ulong Обязательное id билета
seatId число Ulong Обязательное id места
date строка Обязательное дата продажи в формате
dd.MM.yyyy HH:mm:ss
price число cur Обязательное цена билета
discount число cur Обязательное скидка
serviceCharge число cur Обязательное сервисный сбор (СС)
totalPrice число cur Обязательное цена билета с учетом СС и скидки
refunded boolean Обязательное true - билет возвращен

Пример запроса:
{
 "date": "08.06.2017",
 "command": "GET_TICKETS_BY_DAY",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "date": "07.06.2017",
 "cityList": [
  {
   "cityId": 3,
   "actionList": [
    {
     "actionId": 323,
     "actionEventList": [
      {
       "actionEventId": 1814,
       "ticketList": [
        {
         "ticketId": 30935,
         "seatId": 2943773,
         "date": "07.06.2017 12:57:01",
         "price": 3000,
         "discount": 0,
         "serviceCharge": 0,
         "totalPrice": 3000.00,
         "refunded": false
        },
       ]
      }
     ]
    }
   ]
  }
 ],
 "command": "GET_TICKETS_BY_DAY",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ПОЛЬЗОВАТЕЛЕ (command = GET_USER_INFO)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_USER_INFO
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя

Состав полей ответа:

Поле Тип Обязательность Описание
seatInReserve число Uint Обязательное Количество забронированных мест
orderInWait число Uint Обязательное Количество незавершенных заказов

Пример запроса:
{
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "GET_USER_INFO",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
Пример ответа:
{
 "seatInReserve": 2,
 "orderInWait": 0,
 "command": "GET_USER_INFO",
 "resultCode": 0,
 "description": "OK"
}

ОТПРАВКА БИЛЕТОВ НА ПОЧТУ (command = SEND_TICKETS_TO_EMAIL)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное SEND_TICKETS_TO_EMAIL
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
email строка Обязательное почтовый адрес
ticketIdList массив Обязательное список id билетов

Пример запроса:
{
 "email": "email@list.ru",
 "ticketIdList": [
  10261
 ],
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "command": "SEND_TICKETS_TO_EMAIL",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}

Пример ответа:
{
 "command": "SEND_TICKETS_TO_EMAIL",
 "resultCode": 0,
 "description": "OK"
}

УДАЛЕНИЕ (command = DELETE)

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

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное DELETE
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
id число Ulong Обязательное id элемента, в зависимости от destination
destination строка Обязательное может принимать значения ORDER,
TICKET, TICKETS_BY_ACTION_EVENT

* destination = TICKETS_BY_ACTION_EVENT - помечаются как удаленные все билеты пользователя на конкретный сеанс.

Состав полей ответа:

Поле Тип Обязательность Описание
id число Ulong Обязательное id элемента, который передавался в запросе
destination строка Обязательное destination, который передавался в запросе

Пример запроса удаления заказа:
{
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "id": 1, //id заказа
 "destination": "ORDER"
 "command": "DELETE",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}

Пример ответа успешного удаления:
{
 "command": "DELETE",
 "id": 1, //id удаленного заказа
 "destination": "ORDER"
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ЗАКАЗЕ (command = GET_ORDER_INFO)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_ORDER_INFO
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
orderId число Ulong Обязательное id заказа

Состав полей ответа:

Поле Тип Обязательность Описание
orderId число Ulong Обязательное id заказа, переданного в запросе
status число Обязательное статус заказа
statusExtStr строка Обязательное статус заказа
statusExtInt число int Обязательное статус заказа
orderInfoList массив Обязательное

orderInfoList:

Поле Тип Обязательность Описание
actionId число Ulong Обязательное id представления
actionName строка Обязательное название представления
quantity число Uint Обязательное количество билетов
sum число cur Обязательное общая сумма
smallPosterUrl строка Обязательное url постера (320х335)

Пример запроса:
{
 "userId": 1,
 "sessionId": "b1581ac148e0796b176a8bc4e7b773ad",
 "orderId": 829,
 "command": "GET_ORDER_INFO",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}

Пример ответа:
{
 "orderId": 829,
 "statusExtStr": "NEW",
 "statusExtInt": 0,
 "orderInfoList": [
   {
     "actionId": 80,
     "actionName": "В сердце моря",
     "quantity": 1,
     "sum": 200,
     "smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=80&hash=q823uap2k22aj0da1hbktd0ch"
   }
  ],
 "command": "GET_ORDER_INFO",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ ПОЧТЫ (command = GET_EMAIL)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_EMAIL
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя

Состав полей ответа:

Поле Тип Обязательность Описание
email строка Обязательное почта пользователя
needSendTicketEmail boolean Обязательное true - отправлять билеты на почту

Пример запроса:
{
"userId": 1,
"sessionId": "1e58084051c60a219d672c4b7a12d743",
"command": "GET_EMAIL",
"fid": 1,
"token": "f8fcf07a4ea5c7979780"
}

Пример ответа:
{
"email": "sinyakin89@list.ru",
"needSendTicketEmail": true,
"command": "GET_EMAIL",
"resultCode": 0,
"description": "OK"
}

ОТПРАВКА GCM ТОКЕНА НА СЕРВЕР (command = SET_PUSH_TOKEN)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное SET_PUSH_TOKEN
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
pushToken строка Обязательное токен

Пример запроса:
{
 "userId": 1,
 "sessionId": "1e58084051c60a219d672c4b7a12d743",
 "pushToken": "ec7c5ae54051c60a219d672c4b7d743",
 "command": "SET_PUSH_TOKEN",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}

Пример ответа:
{
 "command": "SET_PUSH_TOKEN",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧИТЬ НОВОСТИ (command = GET_NEWS)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_NEWS
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
time число long Обязательное время новости в мс
count число Uint Обязательное количество новостей (от 1 до 30)
cursorMode строка Обязательное forward - новые новости
backward - старые новости

Состав полей ответа:

Поле Тип Обязательность Описание
datePattern строка Обязательное паттерн даты новости
cursorMode строка Обязательное cursorMode, переданный в запросе
serverUnixTime число long Обязательное серверное время в мс
last boolean Обязательное true - последняя новость,
false - не посл новость
newsList массив Обязательное список новостей

newsList:

Поле Тип Обязательность Описание
id число Ulong Обязательное id новости
unixTime число long Обязательное время новости в мс
date строка Обязательное дата в формате datePattern
header строка Обязательное Заголовок новости
fullDescription строка Обязательное Описание новости

Пример запроса (получить 10 новостей младше текущей даты):
{
 "time": 0,
 "count": 10,
 "cursorMode": "backward",
 "userId": 1,
 "sessionId": "1e58084051c60a219d672c4b7a12d743",
 "command": "GET_NEWS",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}
* time используется либо 0, либо unixTime пришедшей новости, либо serverUnixTime. Локальное время устройства не использовать!

Если time = 0, то на сервере используется значение текущего времени

Если cursorMode = forward, то новости приходят отсортированные по возрастанию даты
Если cursorMode = backward, то новости приходят отсортированные по убыванию даты.

Пример ответа:
{
 "datePattern": "dd.MM.yyyy HH:mm",
 "newsList": [
  {
   "id": 91,
   "unixTime": 1458571320000,
   "date": "21.03.2016 17:42",
   "header": "Заголовок 1",
   "fullDescription": "Описание 1"
  },
  {

   "id": 72,
   "unixTime": 1457989200000,
   "date": "15.03.2016 00:00",
   "header": "Заголовок 2",
   "fullDescription": "Описание 2"
  }
  ],
 "cursorMode": "backward",
 "serverUnixTime": 1459769342975,
 "last": false,
 "command": "GET_NEWS",
 "resultCode": 0,
 "description": "OK"
}

ПРОВЕРКА КДП (command = CHECK_KDP)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное CHECK_KDP
userId число Ulong Обязательное id пользователя в БС
sessionId строка Обязательное id сессии пользователя
actionId число Ulong Обязательное id представления
kdp число int Обязательное КДП

Пример запроса:
{
 "userId": 1,
 "sessionId": "1e58084051c60a219d672c4b7a12d743",
 "actionId": 10,
 "kdp": 12345,
 "command": "CHECK_KDP",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}

Пример положительного ответа:
{
 "command": "CHECK_KDP",
 "resultCode": 0,
 "description": "OK"
}

Пример ответа с неверным КДП:
{
 "command": "CHECK_KDP",
 "resultCode": 101,
 "description": "неверный КДП"
}

ПОЛУЧЕНИЕ ДАННЫХ ДЛЯ ФИЛЬТРА (command = GET_FILTER)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_FILTER

Состав полей ответа:

Поле Тип Обязательность Описание
cityList массив Обязательное список городов
kindList массив Обязательное список видов

cityList:

Поле Тип Обязательность Описание
cityId число Ulong Обязательное id города
cityName строка Обязательное название города
venueList массив Обязательное список мест проведений

venueList:

Поле Тип Обязательность Описание
venueId число Ulong Обязательное id места проведения
venueName строка Обязательное наименование места проведения

kindList:

Поле Тип Обязательность Описание
kindId число Uint Обязательное id вида
kindName строка Обязательное наименование вида

Пример запроса:
{
 "command": "GET_FILTER",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}

Пример ответа:
{
 "cityList": [
   {
     "cityId": 1,
     "cityName": "Сочи",
     "venueList": [
       {
          "venueId": 1,
         "venueName": "Зимний театр"
       },
       {
         "venueId": 24,
         "venueName": "Зеленый театр парка \"Ривьера\""
       }
     ]
   },
   {
     "cityId": 2,
     "cityName": "Москва",
     "venueList": [
       {
         "venueId": 4,
         "venueName": "Малая Спортивная Арена Лужники"
       },
        {
         "venueId": 20,
         "venueName": "SCANDINAVIA CLUB"
       }
     ]
   },
 ],
 "kindList": [
   {
     "kindId": 0,
     "kindName": "События"
   },
    {
      "kindId": 1,
     "kindName": "Карты (МЭК)"
   },
   {
     "kindId": 2,
     "kindName": "Экскурсии"
   },
   {
     "kindId": 3,
     "kindName": "Рестораны"
   },
   {
     "kindId": 4,
     "kindName": "Отели"
   }
 ],
 "command": "GET_FILTER",
 "resultCode": 0,
 "description": "OK"
}

ПРИВЯЗКА ПОЧТЫ (command = BIND_EMAIL)

Чтобы подтвердить почту, необходимо:
1. выполнить метод BIND_EMAIL. На указанную почту придет код подтверждения.
2. выполнить CONFIRM_EMAIL с кодом, пришедшим на почту. В ответе придут данные аккаунта (userId, sessionId), к которым успешно прикреплена почта. С этими данными необходимо выполнять все последующие запросы.

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное BIND_EMAIL
userId число Ulong Обязательное id пользователя
sessionId строка Обязательное id сессии пользователя
email строка Обязательное email

Пример запроса:
{
 "userId": 1,
 "sessionId": "1e58084051c60a219d672c4b7a12d743",
 "command": "BIND_EMAIL",
 "email": "email@list.ru",
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}

Пример положительного ответа:
{
 "command": "BIND_EMAIL",
 "resultCode": 0,
 "description": "OK"
}

ПОДТВЕРЖДЕНИЕ ПОЧТЫ (command = CONFIRM_EMAIL)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное CONFIRM_EMAIL
userId число Ulong Обязательное id пользователя
sessionId строка Обязательное id сессии пользователя
code число Uint Обязательное код подтверждения

Состав полей ответа:

Поле Тип Обязательность Описание
userId число Ulong Обязательное id пользователя
sessionId строка Обязательное id сессии пользователя
email строка Обязательное прикрепленный email

Пример запроса:
{
 "userId": 1,
 "sessionId": "1e58084051c60a219d672c4b7a12d743",
 "command": "CONFIRM_EMAIL",
 "code": 123456,
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}

Пример положительного ответа:
{
 "command": "CONFIRM_EMAIL",
 "userId": 2,
 "sessionId": "2e4566051c60a219d672c4b7a12d129",
 "email": "email@list.ru",
 "resultCode": 0,
 "description": "OK"
}

ПОЛУЧЕНИЕ КАРТ (МЭК) (command = GET_MECS)

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное GET_MECS
userId число Ulong Обязательное id пользователя
sessionId строка Обязательное id сессии пользователя
mecId* число Ulong Необязательное id карты
sizeQrCode число Uint Обязательное размер Qr кода
(задается одна сторона,
картинка будет квадратная)
widthBarCode число Uint Обязательное ширина Bar кода
heightBarCode число Uint Обязательное высота Bar кода
rawCoordinates boolean Необязательное если присутствует и равно true,
то в ответе поле categoryName будет
иметь стандартное значения (как везде).
Рекомендуется всегда передавать true

*mecId - Поле используется для экономии трафика в основном на мобильных фронтендах. Если передать данное поле в запросе, то в ответ вернутся карты с id большим чем переданный в запросе. Подразумевается, что карты с id <= mecId хранятся локально и не требуются в повторной загрузке.

Состав полей ответа:

Поле Тип Обязательность Описание
list массив Обязательное массив с данными карт

list:

Поле Тип Обязательность Описание
actionEventId число Ulong Обязательное id сеанса
actionName строка Обязательное краткое наименование представления
fullActionName строка Обязательное полное наименование представления
bigPosterUrl строка Обязательное ссылка на постер
smallPosterUrl строка Обязательное ссылка на постер
cityId число Ulong Обязательное id города
cityName строка Обязательное название города
venueName строка Обязательное наименование места проведения
venueAddress строка Обязательное адрес места проведения
cityPass boolean Обязательное true - место проведение,
где действуют скидки и преференции
quantity число Uint Обязательное количество карт
totalSum число cur Обязательное общая сумма карт
mecList массив Обязательное массив карт по представлению

mecList:

Поле Тип Обязательность Описание
mecId число Ulong Обязательное id карты
categoryName строка Обязательное информация о категории места
price число cur Обязательное цена билета
qrCodeImg строка Обязательное Qr код в Base64 в формате,
переданном в запросе
barCodeImg строка Обязательное Bar код в Base64 в формате,
переданном в запросе
barCodeNumber строка Обязательное значение штрихкода

Пример запроса:
{
 "mecId": 5,
 "sizeQrCode": 500,
 "widthBarCode": 500,
 "heightBarCode": 100,
 "userId": 11,
 "sessionId": "c6721d3c35c247da84ac460004840b68",
 "command": "GET_MECS",
  "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}

Пример успешного ответа:
{
 "list": [
  {
  "actionEventId": 1178,
  "actionName": "Карта Магнит",
  "fullActionName": "Товары и услуги со скидками для сотрудников сети",
  "bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=156&hash=ixr9rn1fmd1hssxl6k06q3png",
  "smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=156&hash=k2tlcg2xsq82jynqo9yqkmr1q",
   "cityId": 1,
  "cityName": "Краснодар",
   "venueName": "Розничная сеть Магнит",
   "venueAddress": "Краснодар, ул. Солнечная, 15/5",
  "cityPass": false,
  "quantity": 2,
  "totalSum": 4645.00,
   "mecList": [
    {
    "mecId": 29096,
    "categoryName": "Категория: Корпоративная",
    "price": 245,
    "qrCodeImg": "qrCodeImg",
    "barCodeImg": "barCodeImg",
    "barCodeNumber": "2400107290966"
    },
   {
    "mecId": 29097,
    "categoryName": "Категория: Платиновая",
    "price": 4400,
    "qrCodeImg": "qrCodeImg",
    "barCodeImg": "barCodeImg",
    "barCodeNumber": "2400107290973"
   }
  ]
   },
  {
   "actionEventId": 1380,
   "actionName": "КЛУБ ЛЮБИМЫХ",
   "fullActionName": "карта бонусной программы",
   "bigPosterUrl": "https://api.bil24.pro:1240/image?type=bigPoster&actionId=201&hash=ohvtolmud5n3eacnl1ho1ysbe",
   "smallPosterUrl": "https://api.bil24.pro:1240/image?type=smallPoster&actionId=201&hash=gnoi2lhueiyx5d555gf8ziegt",
    "cityId": 2,
    "cityName": "Сочи",
    "venueName": "территория Сочи",
    "venueAddress": "Россия, Краснодарский край, Сочи",
    "cityPass": false,
   "quantity": 1,
    "totalSum": 0.00,
    "mecList": [
    {
     "mecId": 29102,
     "categoryName": "Категория: Золотая",
     "price": 0,
     "qrCodeImg": "qrCodeImg",
     "barCodeImg": "barCodeImg",
     "barCodeNumber": "2403107291025"
    }
    ]
  }
 ],
 "command": "GET_MECS",
 "resultCode": 0,
 "description": "OK"
}

ВОЗВРАТ БИЛЕТОВ (command = REFUND_TICKETS)*

Описание: возврат билетов.
*только для интерфейса Билетная система.

Поля запроса:

Поле Тип Обязательность Описание
command строка Обязательное REFUND_TICKETS
userId число Ulong Обязательное id пользователя
sessionId строка Обязательное id сессии пользователя
ticketIdSet массив Обязательное список id билетов

Состав полей ответа:

Поле Тип Обязательность Описание
statusMap ассоциативный массив Обязательное key - id билета, переданного в запросе.
value - число, статус возврата

Статус возврата билетов:
1 - невозможно вернуть
2 - в процессе возврата
3 - билет возвращен

Примечание: повторный запрос на отмену билета не вернет ошибку, а вернет текущий статус билета.

Пример запроса:
{
 "userId": 1,
 "sessionId": "1e58084051c60a219d672c4b7a12d743",
 "command": "REFUND_TICKETS",
 "ticketIdSet": [1, 2, 3],
 "fid": 1,
 "token": "f8fcf07a4ea5c7979780"
}

Пример положительного ответа:
{
 "command": "REFUND_TICKETS",
  "statusMap": {
  "1" : 1,
  "2" : 2,
  "3" : 2
 }
 "resultCode": 0,
 "description": "OK"
}

СТАТУС ЗАКАЗА

Некоторые методы возвращают в своем составе поля статус заказа (statusExtStr и statusExtInt).

statusExtStr statusExtInt Описание
NEW 0 Новый заказ/ожидание оплаты
PROCESSING 1 Обработка оплаченного заказа
PAID 2 Завершен
CANCELLING -1 Отмена неоплаченного заказа
CANCELLED -2 Отменен

Статус заказа может меняться в следующих последовательностях:
NEW → PROCESSING → PAID
NEW → CANCELLING → CANCELLED

В исключительных случаях, из-за ошибок во внешних билетных системах, заказ может быть отменен вручную оператором системы, в этом случае статус заказа изменится так:
PROCESSING → CANCELLED

Статусы PAID и CANCELLED являются окончательными и не могут быть изменены. Получение билетов необходимо производить только после достижения заказом статуса PAID.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 09.05.2016

1. Метод GET_VENUES
- в ответе в объекте Venue добавил параметр cityId, параметр cityName теперь обязательный в ответе;
- поле fields: CITY_NAME устарело, добавил значение DESCRIPTION.

2. Метод GET_ACTIONS
- в запросе добавил поле dateFrom - необязательное (от какой даты получить представления);
- в ответе добавил поле actionEventTime - необязательное (если сеанс идет всегда в одно время, то поле будет);
- в ответе добавил поле venueName - необязательное (если место проведение всего одно, то поле будет);
- в ответе добавил поле kdp - обязательное (КДП - код доступа к представлению).
*Перед открытием схемы зала или нажатием кнопки забронировать(безместовая схема зала) пользователь должен ввести КДП (метод для проверки кдп - CHECK_KDP)

3. Метод GET_ORDERS
- в объекте paymentOrder поле type устарело и не используется, вместо него поле gateway;
- описаны все имеющиеся на данный момент paymentOrder.

4. Методе GET_TICKETS_BY_ACTION_EVENT
- в списке билетов добавил поле actionName;
- в списке билетов добавил поле smallPosterUrl.

5. Добавил GET_TICKETS_BY_ORDER
Возвращает все данные билетов по заказу.

6. Добавил метод CHECK_KDP (смотреть пункт 2)

7. Метод CREATE_ORDER
- добавил поля successUrl, failUrl - ОБЯЗАТЕЛЬНЫЕ поля, редиректы после оплаты;
- добавил поле email - необязательный параметр, указывает на то, на какой адрес отправить билеты после оплаты.

8. Добавил метод GET_FILTER

9. Метод GET_ACTION_EVENTS_GROUPED_BY_TICKETS
добавил поля:
fullActionName - полное название представления;
cityName - название города;
venueName - наименование места проведения;
quantity - количество билетов;
sum - сумма билетов.

10. Добавил метод GET_ACTION_EXT
возвращает информацию о мероприятии в конкретном городе, список мест где оно проводится, в каждом месте проведения список сеансов. Данный метод сделан для упрощения программирования. Вместо него надо было выполнить 3 запроса к серверу: GET_VENUES, GET_ACTION, GET_ACTION_EVENTS.

11. Добавил метод GET_CART
возвращает список забронированных мест. Места сгруппированы по сеансам. Метод GET_SEAT_IN_RESERVE устарел. Попрошу его больше не использовать.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 20.05.2016

1. Изменение в методе GET_ACTIONS (Метод устарел. Смотрим пункт 4)
- добавил обязательное поле kindId в ответе в списке actionList;
- добавил обязательное поле kindName в ответе в списке actionList.

2. Изменение в методе GET_ACTION_EXT
- добавил обязательное поле kindId в ответе в объекте action;
- добавил обязательное поле kindName в ответе в объекте action;
- добавил обязательное поле categoryList в ответе в объекте actionEventList.

3. Изменение в методе GET_ACTION (Метод устарел)
- добавил обязательное поле kindId в ответе в объекте action;
- добавил обязательное поле kindName в ответе в объекте action.

4. Добавил метод GET_ACTIONS_V2
новый метод вместо GET_ACTIONS. Метод позволяет запросить представления только по городу. Все остальные фильтры (места проведения, виды, дата) на клиенте.

5. Увидел в логах использование на фронтенде 1003 методов CHANGE_PRIVATE_DATA, GET_PRIVATE_DATA. Методы устарели месяца 4 назад. Попрошу перейти на метод SET_EMAIL, GET_EMAIL.

6. Метод GET_TICKETS_BY_ACTION_EVENT
15.10.2015 устарело поле seatInfo. 7. Метод GET_SEAT_IN_RESERVE устарел. Вместо него GET_CART.

8. Метод RESERVATION (бронирование мест в безместовой схеме зала)
поля quantity, categoryPriceId устарели. Вместо этих полей использовать categoryQuantityMap.

9. Метод GET_ORDERS
поле paymentOrder устарело. Добавил поле formUrl в orderList (поле перенесено из paymentOrder).

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 15.06.2016

1. Если представление требует ввода КДП, то при запросе схемы зала в url надо добавить параметр kdp=КДП.

2. В запросе "Бронирование места в безместовой схеме зала (command = RESERVATION)" добавлен необязательный параметр kdp. Передавать его, если представление требует ввод КДП.

3. Добавил в методе GET_CART в объекте actionEventList поля cityId и venueId.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.06.2016

1. В ответах на запросы GET_TICKETS_BY_ORDER и GET_TICKETS_BY_ACTION_EVENT в списке билетов добавлены два поля legalOwner и age.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 23.06.2016

1. Метод RESERVATION (type RESERVE, RESERVE_BY_PLACE). Добавил параметр kdp. Если представление требует ввода kdp, то параметр обязателен.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 08.07.2016

1. Добавил полу actionId в ответе на запрос GET_CART в объекте actionEventList.

2. Добавил поле phone в запросе CREATE_ORDER.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.07.2016

1. В ответе на запрос GET_CART добавил общий сервисный сбор, по сеансу и по месту.

2. В ответе на запрос GET_ACTION_EXT поле categoryList перенесено в categoryLimitList.

Существует 3 вида схем:
1. Безместовая. placementUrl будет отсутствовать, смотрим categoryLimitList.
2. Местовая. Смотрим placementUrl, categoryLimitList будет пустой.
3. Комбинированная. Смотрим placementUrl и categoryLimitList.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 16.08.2016

1. В ответе на запрос GET_ORDERS добавил поля discount и serviceCharge. Поля в рублях.

2. В запросе CREATE_ORDER добавил поля discount и serviceCharge. Поля в процентах.

3. В ответе на запрос AUTH добавил поле frontendType.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 02.09.2016

1. Добавил методы привязки почты BIND_EMAIL, CONFIRM_EMAIL.
Данные методы временно работают только в тестовой зоне. метод SET_EMAIL устарел и не работает теперь в тестовой зоне.

2. Добавил отдельный метод получения карт GET_MECS.
С учетом появления данного метода карты не отдаются методами GET_ACTION_EVENTS_GROUPED_BY_TICKETS, GET_TICKETS_BY_ACTION_EVENT. Ограничения по выдаче карт введены пока только в тестовой зоне. Карты не отдаются на немобильные фронтенды как в тестовой так и в реальной зоне.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 25.10.2016

1. Поля email и phone в запросе CREATE_ORDER доступны только для интерфейсов типа КАССА и ПРИГЛАСИТЕЛЬНЫЙ.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 25.11.2016

1. Добавлен метод возврата билетов REFUND_TICKETS.

2. Добавлено поле статус заказа (status) в ответах на запросы CREATE_ORDER и GET_ORDER_INFO.

3. Метод CREATE_ORDER. Поле paid устарело и будет удалено 25.12.2016.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 15.12.2016

1. Добавил метод GET_ORDERS_EXT.

2. Метод GET_TICKETS_BY_ORDER. Добавил поля: orderDatePattern, actionEventDatePattern, totalPrice, serviceCharge. Удалил поле datePattern.

3. Метод GET_TICKETS_BY_ACTION_EVENT. Добавил поля: totalPrice, serviceCharge.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 27.12.2016

1. Добавил в методе CREATE_ORDER поле fullName. Поле необязательное. Содержимое поля отобразится на билете.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 04.02.2017

1. Метод GET_ACTION_EXT. В категорию добавлен параметр availability. availability - кол-во доступных мест в категории. Если remainder отсутствует, то ориентируемся на availability. Если remainder присутствует, то нужно внимательно использовать эти параметры. К примеру общее ограничение remainder на 3 категории может быть 100, но и в каждой категории availability также может быть 100.

2. Добавлен новый статус resultCode 102, означающий, что необходимо привязать почту. Проверять данный код необходимо при ответе на запрос RESERVATION.

3. Метод GET_ACTION_EVENTS_GROUPED_BY_TICKETS. Добавлено поле ticketsUrl - ссылка на билеты в формате pdf (ссылка на вновь купленные билеты включительно с 27.02.2017. Если билет куплен ранее, то по ссылке билетов не будет).

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 05.05.2017

1. Метод GET_CITIES устарел. Вместо него использовать GET_FILTER.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 18.05.2017

1. Метод GET_ACTION_EXT. Добавлен параметр bookletUrl - ссылка на буклет на конкретное представление.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 08.06.2017

1. Добавлены поля статуса заказа (statusExtStr и statusExtInt) в ответах на запросы CREATE_ORDER, GET_ORDER_INFO, GET_ORDERS, GET_ORDERS_EXT, GET_TICKETS_BY_ORDER.

2. Поле status устарело в методах CREATE_ORDER, GET_ORDER_INFO, GET_ORDERS, GET_ORDERS_EXT, GET_TICKETS_BY_ORDER.

3. Добавлен метод CREATE_USER.

4. Добавлен метод GET_SEAT_LIST.

5. Добавлен метод CREATE_ORDER_EXT.

6. Добавлен метод CANCEL_ORDER.

7. Добавлен метод PAY_ORDER.

8. Добавлено новое поле age (возрастное ограничение) в ответ метода GET_ACTION_EXT.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 06.07.2017

1. Изменено описание метода GET_CITIES.

2. Добавлен метод GET_VENUE_TYPES.

3. Добавлен метод GET_VENUES.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 13.07.2017

1. Изменено описание методов бронирования RESERVATION.

2. Добавлено новое поле barCodeType (тип штрихкода) в ответ метода GET_TICKETS_BY_ORDER.

3. Добавлено новое необязательное поле longReservation в метод CREATE_ORDER_EXT.

4. Добавлено новое поле orderTimeout в ответ метода CREATE_ORDER_EXT.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 22.07.2017

1. Добавлены новые поля (organizerId, organizerName, legalOwner) в ответ метода GET_ACTION_EXT.

2. Добавлен метод GET_TICKETS_BY_DAY.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 09.08.2017

1. Поле userId в запросе GET_ACTION_EXT необязательное.

2. Добавлен раздел "Общая схема использования протокола": команды протокола делятся на сессионные и несессионные.
Список несессионных команд:
1. GET_ACTIONS_V2;
2. GET_ACTION_EXT;
3. GET_CITIES;
4. GET_VENUE_TYPES;
5. GET_VENUES;
6. GET_FILTER;
7. GET_SEAT_LIST;
8. GET_TICKETS_BY_DAY.

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

Для выполнения сессионных команд нужно иметь sessionId. Получить его первоначально нужно с помощью команды AUTH (для билетных систем CREATE_USER). Полученные данные пользователя рекомендуется сохранить и использовать повторно. Сессия пользователя определяется sessionId и действует бессрочно.

В общем случае, sessionId понадобится перед командой BIND_EMAIL (RESERVATION для билетных систем).

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 23.08.2017

1. Добавлено новое поле seatId в ответ метода GET_TICKETS_BY_ORDER.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 02.10.2017

1. Добавил описание статусов билета в метод GET_TICKETS_BY_ORDER.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 18.02.2018

1. Добавлены новые поля seatList и cartTimeout в ответ метода RESERVATION.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 01.03.2018

1. Добавлены новые поля cityId и cityPass в ответ метод GET_MECS.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 12.03.2018

1. Добавлены новые поля seatingPlanId и seatingPlanName в ответ метода GET_ACTION_EXT.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 19.08.2018

1. Из всех запросов удалено обязательное поле versionCode. 2. Удален метод SEND_WI_FLY_DATA.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 16.10.2018

1. Везде изменен адрес сервера на api.bil24.pro.

2. В методе GET_TICKETS_BY_ORDER добавлено описание вариантов типов штрих-кодов.

3. В методах GET_CART, GET_MECS, GET_ORDERS_EXT, GET_TICKETS_BY_ACTION_EVENT, GET_TICKETS_BY_ORDER в параметры запроса добавлено новое необязательное поле rawCoordinates. Передача значения true исправляет несовместимости со значением координат мест (sector, row, number) и названием категории categoryName.

ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 06.12.2018

1. В ответ метода GET_SEAT_LIST добавлено новое поле categoryList.



ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 12.12.2018

1. Добавлен новый метод для интерфейсов Билетная система GET_ALL_ACTIONS



ИЗМЕНЕНИЯ ПРОТОКОЛА ОТ 10.04.2019

1. Добавлен новый метод ADD_PROMO_CODES
2. Добавлены новые поля categoryPriceId, nominal, discount и discountReason в ответ метода GET_CART 3. Добавлено новое поле externalOrderId в ответ метода CREATE_ORDER_EXT