70 lines
1.3 KiB
Python
70 lines
1.3 KiB
Python
from pydantic import BaseModel
|
|
from typing import Optional, List
|
|
|
|
class LoginRequest(BaseModel):
|
|
username: str
|
|
password: str
|
|
|
|
class TokenResponse(BaseModel):
|
|
access_token: str
|
|
token_type: str = "bearer"
|
|
username: str
|
|
display_name: str
|
|
|
|
class Attachment(BaseModel):
|
|
part_id: str
|
|
filename: str
|
|
content_type: str
|
|
size: int
|
|
|
|
class MailSummary(BaseModel):
|
|
uid: str
|
|
subject: str
|
|
sender: str
|
|
sender_addr: str
|
|
date: str
|
|
is_read: bool
|
|
has_attachment: bool
|
|
size: int
|
|
preview: str = ""
|
|
|
|
class MailDetail(BaseModel):
|
|
uid: str
|
|
subject: str
|
|
sender: str
|
|
sender_addr: str
|
|
to: str
|
|
cc: str = ""
|
|
date: str
|
|
body_text: str = ""
|
|
body_html: str = ""
|
|
attachments: List[Attachment] = []
|
|
is_read: bool = True
|
|
|
|
class FolderInfo(BaseModel):
|
|
name: str
|
|
display: str
|
|
unread: int = 0
|
|
total: int = 0
|
|
|
|
class MailListResponse(BaseModel):
|
|
messages: List[MailSummary]
|
|
total: int
|
|
page: int
|
|
per_page: int
|
|
|
|
class SendRequest(BaseModel):
|
|
to: str
|
|
cc: Optional[str] = None
|
|
bcc: Optional[str] = None
|
|
subject: str
|
|
body: str
|
|
is_html: bool = False
|
|
reply_to_uid: Optional[str] = None
|
|
|
|
class MoveRequest(BaseModel):
|
|
target_folder: str
|
|
|
|
class ErrorResponse(BaseModel):
|
|
detail: str
|