// Copyright (c) StellaOps. Licensed under the BUSL-1.1. namespace StellaOps.Audit.Emission; /// /// Lightweight DTO that mirrors the UnifiedAuditEvent structure from the /// Timeline service. This avoids a compile-time dependency on the Timeline /// assembly while remaining wire-compatible for JSON serialization. /// public sealed record AuditEventPayload { public required string Id { get; init; } public required DateTimeOffset Timestamp { get; init; } public required string Module { get; init; } public required string Action { get; init; } public required string Severity { get; init; } public required AuditActorPayload Actor { get; init; } public required AuditResourcePayload Resource { get; init; } public required string Description { get; init; } public required IReadOnlyDictionary Details { get; init; } public string? CorrelationId { get; init; } public string? TenantId { get; init; } public required IReadOnlyList Tags { get; init; } } public sealed record AuditActorPayload { public required string Id { get; init; } public required string Name { get; init; } public string? Email { get; init; } public required string Type { get; init; } public string? IpAddress { get; init; } public string? UserAgent { get; init; } } public sealed record AuditResourcePayload { public required string Type { get; init; } public required string Id { get; init; } public string? Name { get; init; } }