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

> Устранение конфликтов HTTP 409: как отличить запрос, который все еще выполняется, от повторного использования Idempotency-Key с другими входными данными.

| | |
| - | - |
| **Код** | `idempotency_key_reuse` |
| **HTTP-статус** | `409 Conflict` |
| **Возможность повтора** | Прочитайте `retryable` в ответе |

## Выбор правильного способа восстановления

Один и тот же код ошибки описывает две разные ситуации. Прежде чем предпринимать действия, проверьте `retryable`: по одному лишь HTTP-статусу невозможно определить, следует ли повторять запрос.

| Ответ | Значение | Следующий шаг |
| - | - | - |
| `retryable: false` | Ключ уже связан с запросом, у которого другие входные данные. | Сравните тело запроса с исходным запросом. Используйте новый ключ только для намеренно другой операции. |
| `retryable: true` | Другой запрос с этим ключом все еще обрабатывается. | Сохраните тот же ключ и тот же запрос. Подождите не менее `Retry-After` сек., затем повторите запрос в пределах ограниченного бюджета времени. |

### Другие входные данные

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

### Запрос все еще обрабатывается

В этом примере также присутствует заголовок 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"
}
```

## Сохранение неизменной идентичности повторного запроса

Для операций, в документации к которым описана идемпотентность, ключ привязан к организации, сервисной учетной записи, HTTP-методу, пути ресурса и определенной версии API. Изменение любого из этих параметров создает другую идентичность повторного запроса и не позволяет восстановить исходную операцию. Смена учетных данных в рамках той же сервисной учетной записи не меняет эту идентичность, однако у новых учетных данных по-прежнему должны быть необходимые разрешения.

При восстановлении после тайм-аута сохраняйте исходные ключ, тело запроса, путь и версию. Не создавайте новый ключ только для того, чтобы обойти конфликт: исходная операция записи могла уже завершиться успешно. Если идентификатор ресурса известен, получите ресурс и воспользуйтесь описанной для этой операции процедурой восстановления. Завершенный повторный ответ содержит `Idempotent-Replayed: true`, если для операции описано воспроизведение ответа.

Отправка `Idempotency-Key` не делает операцию идемпотентной, если в справочнике по этой операции явно не указана поддержка данного заголовка. Защита от повторов ограничена политикой хранения данных для операции и не является постоянной гарантией отсутствия дубликатов.

Если проблема с обработкой не устранена, обратитесь в [службу поддержки Living Security](mailto:support@livingsecurity.com) и укажите `request_id`, метку времени в формате UTC, метод, путь и версию API. Ни в коем случае не передавайте ключ API, секрет клиента или токен доступа.


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