
# Exportar los datos de un usuario

`POST /v1/users/{user_id}:export` · permiso `users:export`

Inicia un trabajo que empaqueta los datos personales que KeenAuth conserva sobre un usuario, para una solicitud de acceso o de portabilidad del interesado (artículos 15 y 20 de GDPR). El trabajo se ejecuta en segundo plano: consulte [Obtener un trabajo de exportación de datos de usuario](/docs/api/management/jobs/get-user-export) hasta que `status` sea `completed`, y después [descargue el paquete](/docs/api/management/jobs/download-user-export). No se envía ningún correo electrónico al usuario final; la entrega del paquete a esa persona es responsabilidad suya.

## Solicitud

| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
| `user_id` | path | sí | Identificador del usuario, con el prefijo `usr_`. |
| `Idempotency-Key` | header | no | De 16 a 64 caracteres `[A-Za-z0-9_-]`. La misma clave desde la misma credencial devuelve el mismo trabajo. |
| `include_ip` | body | no | `true` añade al paquete las direcciones IP de las sesiones y de los eventos. Requiere también `audit-events:read_ip`. Valor predeterminado: `false`. |

El cuerpo es opcional; envíe `{}` o no envíe cuerpo para exportar sin direcciones IP.

```json
{ "include_ip": false }
```

## Respuesta

`202 Accepted` con el trabajo. Una solicitud repetida con la misma `Idempotency-Key` devuelve el trabajo original y `Idempotent-Replayed: true`.

```json
{
  "id": "job_01j9xk3m7q8r2s4t6v8w0y2z4e",
  "kind": "subject",
  "source": "management_api",
  "user_id": "usr_01j9xk3m7q8r2s4t6v8w0y2z4a",
  "status": "queued",
  "include_app_metadata": true,
  "include_ip": false,
  "file": null,
  "failure_reason": null,
  "requested_by": { "type": "api_key", "id": "key_01j9xk3m7q8r2s4t6v8w0y2z4b" },
  "created_at": "2026-10-28T09:00:00Z",
  "started_at": null,
  "completed_at": null,
  "expires_at": null
}
```

El paquete es un archivo ZIP:

| Archivo | Contenido |
|---|---|
| `manifest.json` | Versión del esquema, identificadores del trabajo y del usuario, fecha de creación, origen y el SHA-256 y el número de registros de cada uno de los demás archivos. |
| `profile.json`, `emails.json`, `phones.json` | Campos del perfil, direcciones de correo electrónico y números de teléfono. |
| `metadata.json` | `user_metadata` y `app_metadata`. |
| `identities.json` | Identidades sociales y empresariales vinculadas. |
| `authenticators.json`, `sessions.json` | Claves de acceso y otros autenticadores (sin secretos), y sesiones. |
| `organizations.json`, `oauth_grants.json`, `consents.json` | Membresías de organizaciones, concesiones de OAuth y registros de consentimiento. |
| `auth_events.ndjson` | Eventos de autenticación, un objeto JSON por línea. |

Nunca se incluyen los hashes de contraseñas, las semillas TOTP, los códigos de recuperación, los tokens de sesión ni los tokens SAML o de ID sin procesar. El paquete se conserva durante 7 días después de que el trabajo se complete.

## Errores

Todo error es un cuerpo `application/problem+json` con un `code` estable.

| HTTP | `code` | Cuándo |
|---|---|---|
| 400 | `malformed_request` | El cuerpo o el encabezado `Idempotency-Key` tienen un formato incorrecto. |
| 401 | `unauthenticated` | La clave de API falta, no es válida o ha sido revocada. |
| 403 | `insufficient_permissions` | La clave no tiene `users:export`, o `include_ip` es `true` y la clave no tiene `audit-events:read_ip` (`required_permissions` enumera ambos). |
| 404 | `not_found` | El usuario no existe en este entorno, o el identificador tiene un formato incorrecto. |
| 422 | `idempotency_key_reuse` | La `Idempotency-Key` se usó con una solicitud diferente. |
| 429 | `rate_limited` | Hay demasiados trabajos de exportación en cola o en ejecución en este entorno, o se superó el límite de solicitudes; respete `Retry-After`. |
| 503 | `service_unavailable` | Una dependencia no está disponible temporalmente; vuelva a intentarlo más tarde. |

## Ejemplo

```bash
curl -X POST https://api.eu.keenauth.com/v1/users/usr_01j9xk3m7q8r2s4t6v8w0y2z4a:export \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: dsar-2026-10-28-0001" \
  -H "Content-Type: application/json" \
  -d '{"include_ip": false}'
```

CLI: `keenauth users export usr_01j9xk3m7q8r2s4t6v8w0y2z4a`

## Datos personales

Este endpoint contiene datos personales: el perfil del usuario final. [Datos personales en las API de KeenAuth](/docs/policies/personal-data) describe qué se almacena, durante 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.
