
# Lister les résultats de suppression d'utilisateurs en masse

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

Liste le résultat de chaque utilisateur d'une tâche de suppression d'utilisateurs en masse, dans l'ordre de la requête (`position` commence à 1). Chaque résultat est l'un des suivants :

- `pending` : l'utilisateur n'a pas encore de résultat.
- `succeeded` : la suppression de l'utilisateur a démarré ; `deletion_id` est le même identifiant que [`DELETE /v1/users/{user_id}`](/docs/api/management/users/delete) renvoie pour cet utilisateur.
- `not_found` : l'utilisateur n'existait pas dans cet environnement, ou il avait déjà été supprimé.
- `failed` : la suppression a échoué après plusieurs tentatives ; `error_code` vaut `internal`. Supprimez de nouveau l'utilisateur individuellement ou dans une nouvelle tâche.

Les résultats ne contiennent que les identifiants d'utilisateurs ; aucune autre donnée personnelle n'est renvoyée. La liste ne se pagine que vers l'avant : utilisez `list_metadata.after` pour la page suivante ; `before` et `order` ne sont pas pris en charge.

## Demande

| Paramètre | Dans | Obligatoire | Description |
|---|---|---|---|
| `job_id` | path | oui | Identifiant de la tâche, préfixé `job_`. |
| `limit` | query | non | Taille de page, de 1 à 100. Par défaut 20. |
| `after` | query | non | Curseur opaque issu de `list_metadata.after`. Valable uniquement pour la même tâche. |

## Réponse

`200 OK`. `list_metadata.after` est le curseur de la page suivante (`null` sur la dernière page) ; `list_metadata.before` vaut toujours `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 }
}
```

## Erreurs

Chaque erreur est un corps `application/problem+json` avec un `code` stable.

| HTTP | `code` | Quand |
|---|---|---|
| 400 | `invalid_cursor` | Le curseur est mal formé, expiré ou appartient à une autre tâche. |
| 401 | `unauthenticated` | La clé d'API est absente, invalide ou révoquée. |
| 403 | `insufficient_permissions` | La clé ne dispose pas de l'autorisation `users:delete`. |
| 404 | `not_found` | La tâche n'existe pas dans cet environnement (ou l'identifiant est mal formé). |
| 422 | `validation_failed` | `limit` est hors plage, ou `before` ou `order` a été envoyé (`not_supported`). |
| 429 | `rate_limited` | La limite de débit a été dépassée ; respectez `Retry-After`. |
| 503 | `service_unavailable` | Une dépendance est temporairement indisponible ; réessayez plus tard. |

## Exemple

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