Esporta i dati di un utente
POST /v1/users/{user_id}:export · autorizzazione users:export
Avvia un job che raccoglie in un pacchetto i dati personali che KeenAuth conserva su un utente, per una richiesta di accesso o portabilità dell'interessato (GDPR, articoli 15 e 20). Il job viene eseguito in background: interroga Ottieni un job di esportazione dei dati utente finché status non è completed, poi scarica il pacchetto. All'utente finale non viene inviata alcuna email; consegnargli il pacchetto è una tua responsabilità.
Richiesta
| Parametro | In | Obbligatorio | Descrizione |
|---|---|---|---|
user_id |
path | sì | ID utente, con prefisso usr_. |
Idempotency-Key |
header | no | Da 16 a 64 caratteri [A-Za-z0-9_-]. La stessa chiave dalla stessa credenziale restituisce lo stesso job. |
include_ip |
body | no | true aggiunge al pacchetto gli indirizzi IP delle sessioni e degli eventi. Richiede anche l'autorizzazione audit-events:read_ip. Valore predefinito false. |
Il body è facoltativo; invia {} oppure non inviare alcun body per un'esportazione senza indirizzi IP.
{ "include_ip": false }
Risposta
202 Accepted con il job. Una richiesta ripetuta con la stessa Idempotency-Key restituisce il job originale e Idempotent-Replayed: true.
{
"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
}
Il pacchetto è un file ZIP:
| File | Contenuto |
|---|---|
manifest.json |
Versione dello schema, ID di job e utente, data di creazione, origine e SHA-256 e numero di record di ogni altro file. |
profile.json, emails.json, phones.json |
Campi del profilo, indirizzi email e numeri di telefono. |
metadata.json |
user_metadata e app_metadata. |
identities.json |
Identità social e aziendali collegate. |
authenticators.json, sessions.json |
Passkey e altri autenticatori (senza segreti) e sessioni. |
organizations.json, oauth_grants.json, consents.json |
Appartenenze alle organizzazioni, autorizzazioni OAuth e registrazioni dei consensi. |
auth_events.ndjson |
Eventi di autenticazione, un oggetto JSON per riga. |
Gli hash delle password, i seed TOTP, i codici di recupero, i token di sessione e i token SAML o ID grezzi non sono mai inclusi. Il pacchetto viene conservato per 7 giorni dopo il completamento del job.
Errori
Ogni errore è un corpo application/problem+json con un code stabile.
| HTTP | code |
Quando |
|---|---|---|
| 400 | malformed_request |
Il body o l'header Idempotency-Key non è valido. |
| 401 | unauthenticated |
La chiave API manca, non è valida o è stata revocata. |
| 403 | insufficient_permissions |
La chiave non ha users:export, oppure include_ip è true e la chiave non ha audit-events:read_ip (required_permissions elenca entrambe). |
| 404 | not_found |
L'utente non esiste in questo ambiente, oppure l'ID non è valido. |
| 422 | idempotency_key_reuse |
La Idempotency-Key è stata usata con una richiesta diversa. |
| 429 | rate_limited |
Ci sono troppi job di esportazione in coda o in esecuzione in questo ambiente, oppure è stato superato il limite di richieste; rispetta Retry-After. |
| 503 | service_unavailable |
Una dipendenza è temporaneamente non disponibile; riprova più tardi. |
Esempio
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
Dati personali
Questo endpoint gestisce dati personali: profilo dell'utente finale. Dati personali nelle API di KeenAuth descrive cosa viene memorizzato, per quanto tempo viene conservato e come viene eliminato. Non inviare categorie particolari di dati personali (salute, dati biometrici, religione, opinioni politiche, orientamento sessuale) in nessun campo.