Durable, privacy-bounded storage for outbound delivery envelopes.
Payload rows retain dispatch content only while it is needed and transition to content-free lifecycle tombstones after settlement or expiry.
Summary
Types
@type lifecycle_state() ::
:recoverable
| :dispatching
| :scrubbed
| :expired
| :terminal
| :discarded
| :abandoned
| :uncertain
| :legacy
@type reason_class() ::
:dispatch_claimed
| :accepted
| :retention_expired
| :provider_client_rejected
| :pre_dispatch_failure
| :payload_missing
| :payload_corrupt
| :payload_unsupported_version
| :payload_expired
| :payload_scrubbed
| :job_discarded
| :job_abandoned
| :provider_acceptance_unknown
| :legacy_queued
@type t() :: %Mailglass.Outbound.Payload{ __meta__: term(), claimed_at: DateTime.t() | nil, delivery_id: Ecto.UUID.t() | nil, envelope: map() | nil, envelope_digest: String.t() | nil, envelope_version: integer() | nil, expires_at: DateTime.t() | nil, id: Ecto.UUID.t() | nil, inserted_at: DateTime.t() | nil, lifecycle_state: lifecycle_state() | nil, reason_class: reason_class() | nil, scrubbed_at: DateTime.t() | nil, tenant_id: String.t() | nil, updated_at: DateTime.t() | nil }