Auditing Logs

Foundation emits audit logs for every incoming event and also derives detailed logs for user API interactions and entity-level actions. These logs help with troubleshooting, governance, and analytics.

Approach

Foundation treats Audit Logs as data products. These data products have key characteristics:

  • Data Product Type: System as they are automatically generated by Foundation

  • Organization: Root

  • Sensitivity: These data products contain personal data and confidential information, but cannot be classified before the Classification and Sensitivity levels are defined, as part of the Data Governance set up.

  • Access: Only Admin roles can access them (as they are the only roles with access to the Root Organization)

  • Consumption: in order to check the logs, users can query them following the same processes as set in Querying Data inside Foundation

  • Storage: These data products are not stored in the Object Storage or using Iceberg (as the rest). They are stored in a database.

What gets logged

  • Raw event audit log

    • Data Product Name: _foundation_events_audit_log

    • Table for queries:

      processor.public."foundation_events_audit_log"
    • One row per event (upserted by span_id)

    • Contains full serialized event, message metadata, timestamps

  • User API interaction log

    • Data Product Name: _user_api_interaction_log

    • Table for queries:

      processor.public."user_api_interaction_log"
    • One row per API event

    • Contains HTTP method/path, query/body, response status, user/session context (IP, agent, org, roles)

  • Entity events log

    • Data Product Name: _entity_events_logs

    • Table for queries:

      processor.public."entity_events_logs"
    • One row per entity action event

    • Contains actor user_id, event_timestamp, message_type (action), entity_id, and entity_details

Update cadence

  • Raw audit: upserted on every event by span_id

  • Detailed logs: appended on every event; created_at is set server-side

  • End-to-end latency is the event processing time (near real-time)

Common use cases

  • Troubleshooting and replay: join detailed logs to raw event for exact payloads

  • Security and compliance: who did what to which entity and when

  • API analytics: path/method usage, response codes, error rates, session/role insights

  • Change timelines: per entity_id across time

How to query

  • Recent API calls by a user (last 7 days)

  • Entity changes over a period

  • Join detailed logs with the raw event by span_id

  • API error-rate per path (last 24h)

  • API usage by role (if roles provided)

  • Find slow or failing endpoints by session

Last updated