Aqui está:
rfc2616 # section-10.4.1 - 400 Solicitação incorreta
A solicitação não pôde ser entendida pelo servidor devido à sintaxe incorreta . O cliente não deve repetir o pedido sem modificações.
rfc7231 # section-6.5.1 - 6.5.1. 400 Solicitação incorreta
O código de status 400 (Solicitação incorreta ) indica que o servidor não pode ou não processará a solicitação devido a algo que é percebido como um erro do cliente (por exemplo, sintaxe de solicitação malformada, enquadramento de mensagem de solicitação inválida ou roteamento de solicitação enganoso) .
Refere-se a casos malformados (não bem formados)!
rfc4918 - 11.2. 422 Entidade não processável
O código de status 422 (Entidade não processável) significa que o servidor
entende o tipo de conteúdo da entidade de solicitação (portanto, um código de status 415 (Tipo de mídia não suportado) é inapropriado) e a sintaxe da entidade de solicitação está correta (portanto, 400 (Solicitação incorreta) ) código de status é inadequado), mas não conseguiu processar as instruções contidas. Por exemplo, essa condição de erro pode ocorrer se um corpo de solicitação XML contiver instruções XML bem formadas (ou seja, sintaticamente corretas), mas semanticamente erradas .
Conclusão
Regra geral: [_] 00 cobre o caso mais geral e os casos que não são cobertos pelo código designado.
422 se encaixa no melhor erro de validação de objeto (justamente minha recomendação :)
Quanto a semanticamente errôneo - Pense em algo como a validação "Este nome de usuário já existe".
400 é usado incorretamente para validação de objeto