3) Я согласен с 503 для этого
2) Честно говоря, я думаю, что можно привести хороший аргумент в пользу использования 204 в случае 2. Вы можете включить metainfo в заголовок, чтобы указать, что именно «пошло не так». Это действительно зависит от того, насколько вы считаете этот случай «ошибкой» на уровне API.
Если сам API работает должным образом, и запрос был к действительной конечной точке, авторизованным и авторизованным пользователем, и не вызвал сбой сервера, то очень немногие из ошибок серии 400 или 500 действительно могут показаться применять.
например, 404 обычно означает, что вызываемый вами URI не существует, если он существует, то использование этого кода вводит в заблуждение, по крайней мере, ИМХО
**10.2.5 204 No Content**
Сервер выполнил запрос, но не должен возвращать
entity-body и может захотеть вернуть обновленную метаинформацию.
ответ МОЖЕТ включать новую или обновленную метаинформацию в форме
Заголовки сущностей, которые в случае их наличия ДОЛЖНЫ быть связаны с
запрашиваемый вариант.
Если клиент является пользовательским агентом, он НЕ ДОЛЖЕН изменять вид документа
от того, что вызвало отправку запроса. Этот ответ
в первую очередь предназначен для обеспечения возможности ввода действий без
вызывая изменение в активном представлении документа агента пользователя, хотя
любая новая или обновленная метаинформация ДОЛЖНА применяться к документу
в настоящее время в активном представлении агента пользователя.
Ответ 204 НЕ ДОЛЖЕН включать тело сообщения, и поэтому всегда
заканчивается первой пустой строкой после полей заголовка.