using System.Text.Json.Serialization; namespace SendEngine.Api.Models; public sealed class SubscriptionEventRequest { [JsonPropertyName("event_id")] public Guid EventId { get; set; } [JsonPropertyName("event_type")] public string EventType { get; set; } = string.Empty; [JsonPropertyName("tenant_id")] public Guid TenantId { get; set; } [JsonPropertyName("list_id")] public Guid ListId { get; set; } [JsonPropertyName("subscriber")] public SubscriberPayload Subscriber { get; set; } = new(); [JsonPropertyName("occurred_at")] public DateTimeOffset OccurredAt { get; set; } } public sealed class SubscriberPayload { [JsonPropertyName("id")] public Guid Id { get; set; } [JsonPropertyName("email")] public string Email { get; set; } = string.Empty; [JsonPropertyName("status")] public string Status { get; set; } = string.Empty; [JsonPropertyName("preferences")] public Dictionary? Preferences { get; set; } } public sealed class FullSyncBatchRequest { [JsonPropertyName("sync_id")] public Guid SyncId { get; set; } [JsonPropertyName("batch_no")] public int BatchNo { get; set; } [JsonPropertyName("batch_total")] public int BatchTotal { get; set; } [JsonPropertyName("tenant_id")] public Guid TenantId { get; set; } [JsonPropertyName("list_id")] public Guid ListId { get; set; } [JsonPropertyName("subscribers")] public List Subscribers { get; set; } = new(); [JsonPropertyName("occurred_at")] public DateTimeOffset OccurredAt { get; set; } } public sealed class SesEventRequest { [JsonPropertyName("event_type")] public string EventType { get; set; } = string.Empty; [JsonPropertyName("message_id")] public string MessageId { get; set; } = string.Empty; [JsonPropertyName("tenant_id")] public Guid TenantId { get; set; } [JsonPropertyName("email")] public string Email { get; set; } = string.Empty; [JsonPropertyName("bounce_type")] public string? BounceType { get; set; } [JsonPropertyName("occurred_at")] public DateTimeOffset OccurredAt { get; set; } [JsonPropertyName("tags")] public Dictionary? Tags { get; set; } }