
# Exporter les données d'un utilisateur

`POST /v1/users/{user_id}:export` · autorisation `users:export`

Lance une tâche qui regroupe les données personnelles que KeenAuth détient sur un utilisateur, pour une demande d'accès ou de portabilité de la personne concernée (GDPR, articles 15 et 20). La tâche s'exécute en arrière-plan : interrogez [Obtenir une tâche d'export de données utilisateur](/docs/api/management/jobs/get-user-export) jusqu'à ce que `status` soit `completed`, puis [téléchargez le paquet](/docs/api/management/jobs/download-user-export). L'utilisateur final n'est pas envoyé par e-mail ; la remise du paquet lui incombe.

## Requête

| Paramètre | Dans | Obligatoire | Description |
|---|---|---|---|
| `user_id` | path | oui | Identifiant de l'utilisateur, préfixé `usr_`. |
| `Idempotency-Key` | header | non | 16 à 64 caractères `[A-Za-z0-9_-]`. La même clé provenant du même identifiant renvoie la même tâche. |
| `include_ip` | body | non | `true` ajoute au paquet les adresses IP des sessions et des événements. Nécessite aussi `audit-events:read_ip`. Par défaut `false`. |

Le corps est facultatif ; envoyez `{}` ou aucun corps pour un export sans adresses IP.

```json
{ "include_ip": false }
```

## Réponse

`202 Accepted` avec la tâche. Une requête rejouée avec la même `Idempotency-Key` renvoie la tâche d'origine et `Idempotent-Replayed: true`.

```json
{
  "id": "job_01j9xk3m7q8r2s4t6v8w0y2z4e",
  "kind": "subject",
  "source": "management_api",
  "user_id": "usr_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "status": "queued",
  "include_app_metadata": true,
  "include_ip": false,
  "file": null,
  "failure_reason": null,
  "requested_by": { "type": "api_key", "id": "key_01j9xk3m7q8r2s4t6v8w0y2z4b" },
  "created_at": "2026-10-28T09:00:00Z",
  "started_at": null,
  "completed_at": null,
  "expires_at": null
}
```

Le paquet est un fichier ZIP :

| Fichier | Contenu |
|---|---|
| `manifest.json` | Version du schéma, identifiants de la tâche et de l'utilisateur, date de création, source, et le SHA-256 et le nombre d'enregistrements de chaque autre fichier. |
| `profile.json`, `emails.json`, `phones.json` | Champs de profil, adresses e-mail et numéros de téléphone. |
| `metadata.json` | `user_metadata` et `app_metadata`. |
| `identities.json` | Identités sociales et d'entreprise liées. |
| `authenticators.json`, `sessions.json` | Clés d'accès et autres authentificateurs (sans secrets), et sessions. |
| `organizations.json`, `oauth_grants.json`, `consents.json` | Appartenances aux organisations, autorisations OAuth et enregistrements de consentement. |
| `auth_events.ndjson` | Événements d'authentification, un objet JSON par ligne. |

Les empreintes de mots de passe, les graines TOTP, les codes de récupération, les jetons de session et les jetons SAML ou ID bruts ne sont jamais inclus. Le paquet est conservé 7 jours après la fin de la tâche.

## Erreurs

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

| HTTP | `code` | Quand |
|---|---|---|
| 400 | `malformed_request` | Le corps ou l'en-tête `Idempotency-Key` est mal formé. |
| 401 | `unauthenticated` | La clé d'API est absente, invalide ou révoquée. |
| 403 | `insufficient_permissions` | La clé ne dispose pas de `users:export`, ou `include_ip` est `true` et la clé ne dispose pas de `audit-events:read_ip` (`required_permissions` les liste toutes deux). |
| 404 | `not_found` | L'utilisateur n'existe pas dans cet environnement, ou l'identifiant est mal formé. |
| 422 | `idempotency_key_reuse` | `Idempotency-Key` a été utilisé avec une requête différente. |
| 429 | `rate_limited` | Trop de tâches d'export sont en file d'attente ou en cours dans cet environnement, ou 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 -X POST https://api.eu.keenauth.com/v1/users/usr_01j9xk3m7q8r2s4t6v8w0y2z4a:export \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: dsar-2026-10-28-0001" \
  -H "Content-Type: application/json" \
  -d '{"include_ip": false}'
```

CLI : `keenauth users export usr_01j9xk3m7q8r2s4t6v8w0y2z4a`

## Données personnelles

Ce point de terminaison traite des données personnelles : profil de l'utilisateur final. [Données personnelles dans les API KeenAuth](/docs/policies/personal-data) décrit ce qui est stocké, la durée de conservation et la suppression. Ne transmettez aucune catégorie particulière de données personnelles (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.
