Exportar el registro
Descarga el registro firmado en JSON Lines o recibe los eventos elegidos a medida que ocurren.
En esta página
Cada llamada, decisión y cambio queda en tu registro. Llévate una copia completa cuando quieras, para tu SIEM o tu archivo.
Descárgalo desde la consola
Abre Actividad y pulsa Descargar registro. El archivo contiene toda la cadena de tu organización. Pueden descargarlo los propietarios, y también los administradores y auditores de toda la organización que no tengan un rol más limitado en ningún espacio de trabajo. Un administrador o auditor de un solo espacio de trabajo no puede, ni un administrador de la organización que en el espacio de un cliente solo es miembro o invitado. Para leerlo en pantalla, abre la pestaña Registro al lado: cada entrada, quién la hizo y a qué se refiere. Cada persona ve las entradas de los espacios donde es propietaria, administradora o auditora, y las de la propia organización.
Descárgalo con un script
Un script entra con una clave API de la consola. Un propietario la crea en Claves API con Nueva clave API, y se muestra una sola vez. Guárdala en SALLYPORT_CONSOLE_KEY:
read -rs SALLYPORT_CONSOLE_KEY && export SALLYPORT_CONSOLE_KEYcurl --fail --silent --show-error -H "Authorization: Bearer $SALLYPORT_CONSOLE_KEY" "https://mcp.sallyport.cloud/v1/audit/export" -o sallyport-audit.jsonlAñade from_seq y to_seq para tomar un rango. Ambos son números enteros desde cero y los dos extremos se incluyen. Sin to_seq, el archivo llega hasta el final de la cadena.
curl --fail --silent --show-error -H "Authorization: Bearer $SALLYPORT_CONSOLE_KEY" "https://mcp.sallyport.cloud/v1/audit/export?from_seq=1001" -o sallyport-audit-1001.jsonlPara traer solo lo nuevo, lee to_seq en la primera línea del último archivo y empieza la siguiente descarga una entrada después. Si events es 0, no hay nada nuevo: vuelve a pedirlo más tarde con el mismo from_seq.
Por defecto, Sallyport guarda 180 días de registro, así que descárgalo al menos con esa frecuencia. Registro e historial de llamadas (días) en Configuración, Organización, lo cambia. La sesión de la consola usa la misma ruta en https://my.sallyport.cloud/api/v1/audit/export.
Qué contiene el archivo
| Cabecera de respuesta | Valor |
|---|---|
| Content-Type | application/x-ndjson; charset=utf-8 |
| Content-Disposition | attachment; filename="sallyport-audit-{UUID de la organización}.jsonl" |
| Cache-Control | no-store |
| X-Content-Type-Options | nosniff |
La primera línea describe el archivo: schema (spc-chain/2), tenant_id, from_seq, to_seq y events. Cada línea siguiente es una entrada en orden: seq, occurred_at, kind, payload, prev_hash, this_hash, sig y signer_kid.
Cada entrada lleva el hash de la anterior, así que una línea que falta o se editó rompe la cadena. Cada entrada va firmada con Ed25519, y las claves públicas están en https://mcp.sallyport.cloud/.well-known/sallyport-audit-keys.json sin necesidad de cuenta.
Compara el número de líneas con events para detectar una descarga cortada. El archivo no lleva valores de claves, cuerpos de peticiones ni listas completas de argumentos.
Recibe los eventos al momento
Un webhook envía a tu endpoint HTTPS cada entrada nueva del registro de los tipos que elijas, en cerca de un minuto. Un propietario o un administrador lo añade en Webhooks, Configuración: pulsa Añadir webhook, escribe el endpoint y marca los eventos. Un script usa la API:
curl --fail --silent --show-error -X POST -H "Authorization: Bearer $SALLYPORT_CONSOLE_KEY" -H "Content-Type: application/json" -d '{"url": "https://siem.example.com/sallyport", "events": ["call.intent", "call.result", "approval.decided"]}' "https://mcp.sallyport.cloud/v1/webhooks"El secreto de firma se muestra una sola vez: en la consola tras Añadir webhook y como secret en la respuesta de la API. Cada entrega es un POST con X-Sallyport-Event, X-Sallyport-Delivery y X-Sallyport-Signature: t=<unix seconds>,v1=<hex>.
Comprueba v1 como HMAC-SHA256 de <t>.<body>, con el secreto entero como clave. El cuerpo lleva delivery_id, tenant_id, kind, occurred_at, seq, this_hash y payload.
- Responde con un estado 2xx. Una entrega fallida se reintenta con pausas que se duplican desde 5 segundos, 8 intentos en total. Tras unos 15 minutos queda marcada como fallida.
- Los reintentos mantienen el mismo
X-Sallyport-Delivery, así que descarta los repetidos con él. - Un webhook entrega lo que la persona que lo creó puede leer del registro: las entradas de los espacios donde es propietaria, administradora o auditora, y las de la propia organización. Mientras no pueda leer nada de eso, no entrega nada, y esas entradas no se envían después. Un webhook creado con una clave de API entrega el registro completo.
- Un webhook empieza en el momento en que se crea. Para entradas anteriores, usa la exportación;
seqythis_hashcoinciden con sus líneas. - Los nombres de evento son los valores
kinddel registro, comocall.intent,call.result,approval.requested,approval.decided,grant.createdyaccess_request.created. Sirve cualquierkindque veas en la exportación. Un nombre desconocido se rechaza al crear el webhook, y el error lo cita. - Entregas, en la fila del webhook, lista lo enviado, y Reenviar vuelve a mandar una que falló. En la API:
GET /v1/webhooks/{id}/deliveriesyPOST /v1/webhooks/{id}/deliveries/{delivery_id}/retry. - La lista de Webhooks marca el webhook que está fallando. Su interruptor apaga las entregas sin eliminarlo.