Crea un'esportazione di audit

POST /v1/audit-exports · autorizzazione audit-exports:write

Accoda un job che scrive i record di audit corrispondenti in un pacchetto firmato che puoi verificare senza fidarti di KeenAuth. Il job viene restituito con 202 Accepted; seguilo con Ottieni un'esportazione di audit e scarica il file con Scarica un'esportazione di audit.

Solo le chiavi API (segrete o con restrizioni) possono creare esportazioni; il job registra la chiave come requested_by. L'ambiente viene ricavato dalla chiave.

Richiesta

Idempotency-Key è obbligatoria (da 16 a 64 caratteri, A-Z a-z 0-9 _ -). La stessa chiave con lo stesso corpo restituisce il primo job con Idempotent-Replayed: true; la stessa chiave con un corpo diverso fallisce con 422 idempotency_key_reuse. Gli SDK e la CLI impostano l'intestazione per te.

I filtri sono gli stessi di Elenca gli eventi di audit; un campo omesso non filtra. Differenze:

Campo Tipo Descrizione
stream string admin (predefinito) oppure application.
from RFC 3339 Limite inferiore incluso. Il valore predefinito è l'inizio della finestra di conservazione. Non c'è un limite di 92 giorni; un pacchetto contiene al massimo 50 milioni di righe (segnaposto inclusi).
to RFC 3339 Limite superiore escluso. Il valore predefinito è l'ora attuale; non può essere nel futuro.
action, category, actor_type, actor_id, target_type, target_id, org_id, outcome, request_id, correlation_id, agent_only Come nei filtri dell'elenco. Il filtro client dell'elenco non è disponibile qui; un campo client fallisce con 400 unknown_field.
include_ip boolean Aggiunge indirizzo IP completo e agente utente ai record più recenti di 13 mesi. Richiede anche audit-events:read_ip. Predefinito false.
{
  "stream": "admin",
  "from": "2026-07-01T00:00:00Z",
  "to": "2026-10-01T00:00:00Z",
  "action": "user."
}

Al massimo 3 job girano contemporaneamente per ambiente (1 negli ambienti di sviluppo e staging).

Risposta

202 Accepted e il job con status queued. filter mostra il filtro applicato con i valori predefiniti di from e to compilati. recorded_before è il limite dello snapshot: entrano nel pacchetto solo i record memorizzati prima di questo valore.

{
  "id": "aex_01j9xk3m7q8r2s4t6v8w0y2z4e",
  "status": "queued",
  "filter": {
    "stream": "admin",
    "from": "2026-07-01T00:00:00Z",
    "to": "2026-10-01T00:00:00Z",
    "action": "user.",
    "category": null,
    "actor_type": null,
    "actor_id": null,
    "target_type": null,
    "target_id": null,
    "org_id": null,
    "outcome": null,
    "request_id": null,
    "correlation_id": null,
    "agent_only": false
  },
  "include_ip": false,
  "record_count": null,
  "file": null,
  "manifest_sha256": null,
  "failure_reason": null,
  "created_at": "2026-10-19T09:00:00Z",
  "started_at": null,
  "completed_at": null,
  "expires_at": null,
  "recorded_before": "2026-10-19T09:00:00Z",
  "requested_by": {"type": "api_key", "id": "key_01j9xk3m7q8r2s4t6v8w0y2z4d"}
}

Errori

Ogni errore è un corpo application/problem+json con un code stabile.

HTTP code Quando
400 malformed_request Idempotency-Key manca o è malformata, oppure il corpo non è JSON valido.
400 unknown_field Il corpo contiene un campo non elencato sopra.
400 invalid_filter Il servizio di audit ha rifiutato il filtro, per esempio to nel futuro.
400 range_outside_retention from o to sono fuori dalla finestra di conservazione dell'audit del tuo piano.
422 validation_failed Un campo non è valido (tipo errato, timestamp non valido, to non successivo a from, valore enum sconosciuto, id malformato, stringa vuota).
422 idempotency_key_reuse Idempotency-Key è stata usata con un corpo diverso.
401 unauthenticated La chiave API manca, non è valida o è stata revocata.
403 insufficient_permissions La chiave non ha audit-exports:write, usa include_ip senza audit-events:read_ip (required_permissions elenca entrambe), oppure il chiamante non è una chiave API.
429 rate_limited Troppi job sono in esecuzione in questo ambiente, oppure è stato superato il limite di frequenza; rispetta Retry-After.
503 service_unavailable Una dipendenza è temporaneamente non disponibile; riprova più tardi.

Esempio

curl https://api.eu.keenauth.com/v1/audit-exports \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"from": "2026-07-01T00:00:00Z", "to": "2026-10-01T00:00:00Z", "action": "user."}'
keenauth audit-exports create --from 2026-07-01T00:00:00Z --to 2026-10-01T00:00:00Z --action user.

Dati personali

Questo endpoint contiene dati personali: eventi di audit. I dati personali nelle API di KeenAuth descrive cosa viene memorizzato, per quanto tempo viene conservato e come viene cancellato. Non inviare categorie particolari di dati personali (salute, dati biometrici, religione, opinioni politiche, orientamento sessuale) in nessun campo.