Audit Logs Exports

Requesting Access

To request access to Auth Audit Log exports for your integration, please contact customer support with the following information:

  • Client ID
  • Preferred destination (S3, etc.)
  • Desired export frequency

Export Destinations

Exports can be delivered to the following destinations:

Amazon S3

  • Direct delivery to your S3 bucket
  • Requires: bucket name, region, and appropriate IAM permissions
  • Primary destination for all exports
  • See S3 Destination

Other Destinations

Additional destinations may be available in future releases. Contact customer support to discuss your specific requirements or request new destination types.

Export Types

Full vs Differential Exports

Differential Exports: Each export contains only records that have been created since the last successful export. The system uses a checkpoint mechanism to track the last export timestamp per client and only includes records with created_at > last_checkpoint.

Full Exports: Full historical exports are available upon request. Contact customer support if you require a complete snapshot of all Auth Audit Log data regardless of creation date.

Scope

The Auth Audit Log export includes events from the following systems only:

  • fanscore-auth — core authentication events (login, password reset, account suspension, etc.)
  • social-logins — social login provider events

Export Scheduling

Exports can be configured to run at the following intervals:

  • Hourly: Every hour at a specified minute
  • Daily: Once per day at a specified time (UTC)
  • Weekly: Once per week on a specified day and time (UTC)
  • Custom: Contact customer support for custom scheduling requirements. We use Cron for scheduling: https://crontab.guru/

Data Formats

All Auth Audit Log exports are delivered as CSV files.


Export Samples

Auth Audit Log Export

The Auth Audit Log export contains authentication events such as logins, password resets, and account suspensions, including geolocation and user agent metadata.

Sample Export:

idparent_idsystemactor_idactor_client_idactor_metadatatypenamedescriptionmetadataipcreated_atseverity
a1b2c3d4-5678-90ab-cdef-1234567890abfanscore-auth50123ACME{}loginSuccessful LoginUser successfully logged in{"ip": "203.0.113.10", "city": "London", "country": "GB", "grantType": "password", "userAgent": "Mozilla/5.0 ..."}203.0.113.102025-04-22 10:08:220
b2c3d4e5-6789-01bc-def0-2345678901bcfanscore-auth60234ACME{}reset-password-link-requestPassword Request Link GeneratedPassword reset link generated by administration{"ip": "198.51.100.25", "city": "Manchester", "country": "GB", "userAgent": "Mozilla/5.0 ..."}198.51.100.252025-06-26 16:12:160
c3d4e5f6-7890-12cd-ef01-3456789012cdfanscore-auth60234ACME{}set-password-requestPassword UpdatedAccount password successfully updated{"ip": "198.51.100.25", "city": "Manchester", "country": "GB", "userAgent": "Mozilla/5.0 ..."}198.51.100.252025-06-26 16:15:420
d4e5f6a7-8901-23de-f012-4567890123def5e6d7c8-9012-34ef-0123-567890abcdeffanscore-auth70345ACME{}account-blacklistedAccount SuspendedAccount suspended for the following reason: Policy violation{"ip": "192.0.2.50", "city": "Dublin", "country": "IE", "type": "suspended", "reason": "Policy violation", "userAgent": "Mozilla/5.0 ..."}192.0.2.502025-05-13 09:05:580
e5f6a7b8-9012-34ef-0123-5678901234eff5e6d7c8-9012-34ef-0123-567890abcdeffanscore-auth70345ACME{}blacklist-removedAccount Suspension Removed{"ip": "192.0.2.50", "city": "Dublin", "country": "IE", "userAgent": "Mozilla/5.0 ..."}192.0.2.502025-05-14 08:24:260

Column Reference

ColumnTypeDescription
idUUIDUnique log entry identifier
parent_idTextParent event ID for correlated events (e.g. admin action and its effect)
systemTextSource system (fanscore-auth or social-logins)
actor_idTextUser ID that performed the action
actor_client_idTextClient ID of the actor
actor_metadataJSONAdditional actor context (e.g. {"targetAuthId": 12345} for admin actions)
typeTextEvent type identifier
nameTextHuman-readable event name
descriptionTextDetailed event description
metadataJSONFull event metadata including IP, geolocation, and user agent
ipTextIP address extracted from metadata
created_atTimestampWhen the event occurred (UTC)
severityIntegerEvent severity level for SIEM, currently unused

Best Practices

  1. Differential Processing: Exports are differential by default. Design your integration to process incremental updates and maintain a local copy of the full dataset
  2. First Export: The first export will contain all historical records. Subsequent exports will only include changes
  3. Data Processing: Always validate the JSON structure of metadata and actor_metadata before processing exports
  4. Error Handling: Implement retry logic for failed export retrievals
  5. Monitoring: Set up alerts for missing or delayed exports
  6. Date Handling: All timestamps are in UTC; convert to your local timezone as needed
  7. Parent Events: Use parent_id to correlate admin actions with their effects (e.g. an add-user-to-blacklist event and its corresponding account-blacklisted event)
  8. Null Handling: Be prepared to handle empty values in optional fields like parent_id, description, and actor_metadata

Troubleshooting

Export Not Received

  • Verify your destination credentials are current
  • Check that your destination has sufficient storage space
  • Review any firewall or security rules that might block the delivery

Missing Historical Data

  • Exports are differential by default — you'll only receive changes since the last export
  • To receive all historical data, contact support to reset your export checkpoint

Data Discrepancies

  • Ensure you're processing the most recent export file
  • Verify timezone handling for date fields
  • Contact customer support if data appears incorrect

Empty Exports

  • Empty exports are normal when no authentication events have occurred since the last export
  • This indicates stable data with no new auth activity for the export period