Créer un export d'audit

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

Met en file d'attente une tâche qui écrit les enregistrements d'audit correspondants dans un paquet signé que vous pouvez vérifier sans faire confiance à KeenAuth. La tâche est renvoyée avec 202 Accepted ; suivez-la avec Obtenir un export d'audit et récupérez le fichier avec Télécharger un export d'audit.

Seules les clés d'API (secrète ou restreinte) peuvent créer des exports ; la tâche enregistre la clé comme requested_by. L'environnement provient de la clé.

Requête

Idempotency-Key est obligatoire (16 à 64 caractères, A-Z a-z 0-9 _ -). La même clé avec le même corps renvoie la première tâche avec Idempotent-Replayed: true ; la même clé avec un corps différent échoue avec 422 idempotency_key_reuse. Les SDK et la CLI définissent cet en-tête à votre place.

Les filtres sont les mêmes que dans Lister les événements d'audit ; un champ omis ne filtre pas. Différences :

Champ Type Description
stream string admin (par défaut) ou application.
from RFC 3339 Borne inférieure incluse. Par défaut, le début de la fenêtre de conservation. Il n'existe pas de limite de 92 jours ; un paquet contient au maximum 50 millions de lignes (espaces réservés inclus).
to RFC 3339 Borne supérieure exclue. Par défaut, l'instant présent ; ne peut pas être dans le futur.
action, category, actor_type, actor_id, target_type, target_id, org_id, outcome, request_id, correlation_id, agent_only Comme dans les filtres de liste. Le filtre client de la liste n'est pas disponible ici ; un champ client échoue avec 400 unknown_field.
include_ip boolean Ajoute l'adresse IP complète et l'agent utilisateur aux enregistrements de moins de 13 mois. Exige également audit-events:read_ip. Par défaut false.
{
  "stream": "admin",
  "from": "2026-07-01T00:00:00Z",
  "to": "2026-10-01T00:00:00Z",
  "action": "user."
}

Au maximum 3 tâches s'exécutent en même temps par environnement (1 dans les environnements de développement et de préproduction).

Réponse

202 Accepted et la tâche avec status queued. filter affiche le filtre appliqué, avec les valeurs par défaut de from et to renseignées. recorded_before est la borne de l'instantané : seuls les enregistrements stockés avant cette date entrent dans le paquet.

{
  "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"}
}

Erreurs

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

HTTP code Quand
400 malformed_request Idempotency-Key est absent ou mal formé, ou le corps n'est pas du JSON valide.
400 unknown_field Le corps contient un champ qui ne figure pas dans la liste ci-dessus.
400 invalid_filter Le service d'audit a rejeté le filtre, par exemple to dans le futur.
400 range_outside_retention from ou to est en dehors de la fenêtre de conservation de l'audit de votre offre.
422 validation_failed Un champ est invalide (mauvais type, horodatage incorrect, to non postérieur à from, valeur d'énumération inconnue, identifiant mal formé, chaîne vide).
422 idempotency_key_reuse La Idempotency-Key a été utilisée avec un corps différent.
401 unauthenticated La clé d'API est absente, invalide ou révoquée.
403 insufficient_permissions La clé ne dispose pas de audit-exports:write, utilise include_ip sans audit-events:read_ip (required_permissions liste les deux), ou l'appelant n'est pas une clé d'API.
429 rate_limited Trop de tâches sont 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

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.

Données personnelles

Cet point de terminaison contient des données personnelles : des événements d'audit. Données personnelles dans les API KeenAuth décrit ce qui est stocké, pendant combien de temps et comment elles sont supprimées. N'envoyez aucune donnée personnelle sensible (santé, données biométriques, religion, opinions politiques, orientation sexuelle) dans aucun champ.