// 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; }
}