Вот:
rfc2616 # section-10.4.1 - 400 Bad Request
Сервер не может понять запрос из-за неправильного синтаксиса . Клиент НЕ ДОЛЖЕН повторять запрос без изменений.
rfc7231 # section-6.5.1 - 6.5.1. ошибка 400, неверный запрос
Код состояния 400 (неверный запрос) указывает на то, что сервер не может или не будет обрабатывать запрос из-за чего-то, что воспринимается как ошибка клиента (например, синтаксис искаженного запроса, кадрирование неверного сообщения запроса или обманчивая маршрутизация запроса) .
Относится к неправильным (не хорошо сформированным) случаям!
rfc4918 - 11,2. 422 необработанного объекта
Код состояния 422 (Unprocessable Entity) означает, что сервер
понимает тип содержимого объекта запроса (следовательно, код состояния 415 (Unsupported Media Type) является неподходящим), и синтаксис объекта запроса является правильным (таким образом, 400 (неверный запрос) ) код состояния не подходит), но не удалось обработать содержащиеся в нем инструкции. Например, это условие ошибки может возникнуть, если тело запроса XML содержит правильно сформированные (то есть синтаксически правильные), но семантически ошибочные инструкции XML.
Вывод
Основное правило: [_] 00 охватывает наиболее общий случай и случаи, которые не охватываются указанным кодом.
422 соответствует наилучшей ошибке проверки объекта (именно моя рекомендация :)
Что касается семантически ошибочного - подумайте о чем-то вроде проверки «Это имя пользователя уже существует».
400 неправильно используется для проверки объекта