Add bounce mailbox processing

This commit is contained in:
2026-07-31 22:48:07 +02:00
parent 2721ee6542
commit fe309dbff5
13 changed files with 1770 additions and 7 deletions
+59
View File
@@ -454,3 +454,62 @@ class MailDeliveryResendRequest(BaseModel):
model_config = ConfigDict(extra="forbid")
idempotency_key: str = Field(min_length=1, max_length=200)
class MailBounceSourceRequest(BaseModel):
model_config = ConfigDict(extra="forbid")
profile_id: str = Field(min_length=1, max_length=36)
folder: str = Field(default="INBOX", min_length=1, max_length=255)
imap_server_id: str | None = Field(default=None, max_length=36)
imap_credential_id: str | None = Field(default=None, max_length=36)
is_active: bool = True
class MailBounceSourceResponse(BaseModel):
id: str
tenant_id: str
profile_id: str
folder: str
imap_server_id: str | None = None
imap_credential_id: str | None = None
expected_imap_transport_revision: str
is_active: bool
uidvalidity: str | None = None
highest_processed_uid: int
last_scanned_at: datetime | None = None
last_success_at: datetime | None = None
last_error: str | None = None
class MailBounceSourceListResponse(BaseModel):
sources: list[MailBounceSourceResponse]
class MailBounceObservationResponse(BaseModel):
id: str
tenant_id: str
profile_id: str
folder: str
uid: str
original_message_id: str | None = None
command_id: str | None = None
recipient: str | None = None
action: str
status_code: str | None = None
diagnostic: str | None = None
permanent: bool
observed_at: datetime
matched: bool
evidence: dict[str, Any] = Field(default_factory=dict)
class MailBounceObservationListResponse(BaseModel):
observations: list[MailBounceObservationResponse]
class MailBounceScanResponse(BaseModel):
sources: int
processed_messages: int
observations: int
failures: list[dict[str, str]] = Field(default_factory=list)