parseur ======= .. py:module:: parseur Submodules ---------- .. toctree:: :maxdepth: 1 /autoapi/parseur/cli/index /autoapi/parseur/client/index /autoapi/parseur/config/index /autoapi/parseur/decorator/index /autoapi/parseur/document/index /autoapi/parseur/event/index /autoapi/parseur/mailbox/index /autoapi/parseur/schemas/index /autoapi/parseur/server/index /autoapi/parseur/utils/index /autoapi/parseur/webhook/index Classes ------- .. autoapisummary:: parseur.Config parseur.Document parseur.DocumentOrderKey parseur.ParseurEvent parseur.Mailbox parseur.MailboxOrderKey parseur.DocumentStatus parseur.Webhook Functions --------- .. autoapisummary:: parseur.to_json Package Contents ---------------- .. py:class:: Config(config_path: str) .. py:attribute:: config_path .. py:attribute:: api_key :value: None .. py:attribute:: api_base :value: None .. py:method:: load() .. py:method:: save() .. py:class:: Document Document resource providing class-based API access. .. py:method:: from_response(data: Dict) -> Dict :classmethod: Validate and deserialize a single document dict. .. py:method:: log_from_response(data: Dict) -> Dict :classmethod: Validate and deserialize a single document log dict. .. py:method:: upload_from_response(data: Dict) -> Dict :classmethod: Validate and deserialize a single document log dict. .. py:method:: iter(mailbox_id: int, *, search: Optional[str] = None, order_by: Optional[DocumentOrderKey] = None, ascending: bool = True, received_after: Optional[datetime.datetime] = None, received_before: Optional[datetime.datetime] = None, with_result: bool = False) -> Iterable[Dict] :classmethod: Yield all documents in a mailbox with pagination and filtering. :param mailbox_id: The mailbox ID to retrieve documents from. :param str search: Search string to filter documents. The search query parameter searches the following properties: - document id (exact match) - document name - template name - from, to, cc, and bcc email addresses - document metadata header :param DocumentOrderKey order_by: Enum value specifying the sorting field. :param bool ascending: Whether to sort in ascending order (True) or descending order (False). :param datetime.datetime received_after: Filter for documents received after this date (converted to UTC YYYY-MM-DD). :param datetime.datetime received_before: Filter for documents received before this date (converted to UTC YYYY-MM-DD). :param bool with_result: Whether to include the parsed result in the returned documents. :yield dict: Each yielded dictionary represents a document. .. py:method:: list(mailbox_id: int, *, search: Optional[str] = None, order_by: Optional[DocumentOrderKey] = None, ascending: bool = True, received_after: Optional[datetime.datetime] = None, received_before: Optional[datetime.datetime] = None, with_result: bool = False) -> List[Dict] :classmethod: .. py:method:: retrieve(document_id: str) -> Dict :classmethod: Retrieve document details, deserialized. .. py:method:: reprocess(document_id: str) -> Dict :classmethod: .. py:method:: skip(document_id: str) -> Dict :classmethod: .. py:method:: copy(document_id: str, target_mailbox_id: int) -> Dict :classmethod: .. py:method:: logs(document_id: str) -> List[Dict] :classmethod: .. py:method:: delete(document_id: str) -> bool :classmethod: .. py:method:: upload_file(mailbox_id: int, file_path: str) -> Dict :classmethod: .. py:method:: batch_upload_files(file_paths: List[str], mailbox_id: int) -> Iterable[Dict] :classmethod: .. py:method:: upload_folder(mailbox_id: int, folder_path: str) -> Iterable[Dict] :classmethod: .. py:method:: upload_text(recipient: str, subject: str, sender: Optional[str] = None, body_html: Optional[str] = None, body_plain: Optional[str] = None) -> Dict :classmethod: .. py:class:: DocumentOrderKey Bases: :py:obj:`str`, :py:obj:`enum.Enum` Enumeration of supported document sorting keys. Used with the `order_by` parameter to specify sorting in list_documents and yield_documents. Members: - `NAME`: Sort by document name. - `CREATED`: Sort by created/received date. - `PROCESSED`: Sort by processed date. - `STATUS`: Sort by document status. .. py:attribute:: NAME :value: 'name' .. py:attribute:: CREATED :value: 'created' .. py:attribute:: PROCESSED :value: 'processed' .. py:attribute:: STATUS :value: 'status' .. py:class:: ParseurEvent Bases: :py:obj:`str`, :py:obj:`enum.Enum` Enumeration of supported Parseur webhook event types. Use these values when registering webhooks to specify which event to listen for. Members: - `DOCUMENT_PROCESSED`: Document processed successfully. - `DOCUMENT_PROCESSED_FLATTENED`: Document processed as flat data. - `DOCUMENT_TEMPLATE_NEEDED`: Document processing failed (template needed). - `DOCUMENT_EXPORT_FAILED`: Export of the document failed. - `TABLE_PROCESSED`: A table field row was processed. - `TABLE_PROCESSED_FLATTENED`: A table field row (flattened) was processed. .. py:attribute:: DOCUMENT_PROCESSED :value: 'document.processed' .. py:attribute:: DOCUMENT_PROCESSED_FLATTENED :value: 'document.processed.flattened' .. py:attribute:: DOCUMENT_TEMPLATE_NEEDED :value: 'document.template_needed' .. py:attribute:: DOCUMENT_EXPORT_FAILED :value: 'document.export_failed' .. py:attribute:: TABLE_PROCESSED :value: 'table.processed' .. py:attribute:: TABLE_PROCESSED_FLATTENED :value: 'table.processed.flattened' .. py:method:: is_table_event() -> bool .. py:class:: Mailbox .. py:method:: from_response(data: Dict) -> Dict :classmethod: Deserialize a single mailbox API response. :param data: Raw API response dictionary. :return: Validated and transformed mailbox dictionary. .. py:method:: iter(*, search: Optional[str] = None, order_by: Optional[MailboxOrderKey] = None, ascending: bool = True) -> Iterable[Dict] :classmethod: Yield all mailboxes with pagination and optional filtering or sorting. .. py:method:: list(*, search: Optional[str] = None, order_by: Optional[MailboxOrderKey] = None, ascending: bool = True) -> List[Dict[str, Any]] :classmethod: Retrieve all mailboxes as a list. .. py:method:: retrieve(mailbox_id: int) -> Dict[str, Any] :classmethod: Retrieve a single mailbox by ID. .. py:method:: schema(mailbox_id: int) -> Dict[str, Any] :classmethod: Get the schema for a mailbox. .. py:class:: MailboxOrderKey Bases: :py:obj:`str`, :py:obj:`enum.Enum` Enumeration of supported mailbox sorting keys. Used with the `order_by` parameter to specify sorting in Mailbox.list() and Mailbox.iter(). .. py:attribute:: NAME :value: 'name' .. py:attribute:: DOCUMENT_COUNT :value: 'document_count' .. py:attribute:: TEMPLATE_COUNT :value: 'template_count' .. py:attribute:: PARSEDOK_COUNT :value: 'PARSEDOK_count' .. py:attribute:: PARSEDKO_COUNT :value: 'PARSEDKO_count' .. py:attribute:: QUOTAEXC_COUNT :value: 'QUOTAEXC_count' .. py:attribute:: EXPORTKO_COUNT :value: 'EXPORTKO_count' .. py:class:: DocumentStatus Bases: :py:obj:`str`, :py:obj:`enum.Enum` Enum for Parseur document processing statuses. .. py:attribute:: INCOMING :value: 'INCOMING' .. py:attribute:: ANALYZING :value: 'ANALYZING' .. py:attribute:: DELETED :value: 'DELETED' .. py:attribute:: PROGRESS :value: 'PROGRESS' .. py:attribute:: PARSEDOK :value: 'PARSEDOK' .. py:attribute:: PARSEDKO :value: 'PARSEDKO' .. py:attribute:: QUOTAEXC :value: 'QUOTAEXC' .. py:attribute:: SKIPPED :value: 'SKIPPED' .. py:attribute:: SPLIT :value: 'SPLIT' .. py:attribute:: EXPORTKO :value: 'EXPORTKO' .. py:attribute:: TRANSKO :value: 'TRANSKO' .. py:attribute:: INVALID :value: 'INVALID' .. py:function:: to_json(data, indent=2, sort_keys=True, ensure_ascii=False) Serialize a Python object to a JSON-formatted string with ISO datetime support. This function uses the custom ISODateJSONEncoder to automatically convert datetime.datetime objects to ISO 8601 strings. :param data: The data to serialize (dict, list, etc.). :param indent: Number of spaces to indent in the output JSON. Default is 2. :param sort_keys: Whether to sort the dictionary keys in the output. Default is True. :param ensure_ascii: Whether to escape non-ASCII characters. Default is False. :return: A JSON-formatted string. .. py:class:: Webhook .. py:method:: from_response(data: Dict) -> Dict :classmethod: Deserialize a webhook API response. :param data: Raw API response dictionary. :return: Deserialized webhook dictionary. .. py:method:: create(event: parseur.event.ParseurEvent, target_url: str, mailbox_id: Optional[int] = None, table_field_id: Optional[str] = None, headers: Optional[Dict[str, str]] = None, name: Optional[str] = None) -> Dict[str, Any] :classmethod: Create a new custom webhook for Parseur. :param event: Webhook event type (document or table event). :param target_url: The URL to send webhook POSTs to. :param mailbox_id: Mailbox ID (required for document events). :param table_field_id: Table field ID (required for table events, e.g. "PF12345"). :param headers: Optional custom HTTP headers. :param name: Optional custom name for the webhook. :return: The created webhook object as a dictionary. .. py:method:: retrieve(webhook_id: int) -> Dict[str, Any] :classmethod: Retrieve a webhook from the account. :param webhook_id: ID of the webhook to delete. :return: The updated mailbox object as a dictionary. .. py:method:: delete(webhook_id: int) -> bool :classmethod: Delete a webhook from the account. :param webhook_id: ID of the webhook to delete. :return: True if deletion was successful. .. py:method:: enable(mailbox_id: int, webhook_id: int) -> Dict[str, Any] :classmethod: Enable an existing webhook for a given mailbox. :param mailbox_id: ID of the mailbox. :param webhook_id: ID of the webhook to enable. :return: The updated mailbox object as a dictionary. .. py:method:: pause(mailbox_id: int, webhook_id: int) -> Dict[str, Any] :classmethod: Pause (disable) an existing webhook for a given mailbox. :param mailbox_id: ID of the mailbox. :param webhook_id: ID of the webhook to pause. :return: The updated mailbox object as a dictionary. .. py:method:: list() -> List[Dict[str, Any]] :classmethod: Retrieve all webhooks as a list. .. py:method:: iter() -> Iterable[Dict[str, Any]] :classmethod: Yield all webhooks registered on the account.