
# Listar los resultados de eliminación masiva de usuarios

`GET /v1/jobs/user-deletions/{job_id}/results` · permiso `users:delete`

Lista el resultado de cada usuario en un trabajo de eliminación masiva de usuarios, en el orden de la solicitud (`position` empieza en 1). Cada resultado es uno de los siguientes:

- `pending`: el usuario todavía no tiene resultado.
- `succeeded`: la eliminación del usuario se inició; `deletion_id` es el mismo id que devuelve [`DELETE /v1/users/{user_id}`](/docs/api/management/users/delete) para ese usuario.
- `not_found`: el usuario no existía en este entorno, o ya había sido eliminado.
- `failed`: la eliminación falló después de varios intentos; `error_code` es `internal`. Elimine de nuevo al usuario individualmente o en un nuevo trabajo.

Los resultados contienen solo ids de usuario; no se devuelve ningún otro dato personal. La lista solo avanza hacia delante: use `list_metadata.after` para la página siguiente; `before` y `order` no se admiten.

## Solicitud

| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
| `job_id` | path | sí | Id del trabajo, con prefijo `job_`. |
| `limit` | query | no | Tamaño de página, de 1 a 100. Predeterminado 20. |
| `after` | query | no | Cursor opaco de `list_metadata.after`. Solo válido para el mismo trabajo. |

## Respuesta

`200 OK`. `list_metadata.after` es el cursor de la página siguiente (`null` en la última página); `list_metadata.before` es siempre `null`.

```json
{
  "data": [
    {
      "position": 1,
      "user_id": "usr_01h455vb4pex5vsknk084sn02q",
      "status": "succeeded",
      "deletion_id": "0191f0a0-0000-8000-8000-000000000001"
    },
    {
      "position": 2,
      "user_id": "usr_01h455vb4pex5vsknk084sn02r",
      "status": "not_found"
    }
  ],
  "list_metadata": { "before": null, "after": null }
}
```

## Errores

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

| HTTP | `code` | Cuándo |
|---|---|---|
| 400 | `invalid_cursor` | El cursor tiene formato incorrecto, ha caducado o pertenece a otro trabajo. |
| 401 | `unauthenticated` | La clave de API falta, no es válida o está revocada. |
| 403 | `insufficient_permissions` | La clave no tiene el permiso `users:delete`. |
| 404 | `not_found` | El trabajo no existe en este entorno (o el id tiene un formato incorrecto). |
| 422 | `validation_failed` | `limit` está fuera de rango, o se envió `before` u `order` (`not_supported`). |
| 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 "https://api.eu.keenauth.com/v1/jobs/user-deletions/job_01h455vb4pex5vsknk084sn02q/results?limit=100" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth jobs user-deletions results job_01h455vb4pex5vsknk084sn02q --limit 100`
