Model.cs
 1  namespace OverwatchTranscript
 2  {
 3      [Serializable]
 4      public class OverwatchTranscript
 5      {
 6          public OverwatchHeader Header { get; set; } = new();
 7          public OverwatchMomentReference[] MomentReferences { get; set; } = Array.Empty<OverwatchMomentReference>();
 8      }
 9  
10      [Serializable]
11      public class OverwatchMomentReference
12      {
13          public string MomentsFile { get; set; } = string.Empty;
14          public int NumberOfMoments { get; set; }
15          public int NumberOfEvents { get; set; }
16          public DateTime EarliestUtc { get; set; }
17          public DateTime LatestUtc { get; set; }
18      }
19  
20      [Serializable]
21      public class OverwatchHeader
22      {
23          public OverwatchCommonHeader Common { get; set; } = new();
24          public OverwatchHeaderEntry[] Entries { get; set; } = Array.Empty<OverwatchHeaderEntry>();
25      }
26  
27      [Serializable]
28      public class OverwatchCommonHeader
29      {
30          public long NumberOfMoments { get; set; }
31          public long NumberOfEvents { get; set; }
32          public DateTime EarliestUtc { get; set; }
33          public DateTime LatestUtc { get; set; }
34      }
35  
36      [Serializable]
37      public class OverwatchHeaderEntry
38      {
39          public string Key { get; set; } = string.Empty;
40          public string Value { get; set; } = string.Empty;
41      }
42  
43      [Serializable]
44      public class OverwatchMoment
45      {
46          public DateTime Utc { get; set; }
47          public OverwatchEvent[] Events { get; set; } = Array.Empty<OverwatchEvent>();
48      }
49  
50      [Serializable]
51      public class OverwatchEvent
52      {
53          public string Type { get; set; } = string.Empty;
54          public string Payload { get; set; } = string.Empty;
55      }
56  }