
# Reactivar un autenticador marcado

`POST /v1/users/{user_id}/authenticators/{authenticator_id}:reactivate` · permiso `user-credentials:write`

Devuelve a `active` un autenticador en estado `clone_suspected` (anomalía en el contador de firmas de una clave de acceso) por decisión de un administrador; el contador se alinea con el último valor y se escribe un registro de auditoría. Si el autenticador no está en `clone_suspected`, la llamada falla con `409`. La solicitud no lleva cuerpo.

## Solicitud

| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
| `user_id` | path | sí | Identificador del usuario, con prefijo `usr_`. |
| `authenticator_id` | path | sí | Identificador del autenticador, con prefijo `cred_`. |

La solicitud no lleva cuerpo.

## Respuesta

`200 OK`. El cuerpo es el autenticador actualizado.

Cuando la clave no tiene el permiso `users:read_pii`, `label` se reduce a iniciales (`A. L.`).

```json
{
  "id": "cred_0a1b2c3d4e5f6g7h8j9k0m1n2p",
  "type": "webauthn",
  "role": "both",
  "label": "Laptop",
  "status": "active",
  "synced": true,
  "created_at": "2026-01-15T09:30:00Z",
  "last_used_at": "2026-02-01T08:00:00Z",
  "revoked_at": null,
  "revoked_by": null,
  "revoke_reason": null
}
```

`type`: `webauthn`, `totp`, `sms`, `email`, `push` · `role`: `first_factor`, `second_factor`, `both` · `status`: `pending`, `active`, `revoked`, `clone_suspected`

## Errores

Todo error es un cuerpo `application/problem+json` con un `code` estable.

| HTTP | `code` | Cuándo |
|---|---|---|
| 409 | `conflict` | El autenticador no está en estado `clone_suspected`. |
| 404 | `not_found` | El usuario o el autenticador no existen en este entorno, el autenticador no pertenece a este usuario, o un identificador está mal formado. |
| 401 | `unauthenticated` | La clave de API falta, no es válida o ha sido revocada. |
| 403 | `insufficient_permissions` | La clave no tiene el permiso `user-credentials:write`. |
| 429 | `rate_limited` | Se superó el límite de frecuencia; respete `Retry-After`. |
| 503 | `service_unavailable` | Una dependencia no está disponible temporalmente; reintente más tarde. |

## Ejemplo

```bash
curl -X POST https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/authenticators/cred_0a1b2c3d4e5f6g7h8j9k0m1n2p:reactivate \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
```

## Datos personales

Este endpoint contiene datos personales: credenciales. [Datos personales en las API de KeenAuth](/docs/policies/personal-data) describe qué se almacena, durante cuánto tiempo se conserva y cómo se elimina. No envíe categorías especiales de datos personales (salud, datos biométricos, religión, opiniones políticas, orientación sexual) en ningún campo.
