Ein Audit-Export erstellen
POST /v1/audit-exports · Berechtigung audit-exports:write
Stellt einen Auftrag in die Warteschlange, der die passenden Audit-Datensätze in ein signiertes Paket schreibt, das Sie prüfen können, ohne KeenAuth vertrauen zu müssen. Der Auftrag wird mit 202 Accepted zurückgegeben. Verfolgen Sie ihn mit Einen Audit-Export abrufen und laden Sie die Datei mit Einen Audit-Export herunterladen herunter.
Nur API-Schlüssel (geheim oder eingeschränkt) können Exporte erstellen; der Auftrag speichert den Schlüssel als requested_by. Die Umgebung ergibt sich aus dem Schlüssel.
Anfrage
Idempotency-Key ist erforderlich (16 bis 64 Zeichen, A-Z a-z 0-9 _ -). Derselbe Schlüssel mit demselben Body liefert den ersten Auftrag mit Idempotent-Replayed: true zurück. Derselbe Schlüssel mit einem anderen Body schlägt mit 422 idempotency_key_reuse fehl. Die SDKs und die CLI setzen den Header für Sie.
Die Filter entsprechen denen in Audit-Ereignisse auflisten. Ein weggelassenes Feld filtert nicht. Unterschiede:
| Feld | Typ | Beschreibung |
|---|---|---|
stream |
string | admin (Standard) oder application. |
from |
RFC 3339 | Untere Grenze, inklusive. Standardmäßig der Beginn des Aufbewahrungszeitraums. Es gibt kein Limit von 92 Tagen; ein Paket enthält höchstens 50 Millionen Zeilen (einschließlich Platzhalter). |
to |
RFC 3339 | Obere Grenze, exklusive. Standardmäßig der aktuelle Zeitpunkt; darf nicht in der Zukunft liegen. |
action, category, actor_type, actor_id, target_type, target_id, org_id, outcome, request_id, correlation_id, agent_only |
Wie bei den Listenfiltern. Der Listenfilter client ist hier nicht verfügbar; ein Feld client schlägt mit 400 unknown_field fehl. |
|
include_ip |
boolean | Fügt die vollständige IP-Adresse und den User-Agent zu Datensätzen hinzu, die jünger als 13 Monate sind. Erfordert zusätzlich audit-events:read_ip. Standard false. |
{
"stream": "admin",
"from": "2026-07-01T00:00:00Z",
"to": "2026-10-01T00:00:00Z",
"action": "user."
}
Pro Umgebung laufen gleichzeitig höchstens 3 Aufträge (1 in Entwicklungs- und Staging-Umgebungen).
Antwort
202 Accepted und der Auftrag mit status queued. filter zeigt den angewendeten Filter mit den ausgefüllten Standardwerten von from und to. recorded_before ist die Snapshot-Grenze: Nur Datensätze, die davor gespeichert wurden, gelangen in das Paket.
{
"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"}
}
Fehler
Jeder Fehler ist ein application/problem+json-Body mit einem stabilen code.
| HTTP | code |
Wann |
|---|---|---|
| 400 | malformed_request |
Idempotency-Key fehlt oder ist fehlerhaft, oder der Body ist kein gültiges JSON. |
| 400 | unknown_field |
Der Body enthält ein Feld, das oben nicht aufgeführt ist. |
| 400 | invalid_filter |
Der Audit-Dienst hat den Filter abgelehnt, zum Beispiel weil to in der Zukunft liegt. |
| 400 | range_outside_retention |
from oder to liegt außerhalb des Audit-Aufbewahrungszeitraums Ihres Tarifs. |
| 422 | validation_failed |
Ein Feld ist ungültig (falscher Typ, fehlerhafter Zeitstempel, to nicht nach from, unbekannter Enum-Wert, fehlerhafte ID, leere Zeichenkette). |
| 422 | idempotency_key_reuse |
Der Idempotency-Key wurde mit einem anderen Body verwendet. |
| 401 | unauthenticated |
Der API-Schlüssel fehlt, ist ungültig oder wurde widerrufen. |
| 403 | insufficient_permissions |
Dem Schlüssel fehlt audit-exports:write, er verwendet include_ip ohne audit-events:read_ip (required_permissions listet beide auf), oder der Aufrufer ist kein API-Schlüssel. |
| 429 | rate_limited |
In dieser Umgebung laufen zu viele Aufträge, oder das Ratenlimit wurde überschritten. Beachten Sie Retry-After. |
| 503 | service_unavailable |
Eine Abhängigkeit ist vorübergehend nicht verfügbar. Versuchen Sie es später erneut. |
Beispiel
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.
Personenbezogene Daten
Dieser Endpunkt verarbeitet personenbezogene Daten: Audit-Ereignisse. Personenbezogene Daten in den KeenAuth-APIs beschreibt, was gespeichert wird, wie lange es aufbewahrt wird und wie es gelöscht wird. Übermitteln Sie in keinem Feld besondere Kategorien personenbezogener Daten (Gesundheit, biometrische Daten, Religion, politische Meinungen, sexuelle Orientierung).