using ZB.MOM.WW.ScadaBridge.Commons.Types.Enums; namespace ZB.MOM.WW.ScadaBridge.Commons.Messages.Management; public record ListNotificationListsCommand; public record GetNotificationListCommand(int NotificationListId); public record CreateNotificationListCommand(string Name, IReadOnlyList RecipientEmails, NotificationType Type = NotificationType.Email, IReadOnlyList? RecipientPhones = null); public record UpdateNotificationListCommand(int NotificationListId, string Name, IReadOnlyList RecipientEmails, NotificationType Type = NotificationType.Email, IReadOnlyList? RecipientPhones = null); public record DeleteNotificationListCommand(int NotificationListId); public record ListSmtpConfigsCommand; // Transport is a trailing additive parameter (Smtp or Ews; null = preserve the // stored value, which is itself null for every pre-EWS row and means Smtp). public record UpdateSmtpConfigCommand(int SmtpConfigId, string Server, int Port, string AuthMode, string FromAddress, string? TlsMode = null, string? Credentials = null, string? OAuth2Authority = null, string? OAuth2Scope = null, string? Transport = null); public record ListSmsConfigsCommand; // FromNumber is optional: a Twilio Messaging-Service-only config supplies MessagingServiceSid // instead. At-least-one-of (FromNumber, MessagingServiceSid) is validated at the CLI/UI boundary. public record UpdateSmsConfigCommand(int SmsConfigId, string AccountSid, string? FromNumber, string? MessagingServiceSid = null, string? ApiBaseUrl = null, string? AuthToken = null, int? ConnectionTimeoutSeconds = null, int? MaxRetries = null, TimeSpan? RetryDelay = null); /// Renames a list without replacing its named recipients. public record RenameNotificationListCommand(int NotificationListId, string Name); /// Adds a named recipient matching the owning list's channel. public record AddNotificationRecipientCommand(int NotificationListId, string Name, string? EmailAddress, string? PhoneNumber); /// Deletes one recipient without rewriting unrelated list membership. public record DeleteNotificationRecipientCommand(int RecipientId); /// Creates an email configuration using the update path's validation and secret projection. public record CreateSmtpConfigCommand(string Server, int Port, string AuthMode, string FromAddress, string? TlsMode = null, string? Credentials = null, string? OAuth2Authority = null, string? OAuth2Scope = null, string? Transport = null) : UpdateSmtpConfigCommand(0, Server, Port, AuthMode, FromAddress, TlsMode, Credentials, OAuth2Authority, OAuth2Scope, Transport); /// Creates an SMS configuration using the same validation as updates. public record CreateSmsConfigCommand(string AccountSid, string? FromNumber, string? MessagingServiceSid = null, string? ApiBaseUrl = null, string? AuthToken = null, int? ConnectionTimeoutSeconds = null, int? MaxRetries = null, TimeSpan? RetryDelay = null) : UpdateSmsConfigCommand(0, AccountSid, FromNumber, MessagingServiceSid, ApiBaseUrl, AuthToken, ConnectionTimeoutSeconds, MaxRetries, RetryDelay);