package domain import ( "time" ) // NotificationEvent records a notification sent to users about certificate events. type NotificationEvent struct { ID string `json:"id"` Type NotificationType `json:"type"` CertificateID *string `json:"certificate_id,omitempty"` Channel NotificationChannel `json:"channel"` Recipient string `json:"recipient"` Message string `json:"message"` SentAt *time.Time `json:"sent_at,omitempty"` Status string `json:"status"` Error *string `json:"error,omitempty"` CreatedAt time.Time `json:"created_at"` } // NotificationType represents the event that triggered a notification. type NotificationType string const ( NotificationTypeExpirationWarning NotificationType = "ExpirationWarning" NotificationTypeRenewalSuccess NotificationType = "RenewalSuccess" NotificationTypeRenewalFailure NotificationType = "RenewalFailure" NotificationTypeDeploymentSuccess NotificationType = "DeploymentSuccess" NotificationTypeDeploymentFailure NotificationType = "DeploymentFailure" NotificationTypePolicyViolation NotificationType = "PolicyViolation" NotificationTypeRevocation NotificationType = "Revocation" ) // NotificationChannel represents the communication medium for a notification. type NotificationChannel string const ( NotificationChannelEmail NotificationChannel = "Email" NotificationChannelWebhook NotificationChannel = "Webhook" NotificationChannelSlack NotificationChannel = "Slack" NotificationChannelTeams NotificationChannel = "Teams" NotificationChannelPagerDuty NotificationChannel = "PagerDuty" NotificationChannelOpsGenie NotificationChannel = "OpsGenie" )