// Package domain contains core business entities. package domain import "time" // NotifyCredentials holds per-project email delivery credentials. // Under the shared-host model, all default projects send through a pre-provisioned // platform host (e.g., "mail.threesix.ai"). Only the account, send key, and host // grant are created per-project; no dedicated host, Resend domain, or DNS records // are allocated unless a custom domain is configured via ReprovisionNotifyHost. type NotifyCredentials struct { // ProjectID is the rdev project this credential set belongs to. ProjectID string // AccountID is the notify service account UUID (used for deletion). AccountID string // APIKey is the notify send key (notify_send_...) for sending emails. APIKey string // CreatedAt is when the credentials were provisioned. CreatedAt time.Time } // NotifyHostCredentials holds the per-project host credentials returned by ReprovisionNotifyHost. // Used only for custom-domain migrations; default projects use the shared platform host. type NotifyHostCredentials struct { // ProjectID is the rdev project this credential set belongs to. ProjectID string // Host is the custom sending host (e.g., "mail.myapp.threesix.ai"). Host string // From is the from-address registered on the host (e.g., "noreply@mail.myapp.threesix.ai"). From string // ResendDomainID is the Resend domain UUID for the new host. ResendDomainID string } // NotifyDomainStatus holds the Resend verification status for a project's email domain. type NotifyDomainStatus struct { // Host is the per-project sending host (only set for custom domains). Host string // ResendDomainID is the Resend domain UUID. ResendDomainID string // Status is the Resend verification status: "verified", "pending", "failed", or "not_configured". Status string }