[docs]classMailboxOrderKey(str,Enum):""" Enumeration of supported mailbox sorting keys. Used with the `order_by` parameter to specify sorting in Mailbox.list() and Mailbox.iter(). """
[docs]deffrom_response(cls,data:Dict)->Dict:""" Deserialize a single mailbox API response. :param data: Raw API response dictionary. :return: Validated and transformed mailbox dictionary. """returnresolve_absolute_urls(MailboxSchema().load(data))
@classmethod
[docs]defiter(cls,*,search:Optional[str]=None,order_by:Optional[MailboxOrderKey]=None,ascending:bool=True,)->Iterable[Dict]:""" Yield all mailboxes with pagination and optional filtering or sorting. """params={}ifsearch:params["search"]=searchiforder_by:prefix=""ifascendingelse"-"params["ordering"]=f"{prefix}{order_by.value}"forrawinClient.paginate("/parser",params=params):yieldcls.from_response(raw)
@classmethod
[docs]deflist(cls,*,search:Optional[str]=None,order_by:Optional[MailboxOrderKey]=None,ascending:bool=True,)->List[Dict[str,Any]]:"""Retrieve all mailboxes as a list."""returnlist(cls.iter(search=search,order_by=order_by,ascending=ascending))
@classmethod
[docs]defretrieve(cls,mailbox_id:int)->Dict[str,Any]:"""Retrieve a single mailbox by ID."""raw=Client.request("GET",f"/parser/{mailbox_id}")returncls.from_response(raw)
@classmethod
[docs]defschema(cls,mailbox_id:int)->Dict[str,Any]:"""Get the schema for a mailbox."""returnClient.request("GET",f"/parser/{mailbox_id}/schema")