404 почти работает, но я считаю его ресурсом, с которым вы имеете дело, и вы делаете PUT для создания ресурса. Конечно, его не существует, поэтому вы создаете его.
Я бы согласился с вашей первой мыслью о 400 Bad Request в узком смысле этого определения. Но если вы расширите определение, включив в него что-то, что может пойти не так с запросом, это будет соответствовать вашей ситуации, и я думаю, что это приемлемо. Например, мы отправляем обратно 400, если запрос не соответствует ожидаемой нами схеме и если в ресурсе есть ошибки проверки. Для нашего сервиса, если мы можем программно определить, что это неверный запрос, мы отправим обратно 400.
Для вашей услуги создание аренды, когда нет доступных задач, представляет собой неверный запрос, и вы можете отправить 400 с текстом, объясняющим, в чем проблема. Я думаю, что 400 был предназначен для более широкого определения, чем то, что вы держите его.
Я не думаю, что 500 работают, потому что они более необработанные вещи, и это тот случай, с которым вы можете справиться и предоставить информационные ответы.
Надеюсь, это поможет.