Idempotency-Key pada request POST. Bila jawaban tidak sampai (timeout, koneksi putus), kirim ulang request yang sama persis dengan key yang sama: resource tidak dibuat dua kali.
Aturan
- Key: 1–255 karakter ASCII yang terlihat (tanpa spasi). UUID acak per operasi adalah pilihan yang baik. Key tidak valid →
400 idempotency_key_invalid. - Hanya berlaku untuk
POST.PUT,PATCH, danDELETEmengabaikan header ini. - Jawaban request pertama disimpan 24 jam, per organisasi.
- Request ulang dengan key, method, path, dan body yang sama mendapat jawaban yang sama persis (status dan body) dengan header
Idempotent-Replayed: true, tanpa menjalankan aksi lagi. - Key yang sama dengan method, path, atau body berbeda →
422 idempotency_key_reused. Buat key baru untuk operasi baru. - Request pertama masih berjalan →
409 idempotency_in_progress. Ulangi sebentar lagi. - Jawaban
5xxtidak disimpan, jadi request boleh diulang dengan key yang sama dan akan dijalankan lagi. - Jawaban
4xx(mis.422saldo tidak cukup) disimpan dan di-replay seperti jawaban sukses. Setelah memperbaiki penyebabnya, kirim dengan key baru.
Password tidak pernah disimpan
Beberapa jawabanPOST memuat password: reset password admin database, user database baru, dan rotasi password user. Password tidak ikut disimpan untuk replay. Pada replay, field password berisi null:
POST /databases/{id}/reset-password (admin) atau POST /databases/{id}/users/{username}/rotate-password (user lain). Lihat Database.
Kapan memakainya
PakaiIdempotency-Key untuk setiap POST yang membuat resource berbayar atau menjalankan aksi: VM, volume, snapshot, floating IP, database, load balancer, backup, dan sejenisnya. Simpan key bersama catatan operasi di sistem Anda, supaya retry otomatis memakai key yang sama.