Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"Parseur is a document/email parsing tool that extracts structured data from emails, attachments, PDFs, invoices, forms, etc. It supports dynamic templates and table fields, and delivers parsed output to integrations (e.g. via webhook or API). This integration enables reactive workflows based on new processed documents, failed processing, mailbox changes, and more.": "Parseur ist ein Werkzeug zum Parsen von Dokumenten/E-Mails, das strukturierte Daten aus E-Mails, Anhängen, PDFs, Rechnungen, Formularen usw. extrahiert. Es unterstützt dynamische Vorlagen und Tabellenfelder und liefert geparste Ausgaben für Integrationen (z. Diese Integration ermöglicht reaktive Workflows basierend auf neuen bearbeiteten Dokumenten, fehlgeschlagener Verarbeitung, Mailbox-Änderungen und mehr.",
|
||||
"Create a new API key in Account → API keys in the Parseur app: https://app.parseur.com/account/api-keys": "Erstelle einen neuen API-Schlüssel in Konto → API-Schlüssel in der Parseur-App: https://app.parseur.com/account/api-keys",
|
||||
"Get Parsed Document by ID": "Erhalte geparstes Dokument per ID",
|
||||
"Create Document": "Dokument erstellen",
|
||||
"Create Document from File": "Dokument aus Datei erstellen",
|
||||
"Reprocess Document": "Dokument erneut verarbeiten",
|
||||
"Find Document": "Dokument finden",
|
||||
"Custom API Call": "Eigener API-Aufruf",
|
||||
"Fetch parsed JSON / structured output for a given document ID": "Lade geparste JSON / strukturierte Ausgabe für eine angegebene Dokument-ID ab",
|
||||
"Creates a new document.": "Erstellt ein neues Dokument.",
|
||||
"Creates new document in mailbox from file.": "Erstellt neues Dokument in Mailbox aus Datei.",
|
||||
"Send an existing document back through parsing (e.g. after updating template).": "Senden Sie ein vorhandenes Dokument durch das Parsen zurück (z.B. nach dem Aktualisieren der Vorlage).",
|
||||
"Finds a document based on search param.": "Findet ein Dokument basierend auf Suchparameter.",
|
||||
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
|
||||
"Parser": "Parser",
|
||||
"Document": "Dokument",
|
||||
"Subject": "Betreff",
|
||||
"From": "Von",
|
||||
"Recipient": "Empfänger",
|
||||
"To": "An",
|
||||
"CC": "CC",
|
||||
"BCC": "BCC",
|
||||
"Body HTML": "Body HTML",
|
||||
"Body Plain": "Körperebene",
|
||||
"Message Headers": "Nachrichtenüberschriften",
|
||||
"File": "Datei",
|
||||
"Search": "Suche",
|
||||
"Method": "Methode",
|
||||
"Headers": "Kopfzeilen",
|
||||
"Query Parameters": "Abfrageparameter",
|
||||
"Body": "Körper",
|
||||
"Response is Binary ?": "Antwort ist binär?",
|
||||
"No Error on Failure": "Kein Fehler bei Fehler",
|
||||
"Timeout (in seconds)": "Timeout (in Sekunden)",
|
||||
"Select the parser": "Parser auswählen",
|
||||
"Select the document": "Dokument auswählen",
|
||||
"The subject of the document/email.": "Der Betreff des Dokuments/der E-Mail.",
|
||||
"The sender email address.": "Die Absender-E-Mail-Adresse.",
|
||||
"The recipient email address.": "Die Empfänger-E-Mail-Adresse.",
|
||||
"The \"To\" email address.": "Die \"An\"-E-Mail-Adresse.",
|
||||
"The \"CC\" email address.": "Die \"CC\"-E-Mail-Adresse.",
|
||||
"The \"BCC\" email address.": "Die \"BCC\"-E-Mail-Adresse.",
|
||||
"The HTML content of the document/email.": "Der HTML-Inhalt des Dokuments/E-Mails.",
|
||||
"The plain text content of the document/email.": "Der reine Text Inhalt des Dokumente/der E-Mail.",
|
||||
"A JSON object representing the email headers (key-value pairs).": "Ein JSON-Objekt, das die E-Mail-Header (Schlüssel-Wert-Paare) repräsentiert.",
|
||||
"Select the file to upload": "Datei zum Hochladen auswählen",
|
||||
"The search term to filter documents by name. Case insensitive. If empty, all documents are returned.": "Der Suchbegriff zum Filtern von Dokumenten nach Namen. Groß-/Kleinschreibung. Wenn leer, werden alle Dokumente zurückgegeben.",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
|
||||
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
|
||||
"GET": "ERHALTEN",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "LÖSCHEN",
|
||||
"HEAD": "HEAD",
|
||||
"New Document Processed": "Neues Dokument verarbeitet",
|
||||
"New Table Field Processed": "Neues Tabellenfeld verarbeitet",
|
||||
"New Document Not Processed": "Neues Dokument nicht verarbeitet",
|
||||
"New Document Export Failed": "Neuer Dokumenten-Export fehlgeschlagen",
|
||||
"New Mailbox": "Neues Postfach",
|
||||
"Fires when a new document is successfully processed and parsed by Parseur.": "Feuert ab, wenn ein neues Dokument erfolgreich verarbeitet und von Parseur analysiert wird.",
|
||||
"Fires when a document with table fields is processed, and triggers for each row (table field) separately.": "Feuert ab, wenn ein Dokument mit Tabellenfeldern verarbeitet wird, und löst für jede Zeile (Tabellenfeld) separat aus.",
|
||||
"Fires when Parseur fails to parse a document (e.g. no matching template).": "Feuert wenn Parseur ein Dokument nicht analysiert (z.B. keine passende Vorlage).",
|
||||
"Fires when an automated export endpoint (webhook / integration) fails for a processed document.": "Feuert ab, wenn ein automatisierter Export-Endpunkt (webhook / Integration) für ein verarbeitetes Dokument fehlschlägt.",
|
||||
"Fires when a new mailbox is created in the Parseur account.": "Feuert ab, wenn ein neues Postfach im Parseur-Konto erstellt wird."
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"Parseur is a document/email parsing tool that extracts structured data from emails, attachments, PDFs, invoices, forms, etc. It supports dynamic templates and table fields, and delivers parsed output to integrations (e.g. via webhook or API). This integration enables reactive workflows based on new processed documents, failed processing, mailbox changes, and more.": "Parseur es una herramienta de análisis de documentos/correo electrónico que extrae datos estructurados de correos electrónicos, adjuntos, PDFs, facturas, formularios, etc. Soporta plantillas dinámicas y campos de tablas, y proporciona salida analizada a integraciones (e. . vía webhook o API). Esta integración permite flujos de trabajo reactivos basados en nuevos documentos procesados, procesamiento fallido, cambios del buzón y más.",
|
||||
"Create a new API key in Account → API keys in the Parseur app: https://app.parseur.com/account/api-keys": "Crear una nueva clave API en Cuenta → Claves API en la aplicación Parseur: https://app.parseur.com/account/api-keys",
|
||||
"Get Parsed Document by ID": "Obtener documento analizado por ID",
|
||||
"Create Document": "Crear Documento",
|
||||
"Create Document from File": "Crear documento desde archivo",
|
||||
"Reprocess Document": "Reprocesar documento",
|
||||
"Find Document": "Buscar documento",
|
||||
"Custom API Call": "Llamada API personalizada",
|
||||
"Fetch parsed JSON / structured output for a given document ID": "Obtener JSON analizado/salida estructurada para un ID de documento determinado",
|
||||
"Creates a new document.": "Crea un nuevo documento.",
|
||||
"Creates new document in mailbox from file.": "Crea un nuevo documento en el buzón de correo desde el archivo.",
|
||||
"Send an existing document back through parsing (e.g. after updating template).": "Enviar un documento existente a través del análisis (por ejemplo, después de actualizar la plantilla).",
|
||||
"Finds a document based on search param.": "Encuentra un documento basado en el parámetro de búsqueda.",
|
||||
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
|
||||
"Parser": "Parser",
|
||||
"Document": "Documento",
|
||||
"Subject": "Asunto",
|
||||
"From": "De",
|
||||
"Recipient": "Destinatario",
|
||||
"To": "A",
|
||||
"CC": "CC",
|
||||
"BCC": "CCO",
|
||||
"Body HTML": "Cuerpo HTML",
|
||||
"Body Plain": "Cuerpo simple",
|
||||
"Message Headers": "Encabezados de mensajes",
|
||||
"File": "Archivo",
|
||||
"Search": "Buscar",
|
||||
"Method": "Método",
|
||||
"Headers": "Encabezados",
|
||||
"Query Parameters": "Parámetros de consulta",
|
||||
"Body": "Cuerpo",
|
||||
"Response is Binary ?": "¿Respuesta es binaria?",
|
||||
"No Error on Failure": "No hay ningún error en fallo",
|
||||
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
|
||||
"Select the parser": "Seleccione el analizador",
|
||||
"Select the document": "Seleccione el documento",
|
||||
"The subject of the document/email.": "El asunto del documento/correo electrónico.",
|
||||
"The sender email address.": "Dirección de correo electrónico del remitente.",
|
||||
"The recipient email address.": "La dirección de correo electrónico del destinatario.",
|
||||
"The \"To\" email address.": "La dirección de correo electrónico \"A\".",
|
||||
"The \"CC\" email address.": "La dirección de correo electrónico \"CC\".",
|
||||
"The \"BCC\" email address.": "La dirección de correo electrónico \"BCC\".",
|
||||
"The HTML content of the document/email.": "El contenido HTML del documento/correo electrónico.",
|
||||
"The plain text content of the document/email.": "El contenido de texto plano del documento/correo electrónico.",
|
||||
"A JSON object representing the email headers (key-value pairs).": "Un objeto JSON que representa los encabezados de correo electrónico (pares clave-valor).",
|
||||
"Select the file to upload": "Seleccione el archivo a subir",
|
||||
"The search term to filter documents by name. Case insensitive. If empty, all documents are returned.": "El término de búsqueda para filtrar los documentos por nombre. No se debe usar mayúsculas. Si está vacío, se devuelven todos los documentos.",
|
||||
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
|
||||
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
|
||||
"GET": "RECOGER",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "BORRAR",
|
||||
"HEAD": "LIMPIO",
|
||||
"New Document Processed": "Nuevo documento procesado",
|
||||
"New Table Field Processed": "Nuevo campo de tabla procesado",
|
||||
"New Document Not Processed": "Nuevo documento no procesado",
|
||||
"New Document Export Failed": "Error al exportar el nuevo documento",
|
||||
"New Mailbox": "Nuevo buzón",
|
||||
"Fires when a new document is successfully processed and parsed by Parseur.": "Dispara cuando un nuevo documento es procesado y analizado con éxito por Parseur.",
|
||||
"Fires when a document with table fields is processed, and triggers for each row (table field) separately.": "Dispara cuando un documento con campos de tabla es procesado, y disparadores para cada registro (campo de tabla) por separado.",
|
||||
"Fires when Parseur fails to parse a document (e.g. no matching template).": "Dispara cuando Parseur no analiza un documento (por ejemplo, no hay una plantilla coincidente).",
|
||||
"Fires when an automated export endpoint (webhook / integration) fails for a processed document.": "Dispara cuando un punto final de exportación automatizado (webhook / integración) falla en un documento procesado.",
|
||||
"Fires when a new mailbox is created in the Parseur account.": "Dispara cuando se crea un nuevo buzón en la cuenta de Parseur."
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"Parseur is a document/email parsing tool that extracts structured data from emails, attachments, PDFs, invoices, forms, etc. It supports dynamic templates and table fields, and delivers parsed output to integrations (e.g. via webhook or API). This integration enables reactive workflows based on new processed documents, failed processing, mailbox changes, and more.": "Parseur est un outil d'analyse de documents et d'e-mails qui extrait des données structurées des e-mails, pièces jointes, PDFs, factures, formulaires, etc. Il prend en charge les modèles dynamiques et les champs de tableaux, et livre de la sortie analysée aux intégrations (e. Cette intégration permet des flux de travail réactifs basés sur les nouveaux documents traités, le traitement échoué, les modifications de la boîte aux lettres et bien plus encore.",
|
||||
"Create a new API key in Account → API keys in the Parseur app: https://app.parseur.com/account/api-keys": "Créez une nouvelle clé API dans Compte → Clés API dans l'application Parseur : https://app.parseur.com/account/api-keys",
|
||||
"Get Parsed Document by ID": "Obtenir le document analysé par ID",
|
||||
"Create Document": "Créer un document",
|
||||
"Create Document from File": "Créer un document à partir d'un fichier",
|
||||
"Reprocess Document": "Retraiter le document",
|
||||
"Find Document": "Trouver un document",
|
||||
"Custom API Call": "Appel d'API personnalisé",
|
||||
"Fetch parsed JSON / structured output for a given document ID": "Récupère le JSON analysé / la sortie structurée pour un ID de document donné",
|
||||
"Creates a new document.": "Crée un nouveau document.",
|
||||
"Creates new document in mailbox from file.": "Crée un nouveau document dans la boîte aux lettres à partir du fichier.",
|
||||
"Send an existing document back through parsing (e.g. after updating template).": "Envoyer un document existant à nouveau en analysant (par exemple après la mise à jour du modèle).",
|
||||
"Finds a document based on search param.": "Trouve un document basé sur les paramètres de recherche.",
|
||||
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
|
||||
"Parser": "Parser",
|
||||
"Document": "Document",
|
||||
"Subject": "Sujet",
|
||||
"From": "A partir de",
|
||||
"Recipient": "Destinataire",
|
||||
"To": "À",
|
||||
"CC": "CC",
|
||||
"BCC": "Cci",
|
||||
"Body HTML": "Corps HTML",
|
||||
"Body Plain": "Plaine de corps",
|
||||
"Message Headers": "En-têtes du message",
|
||||
"File": "Ficher",
|
||||
"Search": "Rechercher",
|
||||
"Method": "Méthode",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Paramètres de requête",
|
||||
"Body": "Body",
|
||||
"Response is Binary ?": "La réponse est Binaire ?",
|
||||
"No Error on Failure": "Aucune erreur en cas d'échec",
|
||||
"Timeout (in seconds)": "Délai d'expiration (en secondes)",
|
||||
"Select the parser": "Sélectionnez l'analyseur",
|
||||
"Select the document": "Sélectionnez le document",
|
||||
"The subject of the document/email.": "Le sujet du document/email.",
|
||||
"The sender email address.": "L'adresse email de l'expéditeur",
|
||||
"The recipient email address.": "L'adresse e-mail du destinataire.",
|
||||
"The \"To\" email address.": "L'adresse email \"À\".",
|
||||
"The \"CC\" email address.": "L'adresse email \"CC\".",
|
||||
"The \"BCC\" email address.": "L'adresse email \"BCC\"",
|
||||
"The HTML content of the document/email.": "Le contenu HTML du document/email.",
|
||||
"The plain text content of the document/email.": "Le contenu en texte brut du document/email.",
|
||||
"A JSON object representing the email headers (key-value pairs).": "Un objet JSON représentant les en-têtes d'email (paires clé-valeurs).",
|
||||
"Select the file to upload": "Sélectionnez le fichier à télécharger",
|
||||
"The search term to filter documents by name. Case insensitive. If empty, all documents are returned.": "Le terme de recherche pour filtrer les documents par nom. Insensible à la casse. Si vide, tous les documents sont retournés.",
|
||||
"Authorization headers are injected automatically from your connection.": "Les Headers d'autorisation sont injectés automatiquement à partir de votre connexion.",
|
||||
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New Document Processed": "Nouveau document traité",
|
||||
"New Table Field Processed": "Nouveau champ de table traité",
|
||||
"New Document Not Processed": "Nouveau document non traité",
|
||||
"New Document Export Failed": "L'exportation du nouveau document a échoué",
|
||||
"New Mailbox": "Nouvelle boîte aux lettres",
|
||||
"Fires when a new document is successfully processed and parsed by Parseur.": "Déclenche lorsqu'un nouveau document est traité avec succès et analysé par Parse.",
|
||||
"Fires when a document with table fields is processed, and triggers for each row (table field) separately.": "Déclenche lorsqu'un document avec des champs de table est traité et se déclenche séparément pour chaque ligne (champ table).",
|
||||
"Fires when Parseur fails to parse a document (e.g. no matching template).": "Renvoie lorsque Parseur ne parvient pas à analyser un document (par exemple aucun modèle correspondant).",
|
||||
"Fires when an automated export endpoint (webhook / integration) fails for a processed document.": "Déclenche lorsqu'un point de terminaison d'exportation automatique (webhook / intégration) échoue pour un document traité.",
|
||||
"Fires when a new mailbox is created in the Parseur account.": "Déclenche quand une nouvelle boîte aux lettres est créée dans le compte Parseur."
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"Parseur is a document/email parsing tool that extracts structured data from emails, attachments, PDFs, invoices, forms, etc. It supports dynamic templates and table fields, and delivers parsed output to integrations (e.g. via webhook or API). This integration enables reactive workflows based on new processed documents, failed processing, mailbox changes, and more.": "Parseur は、電子メール、添付ファイル、PDF、請求書、フォームなどから構造化されたデータを抽出するドキュメント/電子メールの解析ツールです。 動的なテンプレートとテーブルフィールドをサポートし、解析された出力をインテグレーションに提供します。 をクリックします。 webhook または API 経由)。 この統合により、新しい処理済みドキュメント、失敗処理、メールボックスの変更などに基づいてリアクティブなワークフローが可能になります。",
|
||||
"Create a new API key in Account → API keys in the Parseur app: https://app.parseur.com/account/api-keys": "Parseur アプリの format@@0 → [API キー] で新しい API キーを作成します: https://app.parseur.com/account/api-keys",
|
||||
"Get Parsed Document by ID": "解析済みドキュメントを ID で取得",
|
||||
"Create Document": "ドキュメントを作成",
|
||||
"Create Document from File": "ファイルからドキュメントを作成",
|
||||
"Reprocess Document": "ドキュメントの再処理",
|
||||
"Find Document": "ドキュメントを検索",
|
||||
"Custom API Call": "カスタムAPI通話",
|
||||
"Fetch parsed JSON / structured output for a given document ID": "与えられたドキュメント ID の解析済みの JSON / 構造化出力を取得",
|
||||
"Creates a new document.": "新しいドキュメントを作成します。",
|
||||
"Creates new document in mailbox from file.": "ファイルからメールボックスに新しいドキュメントを作成します。",
|
||||
"Send an existing document back through parsing (e.g. after updating template).": "解析を経由して既存のドキュメントを返します (テンプレートを更新した後など)。",
|
||||
"Finds a document based on search param.": "検索パラメータに基づいてドキュメントを検索します。",
|
||||
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
|
||||
"Parser": "Parser",
|
||||
"Document": "ドキュメント",
|
||||
"Subject": "件名",
|
||||
"From": "差出人:",
|
||||
"Recipient": "受信者",
|
||||
"To": "終了日",
|
||||
"CC": "CC",
|
||||
"BCC": "BCC",
|
||||
"Body HTML": "本文 HTML",
|
||||
"Body Plain": "ボディープレーン",
|
||||
"Message Headers": "メッセージヘッダー",
|
||||
"File": "ファイル",
|
||||
"Search": "検索",
|
||||
"Method": "方法",
|
||||
"Headers": "ヘッダー",
|
||||
"Query Parameters": "クエリパラメータ",
|
||||
"Body": "本文",
|
||||
"Response is Binary ?": "応答はバイナリですか?",
|
||||
"No Error on Failure": "失敗時にエラーはありません",
|
||||
"Timeout (in seconds)": "タイムアウト(秒)",
|
||||
"Select the parser": "パーサーを選択",
|
||||
"Select the document": "ドキュメントを選択",
|
||||
"The subject of the document/email.": "ドキュメント/メールの件名",
|
||||
"The sender email address.": "送信者のメールアドレス",
|
||||
"The recipient email address.": "受信者のメールアドレス",
|
||||
"The \"To\" email address.": "「宛先」メールアドレス。",
|
||||
"The \"CC\" email address.": "「CC」のメールアドレス。",
|
||||
"The \"BCC\" email address.": "The \"BCC\" email address.",
|
||||
"The HTML content of the document/email.": "ドキュメント/メールの HTML コンテンツ",
|
||||
"The plain text content of the document/email.": "ドキュメント/メールのプレーンテキストの内容",
|
||||
"A JSON object representing the email headers (key-value pairs).": "メールヘッダ(キーと値のペア)を表す JSON オブジェクト。",
|
||||
"Select the file to upload": "アップロードするファイルを選択してください",
|
||||
"The search term to filter documents by name. Case insensitive. If empty, all documents are returned.": "ドキュメントを名前でフィルタリングする検索語。大文字小文字を区別しません。空の場合は、すべてのドキュメントが返されます。",
|
||||
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
|
||||
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
|
||||
"GET": "取得",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "削除",
|
||||
"HEAD": "頭",
|
||||
"New Document Processed": "新しいドキュメントが処理されました",
|
||||
"New Table Field Processed": "新しいテーブルフィールドが処理されました",
|
||||
"New Document Not Processed": "新しいドキュメントは処理されていません",
|
||||
"New Document Export Failed": "新しいドキュメントのエクスポートに失敗しました",
|
||||
"New Mailbox": "新しいメールボックス",
|
||||
"Fires when a new document is successfully processed and parsed by Parseur.": "新しいドキュメントが正常に処理され、Parseur によって解析されたときに発生します。",
|
||||
"Fires when a document with table fields is processed, and triggers for each row (table field) separately.": "テーブルフィールドを持つドキュメントが処理されたときに発生し、個別に各行 (テーブルフィールド) に対してトリガーされます。",
|
||||
"Fires when Parseur fails to parse a document (e.g. no matching template).": "パーサーがドキュメントの解析に失敗したときに発生します (例: テンプレートが一致しません)。",
|
||||
"Fires when an automated export endpoint (webhook / integration) fails for a processed document.": "処理済みドキュメントの自動エクスポートエンドポイント (webhook / 統合) が失敗した場合に発生します。",
|
||||
"Fires when a new mailbox is created in the Parseur account.": "Parseur アカウントに新しいメールボックスが作成されたときに発生します。"
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"Parseur is a document/email parsing tool that extracts structured data from emails, attachments, PDFs, invoices, forms, etc. It supports dynamic templates and table fields, and delivers parsed output to integrations (e.g. via webhook or API). This integration enables reactive workflows based on new processed documents, failed processing, mailbox changes, and more.": "Parseur is een document/e-mail parsing tool die gestructureerde gegevens extraheert uit e-mails, bijlagen, PDF's, facturen, formulieren, enz. Het ondersteunt dynamische sjablonen en tabelvelden, en zorgt voor een geparsed output naar integraties (bv. . via webhook of API). Deze integratie maakt reactieve workflows mogelijk op basis van nieuwe bewerkte documenten, mislukte verwerking, wijzigingen in mailbox en meer.",
|
||||
"Create a new API key in Account → API keys in the Parseur app: https://app.parseur.com/account/api-keys": "Maak een nieuwe API-sleutel in Account → API keys in Parseur app: https://app.parseur.com/account/api-keys",
|
||||
"Get Parsed Document by ID": "Verkrijg Ontleed Document via ID",
|
||||
"Create Document": "Document aanmaken",
|
||||
"Create Document from File": "Document maken van bestand",
|
||||
"Reprocess Document": "Document opnieuw verwerken",
|
||||
"Find Document": "Document zoeken",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Fetch parsed JSON / structured output for a given document ID": "Ontvangen JSON / gestructureerde uitvoer voor een bepaald document ID",
|
||||
"Creates a new document.": "Maakt een nieuw document aan.",
|
||||
"Creates new document in mailbox from file.": "Maakt nieuw document in mailbox uit bestand.",
|
||||
"Send an existing document back through parsing (e.g. after updating template).": "Stuur een bestaand document terug door te parsen (bv. na bijwerken sjabloon).",
|
||||
"Finds a document based on search param.": "Vindt een document op basis van zoekterm",
|
||||
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
|
||||
"Parser": "Parser",
|
||||
"Document": "Document",
|
||||
"Subject": "Onderwerp",
|
||||
"From": "van",
|
||||
"Recipient": "Ontvanger",
|
||||
"To": "tot",
|
||||
"CC": "CC",
|
||||
"BCC": "Bcc",
|
||||
"Body HTML": "Lichaam HTML",
|
||||
"Body Plain": "Gewoon Lichaam",
|
||||
"Message Headers": "Bericht headers",
|
||||
"File": "Bestand",
|
||||
"Search": "Zoeken",
|
||||
"Method": "Methode",
|
||||
"Headers": "Kopteksten",
|
||||
"Query Parameters": "Query parameters",
|
||||
"Body": "Lichaam",
|
||||
"Response is Binary ?": "Antwoord is binair?",
|
||||
"No Error on Failure": "Geen fout bij fout",
|
||||
"Timeout (in seconds)": "Time-out (in seconden)",
|
||||
"Select the parser": "Selecteer de parser",
|
||||
"Select the document": "Document selecteren",
|
||||
"The subject of the document/email.": "Het onderwerp van de document/e-mail.",
|
||||
"The sender email address.": "Het e-mailadres van de afzender.",
|
||||
"The recipient email address.": "E-mailadres van de ontvanger",
|
||||
"The \"To\" email address.": "Het e-mailadres \"Aan\".",
|
||||
"The \"CC\" email address.": "Het \"CC-e-mailadres.",
|
||||
"The \"BCC\" email address.": "Het \"BCC\" emailadres.",
|
||||
"The HTML content of the document/email.": "De HTML-inhoud van de document/e-mail.",
|
||||
"The plain text content of the document/email.": "De inhoud van de platte tekst van de document/e-mail.",
|
||||
"A JSON object representing the email headers (key-value pairs).": "Een JSON-object dat de e-mail headers weergeeft (sleutelwaarde paren.",
|
||||
"Select the file to upload": "Selecteer het bestand om te uploaden",
|
||||
"The search term to filter documents by name. Case insensitive. If empty, all documents are returned.": "De zoekterm om documenten te filteren op naam. zaak ongevoelig. Indien leeg worden alle documenten geretourneerd.",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
|
||||
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
|
||||
"GET": "KRIJG",
|
||||
"POST": "POSTE",
|
||||
"PATCH": "BEKIJK",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "VERWIJDEREN",
|
||||
"HEAD": "HOOFD",
|
||||
"New Document Processed": "Nieuw document verwerkt",
|
||||
"New Table Field Processed": "Nieuw tabelveld verwerkt",
|
||||
"New Document Not Processed": "Nieuw document niet verwerkt",
|
||||
"New Document Export Failed": "Nieuwe documentexport is mislukt",
|
||||
"New Mailbox": "Nieuwe Mailbox",
|
||||
"Fires when a new document is successfully processed and parsed by Parseur.": "Schiet wanneer een nieuw document met succes wordt verwerkt en geparseerd door Parseur.",
|
||||
"Fires when a document with table fields is processed, and triggers for each row (table field) separately.": "Vuurt wanneer een document met tabelvelden wordt verwerkt, en activeert voor elke rij (tabelveld) apart.",
|
||||
"Fires when Parseur fails to parse a document (e.g. no matching template).": "Vuurt wanneer Parseur geen document kan parsen (bijvoorbeeld geen overeenkomend sjabloon).",
|
||||
"Fires when an automated export endpoint (webhook / integration) fails for a processed document.": "Vuurt wanneer een geautomatiseerd export eindpunt (webhook / integratie) mislukt voor een verwerkt document.",
|
||||
"Fires when a new mailbox is created in the Parseur account.": "Vuurt wanneer een nieuwe mailbox is gemaakt in het Parseur account."
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"Parseur is a document/email parsing tool that extracts structured data from emails, attachments, PDFs, invoices, forms, etc. It supports dynamic templates and table fields, and delivers parsed output to integrations (e.g. via webhook or API). This integration enables reactive workflows based on new processed documents, failed processing, mailbox changes, and more.": "Parseur é uma ferramenta de análise de documento/e-mail que extrai dados estruturados de e-mails, anexos, PDFs, faturas, formulários, etc. Ele suporta templates dinâmicos e campos de tabela, e oferece saída analisada para integrações (e. . via webhook ou API). Esta integração permite fluxos de trabalho reativos baseados em novos documentos processados, processamento falhado, alterações de caixa de correio e muito mais.",
|
||||
"Create a new API key in Account → API keys in the Parseur app: https://app.parseur.com/account/api-keys": "Crie uma nova chave API em Conta → Chaves API no app Parseur: https://app.parseur.com/account/api-keys",
|
||||
"Get Parsed Document by ID": "Obter o documento analisado pelo ID",
|
||||
"Create Document": "Criar documento",
|
||||
"Create Document from File": "Criar documento a partir do arquivo",
|
||||
"Reprocess Document": "Reprocessar documento",
|
||||
"Find Document": "Localizar documento",
|
||||
"Custom API Call": "Chamada de API personalizada",
|
||||
"Fetch parsed JSON / structured output for a given document ID": "Obter saída JSON / estruturada para uma determinada ID do documento",
|
||||
"Creates a new document.": "Cria um novo documento.",
|
||||
"Creates new document in mailbox from file.": "Cria um novo documento no arquivo caixa de correio.",
|
||||
"Send an existing document back through parsing (e.g. after updating template).": "Enviar um documento existente de volta através da análise (por exemplo, depois de atualizar o modelo).",
|
||||
"Finds a document based on search param.": "Localiza um documento com base em parâmetros de pesquisa.",
|
||||
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
|
||||
"Parser": "Parser",
|
||||
"Document": "Documento",
|
||||
"Subject": "Cargo",
|
||||
"From": "De",
|
||||
"Recipient": "Destinatário",
|
||||
"To": "Para",
|
||||
"CC": "CC",
|
||||
"BCC": "Cco",
|
||||
"Body HTML": "Corpo em HTML",
|
||||
"Body Plain": "Placa de Corpo",
|
||||
"Message Headers": "Cabeçalhos da Mensagem",
|
||||
"File": "Arquivo",
|
||||
"Search": "Pesquisar",
|
||||
"Method": "Método",
|
||||
"Headers": "Cabeçalhos",
|
||||
"Query Parameters": "Parâmetros da consulta",
|
||||
"Body": "Conteúdo",
|
||||
"Response is Binary ?": "A resposta é binária ?",
|
||||
"No Error on Failure": "Nenhum erro no Failure",
|
||||
"Timeout (in seconds)": "Tempo limite (em segundos)",
|
||||
"Select the parser": "Selecione o analisador",
|
||||
"Select the document": "Selecionar documento",
|
||||
"The subject of the document/email.": "O assunto do documento/e-mail.",
|
||||
"The sender email address.": "O endereço de e-mail do remetente.",
|
||||
"The recipient email address.": "O endereço de e-mail do destinatário.",
|
||||
"The \"To\" email address.": "O endereço de e-mail para.",
|
||||
"The \"CC\" email address.": "O endereço de e-mail \"CC\".",
|
||||
"The \"BCC\" email address.": "O endereço de e-mail \"BCC\".",
|
||||
"The HTML content of the document/email.": "O conteúdo HTML do documento/e-mail.",
|
||||
"The plain text content of the document/email.": "Conteúdo em texto simples do documento/e-mail.",
|
||||
"A JSON object representing the email headers (key-value pairs).": "Um objeto JSON representando os cabeçalhos de e-mail (pares de valor chave).",
|
||||
"Select the file to upload": "Selecione o arquivo para upload",
|
||||
"The search term to filter documents by name. Case insensitive. If empty, all documents are returned.": "O termo de busca para filtrar documentos por nome. Sem sensibilidade. Se vazio, todos os documentos serão retornados.",
|
||||
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
|
||||
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
|
||||
"GET": "OBTER",
|
||||
"POST": "POSTAR",
|
||||
"PATCH": "COMPRAR",
|
||||
"PUT": "COLOCAR",
|
||||
"DELETE": "EXCLUIR",
|
||||
"HEAD": "CABEÇA",
|
||||
"New Document Processed": "Novo documento processado",
|
||||
"New Table Field Processed": "Nova Tabela Campo Processado",
|
||||
"New Document Not Processed": "Novo documento não processado",
|
||||
"New Document Export Failed": "Falha ao exportar o novo documento",
|
||||
"New Mailbox": "Nova caixa de correio",
|
||||
"Fires when a new document is successfully processed and parsed by Parseur.": "Atira quando um novo documento é processado com sucesso e analisado pelo Parseur.",
|
||||
"Fires when a document with table fields is processed, and triggers for each row (table field) separately.": "Atira quando um documento com campos de tabela é processado e aciona separadamente para cada linha (campo tabela).",
|
||||
"Fires when Parseur fails to parse a document (e.g. no matching template).": "Atira quando o analisador falha ao analisar um documento (por exemplo, nenhum modelo correspondente).",
|
||||
"Fires when an automated export endpoint (webhook / integration) fails for a processed document.": "Atira quando um ponto de extremidade de exportação automatizado (webhook / integração) falha para um documento processado.",
|
||||
"Fires when a new mailbox is created in the Parseur account.": "Ativa quando uma nova caixa de correio é criada na conta do Parseur."
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"Parseur is a document/email parsing tool that extracts structured data from emails, attachments, PDFs, invoices, forms, etc. It supports dynamic templates and table fields, and delivers parsed output to integrations (e.g. via webhook or API). This integration enables reactive workflows based on new processed documents, failed processing, mailbox changes, and more.": "Parseur is a document/email parsing tool that extracts structured data from emails, attachments, PDFs, invoices, forms, etc. It supports dynamic templates and table fields, and delivers parsed output to integrations (e.g. via webhook or API). This integration enables reactive workflows based on new processed documents, failed processing, mailbox changes, and more.",
|
||||
"Create a new API key in Account → API keys in the Parseur app: https://app.parseur.com/account/api-keys": "Create a new API key in Account → API keys in the Parseur app: https://app.parseur.com/account/api-keys",
|
||||
"Get Parsed Document by ID": "Get Parsed Document by ID",
|
||||
"Create Document": "Create Document",
|
||||
"Create Document from File": "Create Document from File",
|
||||
"Reprocess Document": "Reprocess Document",
|
||||
"Find Document": "Find Document",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Fetch parsed JSON / structured output for a given document ID": "Fetch parsed JSON / structured output for a given document ID",
|
||||
"Creates a new document.": "Creates a new document.",
|
||||
"Creates new document in mailbox from file.": "Creates new document in mailbox from file.",
|
||||
"Send an existing document back through parsing (e.g. after updating template).": "Send an existing document back through parsing (e.g. after updating template).",
|
||||
"Finds a document based on search param.": "Finds a document based on search param.",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Parser": "Parser",
|
||||
"Document": "Document",
|
||||
"Subject": "Subject",
|
||||
"From": "From",
|
||||
"Recipient": "Recipient",
|
||||
"To": "To",
|
||||
"CC": "CC",
|
||||
"BCC": "BCC",
|
||||
"Body HTML": "Body HTML",
|
||||
"Body Plain": "Body Plain",
|
||||
"Message Headers": "Message Headers",
|
||||
"File": "File",
|
||||
"Search": "Search",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"Select the parser": "Select the parser",
|
||||
"Select the document": "Select the document",
|
||||
"The subject of the document/email.": "The subject of the document/email.",
|
||||
"The sender email address.": "The sender email address.",
|
||||
"The recipient email address.": "The recipient email address.",
|
||||
"The \"To\" email address.": "The \"To\" email address.",
|
||||
"The \"CC\" email address.": "The \"CC\" email address.",
|
||||
"The \"BCC\" email address.": "The \"BCC\" email address.",
|
||||
"The HTML content of the document/email.": "The HTML content of the document/email.",
|
||||
"The plain text content of the document/email.": "The plain text content of the document/email.",
|
||||
"A JSON object representing the email headers (key-value pairs).": "A JSON object representing the email headers (key-value pairs).",
|
||||
"Select the file to upload": "Select the file to upload",
|
||||
"The search term to filter documents by name. Case insensitive. If empty, all documents are returned.": "The search term to filter documents by name. Case insensitive. If empty, all documents are returned.",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New Document Processed": "New Document Processed",
|
||||
"New Table Field Processed": "New Table Field Processed",
|
||||
"New Document Not Processed": "New Document Not Processed",
|
||||
"New Document Export Failed": "New Document Export Failed",
|
||||
"New Mailbox": "New Mailbox",
|
||||
"Fires when a new document is successfully processed and parsed by Parseur.": "Fires when a new document is successfully processed and parsed by Parseur.",
|
||||
"Fires when a document with table fields is processed, and triggers for each row (table field) separately.": "Fires when a document with table fields is processed, and triggers for each row (table field) separately.",
|
||||
"Fires when Parseur fails to parse a document (e.g. no matching template).": "Fires when Parseur fails to parse a document (e.g. no matching template).",
|
||||
"Fires when an automated export endpoint (webhook / integration) fails for a processed document.": "Fires when an automated export endpoint (webhook / integration) fails for a processed document.",
|
||||
"Fires when a new mailbox is created in the Parseur account.": "Fires when a new mailbox is created in the Parseur account."
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"Parseur is a document/email parsing tool that extracts structured data from emails, attachments, PDFs, invoices, forms, etc. It supports dynamic templates and table fields, and delivers parsed output to integrations (e.g. via webhook or API). This integration enables reactive workflows based on new processed documents, failed processing, mailbox changes, and more.": "Parseur is a document/email parsing tool that extracts structured data from emails, attachments, PDFs, invoices, forms, etc. It supports dynamic templates and table fields, and delivers parsed output to integrations (e.g. via webhook or API). This integration enables reactive workflows based on new processed documents, failed processing, mailbox changes, and more.",
|
||||
"Create a new API key in Account → API keys in the Parseur app: https://app.parseur.com/account/api-keys": "Create a new API key in Account → API keys in the Parseur app: https://app.parseur.com/account/api-keys",
|
||||
"Get Parsed Document by ID": "Get Parsed Document by ID",
|
||||
"Create Document": "Create Document",
|
||||
"Create Document from File": "Create Document from File",
|
||||
"Reprocess Document": "Reprocess Document",
|
||||
"Find Document": "Find Document",
|
||||
"Custom API Call": "自定义 API 呼叫",
|
||||
"Fetch parsed JSON / structured output for a given document ID": "Fetch parsed JSON / structured output for a given document ID",
|
||||
"Creates a new document.": "Creates a new document.",
|
||||
"Creates new document in mailbox from file.": "Creates new document in mailbox from file.",
|
||||
"Send an existing document back through parsing (e.g. after updating template).": "Send an existing document back through parsing (e.g. after updating template).",
|
||||
"Finds a document based on search param.": "Finds a document based on search param.",
|
||||
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
|
||||
"Parser": "Parser",
|
||||
"Document": "Document",
|
||||
"Subject": "Subject",
|
||||
"From": "From",
|
||||
"Recipient": "Recipient",
|
||||
"To": "To",
|
||||
"CC": "CC",
|
||||
"BCC": "BCC",
|
||||
"Body HTML": "Body HTML",
|
||||
"Body Plain": "Body Plain",
|
||||
"Message Headers": "Message Headers",
|
||||
"File": "文件",
|
||||
"Search": "搜索",
|
||||
"Method": "方法",
|
||||
"Headers": "信头",
|
||||
"Query Parameters": "查询参数",
|
||||
"Body": "正文内容",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "失败时没有错误",
|
||||
"Timeout (in seconds)": "超时(秒)",
|
||||
"Select the parser": "Select the parser",
|
||||
"Select the document": "Select the document",
|
||||
"The subject of the document/email.": "The subject of the document/email.",
|
||||
"The sender email address.": "The sender email address.",
|
||||
"The recipient email address.": "The recipient email address.",
|
||||
"The \"To\" email address.": "The \"To\" email address.",
|
||||
"The \"CC\" email address.": "The \"CC\" email address.",
|
||||
"The \"BCC\" email address.": "The \"BCC\" email address.",
|
||||
"The HTML content of the document/email.": "The HTML content of the document/email.",
|
||||
"The plain text content of the document/email.": "The plain text content of the document/email.",
|
||||
"A JSON object representing the email headers (key-value pairs).": "A JSON object representing the email headers (key-value pairs).",
|
||||
"Select the file to upload": "Select the file to upload",
|
||||
"The search term to filter documents by name. Case insensitive. If empty, all documents are returned.": "The search term to filter documents by name. Case insensitive. If empty, all documents are returned.",
|
||||
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"GET": "获取",
|
||||
"POST": "帖子",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "弹出",
|
||||
"DELETE": "删除",
|
||||
"HEAD": "黑色",
|
||||
"New Document Processed": "New Document Processed",
|
||||
"New Table Field Processed": "New Table Field Processed",
|
||||
"New Document Not Processed": "New Document Not Processed",
|
||||
"New Document Export Failed": "New Document Export Failed",
|
||||
"New Mailbox": "New Mailbox",
|
||||
"Fires when a new document is successfully processed and parsed by Parseur.": "Fires when a new document is successfully processed and parsed by Parseur.",
|
||||
"Fires when a document with table fields is processed, and triggers for each row (table field) separately.": "Fires when a document with table fields is processed, and triggers for each row (table field) separately.",
|
||||
"Fires when Parseur fails to parse a document (e.g. no matching template).": "Fires when Parseur fails to parse a document (e.g. no matching template).",
|
||||
"Fires when an automated export endpoint (webhook / integration) fails for a processed document.": "Fires when an automated export endpoint (webhook / integration) fails for a processed document.",
|
||||
"Fires when a new mailbox is created in the Parseur account.": "Fires when a new mailbox is created in the Parseur account."
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
import { createCustomApiCallAction } from '@activepieces/pieces-common';
|
||||
import { createPiece } from '@activepieces/pieces-framework';
|
||||
import { createDocument } from './lib/actions/create-document';
|
||||
import { createDocumentFromFile } from './lib/actions/create-document-from-file';
|
||||
import { findDocument } from './lib/actions/find-document';
|
||||
import { getParsedDocumentById } from './lib/actions/get-parsed-document-by-id';
|
||||
import { reprocessDocument } from './lib/actions/reprocess-document';
|
||||
import { parseurAuth, parseurCommon } from './lib/common';
|
||||
import { newDocumentExportFailed } from './lib/triggers/new-document-export-failed';
|
||||
import { newDocumentNotProcessed } from './lib/triggers/new-document-not-processed';
|
||||
import { newDocumentProcessed } from './lib/triggers/new-document-processed';
|
||||
import { newMailbox } from './lib/triggers/new-mailbox';
|
||||
import { newTableFieldProcessed } from './lib/triggers/new-table-field-processed';
|
||||
|
||||
export const parseur = createPiece({
|
||||
displayName: 'Parseur',
|
||||
description:
|
||||
'Parseur is a document/email parsing tool that extracts structured data from emails, attachments, PDFs, invoices, forms, etc. It supports dynamic templates and table fields, and delivers parsed output to integrations (e.g. via webhook or API). This integration enables reactive workflows based on new processed documents, failed processing, mailbox changes, and more.',
|
||||
auth: parseurAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/parseur.png',
|
||||
authors: ['LuizDMM'],
|
||||
actions: [
|
||||
getParsedDocumentById,
|
||||
createDocument,
|
||||
createDocumentFromFile,
|
||||
reprocessDocument,
|
||||
findDocument,
|
||||
createCustomApiCallAction({
|
||||
auth: parseurAuth,
|
||||
baseUrl: () => parseurCommon.baseUrl,
|
||||
authMapping: async (auth) => {
|
||||
return {
|
||||
Authorization: auth.secret_text,
|
||||
};
|
||||
},
|
||||
}),
|
||||
],
|
||||
triggers: [
|
||||
newDocumentProcessed,
|
||||
newTableFieldProcessed,
|
||||
newDocumentNotProcessed,
|
||||
newDocumentExportFailed,
|
||||
newMailbox,
|
||||
],
|
||||
});
|
||||
@@ -0,0 +1,28 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { parseurAuth, parseurCommon } from '../common';
|
||||
import { parserDropdown } from '../common/properties';
|
||||
|
||||
export const createDocumentFromFile = createAction({
|
||||
auth: parseurAuth,
|
||||
name: 'createDocumentFromFile',
|
||||
displayName: 'Create Document from File',
|
||||
description: 'Creates new document in mailbox from file.',
|
||||
props: {
|
||||
parserId: parserDropdown({ required: true }),
|
||||
file: Property.File({
|
||||
displayName: 'File',
|
||||
description: 'Select the file to upload',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth: apiKey, propsValue: { parserId, file } }) {
|
||||
if (!parserId) {
|
||||
throw new Error('Parser is required');
|
||||
}
|
||||
return await parseurCommon.createDocumentFromFile({
|
||||
apiKey: apiKey.secret_text,
|
||||
parserId,
|
||||
file,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,69 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { parseurAuth, parseurCommon } from '../common';
|
||||
|
||||
export const createDocument = createAction({
|
||||
auth: parseurAuth,
|
||||
name: 'createDocument',
|
||||
displayName: 'Create Document',
|
||||
description: 'Creates a new document.',
|
||||
props: {
|
||||
subject: Property.ShortText({
|
||||
displayName: 'Subject',
|
||||
description: 'The subject of the document/email.',
|
||||
required: true,
|
||||
}),
|
||||
from: Property.ShortText({
|
||||
displayName: 'From',
|
||||
description: 'The sender email address.',
|
||||
required: true,
|
||||
}),
|
||||
recipient: Property.ShortText({
|
||||
displayName: 'Recipient',
|
||||
description: 'The recipient email address.',
|
||||
required: true,
|
||||
}),
|
||||
to: Property.ShortText({
|
||||
displayName: 'To',
|
||||
description: 'The "To" email address.',
|
||||
required: false,
|
||||
}),
|
||||
cc: Property.ShortText({
|
||||
displayName: 'CC',
|
||||
description: 'The "CC" email address.',
|
||||
required: false,
|
||||
}),
|
||||
bcc: Property.ShortText({
|
||||
displayName: 'BCC',
|
||||
description: 'The "BCC" email address.',
|
||||
required: false,
|
||||
}),
|
||||
body_html: Property.LongText({
|
||||
displayName: 'Body HTML',
|
||||
description: 'The HTML content of the document/email.',
|
||||
required: false,
|
||||
}),
|
||||
body_plain: Property.LongText({
|
||||
displayName: 'Body Plain',
|
||||
description: 'The plain text content of the document/email.',
|
||||
required: false,
|
||||
}),
|
||||
message_headers: Property.Object({
|
||||
displayName: 'Message Headers',
|
||||
description:
|
||||
'A JSON object representing the email headers (key-value pairs).',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run({ auth: apiKey, propsValue }) {
|
||||
const { message_headers, ...rest } = propsValue;
|
||||
return await parseurCommon.createDocument({
|
||||
apiKey:apiKey.secret_text,
|
||||
...rest,
|
||||
message_headers: message_headers
|
||||
? Object.fromEntries(
|
||||
Object.entries(message_headers).map(([k, v]) => [k, String(v)])
|
||||
)
|
||||
: undefined,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,29 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { parseurAuth, parseurCommon } from '../common';
|
||||
import { parserDropdown } from '../common/properties';
|
||||
|
||||
export const findDocument = createAction({
|
||||
auth: parseurAuth,
|
||||
name: 'findDocument',
|
||||
displayName: 'Find Document',
|
||||
description: 'Finds a document based on search param.',
|
||||
props: {
|
||||
parserId: parserDropdown({ required: true }),
|
||||
search: Property.ShortText({
|
||||
displayName: 'Search',
|
||||
description:
|
||||
'The search term to filter documents by name. Case insensitive. If empty, all documents are returned.',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run({ auth: apiKey, propsValue: { parserId, search } }) {
|
||||
if (!parserId) {
|
||||
throw new Error('Parser ID is required');
|
||||
}
|
||||
return await parseurCommon.listDocuments({
|
||||
apiKey:apiKey.secret_text,
|
||||
parserId,
|
||||
search,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,20 @@
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { parseurAuth, parseurCommon } from '../common';
|
||||
import { documentDropdown, parserDropdown } from '../common/properties';
|
||||
|
||||
export const getParsedDocumentById = createAction({
|
||||
auth: parseurAuth,
|
||||
name: 'getParsedDocumentById',
|
||||
displayName: 'Get Parsed Document by ID',
|
||||
description: 'Fetch parsed JSON / structured output for a given document ID',
|
||||
props: {
|
||||
parserId: parserDropdown({ required: true }),
|
||||
documentId: documentDropdown({ required: true }),
|
||||
},
|
||||
async run({ auth: apiKey, propsValue: { documentId } }) {
|
||||
if (!documentId) {
|
||||
throw new Error('Document ID is required');
|
||||
}
|
||||
return await parseurCommon.getDocument({ apiKey: apiKey.secret_text, documentId });
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,24 @@
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { parseurAuth, parseurCommon } from '../common';
|
||||
import { documentDropdown, parserDropdown } from '../common/properties';
|
||||
|
||||
export const reprocessDocument = createAction({
|
||||
auth: parseurAuth,
|
||||
name: 'reprocessDocument',
|
||||
displayName: 'Reprocess Document',
|
||||
description:
|
||||
'Send an existing document back through parsing (e.g. after updating template).',
|
||||
props: {
|
||||
parserId: parserDropdown({ required: true }),
|
||||
documentId: documentDropdown({ required: true }),
|
||||
},
|
||||
async run({ auth: apiKey, propsValue: { documentId } }) {
|
||||
if (!documentId) {
|
||||
throw new Error('Document ID is required');
|
||||
}
|
||||
return await parseurCommon.reprocessDocument({
|
||||
apiKey:apiKey.secret_text,
|
||||
documentId,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,189 @@
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { PieceAuth } from '@activepieces/pieces-framework';
|
||||
import {
|
||||
CreateDocumentFromFileParams,
|
||||
CreateDocumentFromFileResponse,
|
||||
CreateDocumentParams,
|
||||
CreateDocumentResponse,
|
||||
CreateWebhookParams,
|
||||
CreateWebhookResponse,
|
||||
DeleteWebhookParams,
|
||||
EnableWebhookParams,
|
||||
GetParsedDocumentByIdParams,
|
||||
GetParsedDocumentByIdResponse,
|
||||
ListDocumentsParams,
|
||||
ListDocumentsResponse,
|
||||
ListMailboxesParams,
|
||||
ListMailboxesResponse,
|
||||
ReprocessDocumentParams,
|
||||
ReprocessDocumentResponse,
|
||||
} from './types';
|
||||
|
||||
export const parseurAuth = PieceAuth.SecretText({
|
||||
displayName: 'API Key',
|
||||
description:
|
||||
'Create a new API key in Account → API keys in the Parseur app: https://app.parseur.com/account/api-keys',
|
||||
required: true,
|
||||
});
|
||||
|
||||
export const parseurCommon = {
|
||||
baseUrl: 'https://api.parseur.com',
|
||||
endpoints: {
|
||||
listDocuments: (parserId: number) => `/parser/${parserId}/document_set`,
|
||||
getParsedDocumentById: (documentId: string) => `/document/${documentId}`,
|
||||
createDocument: '/email',
|
||||
createDocumentFromFile: (parserId: number) => `/parser/${parserId}/upload`,
|
||||
reprocessDocument: (documentId: string) =>
|
||||
`/document/${documentId}/process`,
|
||||
listMailboxes: '/parser',
|
||||
createWebhook: '/webhook',
|
||||
enableWebhook: (webhookId: number, mailboxId: number) =>
|
||||
`/parser/${mailboxId}/webhook_set/${webhookId}`,
|
||||
deleteWebhook: (webhookId: number) => `/webhook/${webhookId}`,
|
||||
},
|
||||
getHeaders: (apiKey: string) => {
|
||||
return {
|
||||
Authorization: apiKey,
|
||||
'Content-Type': 'application/json',
|
||||
};
|
||||
},
|
||||
// API methods
|
||||
listDocuments: async ({
|
||||
apiKey,
|
||||
parserId,
|
||||
...queryParams
|
||||
}: ListDocumentsParams) => {
|
||||
const { page, page_size, with_result, ...rest } = queryParams;
|
||||
const parsedQuery = {
|
||||
...(page != undefined ? { page: String(page) } : {}),
|
||||
...(page_size != undefined ? { page_size: String(page_size) } : {}),
|
||||
...(with_result != undefined ? { with_result: String(with_result) } : {}),
|
||||
...rest,
|
||||
};
|
||||
const response = await httpClient.sendRequest<ListDocumentsResponse>({
|
||||
method: HttpMethod.GET,
|
||||
url:
|
||||
parseurCommon.baseUrl + parseurCommon.endpoints.listDocuments(parserId),
|
||||
headers: parseurCommon.getHeaders(apiKey),
|
||||
queryParams: parsedQuery,
|
||||
});
|
||||
return response.body;
|
||||
},
|
||||
getDocument: async ({ apiKey, documentId }: GetParsedDocumentByIdParams) => {
|
||||
const response =
|
||||
await httpClient.sendRequest<GetParsedDocumentByIdResponse>({
|
||||
method: HttpMethod.GET,
|
||||
url:
|
||||
parseurCommon.baseUrl +
|
||||
parseurCommon.endpoints.getParsedDocumentById(documentId),
|
||||
headers: parseurCommon.getHeaders(apiKey),
|
||||
});
|
||||
return response.body;
|
||||
},
|
||||
createDocument: async ({
|
||||
apiKey,
|
||||
...documentParams
|
||||
}: CreateDocumentParams) => {
|
||||
const response = await httpClient.sendRequest<CreateDocumentResponse>({
|
||||
method: HttpMethod.POST,
|
||||
url: parseurCommon.baseUrl + parseurCommon.endpoints.createDocument,
|
||||
headers: parseurCommon.getHeaders(apiKey),
|
||||
body: documentParams,
|
||||
});
|
||||
return response.body;
|
||||
},
|
||||
createDocumentFromFile: async ({
|
||||
apiKey,
|
||||
file,
|
||||
parserId,
|
||||
}: CreateDocumentFromFileParams) => {
|
||||
const data = new FormData();
|
||||
const uint8 = new Uint8Array(file.data);
|
||||
data.append('file', new Blob([uint8]), file.filename);
|
||||
data.append('parserId', String(parserId));
|
||||
const response =
|
||||
await httpClient.sendRequest<CreateDocumentFromFileResponse>({
|
||||
method: HttpMethod.POST,
|
||||
url:
|
||||
parseurCommon.baseUrl +
|
||||
parseurCommon.endpoints.createDocumentFromFile(parserId),
|
||||
headers: {
|
||||
...parseurCommon.getHeaders(apiKey),
|
||||
'Content-Type': 'multipart/form-data',
|
||||
},
|
||||
body: data,
|
||||
});
|
||||
return response.body;
|
||||
},
|
||||
reprocessDocument: async ({
|
||||
apiKey,
|
||||
documentId,
|
||||
}: ReprocessDocumentParams) => {
|
||||
const response = await httpClient.sendRequest<ReprocessDocumentResponse>({
|
||||
method: HttpMethod.POST,
|
||||
url:
|
||||
parseurCommon.baseUrl +
|
||||
parseurCommon.endpoints.reprocessDocument(documentId),
|
||||
headers: parseurCommon.getHeaders(apiKey),
|
||||
});
|
||||
return response.body;
|
||||
},
|
||||
listMailboxes: async ({ apiKey, ...queryParams }: ListMailboxesParams) => {
|
||||
const { page, page_size, ...rest } = queryParams;
|
||||
const parsedQuery = {
|
||||
...(page != undefined ? { page: String(page) } : {}),
|
||||
...(page_size != undefined ? { page_size: String(page_size) } : {}),
|
||||
...rest,
|
||||
};
|
||||
const response = await httpClient.sendRequest<ListMailboxesResponse>({
|
||||
method: HttpMethod.GET,
|
||||
url: parseurCommon.baseUrl + parseurCommon.endpoints.listMailboxes,
|
||||
headers: parseurCommon.getHeaders(apiKey),
|
||||
queryParams: parsedQuery,
|
||||
});
|
||||
return response.body;
|
||||
},
|
||||
createWebhook: async ({ apiKey, ...webhookParams }: CreateWebhookParams) => {
|
||||
const reponse = await httpClient.sendRequest<CreateWebhookResponse>({
|
||||
method: HttpMethod.POST,
|
||||
url: parseurCommon.baseUrl + parseurCommon.endpoints.createWebhook,
|
||||
headers: parseurCommon.getHeaders(apiKey),
|
||||
body: webhookParams,
|
||||
});
|
||||
return reponse.body;
|
||||
},
|
||||
enableWebhook: async ({
|
||||
apiKey,
|
||||
webhookId,
|
||||
mailboxId,
|
||||
}: EnableWebhookParams) => {
|
||||
const response = await httpClient.sendRequest<void>({
|
||||
method: HttpMethod.POST,
|
||||
url:
|
||||
parseurCommon.baseUrl +
|
||||
parseurCommon.endpoints.enableWebhook(webhookId, mailboxId),
|
||||
headers: parseurCommon.getHeaders(apiKey),
|
||||
});
|
||||
if (response.status === 200 || response.status === 204) {
|
||||
return { success: true };
|
||||
} else {
|
||||
return { success: false };
|
||||
}
|
||||
},
|
||||
deleteWebhook: async ({ apiKey, webhookId }: DeleteWebhookParams) => {
|
||||
const response = await httpClient.sendRequest<void>({
|
||||
method: HttpMethod.DELETE,
|
||||
url:
|
||||
parseurCommon.baseUrl +
|
||||
parseurCommon.endpoints.deleteWebhook(webhookId),
|
||||
headers: parseurCommon.getHeaders(apiKey),
|
||||
});
|
||||
if (response.status === 200 || response.status === 204) {
|
||||
return { success: true };
|
||||
} else {
|
||||
return { success: false };
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
// Common Properties
|
||||
@@ -0,0 +1,97 @@
|
||||
import { Property } from '@activepieces/pieces-framework';
|
||||
import { parseurAuth, parseurCommon } from '.';
|
||||
|
||||
export const parserDropdown = ({ required = true }) =>
|
||||
Property.Dropdown({
|
||||
auth: parseurAuth,
|
||||
displayName: 'Parser',
|
||||
description: 'Select the parser',
|
||||
required,
|
||||
refreshers: ['auth'],
|
||||
refreshOnSearch: true,
|
||||
options: async ({ auth: apiKey }, { searchValue: search }) => {
|
||||
if (!apiKey) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select an API Key first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
if (search != undefined) {
|
||||
const response = await parseurCommon.listMailboxes({
|
||||
apiKey: apiKey.secret_text,
|
||||
search,
|
||||
});
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.results.map((parser) => ({
|
||||
label: parser.name,
|
||||
value: parser.id,
|
||||
})),
|
||||
};
|
||||
} else {
|
||||
const response = await parseurCommon.listMailboxes({
|
||||
apiKey: apiKey.secret_text,
|
||||
});
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.results.map((parser) => ({
|
||||
label: parser.name,
|
||||
value: parser.id,
|
||||
})),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export const documentDropdown = ({ required = true }) =>
|
||||
Property.Dropdown({
|
||||
auth: parseurAuth,
|
||||
displayName: 'Document',
|
||||
description: 'Select the document',
|
||||
required,
|
||||
refreshers: ['auth', 'parserId'],
|
||||
refreshOnSearch: true,
|
||||
options: async ({ auth: apiKey, parserId }, { searchValue: search }) => {
|
||||
if (!apiKey) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select an API Key first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
if (!parserId) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select a Parser first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
if (search != undefined) {
|
||||
const response = await parseurCommon.listDocuments({
|
||||
apiKey: apiKey.secret_text,
|
||||
parserId: parserId as number,
|
||||
search,
|
||||
});
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.results.map((document) => ({
|
||||
label: document.name,
|
||||
value: document.id.toString(),
|
||||
})),
|
||||
};
|
||||
} else {
|
||||
const response = await parseurCommon.listDocuments({
|
||||
apiKey: apiKey.secret_text,
|
||||
parserId: parserId as number,
|
||||
});
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.results.map((document) => ({
|
||||
label: document.name,
|
||||
value: document.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,382 @@
|
||||
import { ApFile } from '@activepieces/pieces-framework';
|
||||
|
||||
// Common Types
|
||||
export interface AuthenticationParams {
|
||||
apiKey: string;
|
||||
}
|
||||
|
||||
type TemplateSample = {
|
||||
template_id: number;
|
||||
name: string;
|
||||
sample_count: number;
|
||||
};
|
||||
|
||||
type OcrPage = {
|
||||
image: {
|
||||
url: string;
|
||||
width: number;
|
||||
height: number;
|
||||
content_type: string;
|
||||
};
|
||||
position: number;
|
||||
included_in_range: boolean;
|
||||
};
|
||||
|
||||
type Webhook = {
|
||||
id: number;
|
||||
event:
|
||||
| 'document.processed'
|
||||
| 'document.processed.flattened'
|
||||
| 'document.template_needed'
|
||||
| 'document.export_failed'
|
||||
| 'table.processed';
|
||||
target: string;
|
||||
name: string;
|
||||
headers: Record<string, string>;
|
||||
category: 'CUSTOM' | 'ZAPIER' | 'MAKE' | 'FLOW' | 'N8N';
|
||||
parser_field_set: string[];
|
||||
};
|
||||
|
||||
interface BaseParser {
|
||||
account_uuid: string;
|
||||
ai_engine: string;
|
||||
attachments_only: boolean;
|
||||
attachments_only_override: null;
|
||||
can_transform: boolean;
|
||||
disable_deskew: boolean;
|
||||
enable_layouted_text: boolean;
|
||||
enable_image_ocr: boolean;
|
||||
document_count: number;
|
||||
document_per_status_count: {
|
||||
INCOMING: number;
|
||||
ANALYZING: number;
|
||||
PROGRESS: number;
|
||||
PARSEDOK: number;
|
||||
PARSEDKO: number;
|
||||
QUOTAEXC: number;
|
||||
SKIPPED: number;
|
||||
SPLIT: number;
|
||||
DELETED: number;
|
||||
EXPORTKO: number;
|
||||
TRANSKO: number;
|
||||
INVALID: number;
|
||||
};
|
||||
email_prefix: string;
|
||||
even_pages: boolean;
|
||||
force_ocr: boolean;
|
||||
id: number;
|
||||
is_master: boolean;
|
||||
last_activity: string;
|
||||
name: string;
|
||||
odd_pages: boolean;
|
||||
page_range_set: string[];
|
||||
parser_object_count: number;
|
||||
parser_object_set_last_modified: null;
|
||||
process_attachments: boolean;
|
||||
retention_policy: number;
|
||||
template_count: number;
|
||||
webhook_count: number;
|
||||
attachments_field: boolean;
|
||||
original_document_field: boolean;
|
||||
searchable_pdf_field: boolean;
|
||||
headers_field: boolean;
|
||||
received_field: boolean;
|
||||
received_date_field: boolean;
|
||||
received_time_field: boolean;
|
||||
processed_field: boolean;
|
||||
processed_date_field: boolean;
|
||||
processed_time_field: boolean;
|
||||
sender_field: boolean;
|
||||
sender_name_field: boolean;
|
||||
split_page_range_field: boolean;
|
||||
recipient_field: boolean;
|
||||
to_field: boolean;
|
||||
cc_field: boolean;
|
||||
bcc_field: boolean;
|
||||
reply_to_field: boolean;
|
||||
recipient_suffix_field: boolean;
|
||||
original_recipient_field: boolean;
|
||||
subject_field: boolean;
|
||||
template_field: boolean;
|
||||
html_document_field: boolean;
|
||||
text_document_field: boolean;
|
||||
content_field: boolean;
|
||||
last_reply_field: boolean;
|
||||
document_id_field: boolean;
|
||||
parent_id_field: boolean;
|
||||
document_url_field: boolean;
|
||||
public_document_url_field: boolean;
|
||||
page_count_field: boolean;
|
||||
credit_count_field: boolean;
|
||||
mailbox_id_field: boolean;
|
||||
parsing_engine_field: boolean;
|
||||
}
|
||||
|
||||
interface Parser extends BaseParser {
|
||||
split_keywords: null;
|
||||
split_page: null;
|
||||
split_page_range_set: string[];
|
||||
available_webhook_set: string[];
|
||||
webhook_set: string[];
|
||||
table_set: string[];
|
||||
}
|
||||
|
||||
interface ParserDiet extends BaseParser {
|
||||
split_keywords: { keyword: string; is_before: boolean }[] | null;
|
||||
split_page: number | null;
|
||||
split_page_range_set: { start_index: number; end_index: number }[];
|
||||
template_count: number;
|
||||
webhook_count: number;
|
||||
attachments_field: boolean;
|
||||
original_document_field: boolean;
|
||||
available_webhook_set: Webhook[];
|
||||
webhook_set: Webhook[];
|
||||
table_set: { id: string; name: string }[];
|
||||
}
|
||||
|
||||
interface Document {
|
||||
attached_to: null;
|
||||
id: number;
|
||||
match_master_template: boolean;
|
||||
name: string;
|
||||
ocr_ready_url: null;
|
||||
original_document_url: string;
|
||||
parser: number;
|
||||
processed: string;
|
||||
received: string;
|
||||
sample_set: string[];
|
||||
status_source: string;
|
||||
status: string;
|
||||
template: null;
|
||||
credits_used: number;
|
||||
conventional_credits_used: number;
|
||||
ai_credits_used: number;
|
||||
is_ai_ready: boolean;
|
||||
is_ocr_ready: boolean;
|
||||
is_processable: boolean;
|
||||
is_splittable: boolean;
|
||||
is_split: boolean;
|
||||
json_download_url: string;
|
||||
csv_download_url: string;
|
||||
xls_download_url: string;
|
||||
}
|
||||
|
||||
interface DocumentDiet {
|
||||
attached_to: number | null;
|
||||
id: number;
|
||||
name: string;
|
||||
match_master_template: boolean;
|
||||
ocr_ready_url: string | null;
|
||||
original_document_url: string;
|
||||
parser: number;
|
||||
processed: string;
|
||||
received: string;
|
||||
sample_set: TemplateSample[];
|
||||
status_source: 'AI' | 'AUTO' | 'CSV' | 'METADATA' | 'TEMPLATE' | 'TRANSFORM';
|
||||
status:
|
||||
| 'INCOMING'
|
||||
| 'ANALYZING'
|
||||
| 'PROGRESS'
|
||||
| 'PARSEDOK'
|
||||
| 'PARSEDKO'
|
||||
| 'SKIPPED'
|
||||
| 'SPLIT'
|
||||
| 'EXPORTKO'
|
||||
| 'TRANSKO'
|
||||
| 'INVALID';
|
||||
template: number | null;
|
||||
credits_used: number;
|
||||
conventional_credits_used: number;
|
||||
ai_credits_used: number;
|
||||
is_ai_ready: boolean;
|
||||
is_ocr_ready: boolean;
|
||||
is_processable: boolean;
|
||||
is_splittable: boolean;
|
||||
is_split: boolean;
|
||||
json_download_url: string;
|
||||
csv_download_url: string;
|
||||
xls_download_url: string;
|
||||
result: string | null;
|
||||
}
|
||||
|
||||
export interface WebhookInformation {
|
||||
webhookId: number;
|
||||
}
|
||||
// API Types
|
||||
export interface ListDocumentsParams extends AuthenticationParams {
|
||||
parserId: number;
|
||||
page?: number;
|
||||
page_size?: number;
|
||||
search?: string;
|
||||
ordering?:
|
||||
| 'name'
|
||||
| '-name'
|
||||
| 'created'
|
||||
| '-created'
|
||||
| 'processed'
|
||||
| '-processed'
|
||||
| 'status'
|
||||
| '-status';
|
||||
received_after?: string; // yyyy-mm-dd
|
||||
received_before?: string; // yyyy-mm-dd
|
||||
tz?: string; // Example: "Asia/Singapore"
|
||||
with_result?: boolean;
|
||||
}
|
||||
|
||||
export interface ListDocumentsResponse {
|
||||
count: number;
|
||||
current: number;
|
||||
total: number;
|
||||
results: (DocumentDiet | Document)[];
|
||||
}
|
||||
|
||||
export interface GetParsedDocumentByIdParams extends AuthenticationParams {
|
||||
documentId: string;
|
||||
}
|
||||
|
||||
export interface GetParsedDocumentByIdResponse {
|
||||
attached_to: number | null;
|
||||
id: number;
|
||||
match_master_template: boolean;
|
||||
name: string;
|
||||
ocr_ready_url: string | null;
|
||||
original_document_url: string;
|
||||
parser: number;
|
||||
processed: string;
|
||||
received: string;
|
||||
sample_set: TemplateSample[];
|
||||
status_source: 'AI' | 'AUTO' | 'CSV' | 'METADATA' | 'TEMPLATE' | 'TRANSFORM';
|
||||
status:
|
||||
| 'INCOMING'
|
||||
| 'ANALYZING'
|
||||
| 'PROGRESS'
|
||||
| 'PARSEDOK'
|
||||
| 'PARSEDKO'
|
||||
| 'SKIPPED'
|
||||
| 'SPLIT'
|
||||
| 'EXPORTKO'
|
||||
| 'TRANSKO'
|
||||
| 'INVALID';
|
||||
template: number | null;
|
||||
credits_used: number;
|
||||
conventional_credits_used: number;
|
||||
ai_credits_used: number;
|
||||
is_ai_ready: boolean;
|
||||
is_ocr_ready: boolean;
|
||||
is_processable: boolean;
|
||||
is_splittable: boolean;
|
||||
json_download_url: string;
|
||||
csv_download_url: string;
|
||||
xls_download_url: string;
|
||||
result: string | null;
|
||||
content: string;
|
||||
next_id: number | null;
|
||||
previous_id: number | null;
|
||||
ocr_page_set: OcrPage[];
|
||||
}
|
||||
|
||||
export interface CreateDocumentParams extends AuthenticationParams {
|
||||
subject: string;
|
||||
from: string;
|
||||
recipient: string;
|
||||
to?: string;
|
||||
cc?: string;
|
||||
bcc?: string;
|
||||
body_html?: string;
|
||||
body_plain?: string;
|
||||
message_headers?: Record<string, string>;
|
||||
}
|
||||
|
||||
export interface CreateDocumentResponse {
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface CreateDocumentFromFileParams extends AuthenticationParams {
|
||||
parserId: number;
|
||||
file: ApFile;
|
||||
}
|
||||
|
||||
export interface CreateDocumentFromFileResponse {
|
||||
message: string;
|
||||
attachments: { name: string; DocumentID: string }[];
|
||||
}
|
||||
|
||||
export interface ReprocessDocumentParams extends AuthenticationParams {
|
||||
documentId: string;
|
||||
}
|
||||
|
||||
export interface ReprocessDocumentResponse {
|
||||
notification_set: {
|
||||
info: string[];
|
||||
};
|
||||
}
|
||||
|
||||
export interface ListMailboxesParams extends AuthenticationParams {
|
||||
page?: number;
|
||||
page_size?: number;
|
||||
search?: string;
|
||||
ordering?:
|
||||
| 'name'
|
||||
| '-name'
|
||||
| 'document_count'
|
||||
| '-document_count'
|
||||
| 'template_count'
|
||||
| '-template_count'
|
||||
| 'PARSEDOK_count'
|
||||
| '-PARSEDOK_count'
|
||||
| 'PARSEDKO_count'
|
||||
| '-PARSEDKO_count'
|
||||
| 'QUOTAEXC_count'
|
||||
| '-QUOTAEXC_count'
|
||||
| 'EXPORTKO_count'
|
||||
| '-EXPORTKO_count'
|
||||
| 'TRANSKO_count'
|
||||
| '-TRANSKO_count';
|
||||
}
|
||||
|
||||
export interface ListMailboxesResponse {
|
||||
count: number;
|
||||
current: number;
|
||||
total: number;
|
||||
results: (ParserDiet | Parser)[];
|
||||
}
|
||||
|
||||
export interface CreateWebhookParams extends AuthenticationParams {
|
||||
event:
|
||||
| 'document.processed'
|
||||
| 'document.processed.flattened'
|
||||
| 'document.template_needed'
|
||||
| 'document.export_failed'
|
||||
| 'table.processed';
|
||||
target: string;
|
||||
name?: string;
|
||||
headers?: Record<string, string>;
|
||||
category: 'CUSTOM' | 'ZAPIER' | 'MAKE' | 'FLOW' | 'N8N';
|
||||
parser_field_set?: string[];
|
||||
}
|
||||
|
||||
export interface CreateWebhookResponse {
|
||||
id: number;
|
||||
event:
|
||||
| 'document.processed'
|
||||
| 'document.processed.flattened'
|
||||
| 'document.template_needed'
|
||||
| 'document.export_failed'
|
||||
| 'table.processed';
|
||||
target: string;
|
||||
name: string;
|
||||
headers: Record<string, string>;
|
||||
category: 'CUSTOM' | 'ZAPIER' | 'MAKE' | 'FLOW' | 'N8N';
|
||||
parser_field_set: string[];
|
||||
}
|
||||
|
||||
export interface EnableWebhookParams extends AuthenticationParams {
|
||||
webhookId: number;
|
||||
mailboxId: number;
|
||||
}
|
||||
|
||||
export interface DeleteWebhookParams extends AuthenticationParams {
|
||||
webhookId: number;
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
|
||||
import { parseurAuth, parseurCommon } from '../common';
|
||||
import { parserDropdown } from '../common/properties';
|
||||
import { WebhookInformation } from '../common/types';
|
||||
|
||||
export const newDocumentExportFailed = createTrigger({
|
||||
auth: parseurAuth,
|
||||
name: 'newDocumentExportFailed',
|
||||
displayName: 'New Document Export Failed',
|
||||
description:
|
||||
'Fires when an automated export endpoint (webhook / integration) fails for a processed document.',
|
||||
props: { mailboxId: parserDropdown({ required: true }) },
|
||||
sampleData: {},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(context) {
|
||||
const response = await parseurCommon.createWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
event: 'document.export_failed',
|
||||
target: context.webhookUrl,
|
||||
category: 'CUSTOM',
|
||||
});
|
||||
await parseurCommon.enableWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
webhookId: response.id,
|
||||
mailboxId: context.propsValue.mailboxId as number,
|
||||
});
|
||||
await context.store.put<WebhookInformation>('_newDocumentExportFailed', {
|
||||
webhookId: response.id,
|
||||
});
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhookInfo = await context.store.get<WebhookInformation>(
|
||||
'_newDocumentExportFailed'
|
||||
);
|
||||
if (!webhookInfo) {
|
||||
return;
|
||||
}
|
||||
await parseurCommon.deleteWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
webhookId: webhookInfo.webhookId,
|
||||
});
|
||||
await context.store.delete('_newDocumentExportFailed');
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,49 @@
|
||||
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
|
||||
import { parseurAuth, parseurCommon } from '../common';
|
||||
import { parserDropdown } from '../common/properties';
|
||||
import { WebhookInformation } from '../common/types';
|
||||
|
||||
export const newDocumentNotProcessed = createTrigger({
|
||||
auth: parseurAuth,
|
||||
name: 'newDocumentNotProcessed',
|
||||
displayName: 'New Document Not Processed',
|
||||
description:
|
||||
'Fires when Parseur fails to parse a document (e.g. no matching template).',
|
||||
props: {
|
||||
mailboxId: parserDropdown({ required: false }),
|
||||
},
|
||||
sampleData: {},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(context) {
|
||||
const response = await parseurCommon.createWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
event: 'document.template_needed',
|
||||
target: context.webhookUrl,
|
||||
category: 'CUSTOM',
|
||||
});
|
||||
await parseurCommon.enableWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
webhookId: response.id,
|
||||
mailboxId: context.propsValue.mailboxId as number,
|
||||
});
|
||||
await context.store.put<WebhookInformation>('_newDocumentNotProcessed', {
|
||||
webhookId: response.id,
|
||||
});
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhookInfo = await context.store.get<WebhookInformation>(
|
||||
'_newDocumentNotProcessed'
|
||||
);
|
||||
if (!webhookInfo) {
|
||||
return;
|
||||
}
|
||||
await parseurCommon.deleteWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
webhookId: webhookInfo.webhookId,
|
||||
});
|
||||
await context.store.delete('_newDocumentNotProcessed');
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,49 @@
|
||||
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
|
||||
import { parseurAuth, parseurCommon } from '../common';
|
||||
import { parserDropdown } from '../common/properties';
|
||||
import { WebhookInformation } from '../common/types';
|
||||
|
||||
export const newDocumentProcessed = createTrigger({
|
||||
auth: parseurAuth,
|
||||
name: 'newDocumentProcessed',
|
||||
displayName: 'New Document Processed',
|
||||
description:
|
||||
'Fires when a new document is successfully processed and parsed by Parseur.',
|
||||
props: {
|
||||
mailboxId: parserDropdown({ required: true }),
|
||||
},
|
||||
sampleData: {},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(context) {
|
||||
const webhookCreateResponse = await parseurCommon.createWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
event: 'document.processed',
|
||||
target: context.webhookUrl,
|
||||
category: 'CUSTOM',
|
||||
});
|
||||
await parseurCommon.enableWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
webhookId: webhookCreateResponse.id,
|
||||
mailboxId: context.propsValue.mailboxId as number,
|
||||
});
|
||||
await context.store.put<WebhookInformation>('_newDocumentProcessed', {
|
||||
webhookId: webhookCreateResponse.id,
|
||||
});
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhookInfo = await context.store.get<WebhookInformation>(
|
||||
'_newDocumentProcessed'
|
||||
);
|
||||
if (!webhookInfo) {
|
||||
return;
|
||||
}
|
||||
await parseurCommon.deleteWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
webhookId: webhookInfo.webhookId,
|
||||
});
|
||||
await context.store.delete('_newDocumentProcessed');
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,55 @@
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
} from '@activepieces/pieces-common';
|
||||
import {
|
||||
AppConnectionValueForAuthProperty,
|
||||
createTrigger,
|
||||
PiecePropValueSchema,
|
||||
TriggerStrategy,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { parseurAuth, parseurCommon } from '../common';
|
||||
|
||||
const polling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof parseurAuth>,
|
||||
Record<string, never>
|
||||
> = {
|
||||
strategy: DedupeStrategy.LAST_ITEM,
|
||||
items: async ({ auth: apiKey }) => {
|
||||
const response = await parseurCommon.listMailboxes({
|
||||
apiKey: apiKey.secret_text,
|
||||
});
|
||||
const items = response.results;
|
||||
return items.map((item) => ({
|
||||
id: item.id,
|
||||
data: item,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newMailbox = createTrigger({
|
||||
auth: parseurAuth,
|
||||
name: 'newMailbox',
|
||||
displayName: 'New Mailbox',
|
||||
description: 'Fires when a new mailbox is created in the Parseur account.',
|
||||
props: {},
|
||||
sampleData: {},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onEnable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onDisable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,49 @@
|
||||
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
|
||||
import { parseurAuth, parseurCommon } from '../common';
|
||||
import { parserDropdown } from '../common/properties';
|
||||
import { WebhookInformation } from '../common/types';
|
||||
|
||||
export const newTableFieldProcessed = createTrigger({
|
||||
auth: parseurAuth,
|
||||
name: 'newTableFieldProcessed',
|
||||
displayName: 'New Table Field Processed',
|
||||
description:
|
||||
'Fires when a document with table fields is processed, and triggers for each row (table field) separately.',
|
||||
props: {
|
||||
mailboxId: parserDropdown({ required: true }),
|
||||
},
|
||||
sampleData: {},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(context) {
|
||||
const response = await parseurCommon.createWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
event: 'table.processed',
|
||||
target: context.webhookUrl,
|
||||
category: 'CUSTOM',
|
||||
});
|
||||
await parseurCommon.enableWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
webhookId: response.id,
|
||||
mailboxId: context.propsValue.mailboxId as number,
|
||||
});
|
||||
await context.store.put<WebhookInformation>('_newTableFieldProcessed', {
|
||||
webhookId: response.id,
|
||||
});
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhookInfo = await context.store.get<WebhookInformation>(
|
||||
'_newTableFieldProcessed'
|
||||
);
|
||||
if (!webhookInfo) {
|
||||
return;
|
||||
}
|
||||
await parseurCommon.deleteWebhook({
|
||||
apiKey: context.auth.secret_text,
|
||||
webhookId: webhookInfo.webhookId,
|
||||
});
|
||||
await context.store.delete('_newTableFieldProcessed');
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user