Справочник ошибок
Все ошибки возвращаются в стандартном envelope-формате.
HTTP Коды состояния
| Код | Когда |
|---|---|
| 200 | Успешный запрос |
| 201 | Ресурс создан |
| 401 | Не аутентифицирован (нет токена / истёк / невалиден) |
| 403 | Нет прав (Pundit) |
| 404 | Ресурс не найден |
| 422 | Ошибка валидации |
401 Unauthorized
{
"success": false,
"status": "401",
"message": "Token expired",
"errors": null,
"data": null
}
Возможные значения message:
"Token expired"— токен истёк, нужно обновить через/auth/refresh"Invalid token"— токен невалиден или отсутствует"Invalid credentials"— неверный email/пароль"Invalid Google token"—id_tokenне прошёл верификацию Google
403 Forbidden
{
"success": false,
"status": "403",
"message": "Forbidden",
"errors": null,
"data": null
}
Пользователь аутентифицирован, но не имеет прав на действие (Pundit).
404 Not Found
{
"success": false,
"status": "404",
"message": "Salon not found",
"errors": null,
"data": null
}
422 Unprocessable Entity
Единственный статус, при котором поле errors содержит хэш ошибок:
{
"success": false,
"status": "422",
"message": "Validation failed",
"errors": {
"email": ["has already been taken", "is invalid"],
"password": ["is too short (minimum is 6 characters)"]
},
"data": null
}
Структура errors: { "field_name": ["error message", ...] }.
Важно
- Поле всегда называется
errors(множественное число), никогдаerror. - На всех ответах кроме 422 поле
errorsравноnull. - На всех ошибках поле
dataравноnull.