это кажется тяжелым
Это тяжело - вы пытаетесь обозначить один бит (вкл / выкл), и для этого вы перетаскиваете весь заголовок HTTP вместе свы. В зависимости от того, какие инструменты вы используете, вы можете урезать коллекцию заголовков, но вы будете ощущать большой вес.
Какой статус HTTP правильный в этом случае?
Там действительно нет хорошего ответа. В некоторых случаях вы увидите, что 204 означает, что что-то существует, а 404 - что нет. Это не правильно делать;компоненты общего назначения не интерпретируют строку состояния таким образом. Но если вы управляете клиентом или если вы можете передавать свою семантику за пределы группы, это, вероятно, не будет слишком болезненным.
Github Starring API работает таким образом.
GET /user/starred/:owner/:repo
Это ресурс, который существует только тогда, когда есть звезда - его представление имеет нулевой байт. Если вы запросите представление о несуществующей звезде, вы получите объяснение ситуации ошибки , которая также длиной ноль байт.
Нас другой стороны, HEAD используется «для получения метаданных о выбранном представлении без передачи данных представления». Это, вероятно, ближе к вашему случаю - представление заказа является потенциально большим документом, но для конкретного случая использования клиента необходимы только метаданные.