Registros de auditoría
Consulta el registro de auditoría inmutable que Tokeflow mantiene para cada evento de cambio y acceso — quién hizo qué, a qué recurso, cuándo, desde dónde y con qué resultado.
Todo cambio de estado y todo acceso sensible en Tokeflow escribe una entrada de registro de auditoría — un registro de solo inserción (append-only) de quién hizo qué a qué recurso. Cada entrada captura al actor (un usuario del Dashboard, una clave de API, el sistema o un webhook de proveedor), la acción realizada, la entidad afectada, el estado antes y después del cambio, la dirección IP del cliente y si la operación se realizó correctamente o falló.
Los registros de auditoría son de solo lectura a través de la API: puedes listarlos y filtrarlos, pero nunca crearlos, modificarlos ni eliminarlos. Úsalos para responder "¿quién cambió este conector?", para reconstruir el historial de un pedido o de un perfil de enrutamiento, o para alimentar tu propio SIEM y tus flujos de generación de informes de cumplimiento. El campo outcome registra el éxito o el fracaso del evento, conforme a PCI DSS 10.3.1.
Los resultados están delimitados por la clave de API con la que te autenticas:
Las claves de Merchant devuelven registros de auditoría solo de ese Merchant. Las claves de Organization devuelven registros de auditoría de toda la Organization — pasa el parámetro de consulta opcional merchant_id para profundizar en un Merchant específico. Enviar merchant_id con una clave de Merchant no tiene efecto; se ignora.
El objeto de registro de auditoría
| Field | Type | Description |
|---|---|---|
id | string | ID del registro de auditoría (UUID). |
organization_id | string | null | Organization a la que pertenece el evento. |
merchant_id | string | null | Merchant al que pertenece el evento. Nulo para eventos a nivel de Organization. |
entity_type | string | Tipo de entidad afectada. Consulta Tipos de entidad. |
entity_id | string | null | ID de la entidad afectada. |
action | string | Acción realizada. Consulta Acciones. |
actor_type | string | Tipo de actor que realizó la acción (p. ej., user, system, api_key, psp_webhook). |
actor_id | string | null | ID del actor — un UUID de usuario o de clave de API. Nulo para eventos anónimos o iniciados por el sistema. |
before_state | object | null | Estado de la entidad antes del cambio. Nulo en la creación. |
after_state | object | null | Estado de la entidad después del cambio. Nulo en la eliminación. |
outcome | string | Resultado del evento (PCI DSS 10.3.1): success o failure. |
error_message | string | null | Mensaje de error cuando outcome es failure. Nulo en caso contrario. |
ip_address | string | null | Dirección IP del cliente desde donde se originó la solicitud. |
created_at | string | Marca de tiempo del evento de auditoría (ISO 8601 UTC). |
Comparar before_state y after_state te muestra exactamente qué cambió un evento determinado — para la activación de un conector, por ejemplo, verías el estado antiguo y el nuevo uno junto al otro.
Tipos de entidad
El campo (y filtro) entity_type acepta:
organization, merchant, user, auth_session, merchant_connector, routing_profile, routing_rule_node, payment_instrument, order, api_key, user_membership, webhook_config, transaction, transaction_attempts, transaction_refund, transaction_refunds, audit_log.
Acciones
El campo (y filtro) action acepta los siguientes valores, agrupados aquí según lo que describen:
| Grupo | Valores |
|---|---|
| Ciclo de vida de la entidad | created, updated, deleted, activated, deactivated, revoked, status_changed |
| Acceso a datos | list, read, retrieve |
| Operaciones de pago | create, capture, void, refund |
| Autenticación | login_success, login_failure, logout, password_changed, account_locked, account_unlocked, token_issued, token_refreshed, token_revoked |
Endpoints
GET/api/v1/audit-logs
Auth: clave de Organization (en toda la Organization; merchant_id opcional para profundizar) o clave de Merchant (sus propios registros). Scope: audit_logs:read.
Devuelve una lista paginada de entradas de registro de auditoría, delimitada por la clave de API autenticada. Combina filtros para acotar el registro — por ejemplo, todos los inicios de sesión fallidos de enero, o todos los cambios realizados alguna vez en un conector específico.
Parámetros de consulta
| Field | Type | Required | Description |
|---|---|---|---|
page | integer | No | Número de página, indexado desde 1 (predeterminado 1). |
limit | integer | No | Elementos por página (predeterminado 20, máx. 100). |
merchant_id | string | No | Profundiza en un Merchant específico. Solo para claves de Organization — se ignora para claves de Merchant. |
entity_type | string | No | Filtra por el tipo de entidad afectada. Consulta Tipos de entidad. |
entity_id | string | No | Filtra por el ID de la entidad afectada (UUID). |
action | string | No | Filtra por la acción. Consulta Acciones. |
actor_type | string | No | Filtra por el tipo de actor: user, system, scheduler o psp_webhook. |
actor_id | string | No | Filtra por el ID del actor — un UUID de usuario o de clave de API. |
outcome | string | No | Filtra por el resultado (PCI DSS 10.3.1): success o failure. |
start_date | string | No | Eventos a partir de esta marca de tiempo, inclusive (ISO 8601, p. ej., 2025-01-01T00:00:00.000Z). |
end_date | string | No | Eventos hasta esta marca de tiempo, inclusive (ISO 8601, p. ej., 2025-12-31T23:59:59.999Z). |
Ejemplo de solicitud
curl -G https://api.tokeflow.com/api/v1/audit-logs \
-H "Authorization: Bearer sk_live_org_…" \
--data-urlencode "merchant_id=mrc_123" \
--data-urlencode "entity_type=merchant_connector" \
--data-urlencode "outcome=success" \
--data-urlencode "start_date=2026-01-01T00:00:00.000Z" \
--data-urlencode "page=1" \
--data-urlencode "limit=20"Ejemplo de respuesta — 200 OK
El endpoint devuelve las entradas coincidentes en data (las más recientes primero) y los metadatos de paginación en meta:
{
"data": [
{
"id": "9d3f2c1e-7a45-4b8e-9c12-3f6a8d0e5b21",
"organization_id": "org_123",
"merchant_id": "mrc_123",
"entity_type": "merchant_connector",
"entity_id": "1f7c9a2d-5e83-4b06-a914-c2d7e8f0a634",
"action": "activated",
"actor_type": "user",
"actor_id": "550e8400-e29b-41d4-a716-446655440000",
"before_state": { "status": "inactive" },
"after_state": { "status": "active" },
"outcome": "success",
"error_message": null,
"ip_address": "203.0.113.42",
"created_at": "2026-01-15T12:30:00.000Z"
},
{
"id": "4b8a1d6f-2c93-47e5-b120-9e5f7a3c8d16",
"organization_id": "org_123",
"merchant_id": "mrc_123",
"entity_type": "merchant_connector",
"entity_id": "1f7c9a2d-5e83-4b06-a914-c2d7e8f0a634",
"action": "updated",
"actor_type": "system",
"actor_id": null,
"before_state": { "priority": 2 },
"after_state": { "priority": 1 },
"outcome": "success",
"error_message": null,
"ip_address": null,
"created_at": "2026-01-14T09:12:44.000Z"
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 87,
"total_pages": 5,
"has_next": true,
"has_prev": false
}
}Los eventos con error también se registran. Una entrada login_failure, por ejemplo, incluye outcome: "failure" y un error_message legible por humanos, junto con la ip_address de origen — útil para detectar intentos de fuerza bruta contra cuentas del Dashboard.
Errores
Todos los errores usan el envoltorio estándar. Los casos más comunes para este recurso:
| HTTP | type | Causa típica |
|---|---|---|
400 | validation_error | Valor de filtro inválido — por ejemplo, un entity_type desconocido o una fecha con formato incorrecto. |
401 | authentication_error | Clave de API ausente o inválida. |
403 | authorization_error | La clave carece del scope requerido. |
429 | rate_limit_error | Límite de tasa excedido — reduce la frecuencia exponencialmente. |
Consulta Errores para conocer el envoltorio completo y el catálogo de tipos.
Relacionado
- Paginación y filtrado — convenciones de listado usadas en toda la API.
- Errores — el envoltorio estándar de errores.
- Autenticación — aprovisiona claves y scopes.
- Transacciones — los eventos de pago a los que hacen referencia las entradas de auditoría.