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,33 @@
|
||||
{
|
||||
"extends": [
|
||||
"../../../../.eslintrc.base.json"
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"!**/*"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx",
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
# pieces-extracta-ai
|
||||
|
||||
This library was generated with [Nx](https://nx.dev).
|
||||
|
||||
## Building
|
||||
|
||||
Run `nx build pieces-extracta-ai` to build the library.
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "@activepieces/piece-extracta-ai",
|
||||
"version": "0.0.3",
|
||||
"type": "commonjs",
|
||||
"main": "./src/index.js",
|
||||
"types": "./src/index.d.ts",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"name": "pieces-extracta-ai",
|
||||
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
|
||||
"sourceRoot": "packages/pieces/community/extracta-ai/src",
|
||||
"projectType": "library",
|
||||
"release": {
|
||||
"version": {
|
||||
"manifestRootsToUpdate": [
|
||||
"dist/{projectRoot}"
|
||||
],
|
||||
"currentVersionResolver": "git-tag",
|
||||
"fallbackCurrentVersionResolver": "disk"
|
||||
}
|
||||
},
|
||||
"tags": [],
|
||||
"targets": {
|
||||
"build": {
|
||||
"executor": "@nx/js:tsc",
|
||||
"outputs": [
|
||||
"{options.outputPath}"
|
||||
],
|
||||
"options": {
|
||||
"outputPath": "dist/packages/pieces/community/extracta-ai",
|
||||
"tsConfig": "packages/pieces/community/extracta-ai/tsconfig.lib.json",
|
||||
"packageJson": "packages/pieces/community/extracta-ai/package.json",
|
||||
"main": "packages/pieces/community/extracta-ai/src/index.ts",
|
||||
"assets": [
|
||||
"packages/pieces/community/extracta-ai/*.md",
|
||||
{
|
||||
"input": "packages/pieces/community/extracta-ai/src/i18n",
|
||||
"output": "./src/i18n",
|
||||
"glob": "**/!(i18n.json)"
|
||||
}
|
||||
],
|
||||
"buildableProjectDepsInPackageJsonType": "dependencies",
|
||||
"updateBuildableProjectDepsInPackageJson": true
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build",
|
||||
"prebuild"
|
||||
]
|
||||
},
|
||||
"nx-release-publish": {
|
||||
"options": {
|
||||
"packageRoot": "dist/{projectRoot}"
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"executor": "@nx/eslint:lint",
|
||||
"outputs": [
|
||||
"{options.outputFile}"
|
||||
]
|
||||
},
|
||||
"prebuild": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"cwd": "packages/pieces/community/extracta-ai",
|
||||
"command": "bun install --no-save --silent"
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"An AI document extraction & content analysis platform that transforms unstructured files (PDFs, images, URLs, etc.) into structured data.": "Eine Plattform für Dokumentenextraktion und Inhaltsanalyse, die unstrukturierte Dateien (PDFs, Bilder, URLs, etc.) in strukturierte Daten umwandelt.",
|
||||
"Enter your Extracta-ai API key": "Geben Sie Ihren Extracta-ai API Schlüssel ein",
|
||||
"Extract File Data": "Datei-Daten extrahieren",
|
||||
"Upload File": "Datei hochladen",
|
||||
"Get Extraction Results": "Extraktionsergebnisse abrufen",
|
||||
"Upload a file and immediately receive extracted content": "Datei hochladen und entpackte Inhalte sofort erhalten",
|
||||
"Uploads document for extraction": "Dokument zur Extraktion hochladen",
|
||||
"Fetches successful data from extraction. Note: The API recommends a 2-second delay between requests to avoid rate-limiting.": "Ruft erfolgreiche Daten aus dem Extrahieren ab. Hinweis: Die API empfiehlt eine 2-Sekunden-Verzögerung zwischen den Anfragen, um eine Preisbegrenzung zu vermeiden.",
|
||||
"File": "Datei",
|
||||
"Extraction Name": "Name der Extraktion",
|
||||
"Language": "Sprache",
|
||||
"Fields to Extract": "Zu extrahierende Felder",
|
||||
"Description": "Beschreibung",
|
||||
"Has Table": "Hat Tisch",
|
||||
"Has Visuals": "Hat Visuelle",
|
||||
"Handwritten Text Recognition": "Handgeschriebene Texterkennung",
|
||||
"Checkbox Recognition": "Checkbox-Erkennung",
|
||||
"Long Document": "Langes Dokument",
|
||||
"Split PDF Pages": "PDF-Seiten teilen",
|
||||
"Specific Page Processing": "Spezifische Seitenbearbeitung",
|
||||
"Page From": "Seite von",
|
||||
"Page To": "Seite an",
|
||||
"Extraction ID": "Extraktions-ID",
|
||||
"Batch ID": "Batch-ID",
|
||||
"File ID": "Datei-ID",
|
||||
"The file to upload for extraction. Supported: PDF, images (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), text files (TXT)": "Die hochzuladende Datei. Unterstützt: PDF, Bilder (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), Textdateien (TXT)",
|
||||
"A descriptive name for the extraction": "Ein beschreibender Name für die Extraktion",
|
||||
"Document's language for accurate extraction. Extracta.ai supports multiple languages with advanced AI algorithms designed to parse linguistic nuances.": "Extracta.ai unterstützt mehrere Sprachen mit fortgeschrittenen KI-Algorithmen, um Sprachnuancen zu analysieren.",
|
||||
"Define the data fields you want to extract from documents": "Definieren Sie die Datenfelder, die Sie aus Dokumenten extrahieren möchten",
|
||||
"A description for the extraction": "Eine Beschreibung für die Extraktion",
|
||||
"Whether the document contains tables": "Gibt an, ob das Dokument Tabellen enthält",
|
||||
"Whether the document contains charts, graphs, or diagrams": "Ob das Dokument Diagramme, Grafiken oder Diagramme enthält",
|
||||
"Whether to recognize handwritten text": "Ob handgeschriebenen Text erkannt werden soll",
|
||||
"Whether to recognize checkboxes and their states": "Gibt an, ob Kontrollkästchen und deren Status erkannt werden sollen",
|
||||
"Enable for very large or complex documents": "Für sehr große oder komplexe Dokumente aktivieren",
|
||||
"Treat each PDF page as a separate extraction unit": "Jede PDF-Seite als separate Extraktionseinheit behandeln",
|
||||
"Extract only a specified range of pages": "Nur einen bestimmten Seitenbereich extrahieren",
|
||||
"Starting page number (required if Specific Page Processing is enabled)": "Startseitennummer (erforderlich, wenn bestimmte Seitenbearbeitung aktiviert ist)",
|
||||
"Ending page number (required if Specific Page Processing is enabled)": "Endseitennummer (erforderlich, wenn bestimmte Seitenbearbeitung aktiviert ist)",
|
||||
"Unique identifier for the extraction": "Eindeutiger Bezeichner für die Extraktion",
|
||||
"Document file to upload (PDF, images, etc.)": "Datei zum Hochladen (PDF, Bilder, etc.)",
|
||||
"The ID of the batch to add files to (optional). If not provided, a new batch will be created.": "Die ID des Batchs, zu dem Dateien hinzugefügt werden sollen (optional). Falls nicht angegeben, wird ein neuer Batch erstellt.",
|
||||
"The ID of the extraction": "Die ID der Extraktion",
|
||||
"The ID of the batch": "Die ID des Batches",
|
||||
"The ID of the file (optional). If provided, filters results to only that file.": "Die ID der Datei (optional). Wenn vorhanden, werden Ergebnisse nur in diese Datei gefiltert.",
|
||||
"Multi-Lingual": "Multi-Lingual",
|
||||
"Arabic": "Arabisch",
|
||||
"Bangla": "Bangla",
|
||||
"Bulgarian": "Bulgarisch",
|
||||
"Croatian": "Kroatisch",
|
||||
"Czech": "Tschechisch",
|
||||
"English": "Englisch",
|
||||
"Filipino": "Philippinisch",
|
||||
"French": "Französisch",
|
||||
"German": "Deutsch",
|
||||
"Hindi": "Hannah",
|
||||
"Hungarian": "Ungarisch",
|
||||
"Italian": "Italienisch",
|
||||
"Nepali": "Nepali",
|
||||
"Polish": "Polnisch",
|
||||
"Portuguese": "Portugiesisch",
|
||||
"Romanian": "Rumänisch",
|
||||
"Russian": "Russisch",
|
||||
"Serbian": "Serbisch",
|
||||
"Spanish": "Spanisch",
|
||||
"Turkish": "Türkisch",
|
||||
"Ukrainian": "Ukrainische",
|
||||
"Urdu": "Urdu",
|
||||
"Vietnamese": "Vietnamese",
|
||||
"New Document Processed": "Neues Dokument verarbeitet",
|
||||
"Extraction Failed": "Extraktion fehlgeschlagen",
|
||||
"Triggers when a document extraction is successfully processed.": "Wird ausgelöst, wenn eine Dokumentextraktion erfolgreich verarbeitet wird.",
|
||||
"Triggers when a document extraction fails.": "Wird ausgelöst, wenn eine Dokumentextraktion fehlschlägt.",
|
||||
"Markdown": "Markdown",
|
||||
"\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click *": "\nUm diesen Trigger zu verwenden, müssen Sie einen einzelnen Webhook-Endpunkt in Ihrer Extracta manuell einrichten. i Konto. Dieser Endpunkt wird alle Ereignisse empfangen und Activepieces filtern nach dem korrekten.\n\n. **Login** auf Ihrem Extracta.ai Dashboard.\n2. Navigiere zum Abschnitt **API** vom Seitenmenü.\n3. Scrolle nach unten zu **Webhook Einstellungen**.\n4. Klicke **\"Erstelle einen neuen Webhook\"** (oder bearbeite einen existierenden).\nFügen Sie die folgende URL in das Feld **Endpoint URL** ein:\n ```text\n {{webhookUrl}}\n ```\n6. Klicke **Speichern**. \n\n Dieser einzelne Webhook sendet nun alle Ereignisse an Activepieces. Dieser Trigger wird nur für das **'extraction.failed'** Event aktiviert.\n "
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"An AI document extraction & content analysis platform that transforms unstructured files (PDFs, images, URLs, etc.) into structured data.": "Una plataforma de extracción de documentos y análisis de contenido de IA que transforma archivos no estructurados (PDFs, imágenes, URLs, etc.) en datos estructurados.",
|
||||
"Enter your Extracta-ai API key": "Introduzca su clave API Extracta-ai",
|
||||
"Extract File Data": "Extraer datos de archivo",
|
||||
"Upload File": "Subir archivo",
|
||||
"Get Extraction Results": "Obtener resultados de extracción",
|
||||
"Upload a file and immediately receive extracted content": "Subir un archivo y recibir inmediatamente contenido extraído",
|
||||
"Uploads document for extraction": "Subir documento para la extracción",
|
||||
"Fetches successful data from extraction. Note: The API recommends a 2-second delay between requests to avoid rate-limiting.": "Obtiene datos exitosos de la extracción. Nota: La API recomienda un retardo de 2 segundos entre las solicitudes para evitar limitación de velocidad.",
|
||||
"File": "Archivo",
|
||||
"Extraction Name": "Nombre de la extracción",
|
||||
"Language": "Idioma",
|
||||
"Fields to Extract": "Campos a extraer",
|
||||
"Description": "Descripción",
|
||||
"Has Table": "Tiene Tabla",
|
||||
"Has Visuals": "Tiene Visuales",
|
||||
"Handwritten Text Recognition": "Reconocimiento de texto escrito",
|
||||
"Checkbox Recognition": "Reconocimiento de casilla",
|
||||
"Long Document": "Documento largo",
|
||||
"Split PDF Pages": "Dividir páginas PDF",
|
||||
"Specific Page Processing": "Procesamiento Específico de Página",
|
||||
"Page From": "Página de",
|
||||
"Page To": "Página a",
|
||||
"Extraction ID": "ID de extracción",
|
||||
"Batch ID": "ID de Lote",
|
||||
"File ID": "ID de archivo",
|
||||
"The file to upload for extraction. Supported: PDF, images (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), text files (TXT)": "El archivo a subir para la extracción. Soportado: PDF, imágenes (JPEG, PNG, TIFF, BMP), documentos Word (DOC, DOCX), archivos de texto (TXT)",
|
||||
"A descriptive name for the extraction": "Un nombre descriptivo para la extracción",
|
||||
"Document's language for accurate extraction. Extracta.ai supports multiple languages with advanced AI algorithms designed to parse linguistic nuances.": "El lenguaje de documento para una extracción precisa. Extracta.ai soporta múltiples idiomas con algoritmos de IA avanzados diseñados para analizar matices lingüísticos.",
|
||||
"Define the data fields you want to extract from documents": "Definir los campos de datos que desea extraer de los documentos",
|
||||
"A description for the extraction": "Una descripción para la extracción",
|
||||
"Whether the document contains tables": "Si el documento contiene tablas",
|
||||
"Whether the document contains charts, graphs, or diagrams": "Si el documento contiene gráficos, gráficos o diagramas",
|
||||
"Whether to recognize handwritten text": "Reconocer texto manuscrito",
|
||||
"Whether to recognize checkboxes and their states": "Si se reconocen las casillas de verificación y sus estados",
|
||||
"Enable for very large or complex documents": "Habilitar para documentos muy grandes o complejos",
|
||||
"Treat each PDF page as a separate extraction unit": "Tratar cada página PDF como una unidad de extracción separada",
|
||||
"Extract only a specified range of pages": "Extraer sólo un rango de páginas especificado",
|
||||
"Starting page number (required if Specific Page Processing is enabled)": "Número de página inicial (obligatorio si el procesamiento específico de página está habilitado)",
|
||||
"Ending page number (required if Specific Page Processing is enabled)": "Número de página final (obligatorio si está habilitado el procesamiento específico de página)",
|
||||
"Unique identifier for the extraction": "Identificador único para la extracción",
|
||||
"Document file to upload (PDF, images, etc.)": "Archivo de documento a subir (PDF, imágenes, etc.)",
|
||||
"The ID of the batch to add files to (optional). If not provided, a new batch will be created.": "El ID del lote al que añadir archivos (opcional). Si no se proporciona, se creará un nuevo lote de archivos.",
|
||||
"The ID of the extraction": "El ID de la extracción",
|
||||
"The ID of the batch": "El ID del lote",
|
||||
"The ID of the file (optional). If provided, filters results to only that file.": "El ID del archivo (opcional). Si se proporciona, los filtros sólo resultarán en ese archivo.",
|
||||
"Multi-Lingual": "Multi-Lingual",
|
||||
"Arabic": "Árabe",
|
||||
"Bangla": "Bangla",
|
||||
"Bulgarian": "Búlgaro",
|
||||
"Croatian": "Croata",
|
||||
"Czech": "Checo",
|
||||
"English": "Inglés",
|
||||
"Filipino": "Filipino",
|
||||
"French": "Francés",
|
||||
"German": "Alemán",
|
||||
"Hindi": "Hindú",
|
||||
"Hungarian": "Húngaro",
|
||||
"Italian": "Italiano",
|
||||
"Nepali": "Nepali",
|
||||
"Polish": "Polaco",
|
||||
"Portuguese": "Portugués",
|
||||
"Romanian": "Rumano",
|
||||
"Russian": "Ruso",
|
||||
"Serbian": "Serbio",
|
||||
"Spanish": "Español",
|
||||
"Turkish": "Turco",
|
||||
"Ukrainian": "Ucraniano",
|
||||
"Urdu": "Urdu",
|
||||
"Vietnamese": "Vietnamese",
|
||||
"New Document Processed": "Nuevo documento procesado",
|
||||
"Extraction Failed": "Extracción fallida",
|
||||
"Triggers when a document extraction is successfully processed.": "Activa cuando se procesa con éxito una extracción de documentos.",
|
||||
"Triggers when a document extraction fails.": "Dispara cuando un documento de extracción falla.",
|
||||
"Markdown": "Markdown",
|
||||
"\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click *": "\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click **Save**.\n\nThis single webhook will now send all events to Activepieces. This trigger will only activate for the **'extraction.failed'** event.\n "
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"An AI document extraction & content analysis platform that transforms unstructured files (PDFs, images, URLs, etc.) into structured data.": "Une plate-forme d'extraction de documents AI et d'analyse de contenu qui transforme les fichiers non structurés (PDFs, images, URLs, etc.) en données structurées.",
|
||||
"Enter your Extracta-ai API key": "Entrez votre clé API Extracta-ai",
|
||||
"Extract File Data": "Extraire les données du fichier",
|
||||
"Upload File": "Charger un fichier",
|
||||
"Get Extraction Results": "Obtenir les résultats d'extraction",
|
||||
"Upload a file and immediately receive extracted content": "Téléchargez un fichier et recevez immédiatement du contenu extrait",
|
||||
"Uploads document for extraction": "Téléversements de document pour l'extraction",
|
||||
"Fetches successful data from extraction. Note: The API recommends a 2-second delay between requests to avoid rate-limiting.": "Récupère les données réussies de l'extraction. Note : L'API recommande un délai de 2 secondes entre les requêtes pour éviter une limitation de débit.",
|
||||
"File": "Ficher",
|
||||
"Extraction Name": "Nom de l'extraction",
|
||||
"Language": "Langue",
|
||||
"Fields to Extract": "Champs à extraire",
|
||||
"Description": "Libellé",
|
||||
"Has Table": "A une table",
|
||||
"Has Visuals": "A des visuels",
|
||||
"Handwritten Text Recognition": "Reconnaissance du texte manuscrit",
|
||||
"Checkbox Recognition": "Reconnaissance de la case à cocher",
|
||||
"Long Document": "Document long",
|
||||
"Split PDF Pages": "Diviser les pages PDF",
|
||||
"Specific Page Processing": "Traitement de la page spécifique",
|
||||
"Page From": "Page de",
|
||||
"Page To": "Page vers",
|
||||
"Extraction ID": "ID d'extraction",
|
||||
"Batch ID": "ID de lot",
|
||||
"File ID": "ID du fichier",
|
||||
"The file to upload for extraction. Supported: PDF, images (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), text files (TXT)": "Le fichier à télécharger pour extraction. Pris en charge : PDF, images (JPEG, PNG, TIFF, BMP), docs Word (DOC, DOCX), fichiers texte (TXT)",
|
||||
"A descriptive name for the extraction": "Un nom descriptif pour l'extraction",
|
||||
"Document's language for accurate extraction. Extracta.ai supports multiple languages with advanced AI algorithms designed to parse linguistic nuances.": "Le langage du document pour une extraction précise. Extracta.ai prend en charge plusieurs langages avec des algorithmes IA avancés conçus pour analyser les nuances linguistiques.",
|
||||
"Define the data fields you want to extract from documents": "Définir les champs de données que vous souhaitez extraire des documents",
|
||||
"A description for the extraction": "Une description pour l'extraction",
|
||||
"Whether the document contains tables": "Si le document contient des tables",
|
||||
"Whether the document contains charts, graphs, or diagrams": "Si le document contient des graphiques, des graphiques ou des diagrammes",
|
||||
"Whether to recognize handwritten text": "S'il faut reconnaître le texte manuscrit",
|
||||
"Whether to recognize checkboxes and their states": "S'il faut reconnaître les cases à cocher et leurs états",
|
||||
"Enable for very large or complex documents": "Activer pour les documents très volumineux ou complexes",
|
||||
"Treat each PDF page as a separate extraction unit": "Traiter chaque page PDF comme une unité d'extraction séparée",
|
||||
"Extract only a specified range of pages": "Extraire seulement une plage de pages spécifiée",
|
||||
"Starting page number (required if Specific Page Processing is enabled)": "Numéro de page de départ (requis si le traitement de page spécifique est activé)",
|
||||
"Ending page number (required if Specific Page Processing is enabled)": "Numéro de page de fin (requis si le traitement de page spécifique est activé)",
|
||||
"Unique identifier for the extraction": "Identifiant unique pour l'extraction",
|
||||
"Document file to upload (PDF, images, etc.)": "Fichier de document à télécharger (PDF, images, etc.)",
|
||||
"The ID of the batch to add files to (optional). If not provided, a new batch will be created.": "L'ID du lot à ajouter aux fichiers (optionnel). Si non fourni, un nouveau lot sera créé.",
|
||||
"The ID of the extraction": "L'ID de l'extraction",
|
||||
"The ID of the batch": "L'ID du lot",
|
||||
"The ID of the file (optional). If provided, filters results to only that file.": "L'ID du fichier (optionnel). Si fourni, filtre uniquement ce fichier.",
|
||||
"Multi-Lingual": "Multi-Lingual",
|
||||
"Arabic": "Arabe",
|
||||
"Bangla": "Bangla",
|
||||
"Bulgarian": "Bulgare",
|
||||
"Croatian": "Croate",
|
||||
"Czech": "Tchèque",
|
||||
"English": "Anglais",
|
||||
"Filipino": "Philippin",
|
||||
"French": "Français",
|
||||
"German": "Allemand",
|
||||
"Hindi": "Hindi",
|
||||
"Hungarian": "Hongrois",
|
||||
"Italian": "Italien",
|
||||
"Nepali": "Nepali",
|
||||
"Polish": "Polonais",
|
||||
"Portuguese": "Portugais",
|
||||
"Romanian": "Roumain",
|
||||
"Russian": "Russe",
|
||||
"Serbian": "Serbe",
|
||||
"Spanish": "Espagnol",
|
||||
"Turkish": "Turc",
|
||||
"Ukrainian": "Ukrainien",
|
||||
"Urdu": "Ourdou",
|
||||
"Vietnamese": "Vietnamese",
|
||||
"New Document Processed": "Nouveau document traité",
|
||||
"Extraction Failed": "Échec de l'extraction",
|
||||
"Triggers when a document extraction is successfully processed.": "Déclenche lorsqu'un document est extrait avec succès.",
|
||||
"Triggers when a document extraction fails.": "Déclenche quand l'extraction d'un document échoue.",
|
||||
"Markdown": "Markdown",
|
||||
"\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click *": "\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click **Save**.\n\nThis single webhook will now send all events to Activepieces. This trigger will only activate for the **'extraction.failed'** event.\n "
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"An AI document extraction & content analysis platform that transforms unstructured files (PDFs, images, URLs, etc.) into structured data.": "構造化されていないファイル(PDF、画像、URLなど)を構造化データに変換するAIドキュメント抽出およびコンテンツ分析プラットフォーム。",
|
||||
"Enter your Extracta-ai API key": "Extracta-ai API キーを入力してください",
|
||||
"Extract File Data": "ファイルデータを抽出",
|
||||
"Upload File": "ファイルをアップロード",
|
||||
"Get Extraction Results": "抽出結果を取得",
|
||||
"Upload a file and immediately receive extracted content": "ファイルをアップロードし、抽出されたコンテンツをすぐに受信します",
|
||||
"Uploads document for extraction": "抽出用のドキュメントをアップロードする",
|
||||
"Fetches successful data from extraction. Note: The API recommends a 2-second delay between requests to avoid rate-limiting.": "抽出に成功したデータを取得します。注:リクエスト間でレート制限を避けるために、2 秒の遅延を推奨します。",
|
||||
"File": "ファイル",
|
||||
"Extraction Name": "抽出名",
|
||||
"Language": "言語",
|
||||
"Fields to Extract": "抽出するフィールド",
|
||||
"Description": "説明",
|
||||
"Has Table": "テーブルあり",
|
||||
"Has Visuals": "ビジュアルあり",
|
||||
"Handwritten Text Recognition": "手書きテキスト認識",
|
||||
"Checkbox Recognition": "チェックボックスの認識",
|
||||
"Long Document": "長いドキュメント",
|
||||
"Split PDF Pages": "PDF ページを分割",
|
||||
"Specific Page Processing": "特定のページの処理",
|
||||
"Page From": "ページから",
|
||||
"Page To": "ページまで",
|
||||
"Extraction ID": "抽出ID",
|
||||
"Batch ID": "バッチID",
|
||||
"File ID": "ファイルID",
|
||||
"The file to upload for extraction. Supported: PDF, images (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), text files (TXT)": "アップロードするファイルを抽出します。サポートされている: PDF, 画像 (JPEG, PNG, TIFF, BMP), Word ドキュメント (DOC, DOCX), テキスト ファイル (TXT)",
|
||||
"A descriptive name for the extraction": "抽出の説明的な名前",
|
||||
"Document's language for accurate extraction. Extracta.ai supports multiple languages with advanced AI algorithms designed to parse linguistic nuances.": "正確な抽出のためのドキュメントの言語 Extracta.aiは、言語のニュアンスを解析するように設計された高度なAIアルゴリズムを備えた複数の言語をサポートします。",
|
||||
"Define the data fields you want to extract from documents": "ドキュメントから抽出するデータフィールドを定義します",
|
||||
"A description for the extraction": "抽出の説明",
|
||||
"Whether the document contains tables": "ドキュメントに表が含まれているかどうか",
|
||||
"Whether the document contains charts, graphs, or diagrams": "ドキュメントにグラフ、グラフ、ダイアグラムが含まれているかどうか",
|
||||
"Whether to recognize handwritten text": "手書きのテキストを認識するかどうか",
|
||||
"Whether to recognize checkboxes and their states": "チェックボックスとその状態を認識するかどうか",
|
||||
"Enable for very large or complex documents": "非常に大きい文書または複雑な文書を有効にする",
|
||||
"Treat each PDF page as a separate extraction unit": "各PDFページを別の抽出ユニットとして扱います。",
|
||||
"Extract only a specified range of pages": "指定された範囲のページのみを抽出",
|
||||
"Starting page number (required if Specific Page Processing is enabled)": "開始ページ番号(特定のページ処理が有効な場合は必須)",
|
||||
"Ending page number (required if Specific Page Processing is enabled)": "終了ページ番号 (特定のページ処理が有効な場合は必須)",
|
||||
"Unique identifier for the extraction": "抽出のための一意の識別子",
|
||||
"Document file to upload (PDF, images, etc.)": "アップロードするドキュメントファイル(PDF、画像など)",
|
||||
"The ID of the batch to add files to (optional). If not provided, a new batch will be created.": "ファイルを追加するバッチID(オプション)。指定されていない場合は、新しいバッチが作成されます。",
|
||||
"The ID of the extraction": "抽出の ID",
|
||||
"The ID of the batch": "バッチの ID",
|
||||
"The ID of the file (optional). If provided, filters results to only that file.": "ファイルのID(任意)。指定された場合、フィルタはそのファイルのみになります。",
|
||||
"Multi-Lingual": "Multi-Lingual",
|
||||
"Arabic": "アラビア文字",
|
||||
"Bangla": "バングラ語",
|
||||
"Bulgarian": "ブルガリア語",
|
||||
"Croatian": "クロアチア語",
|
||||
"Czech": "チェコ語",
|
||||
"English": "日本語",
|
||||
"Filipino": "フィリピノ語",
|
||||
"French": "フランス語",
|
||||
"German": "ドイツ語",
|
||||
"Hindi": "ヒンディー語",
|
||||
"Hungarian": "ハンガリー語",
|
||||
"Italian": "イタリア語",
|
||||
"Nepali": "Nepali",
|
||||
"Polish": "ポーランド語",
|
||||
"Portuguese": "ポルトガル語",
|
||||
"Romanian": "ルーマニア語",
|
||||
"Russian": "ロシア語",
|
||||
"Serbian": "セルビア語",
|
||||
"Spanish": "スペイン語",
|
||||
"Turkish": "トルコ語",
|
||||
"Ukrainian": "ウクライナ語",
|
||||
"Urdu": "ウルドゥー語",
|
||||
"Vietnamese": "Vietnamese",
|
||||
"New Document Processed": "新しいドキュメントが処理されました",
|
||||
"Extraction Failed": "抽出に失敗しました",
|
||||
"Triggers when a document extraction is successfully processed.": "ドキュメントの抽出が正常に処理されたときにトリガーします。",
|
||||
"Triggers when a document extraction fails.": "ドキュメントの抽出に失敗したときにトリガーします。",
|
||||
"Markdown": "Markdown",
|
||||
"\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click *": "\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click **Save**.\n\nThis single webhook will now send all events to Activepieces. This trigger will only activate for the **'extraction.failed'** event.\n "
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"An AI document extraction & content analysis platform that transforms unstructured files (PDFs, images, URLs, etc.) into structured data.": "Een AI document extractie & content analyse platform dat ongestructureerde bestanden (PDF's, afbeeldingen, URL's, etc.) in gestructureerde gegevens converteert.",
|
||||
"Enter your Extracta-ai API key": "Voer je Extracta-ai API-sleutel in",
|
||||
"Extract File Data": "Bestandsgegevens uitpakken",
|
||||
"Upload File": "Bestand uploaden",
|
||||
"Get Extraction Results": "Krijg Extractie Resultaten",
|
||||
"Upload a file and immediately receive extracted content": "Upload een bestand en ontvang onmiddellijk uitgepakte inhoud",
|
||||
"Uploads document for extraction": "Uploads document voor extractie",
|
||||
"Fetches successful data from extraction. Note: The API recommends a 2-second delay between requests to avoid rate-limiting.": "Haalt gegevens uit extractie met succesvol. Let op: de API beveelt een vertraging van 2 seconden aan tussen verzoeken om beperking van tarieven te voorkomen.",
|
||||
"File": "Bestand",
|
||||
"Extraction Name": "Extractie naam",
|
||||
"Language": "Taal",
|
||||
"Fields to Extract": "Velden om uit te pakken",
|
||||
"Description": "Beschrijving",
|
||||
"Has Table": "Heeft tabel",
|
||||
"Has Visuals": "Heeft Visuals",
|
||||
"Handwritten Text Recognition": "Handgeschreven tekst herkenning",
|
||||
"Checkbox Recognition": "Selectievakje herkenning",
|
||||
"Long Document": "Lang Document",
|
||||
"Split PDF Pages": "Deel PDF-pagina's",
|
||||
"Specific Page Processing": "Specifieke paginaverwerking",
|
||||
"Page From": "Pagina van",
|
||||
"Page To": "Pagina naar",
|
||||
"Extraction ID": "Extractie ID",
|
||||
"Batch ID": "Batch ID",
|
||||
"File ID": "Bestand ID",
|
||||
"The file to upload for extraction. Supported: PDF, images (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), text files (TXT)": "Het te uploaden bestand voor extractie. Ondersteund: PDF, afbeeldingen (JPEG, PNG, TIFF, BMP), Word-docs (DOC, DOCX), tekstbestanden (TXT)",
|
||||
"A descriptive name for the extraction": "Een beschrijvende naam voor de extractie",
|
||||
"Document's language for accurate extraction. Extracta.ai supports multiple languages with advanced AI algorithms designed to parse linguistic nuances.": "Documenttaal voor nauwkeurige extractie. Extracta.ai ondersteunt meerdere talen met geavanceerde AI-algoritmes ontworpen om taalkundige nuances te verwerken.",
|
||||
"Define the data fields you want to extract from documents": "Definieer de gegevensvelden die u uit documenten wilt extraheren",
|
||||
"A description for the extraction": "Een beschrijving voor de extractie",
|
||||
"Whether the document contains tables": "Of het document tabellen bevat",
|
||||
"Whether the document contains charts, graphs, or diagrams": "Of het document grafieken, grafieken of diagrammen bevat",
|
||||
"Whether to recognize handwritten text": "Of handgeschreven tekst herkennen",
|
||||
"Whether to recognize checkboxes and their states": "Selectievakjes en hun staten herkennen",
|
||||
"Enable for very large or complex documents": "Inschakelen voor zeer grote of complexe documenten",
|
||||
"Treat each PDF page as a separate extraction unit": "Behandel elke PDF-pagina als een afzonderlijke extractie-eenheid",
|
||||
"Extract only a specified range of pages": "Pak alleen een bepaald bereik van pagina's uit",
|
||||
"Starting page number (required if Specific Page Processing is enabled)": "Start paginanummer (vereist als specifieke paginaverwerking is ingeschakeld)",
|
||||
"Ending page number (required if Specific Page Processing is enabled)": "Eindig paginanummer (vereist als specifieke paginaverwerking is ingeschakeld)",
|
||||
"Unique identifier for the extraction": "Unieke identifier voor de extractie",
|
||||
"Document file to upload (PDF, images, etc.)": "Te uploaden documentbestand (PDF, afbeeldingen, etc.)",
|
||||
"The ID of the batch to add files to (optional). If not provided, a new batch will be created.": "De batch om bestanden toe te voegen (optioneel). Indien niet opgegeven, zal er een nieuwe batch worden gemaakt.",
|
||||
"The ID of the extraction": "Het ID van de extractie",
|
||||
"The ID of the batch": "Het ID van de batch",
|
||||
"The ID of the file (optional). If provided, filters results to only that file.": "De ID van het bestand (optioneel). Indien opgegeven, filtert de resultaten op alleen dat bestand.",
|
||||
"Multi-Lingual": "Multi-Lingual",
|
||||
"Arabic": "Arabisch",
|
||||
"Bangla": "Bangla",
|
||||
"Bulgarian": "Bulgaars",
|
||||
"Croatian": "Kroatisch",
|
||||
"Czech": "Tsjechisch",
|
||||
"English": "Nederlands",
|
||||
"Filipino": "Filippijnen",
|
||||
"French": "Frans",
|
||||
"German": "Duits",
|
||||
"Hindi": "Hindoestani",
|
||||
"Hungarian": "Hongaars",
|
||||
"Italian": "Italiaans",
|
||||
"Nepali": "Nepali",
|
||||
"Polish": "Pools",
|
||||
"Portuguese": "Portugees",
|
||||
"Romanian": "Roemeens",
|
||||
"Russian": "Russisch",
|
||||
"Serbian": "Servisch",
|
||||
"Spanish": "Spaans",
|
||||
"Turkish": "Turks",
|
||||
"Ukrainian": "Oekraïens",
|
||||
"Urdu": "Urdu",
|
||||
"Vietnamese": "Vietnamese",
|
||||
"New Document Processed": "Nieuw document verwerkt",
|
||||
"Extraction Failed": "Uitpakken mislukt",
|
||||
"Triggers when a document extraction is successfully processed.": "Triggers wanneer een document extractie succesvol wordt verwerkt.",
|
||||
"Triggers when a document extraction fails.": "Triggert wanneer een documentextractie mislukt.",
|
||||
"Markdown": "Markdown",
|
||||
"\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click *": "\nOm deze trigger te gebruiken, moet je handmatig een enkele webhook eindpunt in je Extracta instellen. i account. Dit eindpunt ontvangt alle gebeurtenissen, en de Activepieces filteren op de juiste.\n\n. **Log in** op je Extracta.ai dashboard.\n2. Navigeer naar de **API** sectie in het zijmenu.\n3. Scroll naar beneden naar **Webhook Instellingen**.\n4. Klik op **\"Maak een nieuwe webhook\"** (of bewerk een bestaande).\n5. Plak de volgende URL in het **Eindpunt URL** veld:\n ```text\n {{webhookUrl}}\n ```\n6. Klik **Opslaan**. \n\n Deze webhook stuurt nu alle evenementen naar de Activepiëfficiënten. Deze trigger wordt alleen geactiveerd voor het **'extraction.failed'** evenement.\n "
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"An AI document extraction & content analysis platform that transforms unstructured files (PDFs, images, URLs, etc.) into structured data.": "Uma plataforma de extração de documentos AI e análise de conteúdo que transforma arquivos não estruturados (PDFs, imagens, URLs, etc.) em dados estruturados.",
|
||||
"Enter your Extracta-ai API key": "Digite sua chave da API Extracta-ai",
|
||||
"Extract File Data": "Extrair Dados do Arquivo",
|
||||
"Upload File": "Enviar Arquivo",
|
||||
"Get Extraction Results": "Obter resultados de extração",
|
||||
"Upload a file and immediately receive extracted content": "Enviar um arquivo e receber conteúdo extraído imediatamente",
|
||||
"Uploads document for extraction": "Carregamento do documento para extração",
|
||||
"Fetches successful data from extraction. Note: The API recommends a 2-second delay between requests to avoid rate-limiting.": "Busca dados bem-sucedidos da extração. Nota: A API recomenda um atraso de 2 segundos entre solicitações para evitar a limitação de taxas.",
|
||||
"File": "Arquivo",
|
||||
"Extraction Name": "Nome da extração",
|
||||
"Language": "IDIOMA",
|
||||
"Fields to Extract": "Campos para Extrair",
|
||||
"Description": "Descrição",
|
||||
"Has Table": "Possui tabela",
|
||||
"Has Visuals": "Possui Visuais",
|
||||
"Handwritten Text Recognition": "Reconhecimento de texto escrito",
|
||||
"Checkbox Recognition": "Reconhecimento de Checkbox",
|
||||
"Long Document": "Documento longo",
|
||||
"Split PDF Pages": "Dividir páginas PDF",
|
||||
"Specific Page Processing": "Processamento de página específica",
|
||||
"Page From": "Página de",
|
||||
"Page To": "Página para",
|
||||
"Extraction ID": "ID de extração",
|
||||
"Batch ID": "ID do Lote",
|
||||
"File ID": "ID do arquivo",
|
||||
"The file to upload for extraction. Supported: PDF, images (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), text files (TXT)": "O arquivo a ser enviado para extração. Suportado: PDF, imagens (JPEG, PNG, TIFF, BMP), Documentos Word (DOC, DOCX), arquivos de texto (TXT)",
|
||||
"A descriptive name for the extraction": "Um nome descritivo para a extração",
|
||||
"Document's language for accurate extraction. Extracta.ai supports multiple languages with advanced AI algorithms designed to parse linguistic nuances.": "O idioma do documento para extração precisa. Extracta.ai suporta vários idiomas com algoritmos de IA avançados projetados para analisar nuances linguísticas.",
|
||||
"Define the data fields you want to extract from documents": "Defina os campos de dados que você deseja extrair dos documentos",
|
||||
"A description for the extraction": "Uma descrição para a extração",
|
||||
"Whether the document contains tables": "Se o documento contém tabelas",
|
||||
"Whether the document contains charts, graphs, or diagrams": "Se o documento contém gráficos, gráficos ou diagramas",
|
||||
"Whether to recognize handwritten text": "Se reconhecer texto manuscrito",
|
||||
"Whether to recognize checkboxes and their states": "Se reconhecer as caixas de seleção e seus estados",
|
||||
"Enable for very large or complex documents": "Habilitar para documentos muito grandes ou complexos",
|
||||
"Treat each PDF page as a separate extraction unit": "Tratar cada página de PDF como uma unidade de extração separada",
|
||||
"Extract only a specified range of pages": "Extrair apenas um intervalo específico de páginas",
|
||||
"Starting page number (required if Specific Page Processing is enabled)": "Número da página inicial (necessário se o Processamento de Página Específica estiver habilitado)",
|
||||
"Ending page number (required if Specific Page Processing is enabled)": "Número da página final (necessário se o processamento de página específica estiver ativado)",
|
||||
"Unique identifier for the extraction": "Identificador exclusivo para a extração",
|
||||
"Document file to upload (PDF, images, etc.)": "Arquivo de documento para upload (PDF, imagens, etc.)",
|
||||
"The ID of the batch to add files to (optional). If not provided, a new batch will be created.": "O ID do lote para adicionar arquivos (opcional). Se não for fornecido, um novo lote será criado.",
|
||||
"The ID of the extraction": "O ID da extração",
|
||||
"The ID of the batch": "O ID do lote",
|
||||
"The ID of the file (optional). If provided, filters results to only that file.": "O ID do arquivo (opcional). Se fornecido, filtra somente para esse arquivo.",
|
||||
"Multi-Lingual": "Multi-Lingual",
|
||||
"Arabic": "Arábico",
|
||||
"Bangla": "Bengala",
|
||||
"Bulgarian": "búlgaro",
|
||||
"Croatian": "croata",
|
||||
"Czech": "tcheco",
|
||||
"English": "Portuguese-Brazil",
|
||||
"Filipino": "filipino",
|
||||
"French": "francês",
|
||||
"German": "alemão",
|
||||
"Hindi": "hindi",
|
||||
"Hungarian": "Húngaro",
|
||||
"Italian": "italiano",
|
||||
"Nepali": "Nepali",
|
||||
"Polish": "Polonês",
|
||||
"Portuguese": "Português",
|
||||
"Romanian": "romeno",
|
||||
"Russian": "Russo",
|
||||
"Serbian": "Sérvio",
|
||||
"Spanish": "espanhol",
|
||||
"Turkish": "Turco",
|
||||
"Ukrainian": "ucraniano",
|
||||
"Urdu": "urdu",
|
||||
"Vietnamese": "Vietnamese",
|
||||
"New Document Processed": "Novo documento processado",
|
||||
"Extraction Failed": "Falha na extração",
|
||||
"Triggers when a document extraction is successfully processed.": "Aciona quando uma extração de documento é processada com sucesso.",
|
||||
"Triggers when a document extraction fails.": "Aciona quando a extração de documentos falha.",
|
||||
"Markdown": "Markdown",
|
||||
"\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click *": "\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click **Save**.\n\nThis single webhook will now send all events to Activepieces. This trigger will only activate for the **'extraction.failed'** event.\n "
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"An AI document extraction & content analysis platform that transforms unstructured files (PDFs, images, URLs, etc.) into structured data.": "An AI document extraction & content analysis platform that transforms unstructured files (PDFs, images, URLs, etc.) into structured data.",
|
||||
"Enter your Extracta-ai API key": "Enter your Extracta-ai API key",
|
||||
"Extract File Data": "Extract File Data",
|
||||
"Upload File": "Upload File",
|
||||
"Get Extraction Results": "Get Extraction Results",
|
||||
"Upload a file and immediately receive extracted content": "Upload a file and immediately receive extracted content",
|
||||
"Uploads document for extraction": "Uploads document for extraction",
|
||||
"Fetches successful data from extraction. Note: The API recommends a 2-second delay between requests to avoid rate-limiting.": "Fetches successful data from extraction. Note: The API recommends a 2-second delay between requests to avoid rate-limiting.",
|
||||
"File": "File",
|
||||
"Extraction Name": "Extraction Name",
|
||||
"Language": "Language",
|
||||
"Fields to Extract": "Fields to Extract",
|
||||
"Description": "Description",
|
||||
"Has Table": "Has Table",
|
||||
"Has Visuals": "Has Visuals",
|
||||
"Handwritten Text Recognition": "Handwritten Text Recognition",
|
||||
"Checkbox Recognition": "Checkbox Recognition",
|
||||
"Long Document": "Long Document",
|
||||
"Split PDF Pages": "Split PDF Pages",
|
||||
"Specific Page Processing": "Specific Page Processing",
|
||||
"Page From": "Page From",
|
||||
"Page To": "Page To",
|
||||
"Extraction ID": "Extraction ID",
|
||||
"Batch ID": "Batch ID",
|
||||
"File ID": "File ID",
|
||||
"The file to upload for extraction. Supported: PDF, images (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), text files (TXT)": "The file to upload for extraction. Supported: PDF, images (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), text files (TXT)",
|
||||
"A descriptive name for the extraction": "A descriptive name for the extraction",
|
||||
"Document's language for accurate extraction. Extracta.ai supports multiple languages with advanced AI algorithms designed to parse linguistic nuances.": "Document's language for accurate extraction. Extracta.ai supports multiple languages with advanced AI algorithms designed to parse linguistic nuances.",
|
||||
"Define the data fields you want to extract from documents": "Define the data fields you want to extract from documents",
|
||||
"A description for the extraction": "A description for the extraction",
|
||||
"Whether the document contains tables": "Whether the document contains tables",
|
||||
"Whether the document contains charts, graphs, or diagrams": "Whether the document contains charts, graphs, or diagrams",
|
||||
"Whether to recognize handwritten text": "Whether to recognize handwritten text",
|
||||
"Whether to recognize checkboxes and their states": "Whether to recognize checkboxes and their states",
|
||||
"Enable for very large or complex documents": "Enable for very large or complex documents",
|
||||
"Treat each PDF page as a separate extraction unit": "Treat each PDF page as a separate extraction unit",
|
||||
"Extract only a specified range of pages": "Extract only a specified range of pages",
|
||||
"Starting page number (required if Specific Page Processing is enabled)": "Starting page number (required if Specific Page Processing is enabled)",
|
||||
"Ending page number (required if Specific Page Processing is enabled)": "Ending page number (required if Specific Page Processing is enabled)",
|
||||
"Unique identifier for the extraction": "Unique identifier for the extraction",
|
||||
"Document file to upload (PDF, images, etc.)": "Document file to upload (PDF, images, etc.)",
|
||||
"The ID of the batch to add files to (optional). If not provided, a new batch will be created.": "The ID of the batch to add files to (optional). If not provided, a new batch will be created.",
|
||||
"The ID of the extraction": "The ID of the extraction",
|
||||
"The ID of the batch": "The ID of the batch",
|
||||
"The ID of the file (optional). If provided, filters results to only that file.": "The ID of the file (optional). If provided, filters results to only that file.",
|
||||
"Multi-Lingual": "Multi-Lingual",
|
||||
"Arabic": "Arabic",
|
||||
"Bangla": "Bangla",
|
||||
"Bulgarian": "Bulgarian",
|
||||
"Croatian": "Croatian",
|
||||
"Czech": "Czech",
|
||||
"English": "English",
|
||||
"Filipino": "Filipino",
|
||||
"French": "French",
|
||||
"German": "German",
|
||||
"Hindi": "Hindi",
|
||||
"Hungarian": "Hungarian",
|
||||
"Italian": "Italian",
|
||||
"Nepali": "Nepali",
|
||||
"Polish": "Polish",
|
||||
"Portuguese": "Portuguese",
|
||||
"Romanian": "Romanian",
|
||||
"Russian": "Russian",
|
||||
"Serbian": "Serbian",
|
||||
"Spanish": "Spanish",
|
||||
"Turkish": "Turkish",
|
||||
"Ukrainian": "Ukrainian",
|
||||
"Urdu": "Urdu",
|
||||
"Vietnamese": "Vietnamese",
|
||||
"New Document Processed": "New Document Processed",
|
||||
"Extraction Failed": "Extraction Failed",
|
||||
"Triggers when a document extraction is successfully processed.": "Triggers when a document extraction is successfully processed.",
|
||||
"Triggers when a document extraction fails.": "Triggers when a document extraction fails.",
|
||||
"Markdown": "Markdown",
|
||||
"\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click *": "\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click **Save**.\n\nThis single webhook will now send all events to Activepieces. This trigger will only activate for the **'extraction.failed'** event.\n "
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"An AI document extraction & content analysis platform that transforms unstructured files (PDFs, images, URLs, etc.) into structured data.": "An AI document extraction & content analysis platform that transforms unstructured files (PDFs, images, URLs, etc.) into structured data.",
|
||||
"Enter your Extracta-ai API key": "Enter your Extracta-ai API key",
|
||||
"Extract File Data": "Extract File Data",
|
||||
"Upload File": "Upload File",
|
||||
"Get Extraction Results": "Get Extraction Results",
|
||||
"Upload a file and immediately receive extracted content": "Upload a file and immediately receive extracted content",
|
||||
"Uploads document for extraction": "Uploads document for extraction",
|
||||
"Fetches successful data from extraction. Note: The API recommends a 2-second delay between requests to avoid rate-limiting.": "Fetches successful data from extraction. Note: The API recommends a 2-second delay between requests to avoid rate-limiting.",
|
||||
"File": "文件",
|
||||
"Extraction Name": "Extraction Name",
|
||||
"Language": "Language",
|
||||
"Fields to Extract": "Fields to Extract",
|
||||
"Description": "描述",
|
||||
"Has Table": "Has Table",
|
||||
"Has Visuals": "Has Visuals",
|
||||
"Handwritten Text Recognition": "Handwritten Text Recognition",
|
||||
"Checkbox Recognition": "Checkbox Recognition",
|
||||
"Long Document": "Long Document",
|
||||
"Split PDF Pages": "Split PDF Pages",
|
||||
"Specific Page Processing": "Specific Page Processing",
|
||||
"Page From": "Page From",
|
||||
"Page To": "Page To",
|
||||
"Extraction ID": "Extraction ID",
|
||||
"Batch ID": "Batch ID",
|
||||
"File ID": "File ID",
|
||||
"The file to upload for extraction. Supported: PDF, images (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), text files (TXT)": "The file to upload for extraction. Supported: PDF, images (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), text files (TXT)",
|
||||
"A descriptive name for the extraction": "A descriptive name for the extraction",
|
||||
"Document's language for accurate extraction. Extracta.ai supports multiple languages with advanced AI algorithms designed to parse linguistic nuances.": "Document's language for accurate extraction. Extracta.ai supports multiple languages with advanced AI algorithms designed to parse linguistic nuances.",
|
||||
"Define the data fields you want to extract from documents": "Define the data fields you want to extract from documents",
|
||||
"A description for the extraction": "A description for the extraction",
|
||||
"Whether the document contains tables": "Whether the document contains tables",
|
||||
"Whether the document contains charts, graphs, or diagrams": "Whether the document contains charts, graphs, or diagrams",
|
||||
"Whether to recognize handwritten text": "Whether to recognize handwritten text",
|
||||
"Whether to recognize checkboxes and their states": "Whether to recognize checkboxes and their states",
|
||||
"Enable for very large or complex documents": "Enable for very large or complex documents",
|
||||
"Treat each PDF page as a separate extraction unit": "Treat each PDF page as a separate extraction unit",
|
||||
"Extract only a specified range of pages": "Extract only a specified range of pages",
|
||||
"Starting page number (required if Specific Page Processing is enabled)": "Starting page number (required if Specific Page Processing is enabled)",
|
||||
"Ending page number (required if Specific Page Processing is enabled)": "Ending page number (required if Specific Page Processing is enabled)",
|
||||
"Unique identifier for the extraction": "Unique identifier for the extraction",
|
||||
"Document file to upload (PDF, images, etc.)": "Document file to upload (PDF, images, etc.)",
|
||||
"The ID of the batch to add files to (optional). If not provided, a new batch will be created.": "The ID of the batch to add files to (optional). If not provided, a new batch will be created.",
|
||||
"The ID of the extraction": "The ID of the extraction",
|
||||
"The ID of the batch": "The ID of the batch",
|
||||
"The ID of the file (optional). If provided, filters results to only that file.": "The ID of the file (optional). If provided, filters results to only that file.",
|
||||
"Multi-Lingual": "Multi-Lingual",
|
||||
"Arabic": "Arabic",
|
||||
"Bangla": "Bangla",
|
||||
"Bulgarian": "Bulgarian",
|
||||
"Croatian": "Croatian",
|
||||
"Czech": "Czech",
|
||||
"English": "English",
|
||||
"Filipino": "Filipino",
|
||||
"French": "French",
|
||||
"German": "German",
|
||||
"Hindi": "Hindi",
|
||||
"Hungarian": "Hungarian",
|
||||
"Italian": "Italian",
|
||||
"Nepali": "Nepali",
|
||||
"Polish": "Polish",
|
||||
"Portuguese": "Portuguese",
|
||||
"Romanian": "Romanian",
|
||||
"Russian": "Russian",
|
||||
"Serbian": "Serbian",
|
||||
"Spanish": "Spanish",
|
||||
"Turkish": "Turkish",
|
||||
"Ukrainian": "Ukrainian",
|
||||
"Urdu": "Urdu",
|
||||
"Vietnamese": "Vietnamese",
|
||||
"New Document Processed": "New Document Processed",
|
||||
"Extraction Failed": "Extraction Failed",
|
||||
"Triggers when a document extraction is successfully processed.": "Triggers when a document extraction is successfully processed.",
|
||||
"Triggers when a document extraction fails.": "Triggers when a document extraction fails.",
|
||||
"Markdown": "Markdown",
|
||||
"\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click *": "\nTo use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.\n\n1. **Login** to your Extracta.ai dashboard.\n2. Navigate to the **API** section from the side menu.\n3. Scroll down to **Webhook Settings**.\n4. Click **\"Create a new webhook\"** (or edit an existing one).\n5. Paste the following URL into the **Endpoint URL** field:\n ```text\n {{webhookUrl}}\n ```\n6. Click **Save**.\n\nThis single webhook will now send all events to Activepieces. This trigger will only activate for the **'extraction.failed'** event.\n "
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
import { createPiece } from "@activepieces/pieces-framework";
|
||||
import { extractaAiAuth } from "./lib/common";
|
||||
import { extractFileData } from "./lib/actions/extract-file-data";
|
||||
import { uploadFile } from "./lib/actions/upload-file";
|
||||
import { getExtractionResults } from "./lib/actions/get-extraction-results";
|
||||
import { newDocumentProcessed } from "./lib/triggers/new-document-processed";
|
||||
import { extractionFailed } from "./lib/triggers/extraction-failed";
|
||||
import { PieceCategory } from "@activepieces/shared";
|
||||
|
||||
|
||||
export const extractaAi = createPiece({
|
||||
displayName: "Extracta.ai",
|
||||
description: "An AI document extraction & content analysis platform that transforms unstructured files (PDFs, images, URLs, etc.) into structured data.",
|
||||
auth: extractaAiAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
categories: [PieceCategory.ARTIFICIAL_INTELLIGENCE],
|
||||
logoUrl: "https://cdn.activepieces.com/pieces/extracta-ai.png",
|
||||
authors: ['fortunamide', 'onyedikachi-david'],
|
||||
actions: [extractFileData, uploadFile, getExtractionResults],
|
||||
triggers: [newDocumentProcessed, extractionFailed],
|
||||
});
|
||||
|
||||
@@ -0,0 +1,348 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { extractaAiAuth } from '../common/auth';
|
||||
|
||||
const SUPPORTED_FILE_TYPES = ['pdf', 'docx', 'doc', 'txt', 'jpeg', 'jpg', 'png', 'tiff', 'bmp'];
|
||||
|
||||
interface ExtractionOptions {
|
||||
hasTable: boolean;
|
||||
hasVisuals: boolean;
|
||||
handwrittenTextRecognition: boolean;
|
||||
checkboxRecognition: boolean;
|
||||
longDocument: boolean;
|
||||
splitPdfPages: boolean;
|
||||
specificPageProcessing: boolean;
|
||||
specificPageProcessingOptions?: {
|
||||
from: number;
|
||||
to: number;
|
||||
};
|
||||
}
|
||||
|
||||
export const extractFileData = createAction({
|
||||
auth: extractaAiAuth,
|
||||
name: 'extract_file_data',
|
||||
displayName: 'Extract File Data',
|
||||
description: 'Upload a file and immediately receive extracted content',
|
||||
props: {
|
||||
file: Property.File({
|
||||
displayName: 'File',
|
||||
description: 'The file to upload for extraction. Supported: PDF, images (JPEG, PNG, TIFF, BMP), Word docs (DOC, DOCX), text files (TXT)',
|
||||
required: true
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Extraction Name',
|
||||
description: 'A descriptive name for the extraction',
|
||||
required: true
|
||||
}),
|
||||
language: Property.StaticDropdown({
|
||||
displayName: 'Language',
|
||||
description:
|
||||
"Document's language for accurate extraction. Extracta.ai supports multiple languages with advanced AI algorithms designed to parse linguistic nuances.",
|
||||
required: true,
|
||||
defaultValue: 'English',
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Multi-Lingual', value: 'Multi-Lingual' },
|
||||
{ label: 'Arabic', value: 'Arabic' },
|
||||
{ label: 'Bangla', value: 'Bangla' },
|
||||
{ label: 'Bulgarian', value: 'Bulgarian' },
|
||||
{ label: 'Croatian', value: 'Croatian' },
|
||||
{ label: 'Czech', value: 'Czech' },
|
||||
{ label: 'English', value: 'English' },
|
||||
{ label: 'Filipino', value: 'Filipino' },
|
||||
{ label: 'French', value: 'French' },
|
||||
{ label: 'German', value: 'German' },
|
||||
{ label: 'Hindi', value: 'Hindi' },
|
||||
{ label: 'Hungarian', value: 'Hungarian' },
|
||||
{ label: 'Italian', value: 'Italian' },
|
||||
{ label: 'Nepali', value: 'Nepali' },
|
||||
{ label: 'Polish', value: 'Polish' },
|
||||
{ label: 'Portuguese', value: 'Portuguese' },
|
||||
{ label: 'Romanian', value: 'Romanian' },
|
||||
{ label: 'Russian', value: 'Russian' },
|
||||
{ label: 'Serbian', value: 'Serbian' },
|
||||
{ label: 'Spanish', value: 'Spanish' },
|
||||
{ label: 'Turkish', value: 'Turkish' },
|
||||
{ label: 'Ukrainian', value: 'Ukrainian' },
|
||||
{ label: 'Urdu', value: 'Urdu' },
|
||||
{ label: 'Vietnamese', value: 'Vietnamese' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
fields: Property.Array({
|
||||
displayName: 'Fields to Extract',
|
||||
description: 'Define the data fields you want to extract from documents',
|
||||
required: true,
|
||||
properties: {
|
||||
key: Property.ShortText({
|
||||
displayName: 'Field Key',
|
||||
description:
|
||||
'Unique identifier for this field (e.g., "name", "email")',
|
||||
required: true
|
||||
}),
|
||||
type: Property.StaticDropdown({
|
||||
displayName: 'Field Type',
|
||||
description: 'Type of data to extract',
|
||||
required: true,
|
||||
defaultValue: 'string',
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'String', value: 'string' },
|
||||
{ label: 'Object', value: 'object' },
|
||||
{ label: 'Array of Strings', value: 'array_string' },
|
||||
{ label: 'Array of Objects', value: 'array_object' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
description: Property.LongText({
|
||||
displayName: 'Description',
|
||||
description: 'Describe what this field represents',
|
||||
required: true
|
||||
}),
|
||||
example: Property.ShortText({
|
||||
displayName: 'Example (Optional)',
|
||||
description:
|
||||
'Sample value to help the AI understand the expected format',
|
||||
required: false
|
||||
}),
|
||||
objectProperties: Property.Json({
|
||||
displayName: 'Object Properties',
|
||||
description:
|
||||
'For object types: Define nested fields as an array. Example: [{"key":"name","type":"string","description":"Full name","example":"John Doe"}]',
|
||||
required: false
|
||||
}),
|
||||
arrayItemProperties: Property.Json({
|
||||
displayName: 'Array Item Properties',
|
||||
description:
|
||||
'For array of objects: Define the structure of each array item as an array. Example: [{"key":"company","type":"string","description":"Company name","example":"Tech Corp"}]',
|
||||
required: false
|
||||
})
|
||||
}
|
||||
}),
|
||||
description: Property.LongText({
|
||||
displayName: 'Description',
|
||||
description: 'A description for the extraction',
|
||||
required: false
|
||||
}),
|
||||
hasTable: Property.Checkbox({
|
||||
displayName: 'Has Table',
|
||||
description: 'Whether the document contains tables',
|
||||
required: false,
|
||||
defaultValue: false
|
||||
}),
|
||||
hasVisuals: Property.Checkbox({
|
||||
displayName: 'Has Visuals',
|
||||
description: 'Whether the document contains charts, graphs, or diagrams',
|
||||
required: false,
|
||||
defaultValue: false
|
||||
}),
|
||||
handwrittenTextRecognition: Property.Checkbox({
|
||||
displayName: 'Handwritten Text Recognition',
|
||||
description: 'Whether to recognize handwritten text',
|
||||
required: false,
|
||||
defaultValue: false
|
||||
}),
|
||||
checkboxRecognition: Property.Checkbox({
|
||||
displayName: 'Checkbox Recognition',
|
||||
description: 'Whether to recognize checkboxes and their states',
|
||||
required: false,
|
||||
defaultValue: false
|
||||
}),
|
||||
longDocument: Property.Checkbox({
|
||||
displayName: 'Long Document',
|
||||
description: 'Enable for very large or complex documents',
|
||||
required: false,
|
||||
defaultValue: false
|
||||
}),
|
||||
splitPdfPages: Property.Checkbox({
|
||||
displayName: 'Split PDF Pages',
|
||||
description: 'Treat each PDF page as a separate extraction unit',
|
||||
required: false,
|
||||
defaultValue: false
|
||||
}),
|
||||
specificPageProcessing: Property.Checkbox({
|
||||
displayName: 'Specific Page Processing',
|
||||
description: 'Extract only a specified range of pages',
|
||||
required: false,
|
||||
defaultValue: false
|
||||
}),
|
||||
pageFrom: Property.Number({
|
||||
displayName: 'Page From',
|
||||
description:
|
||||
'Starting page number (required if Specific Page Processing is enabled)',
|
||||
required: false
|
||||
}),
|
||||
pageTo: Property.Number({
|
||||
displayName: 'Page To',
|
||||
description:
|
||||
'Ending page number (required if Specific Page Processing is enabled)',
|
||||
required: false
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const apiKey = context.auth;
|
||||
const file = context.propsValue.file;
|
||||
|
||||
const fileExtension = file.filename.split('.').pop()?.toLowerCase();
|
||||
if (!fileExtension || !SUPPORTED_FILE_TYPES.includes(fileExtension)) {
|
||||
throw new Error(
|
||||
`File type not supported. Supported types: ${SUPPORTED_FILE_TYPES.join(', ')}`
|
||||
);
|
||||
}
|
||||
|
||||
if (context.propsValue.specificPageProcessing) {
|
||||
if (!context.propsValue.pageFrom || !context.propsValue.pageTo) {
|
||||
throw new Error(
|
||||
'Page From and Page To are required when Specific Page Processing is enabled'
|
||||
);
|
||||
}
|
||||
if (context.propsValue.pageFrom > context.propsValue.pageTo) {
|
||||
throw new Error('Page From must be less than or equal to Page To');
|
||||
}
|
||||
}
|
||||
|
||||
const options: ExtractionOptions = {
|
||||
hasTable: context.propsValue.hasTable ?? false,
|
||||
hasVisuals: context.propsValue.hasVisuals ?? false,
|
||||
handwrittenTextRecognition:
|
||||
context.propsValue.handwrittenTextRecognition ?? false,
|
||||
checkboxRecognition: context.propsValue.checkboxRecognition ?? false,
|
||||
longDocument: context.propsValue.longDocument ?? false,
|
||||
splitPdfPages: context.propsValue.splitPdfPages ?? false,
|
||||
specificPageProcessing: context.propsValue.specificPageProcessing ?? false
|
||||
};
|
||||
|
||||
if (
|
||||
context.propsValue.specificPageProcessing &&
|
||||
context.propsValue.pageFrom &&
|
||||
context.propsValue.pageTo
|
||||
) {
|
||||
options.specificPageProcessingOptions = {
|
||||
from: context.propsValue.pageFrom,
|
||||
to: context.propsValue.pageTo
|
||||
};
|
||||
}
|
||||
|
||||
if (!context.propsValue.fields || context.propsValue.fields.length === 0) {
|
||||
throw new Error('At least one field must be defined');
|
||||
}
|
||||
|
||||
const fieldKeys = context.propsValue.fields.map((f: any) => f.key);
|
||||
const duplicates = fieldKeys.filter(
|
||||
(key: string, index: number) => fieldKeys.indexOf(key) !== index
|
||||
);
|
||||
if (duplicates.length > 0) {
|
||||
throw new Error(`Duplicate field keys found: ${duplicates.join(', ')}`);
|
||||
}
|
||||
|
||||
const apiFields = (context.propsValue.fields || []).map((field: any) => {
|
||||
const baseField: any = {
|
||||
key: field.key,
|
||||
description: field.description,
|
||||
type:
|
||||
field.type === 'array_string' || field.type === 'array_object'
|
||||
? 'array'
|
||||
: field.type
|
||||
};
|
||||
|
||||
if (field.example) {
|
||||
baseField.example = field.example;
|
||||
}
|
||||
|
||||
if (field.type === 'object' && field.objectProperties) {
|
||||
baseField.properties = field.objectProperties;
|
||||
}
|
||||
|
||||
if (field.type === 'array_string') {
|
||||
baseField.items = {
|
||||
type: 'string',
|
||||
example: field.example || 'example'
|
||||
};
|
||||
}
|
||||
|
||||
if (field.type === 'array_object' && field.arrayItemProperties) {
|
||||
baseField.items = {
|
||||
type: 'object',
|
||||
properties: field.arrayItemProperties
|
||||
};
|
||||
}
|
||||
|
||||
return baseField;
|
||||
});
|
||||
|
||||
const extractionDetails: any = {
|
||||
name: context.propsValue.name,
|
||||
language: context.propsValue.language,
|
||||
fields: apiFields,
|
||||
options
|
||||
};
|
||||
|
||||
if (context.propsValue.description) {
|
||||
extractionDetails.description = context.propsValue.description;
|
||||
}
|
||||
|
||||
try {
|
||||
const createResponse = await httpClient.sendRequest({
|
||||
method: HttpMethod.POST,
|
||||
url: 'https://api.extracta.ai/api/v1/createExtraction',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: `Bearer ${apiKey.secret_text}`
|
||||
},
|
||||
body: { extractionDetails }
|
||||
});
|
||||
|
||||
const extractionId = createResponse.body.extractionId;
|
||||
if (!extractionId) {
|
||||
throw new Error('No extractionId returned from createExtraction');
|
||||
}
|
||||
|
||||
const formData = new FormData();
|
||||
formData.append('extractionId', extractionId);
|
||||
|
||||
const blob = new Blob([Buffer.from(file.base64, 'base64')], {
|
||||
type: file.extension ? `application/${file.extension}` : 'application/octet-stream'
|
||||
});
|
||||
formData.append('files', blob, file.filename);
|
||||
|
||||
const uploadResponse = await httpClient.sendRequest({
|
||||
method: HttpMethod.POST,
|
||||
url: 'https://api.extracta.ai/api/v1/uploadFiles',
|
||||
headers: {
|
||||
Authorization: `Bearer ${apiKey.secret_text}`
|
||||
},
|
||||
body: formData
|
||||
});
|
||||
|
||||
return {
|
||||
extractionId,
|
||||
uploadResult: uploadResponse.body
|
||||
};
|
||||
} catch (error: any) {
|
||||
if (error.response) {
|
||||
const status = error.response.status;
|
||||
const body = error.response.body;
|
||||
|
||||
switch (status) {
|
||||
case 401:
|
||||
throw new Error('Authentication failed. Please check your API key.');
|
||||
case 403:
|
||||
throw new Error(
|
||||
'Access denied. Your API key may not have permission for this operation.'
|
||||
);
|
||||
case 429:
|
||||
throw new Error('Rate limit exceeded. Please try again later.');
|
||||
case 400:
|
||||
throw new Error(
|
||||
`Invalid request: ${body.message || JSON.stringify(body)}`
|
||||
);
|
||||
default:
|
||||
throw new Error(
|
||||
`API error (${status}): ${body.message || 'Unknown error'}`
|
||||
);
|
||||
}
|
||||
}
|
||||
throw new Error(`Request failed: ${error.message}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,84 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { extractaAiAuth } from '../common/auth';
|
||||
|
||||
interface GetResultsBody {
|
||||
extractionId: string;
|
||||
batchId: string;
|
||||
fileId?: string;
|
||||
}
|
||||
|
||||
export const getExtractionResults = createAction({
|
||||
auth: extractaAiAuth,
|
||||
name: 'get_extraction_results',
|
||||
displayName: 'Get Extraction Results',
|
||||
description: 'Fetches successful data from extraction. Note: The API recommends a 2-second delay between requests to avoid rate-limiting.',
|
||||
props: {
|
||||
extractionId: Property.ShortText({
|
||||
displayName: 'Extraction ID',
|
||||
description: 'The ID of the extraction',
|
||||
required: true,
|
||||
}),
|
||||
batchId: Property.ShortText({
|
||||
displayName: 'Batch ID',
|
||||
description: 'The ID of the batch',
|
||||
required: true,
|
||||
}),
|
||||
fileId: Property.ShortText({
|
||||
displayName: 'File ID',
|
||||
description: 'The ID of the file (optional). If provided, filters results to only that file.',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const apiKey = context.auth.secret_text;
|
||||
|
||||
const requestBody: GetResultsBody = {
|
||||
extractionId: context.propsValue.extractionId,
|
||||
batchId: context.propsValue.batchId,
|
||||
};
|
||||
|
||||
if (context.propsValue.fileId) {
|
||||
requestBody.fileId = context.propsValue.fileId;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.POST,
|
||||
url: 'https://api.extracta.ai/api/v1/getBatchResults',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': `Bearer ${apiKey}`,
|
||||
},
|
||||
body: requestBody,
|
||||
});
|
||||
|
||||
return response.body;
|
||||
} catch (error: any) {
|
||||
if (error.response) {
|
||||
const status = error.response.status;
|
||||
const body = error.response.body;
|
||||
|
||||
switch (status) {
|
||||
case 401:
|
||||
throw new Error('Authentication failed. Please check your API key.');
|
||||
case 403:
|
||||
throw new Error(
|
||||
'Access denied. Your API key may not have permission for this operation.'
|
||||
);
|
||||
case 429:
|
||||
throw new Error('Rate limit exceeded. Please try again later.');
|
||||
case 400:
|
||||
throw new Error(
|
||||
`Invalid request: ${body.message || JSON.stringify(body)}`
|
||||
);
|
||||
default:
|
||||
throw new Error(
|
||||
`API error (${status}): ${body.message || 'Unknown error'}`
|
||||
);
|
||||
}
|
||||
}
|
||||
throw new Error(`Request failed: ${error.message}`);
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,92 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { extractaAiAuth } from '../common/auth';
|
||||
|
||||
const SUPPORTED_FILE_TYPES = ['pdf', 'docx', 'doc', 'txt', 'jpeg', 'jpg', 'png', 'tiff', 'bmp'];
|
||||
|
||||
export const uploadFile = createAction({
|
||||
auth: extractaAiAuth,
|
||||
name: 'upload_file',
|
||||
displayName: 'Upload File',
|
||||
description: 'Uploads document for extraction',
|
||||
props: {
|
||||
extractionId: Property.ShortText({
|
||||
displayName: 'Extraction ID',
|
||||
description: 'Unique identifier for the extraction',
|
||||
required: true
|
||||
}),
|
||||
file: Property.File({
|
||||
displayName: 'File',
|
||||
description: 'Document file to upload (PDF, images, etc.)',
|
||||
required: true
|
||||
}),
|
||||
batchId: Property.ShortText({
|
||||
displayName: 'Batch ID',
|
||||
description:
|
||||
'The ID of the batch to add files to (optional). If not provided, a new batch will be created.',
|
||||
required: false
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const apiKey = context.auth.secret_text;
|
||||
const { file, extractionId, batchId } = context.propsValue;
|
||||
|
||||
const fileExtension = file.filename.split('.').pop()?.toLowerCase();
|
||||
if (!fileExtension || !SUPPORTED_FILE_TYPES.includes(fileExtension)) {
|
||||
throw new Error(
|
||||
`File type not supported. Supported types: ${SUPPORTED_FILE_TYPES.join(', ')}`
|
||||
);
|
||||
}
|
||||
|
||||
const formData = new FormData();
|
||||
|
||||
formData.append('extractionId', extractionId);
|
||||
|
||||
if (batchId) {
|
||||
formData.append('batchId', batchId);
|
||||
}
|
||||
|
||||
const blob = new Blob([Buffer.from(file.base64, 'base64')], {
|
||||
type: file.extension ? `application/${file.extension}` : 'application/octet-stream'
|
||||
});
|
||||
formData.append('files', blob, file.filename);
|
||||
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.POST,
|
||||
url: 'https://api.extracta.ai/api/v1/uploadFiles',
|
||||
headers: {
|
||||
Authorization: `Bearer ${apiKey}`
|
||||
},
|
||||
body: formData
|
||||
});
|
||||
|
||||
return response.body;
|
||||
} catch (error: any) {
|
||||
if (error.response) {
|
||||
const status = error.response.status;
|
||||
const body = error.response.body;
|
||||
|
||||
switch (status) {
|
||||
case 401:
|
||||
throw new Error('Authentication failed. Please check your API key.');
|
||||
case 403:
|
||||
throw new Error(
|
||||
'Access denied. Your API key may not have permission for this operation.'
|
||||
);
|
||||
case 429:
|
||||
throw new Error('Rate limit exceeded. Please try again later.');
|
||||
case 400:
|
||||
throw new Error(
|
||||
`Invalid request: ${body.message || JSON.stringify(body)}`
|
||||
);
|
||||
default:
|
||||
throw new Error(
|
||||
`API error (${status}): ${body.message || 'Unknown error'}`
|
||||
);
|
||||
}
|
||||
}
|
||||
throw new Error(`Request failed: ${error.message}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,9 @@
|
||||
import { PieceAuth } from '@activepieces/pieces-framework';
|
||||
|
||||
export const extractaAiAuth = PieceAuth.SecretText({
|
||||
displayName: 'API Key',
|
||||
required: true,
|
||||
description: 'Enter your Extracta-ai API key',
|
||||
});
|
||||
|
||||
export type ExtractaAiAuth = string;
|
||||
@@ -0,0 +1 @@
|
||||
export * from './auth';
|
||||
@@ -0,0 +1,80 @@
|
||||
import { createTrigger, Property, TriggerStrategy } from '@activepieces/pieces-framework';
|
||||
import { extractaAiAuth } from '../common/auth';
|
||||
import crypto from 'crypto';
|
||||
|
||||
export const extractionFailed = createTrigger({
|
||||
auth: extractaAiAuth,
|
||||
name: 'extraction_failed',
|
||||
displayName: 'Extraction Failed',
|
||||
description: 'Triggers when a document extraction fails.',
|
||||
props: {
|
||||
webhookInstructions: Property.MarkDown({
|
||||
value: `
|
||||
To use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.
|
||||
|
||||
1. **Login** to your Extracta.ai dashboard.
|
||||
2. Navigate to the **API** section from the side menu.
|
||||
3. Scroll down to **Webhook Settings**.
|
||||
4. Click **"Create a new webhook"** (or edit an existing one).
|
||||
5. Paste the following URL into the **Endpoint URL** field:
|
||||
\`\`\`text
|
||||
{{webhookUrl}}
|
||||
\`\`\`
|
||||
6. Click **Save**.
|
||||
|
||||
This single webhook will now send all events to Activepieces. This trigger will only activate for the **'extraction.failed'** event.
|
||||
`,
|
||||
}),
|
||||
},
|
||||
sampleData: {
|
||||
event: 'extraction.failed',
|
||||
result: [
|
||||
{
|
||||
extractionId: 'extraction_123',
|
||||
batchId: 'batch_456',
|
||||
fileId: 'file_789',
|
||||
fileName: 'document.pdf',
|
||||
status: 'failed',
|
||||
error: 'Processing error occurred',
|
||||
url: 'https://example.com/file.pdf',
|
||||
},
|
||||
],
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(context) {
|
||||
// Does nothing
|
||||
},
|
||||
async onDisable(context) {
|
||||
// Does nothing
|
||||
},
|
||||
async run(context) {
|
||||
const apiKey = context.auth.secret_text;
|
||||
const signatureHeader = context.payload.headers['x-webhook-signature'];
|
||||
const body = context.payload.body as any;
|
||||
|
||||
if (signatureHeader && body.result) {
|
||||
try {
|
||||
const resultString = JSON.stringify(body.result);
|
||||
const secretKey = apiKey.replace('E_AI_K_', '');
|
||||
const expectedSignature = crypto
|
||||
.createHmac('sha256', secretKey)
|
||||
.update(resultString)
|
||||
.digest('base64');
|
||||
|
||||
if (expectedSignature !== signatureHeader) {
|
||||
console.warn('Extracta.ai webhook signature verification failed');
|
||||
return [];
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('Error verifying webhook signature:', error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
if (body.event === 'extraction.failed' && body.result) {
|
||||
return [body.result];
|
||||
}
|
||||
|
||||
return [];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,83 @@
|
||||
import { createTrigger, Property, TriggerStrategy } from '@activepieces/pieces-framework';
|
||||
import { extractaAiAuth } from '../common/auth';
|
||||
import crypto from 'crypto';
|
||||
|
||||
export const newDocumentProcessed = createTrigger({
|
||||
auth: extractaAiAuth,
|
||||
name: 'new_document_processed',
|
||||
displayName: 'New Document Processed',
|
||||
description: 'Triggers when a document extraction is successfully processed.',
|
||||
props: {
|
||||
webhookInstructions: Property.MarkDown({
|
||||
value: `
|
||||
To use this trigger, you need to manually set up a single webhook endpoint in your Extracta.ai account. This endpoint will receive all events, and Activepieces will filter for the correct one.
|
||||
|
||||
1. **Login** to your Extracta.ai dashboard.
|
||||
2. Navigate to the **API** section from the side menu.
|
||||
3. Scroll down to **Webhook Settings**.
|
||||
4. Click **"Create a new webhook"** (or edit an existing one).
|
||||
5. Paste the following URL into the **Endpoint URL** field:
|
||||
\`\`\`text
|
||||
{{webhookUrl}}
|
||||
\`\`\`
|
||||
6. Click **Save**.
|
||||
|
||||
This single webhook will now send all events to Activepieces. This trigger will only activate for the **'extraction.processed'** event.
|
||||
`,
|
||||
}),
|
||||
},
|
||||
sampleData: {
|
||||
event: 'extraction.processed',
|
||||
result: [
|
||||
{
|
||||
extractionId: 'extraction_123',
|
||||
batchId: 'batch_456',
|
||||
fileId: 'file_789',
|
||||
fileName: 'document.pdf',
|
||||
status: 'processed',
|
||||
result: {
|
||||
field1: 'value1',
|
||||
field2: 'value2',
|
||||
},
|
||||
url: 'https://example.com/file.pdf',
|
||||
},
|
||||
],
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(context) {
|
||||
// Does nothing
|
||||
},
|
||||
async onDisable(context) {
|
||||
// Does nothing
|
||||
},
|
||||
async run(context) {
|
||||
const apiKey = context.auth.secret_text;
|
||||
const signatureHeader = context.payload.headers['x-webhook-signature'];
|
||||
const body = context.payload.body as any;
|
||||
|
||||
if (signatureHeader && body.result) {
|
||||
try {
|
||||
const resultString = JSON.stringify(body.result);
|
||||
const secretKey = apiKey.replace('E_AI_K_', '');
|
||||
const expectedSignature = crypto
|
||||
.createHmac('sha256', secretKey)
|
||||
.update(resultString)
|
||||
.digest('base64');
|
||||
|
||||
if (expectedSignature !== signatureHeader) {
|
||||
console.warn('Extracta.ai webhook signature verification failed');
|
||||
return [];
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('Error verifying webhook signature:', error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
if (body.event === 'extraction.processed' && body.result) {
|
||||
return [body.result];
|
||||
}
|
||||
|
||||
return [];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"extends": "../../../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"importHelpers": true,
|
||||
"noImplicitOverride": true,
|
||||
"noImplicitReturns": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noPropertyAccessFromIndexSignature": true
|
||||
},
|
||||
"files": [],
|
||||
"include": [],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.lib.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../../../dist/out-tsc",
|
||||
"declaration": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
Reference in New Issue
Block a user