> ## 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

> Xử lý xung đột HTTP 409: phân biệt yêu cầu vẫn đang được xử lý với trường hợp Idempotency-Key bị dùng lại cho dữ liệu đầu vào khác.

| | |
| - | - |
| **Mã** | `idempotency_key_reuse` |
| **Trạng thái HTTP** | `409 Conflict` |
| **Có thể thử lại** | Đọc `retryable` trong phản hồi |

## Chọn cách khắc phục phù hợp

Cùng một mã lỗi mô tả hai tình huống khác nhau. Hãy kiểm tra `retryable` trước khi
thực hiện bất kỳ thao tác nào; chỉ riêng trạng thái HTTP không cho biết bạn có nên thử lại hay không.

| Phản hồi | Ý nghĩa | Bước tiếp theo |
| - | - | - |
| `retryable: false` | Khóa này đã xác định một yêu cầu có dữ liệu đầu vào khác. | So sánh nội dung yêu cầu (body) với yêu cầu ban đầu. Chỉ sử dụng khóa mới cho một thao tác cố ý khác biệt. |
| `retryable: true` | Một yêu cầu khác sử dụng khóa này vẫn đang được xử lý. | Giữ nguyên khóa và yêu cầu. Chờ ít nhất `Retry-After` giây, sau đó thử lại trong một khoảng thời gian giới hạn. |

### Dữ liệu đầu vào khác

```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"
}
```

### Yêu cầu vẫn đang được xử lý

Ví dụ này cũng có tiêu đề phản hồi 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"
}
```

## Giữ ổn định danh tính thử lại

Đối với các thao tác có tài liệu về tính idempotent, khóa được xác định phạm vi theo tổ chức,
tài khoản dịch vụ, phương thức HTTP, đường dẫn tài nguyên và phiên bản API đã được xác định. Việc thay đổi
bất kỳ yếu tố nào trong số đó sẽ tạo ra một danh tính thử lại khác; điều này không giúp khôi phục thao tác
ban đầu. Việc xoay vòng thông tin xác thực trong cùng một tài khoản dịch vụ không làm thay đổi
danh tính đó, tuy nhiên thông tin xác thực thay thế vẫn phải có quyền phù hợp.

Hãy giữ nguyên khóa, nội dung yêu cầu, đường dẫn và phiên bản ban đầu khi khôi phục sau lỗi hết thời gian chờ.
Không tạo khóa mới chỉ để vượt qua xung đột: thao tác ghi ban đầu
có thể đã thành công. Hãy truy xuất tài nguyên khi đã biết ID của tài nguyên đó và sử dụng
quy trình khôi phục được nêu trong tài liệu của thao tác. Một phản hồi phát lại đã hoàn tất sẽ mang
`Idempotent-Replayed: true` ở những thao tác có tài liệu về việc phát lại phản hồi.

Việc gửi `Idempotency-Key` không làm cho một thao tác trở nên idempotent trừ khi
tài liệu tham chiếu của thao tác đó nêu rõ là hỗ trợ tiêu đề này. Cơ chế bảo vệ khi thử lại bị giới hạn bởi
chính sách lưu giữ của thao tác; đây không phải là bảo đảm vĩnh viễn chống trùng lặp.

Nếu quá trình xử lý vẫn chưa được giải quyết, vui lòng liên hệ [Bộ phận Hỗ trợ của Living Security](mailto:support@livingsecurity.com)
và cung cấp `request_id`, dấu thời gian UTC, phương thức, đường dẫn và phiên bản API. Tuyệt đối không đính kèm
khóa API, client secret hoặc access token.


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