Метод POST не обязан быть идемпотентным по спецификации. Заголовок
Idempotency-Key (нестандартный, но де-факто индустриальный стандарт, используемый Stripe/PayPal) позволяет серверу запомнить ключ и результат первой обработки. При повторном запросе сервер возвращает сохраненный ответ, не выполняя логику повторно.А — нельзя использовать PUT, если ID генерируется сервером.
С — Retry-After говорит клиенту, когда повторять, но не отменяет дубли.
D — Cache-Control влияет только на промежуточные кэши, а не на семантику обработки запроса сервером.