Management APIAudit Logs

Audit Logs

Datafly Signal maintains a comprehensive audit trail of all administrative actions. Every create, update, and delete operation performed through the Management API or Management UI is recorded with the acting user, timestamp, affected resource, and a summary of the change.

Audit Log Entry

{
  "id": "log_abc123",
  "action": "integration.updated",
  "user_id": "usr_abc123",
  "user_email": "admin@example.com",
  "resource_type": "integration",
  "resource_id": "int_xyz789",
  "changes": {
    "enabled": {
      "old": true,
      "new": false
    }
  },
  "ip_address": "203.0.113.42",
  "user_agent": "Mozilla/5.0 ...",
  "timestamp": "2026-02-25T14:30:00Z"
}
FieldTypeDescription
idstringUnique audit log entry identifier
actionstringAction that was performed (see actions below)
user_idstringID of the user who performed the action
user_emailstringEmail of the user who performed the action
resource_typestringType of resource affected
resource_idstringID of the affected resource
changesobjectSummary of field changes (old and new values)
ip_addressstringIP address of the request
user_agentstringUser agent string of the request
timestampstringISO 8601 timestamp of when the action occurred

Logged Actions

ActionDescription
source.createdA new source was created
source.updatedA source was updated
source.deletedA source was deleted
source.collector_builtA collector JS build was triggered
integration.createdA new integration was created
integration.updatedAn integration was updated
integration.deletedAn integration was deleted
transformation.createdA new transformation was created
transformation.updatedA transformation was updated
transformation.deletedA transformation was deleted
data_layer.updatedThe Org Data Layer config was updated
user.invitedA new user was invited
user.updatedA user’s role was changed
user.deletedA user was removed
auth.loginA user logged in
auth.login_failedA login attempt failed

List Audit Logs

GET /v1/admin/audit-logs

Returns a paginated list of audit log entries, ordered by most recent first.

Query parameters:

ParameterTypeDefaultDescription
actionstringFilter by action (e.g., source.created)
user_idstringFilter by acting user ID
resourcestringFilter by resource type (e.g., integration)
fromstringStart of date range (ISO 8601)
tostringEnd of date range (ISO 8601)
cursorstringPagination cursor
limitinteger50Items per page (max 100)

Request:

curl -X GET "http://localhost:8084/v1/admin/audit-logs?action=integration.updated&from=2026-02-01T00:00:00Z&limit=25" \
  -H "Authorization: Bearer {access_token}"

Response:

{
  "data": [
    {
      "id": "log_abc123",
      "action": "integration.updated",
      "user_id": "usr_abc123",
      "user_email": "admin@example.com",
      "resource_type": "integration",
      "resource_id": "int_xyz789",
      "changes": {
        "enabled": {
          "old": true,
          "new": false
        }
      },
      "ip_address": "203.0.113.42",
      "user_agent": "Mozilla/5.0 ...",
      "timestamp": "2026-02-25T14:30:00Z"
    }
  ],
  "next_cursor": "eyJ0cyI6MTc0MDQ5OTQwMH0",
  "has_more": true
}

Required role: admin or above.

Filtering Examples

By user

GET /v1/admin/audit-logs?user_id=usr_abc123

By resource type

GET /v1/admin/audit-logs?resource=source

By action and date range

GET /v1/admin/audit-logs?action=user.invited&from=2026-02-01T00:00:00Z&to=2026-02-28T23:59:59Z

Combining filters

All query parameters can be combined:

GET /v1/admin/audit-logs?resource=integration&user_id=usr_abc123&from=2026-02-01T00:00:00Z&limit=10

Retention

Audit log entries are retained for 90 days. Entries older than 90 days are automatically purged.

For long-term audit retention, export audit logs to your own data warehouse using the BigQuery, Snowflake, or S3 integrations. Set up a scheduled export or use the API to periodically fetch and store audit entries.

⚠️

Audit logs are read-only. They cannot be modified or deleted through the API. This ensures a tamper-proof record of all administrative actions.