Enum OutboundDependency
- Namespace
- MailFathom.Application.Resilience
- Assembly
- MailFathom.Application.dll
Names one class of outbound dependency whose failures share a retry, timeout, and load-shedding budget.
public enum OutboundDependency
Fields
AiProviderInvocation = 4Invoking a chat or embedding provider.
DatabaseCommandExecution = 3Executing a command or query against the local PostgreSQL database.
EmailDelivery = 2Submitting an email to the SMTP server.
The only failure repeated here is a server's explicit temporary rejection. A submission that ended in an ambiguous transport failure may already have been accepted, and a repeated delivery is visible in the recipient's mailbox.
MailAuthorizationServerInvocation = 5Exchanging a configured OAuth grant for a mailbox access token at an authorization server.
It is its own class rather than part of MailboxSessionEstablishment because the two disagree about repetition. Establishment must never repeat a rejected credential, since doing so can lock the mailbox account; a token request carries no mailbox password, and an authorization server answers an overload with an ordinary transient HTTP status that is safe to retry. Separating them is also what keeps a token request issued during establishment from nesting one retry budget inside another.
MailboxDataRetrieval = 1Listing, fetching, and streaming mailbox data over an established IMAP session.
MailboxSessionEstablishment = 0Connecting, negotiating TLS with, and authenticating an IMAP mailbox session.
Establishment is separated from retrieval because a rejected credential must never be repeated: repeating it can lock the mailbox account, which is a worse outcome than the failed synchronization run.
Remarks
The set is deliberately coarse. A class exists when its failure modes and its safe repetition rules differ from every other class, not when a new call site appears, because each class is one configurable pipeline an operator has to understand and tune.
The enumeration is also the pipeline key, so a value that is not declared here resolves nothing and fails loudly instead of silently executing an operation with no resilience at all.