> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livingsecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# idempotency_key_reuse

> Atasi konflik HTTP 409: bedakan antara permintaan yang masih berjalan dan Idempotency-Key yang digunakan kembali dengan input yang berbeda.

| | |
| - | - |
| **Kode** | `idempotency_key_reuse` |
| **Status HTTP** | `409 Conflict` |
| **Dapat dicoba ulang** | Baca `retryable` pada respons |

## Pilih pemulihan yang tepat

Kode kesalahan yang sama menggambarkan dua situasi yang berbeda. Periksa `retryable` sebelum
mengambil tindakan; status HTTP saja tidak menunjukkan apakah Anda perlu mencoba ulang.

| Respons | Arti | Langkah berikutnya |
| - | - | - |
| `retryable: false` | Kunci tersebut sudah mengidentifikasi permintaan dengan input yang berbeda. | Bandingkan isi permintaan dengan permintaan awal. Gunakan kunci baru hanya untuk operasi yang memang sengaja berbeda. |
| `retryable: true` | Permintaan lain yang menggunakan kunci tersebut masih diproses. | Gunakan kembali kunci dan permintaan yang sama. Tunggu setidaknya `Retry-After` detik, lalu coba ulang dalam batas anggaran waktu yang ditentukan. |

### Input berbeda

```json theme={null}
{
  "type": "https://docs.livingsecurity.com/developers/v1/errors/idempotency_key_reuse",
  "title": "Conflict",
  "status": 409,
  "detail": "Idempotency-Key was already used with a different request.",
  "code": "idempotency_key_reuse",
  "request_id": "req_0199a1e0-7c00-7000-8000-000000000001",
  "doc_url": "https://docs.livingsecurity.com/developers/v1/errors/idempotency_key_reuse",
  "retryable": false,
  "param": "Idempotency-Key"
}
```

### Permintaan masih diproses

Contoh ini juga memiliki header respons HTTP `Retry-After: 1`.

```json theme={null}
{
  "type": "https://docs.livingsecurity.com/developers/v1/errors/idempotency_key_reuse",
  "title": "Conflict",
  "status": 409,
  "detail": "A concurrent request is still processing this Idempotency-Key. Retry shortly.",
  "code": "idempotency_key_reuse",
  "request_id": "req_0199a1e0-7c00-7000-8000-000000000001",
  "doc_url": "https://docs.livingsecurity.com/developers/v1/errors/idempotency_key_reuse",
  "retryable": true,
  "param": "Idempotency-Key"
}
```

## Jaga identitas percobaan ulang tetap stabil

Untuk operasi yang mendokumentasikan idempotensi, kunci tersebut dibatasi pada organisasi,
akun layanan, metode HTTP, jalur sumber daya, dan versi API yang telah ditentukan. Mengubah
salah satu dari komponen tersebut akan menghasilkan identitas percobaan ulang yang berbeda; hal itu tidak memulihkan
operasi awal. Merotasi kredensial di bawah akun layanan yang sama tidak mengubah
identitas tersebut, meskipun kredensial pengganti tetap harus memiliki izin.

Pertahankan kunci, isi permintaan, jalur, dan versi yang asli saat memulihkan dari batas waktu habis.
Jangan membuat kunci baru hanya untuk melewati konflik: penulisan yang asli
mungkin sudah berhasil. Ambil sumber daya tersebut jika ID-nya diketahui, dan gunakan
prosedur pemulihan yang didokumentasikan untuk operasi itu. Pemutaran ulang yang telah selesai membawa
`Idempotent-Replayed: true` jika operasi tersebut mendokumentasikan pemutaran ulang respons.

Mengirim `Idempotency-Key` tidak membuat suatu operasi menjadi idempoten kecuali
referensinya secara eksplisit mendukung header tersebut. Perlindungan percobaan ulang dibatasi oleh
kebijakan retensi operasi; perlindungan ini bukan jaminan permanen terhadap duplikasi.

Jika pemrosesan tetap belum terselesaikan, hubungi [Dukungan Living Security](mailto:support@livingsecurity.com)
dengan menyertakan `request_id`, stempel waktu UTC, metode, jalur, dan versi API. Jangan pernah menyertakan
kunci API, rahasia klien, atau token akses.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.