feat(mail): add governed POP3 legacy import
Module Package Release / publish-packages (push) Successful in 11s
Module Package Release / publish-packages (push) Successful in 11s
This commit is contained in:
@@ -197,7 +197,7 @@ class MailServerEndpointResponse(BaseModel):
|
||||
id: str
|
||||
profile_id: str
|
||||
tenant_id: str | None = None
|
||||
protocol: Literal["smtp", "imap"]
|
||||
protocol: Literal["smtp", "imap", "pop3"]
|
||||
name: str
|
||||
config: dict[str, Any] = Field(default_factory=dict)
|
||||
scope_type: MailProfileScope
|
||||
@@ -214,7 +214,7 @@ class MailServerEndpointResponse(BaseModel):
|
||||
class MailServerEndpointCreateRequest(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
protocol: Literal["smtp", "imap"]
|
||||
protocol: Literal["smtp", "imap", "pop3"]
|
||||
name: str = Field(min_length=1, max_length=255)
|
||||
config: dict[str, Any] = Field(default_factory=dict)
|
||||
inherit_to_lower_scopes: bool | None = None
|
||||
@@ -383,7 +383,7 @@ class MailContactCreateResponse(BaseModel):
|
||||
|
||||
class MailConnectionTestResponse(BaseModel):
|
||||
ok: bool
|
||||
protocol: Literal["smtp", "imap"]
|
||||
protocol: Literal["smtp", "imap", "pop3"]
|
||||
host: str | None = None
|
||||
port: int | None = None
|
||||
security: str | None = None
|
||||
@@ -391,6 +391,82 @@ class MailConnectionTestResponse(BaseModel):
|
||||
details: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class MailPop3PreviewRequest(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
server_id: str = Field(min_length=1, max_length=36)
|
||||
credential_id: str | None = Field(default=None, max_length=36)
|
||||
limit: int = Field(default=50, ge=1, le=100)
|
||||
|
||||
|
||||
class MailPop3MessagePreviewResponse(BaseModel):
|
||||
message_number: int
|
||||
uidl: str
|
||||
subject: str | None = None
|
||||
from_header: str | None = None
|
||||
to_header: str | None = None
|
||||
date: str | None = None
|
||||
message_id: str | None = None
|
||||
size_bytes: int = 0
|
||||
body_preview: str | None = None
|
||||
already_imported: bool = False
|
||||
|
||||
|
||||
class MailPop3PreviewResponse(BaseModel):
|
||||
profile_id: str
|
||||
server_id: str
|
||||
transport_revision: str
|
||||
host: str
|
||||
port: int
|
||||
security: str
|
||||
message_count: int
|
||||
mailbox_size_bytes: int
|
||||
delete_after_import_allowed: bool = False
|
||||
messages: list[MailPop3MessagePreviewResponse] = Field(default_factory=list)
|
||||
|
||||
|
||||
class MailPop3ImportRequest(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
server_id: str = Field(min_length=1, max_length=36)
|
||||
credential_id: str | None = Field(default=None, max_length=36)
|
||||
expected_transport_revision: str = Field(min_length=1, max_length=120)
|
||||
uidls: list[str] = Field(min_length=1, max_length=100)
|
||||
delete_after_import: bool = False
|
||||
|
||||
|
||||
class MailPop3ImportRecordResponse(BaseModel):
|
||||
id: str
|
||||
profile_id: str
|
||||
pop3_server_id: str
|
||||
transport_revision: str
|
||||
provider_uidl: str
|
||||
message_id: str | None = None
|
||||
subject: str | None = None
|
||||
from_header: str | None = None
|
||||
to_header: str | None = None
|
||||
date: str | None = None
|
||||
body_preview: str | None = None
|
||||
size_bytes: int
|
||||
raw_sha256: str
|
||||
status: str
|
||||
imported_at: datetime
|
||||
deletion_requested: bool = False
|
||||
deletion_status: str
|
||||
deletion_attempted_at: datetime | None = None
|
||||
deletion_error: str | None = None
|
||||
|
||||
|
||||
class MailPop3ImportResponse(BaseModel):
|
||||
imports: list[MailPop3ImportRecordResponse] = Field(default_factory=list)
|
||||
duplicate_uidls: list[str] = Field(default_factory=list)
|
||||
deletion_status: str = "not_requested"
|
||||
|
||||
|
||||
class MailPop3ImportListResponse(BaseModel):
|
||||
imports: list[MailPop3ImportRecordResponse] = Field(default_factory=list)
|
||||
|
||||
|
||||
class MailImapFolderResponse(BaseModel):
|
||||
name: str
|
||||
flags: list[str] = Field(default_factory=list)
|
||||
|
||||
Reference in New Issue
Block a user