API авторизации
API для регистрации, авторизации и управления пользователями в системе Revo. Поддерживает аутентификацию через токены Bearer, используя систему Laravel Sanctum.
Структура пользователя
Поле | Тип | Описание |
---|---|---|
id | integer | Уникальный идентификатор пользователя |
name | string | Имя пользователя |
owner_company | string | Название компании-владельца пользователя |
email | string | Email пользователя (уникален в рамках компании) |
username | string | Логин пользователя (уникален в рамках компании) |
plan | string | Тариф пользователя |
telegram_id | string | ID пользователя в Telegram (если привязан) |
created_at | datetime | Дата создания |
updated_at | datetime | Дата обновления |
Регистрация пользователя
POST /api/register
Параметры запроса
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
name | string | Да | Имя пользователя |
email | string | Да | Email пользователя |
username | string | Нет | Логин пользователя (если не указан, будет использовано имя) |
password | string | Да | Пароль пользователя (мин. 8 символов) |
owner_company | string | Нет | Название компании-владельца (по умолчанию "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
Параметры запроса
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
login | string | Да | Email или username пользователя |
password | string | Да | Пароль пользователя |
owner_company | string | Нет | Название компании-владельца (по умолчанию "default") |
token_name | string | Нет | Название токена (по умолчанию "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
Заголовки запроса
Заголовок | Значение |
---|---|
Authorization | Bearer YOUR_TOKEN |
Пример ответа
{
"error": "",
"result": {
"message": "Успешный выход из системы"
}
}
Получение данных текущего пользователя с балансом
GET /api/user
Заголовки запроса
Заголовок | Значение |
---|---|
Authorization | Bearer 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
Поле | Тип | Описание |
---|---|---|
current | float | Текущий баланс пользователя в числовом формате |
formatted | string | Отформатированный баланс для отображения пользователю |
monthly_spent | float | Сумма списаний за последний месяц (если доступна) |
monthly_spent_formatted | string | Отформатированная сумма списаний |
xml_stock_status | string | Статус баланса XML Stock (если используется) |
Получение списка токенов пользователя
GET /api/tokens
Заголовки запроса
Заголовок | Значение |
---|---|
Authorization | Bearer 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}
Заголовки запроса
Заголовок | Значение |
---|---|
Authorization | Bearer YOUR_TOKEN |
Параметры запроса
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
id | integer | Да | ID токена для отзыва (в URL) |
Пример ответа
{
"error": "",
"result": {
"message": "Токен успешно отозван"
}
}
Отзыв всех токенов пользователя, кроме текущего
DELETE /api/tokens
Заголовки запроса
Заголовок | Значение |
---|---|
Authorization | Bearer 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