Crear una exportación de auditoría
POST /v1/audit-exports · permiso audit-exports:write
Pone en cola un trabajo que escribe los registros de auditoría coincidentes en un paquete firmado que puede verificar sin confiar en KeenAuth. El trabajo se devuelve con 202 Accepted; haga seguimiento con Obtener una exportación de auditoría y descargue el archivo con Descargar una exportación de auditoría.
Solo las claves de API (secretas o restringidas) pueden crear exportaciones; el trabajo registra la clave como requested_by. El entorno se toma de la clave.
Solicitud
Idempotency-Key es obligatorio (de 16 a 64 caracteres, A-Z a-z 0-9 _ -). La misma clave con el mismo cuerpo devuelve el primer trabajo con Idempotent-Replayed: true; la misma clave con un cuerpo distinto falla con 422 idempotency_key_reuse. Los SDK y la CLI establecen el encabezado por usted.
Los filtros son los mismos que en Listar eventos de auditoría; un campo omitido no filtra. Diferencias:
| Campo | Tipo | Descripción |
|---|---|---|
stream |
string | admin (predeterminado) o application. |
from |
RFC 3339 | Límite inferior inclusivo. Por defecto, el inicio de la ventana de retención. No hay límite de 92 días; un paquete contiene como máximo 50 millones de líneas (incluidos los marcadores de posición). |
to |
RFC 3339 | Límite superior exclusivo. Por defecto, el momento actual; no puede estar en el futuro. |
action, category, actor_type, actor_id, target_type, target_id, org_id, outcome, request_id, correlation_id, agent_only |
Igual que en los filtros de la lista. El filtro client de la lista no está disponible aquí; un campo client falla con 400 unknown_field. |
|
include_ip |
boolean | Añade la dirección IP completa y el user agent a los registros con menos de 13 meses. También requiere audit-events:read_ip. Predeterminado false. |
{
"stream": "admin",
"from": "2026-07-01T00:00:00Z",
"to": "2026-10-01T00:00:00Z",
"action": "user."
}
Como máximo se ejecutan 3 trabajos al mismo tiempo por entorno (1 en los entornos de desarrollo y staging).
Respuesta
202 Accepted y el trabajo con status queued. filter muestra el filtro aplicado con los valores predeterminados de from y to completados. recorded_before es el límite de la instantánea: solo entran en el paquete los registros almacenados antes de él.
{
"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"}
}
Errores
Todos los errores son un cuerpo application/problem+json con un code estable.
| HTTP | code |
Cuándo |
|---|---|---|
| 400 | malformed_request |
Falta Idempotency-Key o tiene un formato incorrecto, o el cuerpo no es JSON válido. |
| 400 | unknown_field |
El cuerpo tiene un campo que no aparece en la lista anterior. |
| 400 | invalid_filter |
El servicio de auditoría rechazó el filtro, por ejemplo to en el futuro. |
| 400 | range_outside_retention |
from o to están fuera de la ventana de retención de auditoría de su plan. |
| 422 | validation_failed |
Un campo no es válido (tipo incorrecto, marca de tiempo errónea, to no posterior a from, valor de enumeración desconocido, id con formato incorrecto, cadena vacía). |
| 422 | idempotency_key_reuse |
Idempotency-Key se usó con un cuerpo distinto. |
| 401 | unauthenticated |
La clave de API falta, no es válida o fue revocada. |
| 403 | insufficient_permissions |
La clave no tiene audit-exports:write, usa include_ip sin audit-events:read_ip (required_permissions enumera ambos), o quien llama no es una clave de API. |
| 429 | rate_limited |
Hay demasiados trabajos en ejecución en este entorno, o se superó el límite de frecuencia; respete Retry-After. |
| 503 | service_unavailable |
Una dependencia no está disponible temporalmente; reintente más tarde. |
Ejemplo
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.
Datos personales
Este endpoint contiene datos personales: eventos de auditoría. Datos personales en las API de KeenAuth describe qué se almacena, cuánto tiempo se conserva y cómo se elimina. No envíe categorías especiales de datos personales (salud, datos biométricos, religión, opiniones políticas, orientación sexual) en ningún campo.