Scarica un'esportazione dei dati utente
GET /v1/jobs/user-exports/{job_id}/download · autorizzazione users:export
Restituisce un link monouso al pacchetto di una esportazione dei dati utente completata. Ogni chiamata scrive un record user_export.downloaded nel log di audit della gestione prima che il link venga emesso.
Richiesta
| Parametro | In | Obbligatorio | Descrizione |
|---|---|---|---|
job_id |
path | sì | ID del job, con prefisso job_. |
Un job creato con include_ip: true richiede anche audit-events:read_ip sulla credenziale che effettua il download.
Risposta
302 Found con corpo vuoto. Location è un link relativo sullo stesso host, /downloads/user-exports/{environment_id}/{job_id}/{token}. La risposta contiene Cache-Control: no-store e Referrer-Policy: no-referrer.
- Il link è valido per 15 minuti e funziona una sola volta: il token viene consumato alla prima richiesta, anche se il trasferimento viene interrotto. Chiama di nuovo questa operazione per ottenere un nuovo link.
- Il link non richiede credenziali; il token è l'unica credenziale. Tieni
Locationriservato e non registrarlo nei log. - Il file è cifrato a riposo con la chiave dell'ambiente, quindi non viene usato alcun URL prefirmato dello storage; KeenAuth decifra e trasmette il file.
Seguendo il link con GET si ottiene 200 OK con Content-Type: application/zip, Content-Length e Content-Disposition: attachment; filename="user-export-job_….zip". HEAD viene rifiutato con 405 così che le anteprime dei link non consumino il token. Confronta il SHA-256 del file con file.sha256 del job. Se la connessione termina prima che siano arrivati Content-Length byte, il pacchetto è incompleto; eliminalo e richiedi un nuovo link. Un link non valido, già usato o scaduto restituisce 404 not_found.
Errori
Ogni errore è un corpo application/problem+json con un code stabile.
| HTTP | code |
Quando |
|---|---|---|
| 401 | unauthenticated |
La chiave API è mancante, non valida o revocata. |
| 403 | insufficient_permissions |
La chiave non ha users:export, oppure il job è stato creato con include_ip e la chiave non ha audit-events:read_ip (required_permissions elenca entrambe). |
| 404 | not_found |
Il job non esiste, appartiene a un altro ambiente, oppure l'ID non è valido. Sul link: il token non è valido, è già stato usato o è scaduto. |
| 409 | conflict |
Il job non è ancora completato, oppure il suo file è scaduto. |
| 429 | rate_limited |
È stato superato il limite di richieste; rispetta Retry-After. Il link stesso consente 10 richieste al minuto per indirizzo IP. |
| 503 | service_unavailable |
Una dipendenza è temporaneamente non disponibile; riprova più tardi. |
Esempio
curl -L -o user-export.zip \
https://api.eu.keenauth.com/v1/jobs/user-exports/job_01j9xk3m7q8r2s4t6v8w0y2z4e/download \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
La CLI segue il link da sola, scrive il pacchetto in un file (mai sull'output standard), rifiuta di sovrascrivere un file esistente e stampa dimensione e SHA-256 di ciò che ha scritto:
keenauth jobs user-exports download job_01j9xk3m7q8r2s4t6v8w0y2z4e --file user-export.zip
Dati personali
Questo endpoint contiene dati personali: profilo dell'utente finale. Dati personali nelle API di KeenAuth descrive cosa viene memorizzato, per quanto tempo viene conservato e come viene cancellato. Non inviare in nessun campo categorie particolari di dati personali (salute, dati biometrici, religione, opinioni politiche, orientamento sessuale).