Skip to content

Регистрация — все responses бэкенда

POST /auth/register

Обязательные поля запроса:

json
{
  "email": "user@example.com",
  "password": "SecurePass123!",
  "display_name": "Иван Петров"
}

Успех — 201 Created

json
{
  "data": {
    "id": 10,
    "email": "user@example.com",
    "display_name": "Иван Петров",
    "phone": null,
    "account_type": "personal",
    "email_verified": false,
    "avatar_url": null,
    "city_id": null,
    "district_id": null,
    "metro_station_id": null,
    "rating": 0.0,
    "reviews_count": 0,
    "products_count": 0,
    "is_active": true,
    "is_admin": false,
    "created_at": "2026-02-16T12:00:00+00:00"
  }
}

Ошибки

Все ошибки возвращаются в формате:

json
{
  "error": {
    "code": "<error_code>",
    "message": "<message>",
    "details": { ... }
  }
}

CSRF — 422

Формат: { "error": { "code": "validation_error", "message": "Validation failed", "details": { "csrf": ["..."] } } }

Backend messageКогдаТекст для фронта (RU)
CSRF token is requiredНет CSRF-токена в cookie или заголовкеОшибка безопасности. Перезагрузите страницу и попробуйте снова
CSRF token mismatchТокен в cookie не совпадает с X-CSRF-TOKENОшибка безопасности. Перезагрузите страницу и попробуйте снова
Invalid CSRF tokenНевалидная подпись токенаОшибка безопасности. Перезагрузите страницу и попробуйте снова

Content-Type — 400

json
{ "error": { "code": "unsupported_media_type", "message": "Content-Type must be application/json or multipart/form-data" } }
Backend messageТекст для фронта (RU)
Content-Type must be application/json or multipart/form-dataПроизошла техническая ошибка. Попробуйте ещё раз

Rate limit — 429

json
{ "error": { "code": "rate_limit_exceeded", "message": "Too many requests" } }

Заголовки ответа: Retry-After: <seconds>, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

Backend messageТекст для фронта (RU)
Too many requestsСлишком много попыток. Подождите немного и попробуйте снова

Дубликат email — 409

json
{ "error": { "code": "conflict", "message": "Email already registered" } }
Backend messageТекст для фронта (RU)
Email already registeredПользователь с таким email уже зарегистрирован

Валидация полей — 422

Формат: { "error": { "code": "validation_error", "message": "Validation failed", "details": { "<field>": ["<msg1>", "<msg2>"] } } }

Несколько ошибок могут прийти одновременно — по разным полям и несколько на одно поле.

body

Backend messageКогдаТекст для фронта (RU)
Request body must be valid JSONТело запроса не JSONПроизошла техническая ошибка. Попробуйте ещё раз

email

Backend messageКогдаТекст для фронта (RU)
Field "email" is required and must be a non-empty stringОтсутствует / пустойВведите email
Field "email" must be a valid email addressНевалидный форматВведите корректный email

password

Backend messageКогдаТекст для фронта (RU)
Field "password" is required and must be a non-empty stringОтсутствует / пустойВведите пароль
Password must be at least 8 charactersМенее 8 символовПароль должен содержать минимум 8 символов
Password must not exceed 128 charactersБолее 128 символовПароль не должен превышать 128 символов
Password must contain at least 1 uppercase letterНет заглавной буквыПароль должен содержать хотя бы одну заглавную букву
Password must contain at least 1 lowercase letterНет строчной буквыПароль должен содержать хотя бы одну строчную букву
Password must contain at least 1 digitНет цифрыПароль должен содержать хотя бы одну цифру
Password must contain at least 1 special characterНет спецсимволаПароль должен содержать хотя бы один спецсимвол (!@#$%^&* и т.д.)
Password must not contain 3 or more repeated charactersaaa, 111 и т.п.Пароль не должен содержать три и более одинаковых символа подряд
Password must not contain 3 or more sequential charactersabc, 123, xyzПароль не должен содержать три и более последовательных символа (abc, 123)
Password is too commonИз списка популярных паролейЭтот пароль слишком простой. Придумайте другой
Password must not contain the email local partПароль содержит часть email до @Пароль не должен содержать часть вашего email

display_name

Backend messageКогдаТекст для фронта (RU)
Field "display_name" is required and must be a non-empty stringОтсутствует / пустойВведите отображаемое имя

Серверная ошибка — 500

json
{ "error": { "code": "internal_error", "message": "Internal server error" } }
Backend messageТекст для фронта (RU)
Internal server errorПроизошла ошибка на сервере. Попробуйте позже

Пример множественных ошибок

Пароль ab при пустом display_name вернёт:

json
{
  "error": {
    "code": "validation_error",
    "message": "Validation failed",
    "details": {
      "password": [
        "Password must be at least 8 characters",
        "Password must contain at least 1 uppercase letter",
        "Password must contain at least 1 digit",
        "Password must contain at least 1 special character"
      ],
      "display_name": [
        "Field \"display_name\" is required and must be a non-empty string"
      ]
    }
  }
}

Маппинг error code → действие фронта

error.codeHTTPДействие фронта
validation_error422Показать ошибки под соответствующими полями из details
conflict409Показать ошибку под полем email
rate_limit_exceeded429Показать toast/уведомление, заблокировать кнопку на Retry-After секунд
unsupported_media_type400Показать общую ошибку (техническая, не пользовательская)
internal_error500Показать общую ошибку