
# Aprobar una retención de desaprovisionamiento

`POST /v1/directories/{directory_id}/deprovision-holds/{hold_id}:approve` · permiso `directories:write`

Aprueba la retención de desaprovisionamiento masivo del directorio: los desaprovisionamientos retenidos se aplican. Se audita como `directory.deprovision_hold_approved`. Una retención que ya no está abierta, o que superó su tiempo de espera de 72 horas (se aprueba por el tiempo de espera y esta decisión no se aplica), devuelve `409 conflict`.

## Solicitud

| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `directory_id` | path | sí | ID del directorio SCIM (`dir_…`). |
| `hold_id` | path | sí | El ID de la retención: `open_deprovision_hold.id` de `GET /v1/directories/{directory_id}` (UUID en minúsculas). |

No hay cuerpo de solicitud.

## Respuesta

`200 OK` con la decisión.

```json
{
  "id": "0192a3c0-1d2e-7f3a-8b4c-5d6e7f8a9b0c",
  "directory_id": "dir_01j9xm2n4p6q8r0s2t4v6w8y0z",
  "status": "approved"
}
```

## Errores

| HTTP | code | Cuándo |
|---|---|---|
| 404 | `not_found` | El directorio o la retención no existe en este entorno, o la retención pertenece a otro directorio. |
| 409 | `conflict` | La retención ya fue decidida o superó su tiempo de espera de 72 horas. |
| 401 | `unauthenticated` | La credencial falta, no es válida o fue revocada. |
| 403 | `insufficient_permissions` | La credencial no tiene el permiso requerido. |
| 429 | `rate_limited` | Se superó el límite de frecuencia; reintente tras el periodo `Retry-After`. |
| 503 | `service_unavailable` | La sincronización de directorios no está disponible temporalmente o no está configurada en este despliegue; reintente tras el periodo `Retry-After`. |

## Ejemplo

```bash
curl -i -X POST "https://api.eu.keenauth.com/v1/directories/dir_01j9xm2n4p6q8r0s2t4v6w8y0z/deprovision-holds/0192a3c0-1d2e-7f3a-8b4c-5d6e7f8a9b0c:approve" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
```
