Содержание

ProBonus API: Авторизация, лицензия и пользователи

Получение и обновление токена, информация о лицензии, управление пользователями веб-интерфейса и API, роли и права.

Общие правила (адрес, авторизация, форматы, коды ошибок) — на странице ProBonus API. Справочник методов.

Список методов

Метод Адрес Назначение
GET /api/v0/auth/info Получение информации о лицензии и настройках сервера ProBonus
POST /api/v0/auth/login Получение токена авторизации (на основании логина и пароля)
POST /api/v0/auth/logout Выход пользователя из системы
POST /api/v0/auth/refresh_token Обновление токена авторизации
GET /api/v0/license/check_license Принудительное обновление информации о лицензии с сервера лицензирования
GET /api/v0/license/info Получение информации о лицензии на ПО ProBonus
POST /api/v0/users/change_password Обновление пароля для пользователя по заданному id
POST /api/v0/users/delete Удаление пользователя по заданному id
GET /api/v0/users/get Чтение данных пользователя по заданному id
POST /api/v0/users/insert Добавление нового пользователя — insert
POST /api/v0/users/insert_api_user Добавление нового пользователя — insert_api_user
GET /api/v0/users/list Чтение справочника "Пользователи"
POST /api/v0/users/update Изменение данных пользователя по заданному id — update
POST /api/v0/users/update_api_user Изменение данных пользователя по заданному id — update_api_user
POST /api/v0/roles/delete Удаление роли
GET /api/v0/roles/get Чтение роли по id
POST /api/v0/roles/insert Добавление роли
GET /api/v0/roles/list Список ролей
POST /api/v0/roles/update Изменение роли

Авторизация

Получение информации о лицензии и настройках сервера ProBonus

GET /api/v0/auth/info

Авторизация: требуется

Ответ 200 — объект AuthInfoDto:

Поле Тип Обяз. Описание
license LicenseInfoDto да Лицензия
settings SettingsDto да Настройки

Дополнительные коды ответа: 401 — Unauthorized.

Получение токена авторизации (на основании логина и пароля)

POST /api/v0/auth/login

Авторизация: не требуется

Данный токен необходим для работы со всеми остальными запросами. Возвращает accessToken (передаётся в заголовке Authorization: Bearer <accessToken> во всех остальных запросах) и refreshToken для продления сессии.

Тело запроса — объект AuthLoginRequestDto:

Поле Тип Обяз. Описание
login string(50) да Логин пользователя ProBonus
password string да Пароль пользователя

Ответ 200 — объект AuthLoginResultDto:

Поле Тип Обяз. Описание
accessToken string да Токен доступа; передаётся в заголовке Authorization: Bearer <accessToken>
expire datetime да Дата и время окончания действия токена доступа
tokenType string Тип токена (bearer); по умолчанию «bearer»
refreshToken string да Токен для получения новой пары токенов (метод /api/v0/auth/refresh_token)

Дополнительные коды ответа: 401 — Unauthorized.

Выход пользователя из системы

POST /api/v0/auth/logout

Авторизация: требуется

Ответ 200: JSON (структура в схеме не описана).

Дополнительные коды ответа: 401 — Unauthorized.

Обновление токена авторизации

POST /api/v0/auth/refresh_token

Авторизация: не требуется

Выдаёт новую пару токенов по действующему refreshToken. Авторизация заголовком не требуется.

Тело запроса — объект AuthRefreshTokenRequestDto:

Поле Тип Обяз. Описание
accessToken string да Токен доступа
refreshToken string да Токен обновления сессии

Ответ 200 — объект AuthRefreshTokenResultDto:

Поле Тип Обяз. Описание
accessToken string да Токен доступа
expire datetime да Срок действия токена

Дополнительные коды ответа: 401 — Unauthorized.

Лицензия

Принудительное обновление информации о лицензии с сервера лицензирования

GET /api/v0/license/check_license

Авторизация: не требуется

Ответ 200 — объект LicenseInfoDto:

Поле Тип Обяз. Описание
online boolean Онлайн-проверка лицензии выполнена
valid boolean Лицензия действительна
status string Статус лицензии
expired date Дата окончания лицензии
message string Сообщение
sublicensesIds string Идентификаторы сублицензий
sublicensesStrs string Сублицензии
objectId integer Идентификатор объекта лицензирования
objectName string Наименование объекта лицензирования
projectName string Наименование проекта (лицензия)
projectLicenseCount integer Количество лицензий проекта
applicationVersion string да Версия ProBonus

Получение информации о лицензии на ПО ProBonus

GET /api/v0/license/info

Авторизация: не требуется

Ответ 200 — объект LicenseInfoDto:

Поле Тип Обяз. Описание
online boolean Онлайн-проверка лицензии выполнена
valid boolean Лицензия действительна
status string Статус лицензии
expired date Дата окончания лицензии
message string Сообщение
sublicensesIds string Идентификаторы сублицензий
sublicensesStrs string Сублицензии
objectId integer Идентификатор объекта лицензирования
objectName string Наименование объекта лицензирования
projectName string Наименование проекта (лицензия)
projectLicenseCount integer Количество лицензий проекта
applicationVersion string да Версия ProBonus

Пользователи

Обновление пароля для пользователя по заданному id

POST /api/v0/users/change_password

Авторизация: требуется

Тело запроса — объект UserChangePasswordDto:

Поле Тип Обяз. Описание
id integer да Идентификатор
newPassword string да Новый пароль

Ответ 200 — объект UserDto:

Поле Тип Обяз. Описание
login string(50) да Логин
commentary string Комментарий
isSuperuser boolean да Суперпользователь (все права)
permittedDbObjects UserPermissionsDto Объекты, доступные пользователю (например, рестораны)
createDateTime datetime Дата и время создания
id integer да Идентификатор пользователя
role UserRoleIdName да Роль
kind UserKindType да Вид

Удаление пользователя по заданному id

POST /api/v0/users/delete

Авторизация: требуется

Параметры запроса:

Параметр Где Тип Обяз. Описание
id строка запроса integer да Идентификатор объекта

Ответ 200: JSON (структура в схеме не описана).

Чтение данных пользователя по заданному id

GET /api/v0/users/get

Авторизация: требуется

Параметры запроса:

Параметр Где Тип Обяз. Описание
id строка запроса integer да Идентификатор объекта

Ответ 200 — объект UserDto:

Поле Тип Обяз. Описание
login string(50) да Логин
commentary string Комментарий
isSuperuser boolean да Суперпользователь (все права)
permittedDbObjects UserPermissionsDto Объекты, доступные пользователю (например, рестораны)
createDateTime datetime Дата и время создания
id integer да Идентификатор пользователя
role UserRoleIdName да Роль
kind UserKindType да Вид

Добавление нового пользователя — insert

POST /api/v0/users/insert

Авторизация: требуется

Тело запроса — объект UserInsertDto:

Поле Тип Обяз. Описание
login string(50) да Логин
commentary string Комментарий
isSuperuser boolean да Суперпользователь (все права)
permittedDbObjects UserPermissionsDto Объекты, доступные пользователю (например, рестораны)
createDateTime datetime Дата и время создания
role UserRoleId да Роль
password string да Пароль

Ответ 200 — объект UserDto:

Поле Тип Обяз. Описание
login string(50) да Логин
commentary string Комментарий
isSuperuser boolean да Суперпользователь (все права)
permittedDbObjects UserPermissionsDto Объекты, доступные пользователю (например, рестораны)
createDateTime datetime Дата и время создания
id integer да Идентификатор пользователя
role UserRoleIdName да Роль
kind UserKindType да Вид

Добавление нового пользователя — insert_api_user

POST /api/v0/users/insert_api_user

Авторизация: требуется

Создаёт пользователя для интеграции. Его бессрочный токен передаётся в заголовке X-API-Key.

Тело запроса — объект ApiUserInsertDto:

Поле Тип Обяз. Описание
login string(50) да Логин
commentary string Комментарий
isSuperuser boolean да Суперпользователь (все права)
permittedDbObjects UserPermissionsDto Объекты, доступные пользователю (например, рестораны)
createDateTime datetime Дата и время создания
role UserRoleId да Роль
apiKey string да Бессрочный токен пользователя для API

Ответ 200 — объект UserDto:

Поле Тип Обяз. Описание
login string(50) да Логин
commentary string Комментарий
isSuperuser boolean да Суперпользователь (все права)
permittedDbObjects UserPermissionsDto Объекты, доступные пользователю (например, рестораны)
createDateTime datetime Дата и время создания
id integer да Идентификатор пользователя
role UserRoleIdName да Роль
kind UserKindType да Вид

Чтение справочника "Пользователи"

GET /api/v0/users/list

Авторизация: требуется

Ответ 200 — массив объектов UserDto:

Поле Тип Обяз. Описание
login string(50) да Логин
commentary string Комментарий
isSuperuser boolean да Суперпользователь (все права)
permittedDbObjects UserPermissionsDto Объекты, доступные пользователю (например, рестораны)
createDateTime datetime Дата и время создания
id integer да Идентификатор пользователя
role UserRoleIdName да Роль
kind UserKindType да Вид

Изменение данных пользователя по заданному id — update

POST /api/v0/users/update

Авторизация: требуется

Тело запроса — объект UserUpdateDto:

Поле Тип Обяз. Описание
login string(50) да Логин
commentary string Комментарий
isSuperuser boolean да Суперпользователь (все права)
permittedDbObjects UserPermissionsDto Объекты, доступные пользователю (например, рестораны)
createDateTime datetime Дата и время создания
id integer да Идентификатор пользователя
role UserRoleId да Роль

Ответ 200 — объект UserDto:

Поле Тип Обяз. Описание
login string(50) да Логин
commentary string Комментарий
isSuperuser boolean да Суперпользователь (все права)
permittedDbObjects UserPermissionsDto Объекты, доступные пользователю (например, рестораны)
createDateTime datetime Дата и время создания
id integer да Идентификатор пользователя
role UserRoleIdName да Роль
kind UserKindType да Вид

Изменение данных пользователя по заданному id — update_api_user

POST /api/v0/users/update_api_user

Авторизация: требуется

Тело запроса — объект ApiUserUpdateDto:

Поле Тип Обяз. Описание
login string(50) да Логин
commentary string Комментарий
isSuperuser boolean да Суперпользователь (все права)
permittedDbObjects UserPermissionsDto Объекты, доступные пользователю (например, рестораны)
createDateTime datetime Дата и время создания
id integer да Идентификатор
role UserRoleId да Роль
apiKey string Бессрочный токен пользователя для API

Ответ 200 — объект UserDto:

Поле Тип Обяз. Описание
login string(50) да Логин
commentary string Комментарий
isSuperuser boolean да Суперпользователь (все права)
permittedDbObjects UserPermissionsDto Объекты, доступные пользователю (например, рестораны)
createDateTime datetime Дата и время создания
id integer да Идентификатор пользователя
role UserRoleIdName да Роль
kind UserKindType да Вид

Роли

Удаление роли

POST /api/v0/roles/delete

Авторизация: требуется

Параметры запроса:

Параметр Где Тип Обяз. Описание
id строка запроса string да Идентификатор объекта

Ответ 200: JSON (структура в схеме не описана).

Чтение роли по id

GET /api/v0/roles/get

Авторизация: требуется

Параметры запроса:

Параметр Где Тип Обяз. Описание
id строка запроса string Идентификатор объекта; по умолчанию «»

Ответ 200 — объект RoleDto:

Поле Тип Обяз. Описание
name string(50) да Наименование
comment string Комментарий
id string Идентификатор
isSystem boolean да Системный элемент
rightGroups массив RoleRightGroupDto да Группы прав

Добавление роли

POST /api/v0/roles/insert

Авторизация: требуется

Тело запроса — объект RoleInsertDto:

Поле Тип Обяз. Описание
name string(50) да Наименование
comment string Комментарий
allowedFullPaths массив string да

Ответ 200 — объект RoleDto:

Поле Тип Обяз. Описание
name string(50) да Наименование
comment string Комментарий
id string Идентификатор
isSystem boolean да Системный элемент
rightGroups массив RoleRightGroupDto да Группы прав

Список ролей

GET /api/v0/roles/list

Авторизация: требуется

Ответ 200 — массив объектов RoleListItemDto:

Поле Тип Обяз. Описание
name string(50) да Наименование
comment string Комментарий
id string Идентификатор
isSystem boolean да Системный элемент

Изменение роли

POST /api/v0/roles/update

Авторизация: требуется

Тело запроса — объект RoleUpdateDto:

Поле Тип Обяз. Описание
name string(50) да Наименование
comment string Комментарий
allowedFullPaths массив string да
id string да Идентификатор; мин. длина 1

Ответ 200 — объект RoleDto:

Поле Тип Обяз. Описание
name string(50) да Наименование
comment string Комментарий
id string Идентификатор
isSystem boolean да Системный элемент
rightGroups массив RoleRightGroupDto да Группы прав

Модели данных

Вложенные объекты и перечисления, на которые ссылаются методы этого раздела.

ApplicationSettingsDto

Поле Тип Обяз. Описание
requirePhone boolean да Телефон обязателен
requireSex boolean да Пол обязателен
temporaryIdentifierValidMinutes integer да Срок действия временного кода, минут
temporaryIdentifierLength integer да Длина временного кода
language string да Язык
dayBound time да Время смены суток
cashShowBirthday boolean да Показывать на кассе день рождения гостя
cashShowBirthdayDaysBefore integer да Показывать день рождения за N дней до
cashShowBirthdayDaysAfter integer да Показывать день рождения N дней после
specialCases SpecialCasesDto да Особые случаи
applicationVersion string да Версия ProBonus
databaseVersion string Версия схемы БД
configOnly boolean да Только настройки

LicenseInfoDto

Поле Тип Обяз. Описание
online boolean Онлайн-проверка лицензии выполнена
valid boolean Лицензия действительна
status string Статус лицензии
expired date Дата окончания лицензии
message string Сообщение
sublicensesIds string Идентификаторы сублицензий
sublicensesStrs string Сублицензии
objectId integer Идентификатор объекта лицензирования
objectName string Наименование объекта лицензирования
projectName string Наименование проекта (лицензия)
projectLicenseCount integer Количество лицензий проекта
applicationVersion string да Версия ProBonus

RoleRightGroupDto

Поле Тип Обяз. Описание
name string Наименование; по умолчанию «»
rights массив RoleRightItemDto Права

RoleRightItemDto

Поле Тип Обяз. Описание
enable boolean по умолчанию false
path string Путь; по умолчанию «»
method string HTTP-метод и путь API; по умолчанию «»
fullPath string по умолчанию «»
summary string по умолчанию «»

SettingsDto

Поле Тип Обяз. Описание
application ApplicationSettingsDto да
user UserSettingsDto да Пользователь

SpecialCasesDto

Поле Тип Обяз. Описание
mealsWithSubsidies boolean да
loyaltyParticipants boolean да

UserKindType

Перечисление (string). Значения: none, user, api_user.
user — пользователь веб-интерфейса, api_user — пользователь для интеграции по API

UserPermissionsDto

Поле Тип Обяз. Описание
restaurants массив integer Рестораны

UserRoleId

Поле Тип Обяз. Описание
id string да Идентификатор

UserRoleIdName

Поле Тип Обяз. Описание
id string да Идентификатор
name string да Наименование

UserSettingsDto

Без полей.