Skip to main content

API авторизации

API для регистрации, авторизации и управления пользователями в системе Revo. Поддерживает аутентификацию через токены Bearer, используя систему Laravel Sanctum.

Структура пользователя

ПолеТипОписание
idintegerУникальный идентификатор пользователя
namestringИмя пользователя
owner_companystringНазвание компании-владельца пользователя
emailstringEmail пользователя (уникален в рамках компании)
usernamestringЛогин пользователя (уникален в рамках компании)
planstringТариф пользователя
telegram_idstringID пользователя в Telegram (если привязан)
created_atdatetimeДата создания
updated_atdatetimeДата обновления

Регистрация пользователя

POST /api/register

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

ПараметрТипОбязательныйОписание
namestringДаИмя пользователя
emailstringДаEmail пользователя
usernamestringНетЛогин пользователя (если не указан, будет использовано имя)
passwordstringДаПароль пользователя (мин. 8 символов)
owner_companystringНетНазвание компании-владельца (по умолчанию "default")

Пример запроса

{
"name": "Иван Иванов",
"email": "ivan@example.com",
"username": "ivanivanov",
"password": "secure_password123",
"owner_company": "MyCompany"
}

Пример ответа

{
"error": "",
"result": {
"user": {
"id": 1,
"name": "Иван Иванов",
"email": "ivan@example.com",
"username": "ivanivanov",
"owner_company": "MyCompany",
"plan": "plan1",
"created_at": "2025-03-10T12:00:00.000000Z",
"updated_at": "2025-03-10T12:00:00.000000Z"
},
"token": "1|laravel_sanctum_token_example123456789",
"token_type": "Bearer"
}
}

Авторизация пользователя

POST /api/login

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

ПараметрТипОбязательныйОписание
loginstringДаEmail или username пользователя
passwordstringДаПароль пользователя
owner_companystringНетНазвание компании-владельца (по умолчанию "default")
token_namestringНетНазвание токена (по умолчанию "auth_token")

Пример запроса

{
"login": "ivan@example.com",
"password": "secure_password123",
"owner_company": "MyCompany"
}

Пример ответа

{
"error": "",
"result": {
"user": {
"id": 1,
"name": "Иван Иванов",
"email": "ivan@example.com",
"username": "ivanivanov",
"owner_company": "MyCompany",
"plan": "plan1",
"created_at": "2025-03-10T12:00:00.000000Z",
"updated_at": "2025-03-10T12:00:00.000000Z"
},
"token": "2|laravel_sanctum_token_example987654321",
"token_type": "Bearer"
}
}

Выход из системы (отзыв текущего токена)

POST /api/logout

Заголовки запроса

ЗаголовокЗначение
AuthorizationBearer YOUR_TOKEN

Пример ответа

{
"error": "",
"result": {
"message": "Успешный выход из системы"
}
}

Получение данных текущего пользователя с балансом

GET /api/user

Заголовки запроса

ЗаголовокЗначение
AuthorizationBearer YOUR_TOKEN

Пример ответа

{
"error": "",
"result": {
"user": {
"id": 1,
"name": "Иван Иванов",
"email": "ivan@example.com",
"username": "ivanivanov",
"owner_company": "MyCompany",
"plan": "plan1",
"created_at": "2025-03-10T12:00:00.000000Z",
"updated_at": "2025-03-10T12:00:00.000000Z"
},
"balance": 1000
}
}

Структура объекта balance

ПолеТипОписание
currentfloatТекущий баланс пользователя в числовом формате
formattedstringОтформатированный баланс для отображения пользователю
monthly_spentfloatСумма списаний за последний месяц (если доступна)
monthly_spent_formattedstringОтформатированная сумма списаний
xml_stock_statusstringСтатус баланса XML Stock (если используется)

Получение списка токенов пользователя

GET /api/tokens

Заголовки запроса

ЗаголовокЗначение
AuthorizationBearer YOUR_TOKEN

Пример ответа

{
"error": "",
"result": {
"tokens": [
{
"id": 1,
"name": "auth_token",
"abilities": ["*"],
"last_used_at": "2025-03-10T13:00:00.000000Z",
"expires_at": null,
"created_at": "2025-03-10T12:00:00.000000Z",
"updated_at": "2025-03-10T13:00:00.000000Z"
},
{
"id": 2,
"name": "mobile_token",
"abilities": ["*"],
"last_used_at": null,
"expires_at": "2025-04-10T12:00:00.000000Z",
"created_at": "2025-03-10T12:30:00.000000Z",
"updated_at": "2025-03-10T12:30:00.000000Z"
}
]
}
}

Отзыв определенного токена

DELETE /api/tokens/{id}

Заголовки запроса

ЗаголовокЗначение
AuthorizationBearer YOUR_TOKEN

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

ПараметрТипОбязательныйОписание
idintegerДаID токена для отзыва (в URL)

Пример ответа

{
"error": "",
"result": {
"message": "Токен успешно отозван"
}
}

Отзыв всех токенов пользователя, кроме текущего

DELETE /api/tokens

Заголовки запроса

ЗаголовокЗначение
AuthorizationBearer YOUR_TOKEN

Пример ответа

{
"error": "",
"result": {
"message": "Все остальные токены успешно отозваны"
}
}

Использование токенов в запросах

Полученный токен должен передаваться в заголовке Authorization с префиксом Bearer при запросах к защищенным маршрутам API:

GET /api/some-protected-route HTTP/1.1
Host: your-api-host.com
Authorization: Bearer 1|laravel_sanctum_token_example123456789
Accept: application/json

Дополнительная информация

Поле owner_company

Указывает, к какой компании-владельцу принадлежит пользователь. В рамках одной компании email и username пользователя должны быть уникальными, но между разными компаниями они могут повторяться. Если поле не указано при регистрации, используется значение "default".

Токены

  • Токены, выданные системой, действительны бессрочно, если при создании не указан срок действия
  • Пользователь может иметь несколько активных токенов одновременно (например, для разных устройств)
  • При выходе из системы отзывается только текущий токен, остальные остаются активными
  • Для отзыва всех активных токенов используйте метод DELETE /api/tokens