Аутентификация
Вход в систему
POST /api/client/login
Вход для администратора/оператора организации.
Request:
{
"organization_id": "uuid",
"username": "string",
"password": "string"
}
Response (200):
{
"status": "success",
"organization_id": "uuid",
"organization_name": "Название организации"
}
Cookies:
client_session_token— токен сессии (HttpOnly)client_csrf_token— CSRF токен
Ошибки:
| Код | Сообщение | Причина |
|---|---|---|
| 400 | Invalid credentials | Неверный логин/пароль |
| 429 | Too many attempts | Превышен лимит попыток |
Пример (cURL)
curl -X POST https://api.smaiwer.ru/api/client/login \
-H "Content-Type: application/json" \
-c cookies.txt \
-d '{
"organization_id": "550e8400-e29b-41d4-a716-446655440000",
"username": "admin",
"password": "secret123"
}'
Пример (JavaScript)
const response = await fetch('https://api.smaiwer.ru/api/client/login', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
organization_id: '550e8400-e29b-41d4-a716-446655440000',
username: 'admin',
password: 'secret123'
})
});
const data = await response.json();
Выход из системы
POST /api/client/logout
Завершение текущей сессии.
Response (200):
{
"status": "success",
"message": "Logged out successfully"
}
Проверка сессии
GET /api/client/session
Проверка текущей сессии и получение информации о пользователе.
Response (200):
{
"status": "success",
"data": {
"organization_id": "uuid",
"organization_name": "Название",
"username": "admin",
"role": "admin"
}
}
Response (401):
{
"status": "error",
"message": "Not authenticated"
}
CSRF защита
Все изменяющие запросы (POST, PUT, DELETE) требуют CSRF токен:
const csrfToken = getCookie('client_csrf_token');
fetch('/api/client/send_message', {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': csrfToken
},
body: JSON.stringify({ /* ... */ })
});
Супер-администратор
POST /api/superadmin/login
Вход для супер-администратора платформы.
Request:
{
"username": "string",
"password": "string"
}
Response (200):
{
"status": "success",
"message": "Login successful"
}
Cookies:
superadmin_session_tokensuperadmin_csrf_token