| | | 1 | | using ArturRios.Mediator.Query; |
| | | 2 | | |
| | | 3 | | namespace ArturRios.Heimdall.Query.Output; |
| | | 4 | | |
| | | 5 | | /// <summary> |
| | | 6 | | /// One audit-trail entry as stored (UC-48, FR-AT-02). Nothing is joined or inferred: an actor the |
| | | 7 | | /// retention pass has cleared, or that never existed (an anonymous write), is <c>null</c> here too. |
| | | 8 | | /// </summary> |
| | | 9 | | public class AuditLogEntryOutput : QueryOutput |
| | | 10 | | { |
| | | 11 | | /// <summary>The entry's public id.</summary> |
| | 99 | 12 | | public Guid Id { get; set; } |
| | | 13 | | |
| | | 14 | | /// <summary>When the entry was recorded (UTC).</summary> |
| | 79 | 15 | | public DateTime RecordedAt { get; set; } |
| | | 16 | | |
| | | 17 | | /// <summary>The acting person's public id; <c>null</c> for an anonymous write or a cleared attribution.</summary> |
| | 84 | 18 | | public Guid? ActorId { get; set; } |
| | | 19 | | |
| | | 20 | | /// <summary>The acting person's role value (see <c>Roles</c>); <c>null</c> whenever <see cref="ActorId" /> is.</sum |
| | 83 | 21 | | public int? ActorRole { get; set; } |
| | | 22 | | |
| | | 23 | | /// <summary>The command's type name, e.g. <c>CreateScopeCommand</c>.</summary> |
| | 150 | 24 | | public string Action { get; set; } = string.Empty; |
| | | 25 | | |
| | | 26 | | /// <summary>The affected entity's public id; <c>null</c> when none could be resolved, as for every refusal.</summar |
| | 84 | 27 | | public Guid? TargetId { get; set; } |
| | | 28 | | |
| | | 29 | | /// <summary>Whether the write completed; <c>false</c> for a refusal.</summary> |
| | 82 | 30 | | public bool Succeeded { get; set; } |
| | | 31 | | |
| | | 32 | | /// <summary>A refusal's canonical reason; <c>null</c> on success.</summary> |
| | 81 | 33 | | public string? FailureReason { get; set; } |
| | | 34 | | } |