API: Контроль доступа
Терминология
- Сканер - устройство считывающее штрих-код билета и отправляющее запрос на сервер, или проверяющее валидность штрих-кода самостоятельно
- Контролер - лицо осуществляющее контроль доступа и имеющее логин и пароль для авторизации на сканере
- Билетная система - система TicketSteam
Параметры
- В качестве транспортного протокола используется HTTPS.
- Для авторизации используется логин и пароль пользователя, выдаваемый при регистрации сканера.
- Основные свойства:
- Запрос передается БС в виде POST-запросов
- При этом параметры кодируются в стандартном для HTTP виде
- Ответы представляют собой текст в формате JSON
- Используется кодировка UTF-8
- Общая схема работы:
- Контролер после запуска приложения на сканере вводит свой логин и пароль, которые отправляются в БС для проверки. В случае успешной авторизации, контролер может приступать к сканированию штрих-кодов. Данные для авторизации отправляются с каждым запросом.
- Для проверки валидности штрих-кода после сканирования, отправляется запрос в БС для подтверждения возможности прохода/выхода покупателя.
Формат запроса
Обязательные параметры, присутствующие в каждом запросе:
- action - название запроса
- auth - зашифрованный логин и пароль в формате: login:sha1(md5(password)+timestamp):timestamp
Формат ответа:
Сообщение об ошибке:
{ "status":"1", "description":"Описание ошибки" }
Успешный ответ сервера:
{ "status":"0", "result":"...Данные..." }
Запросы
login: авторизация
Возвращает пустой ответ с успешным статусом
event.list: список доступных событий
Возвращает массив объектов:
- id - идентификатор
- name - название
- date - дата
- venue - место проведения
barcode.list: список штрих кодов
Принимает данные:
- event_id - идентификатор события
- extended - вернуть расширенную информацию
Возвращает массив объектов:
- barcode - штрих код
- status - статус (0 - снаружи, 1 - внутри)
Дополнительные поля, при переданном параметре extended (могут отсутствовать):
- order_id - идентификатор заказа
- customer - имя покупателя
- order_date - дата оформления заказа в формате ДД.ММ.ГГГГ ЧЧ:ММ
- sector - сектор
- row - номер ряд
- row_name - заменитель слова "ряд"
- place - номер места
- place_name - заменитель слова "место"
barcode.fix: фиксирует штрих кода, после синхронизации
Принимает данные:
- barcodes - JSON массив объектов:
- barcode - штрих код
- status - статус (0 - снаружи, 1 - внутри)
Возвращает пустой ответ с успешным статусом
barcode.check: проверка штрих кода
Принимает данные:
- barcode - штрих код
- mode - тип (0 - вход, 1 - выход)
Возвращает:
- пустой ответ с успешным статусом или сообщение с ошибкой
- в корне ответа может присутствовать параметр place с дополнительной информацией о билете