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:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,18 @@
{
"extends": ["../../../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}

View File

@@ -0,0 +1,7 @@
# pieces-kizeo-forms
This library was generated with [Nx](https://nx.dev).
## Running lint
Run `nx lint pieces-kizeo-forms` to execute the lint via [ESLint](https://eslint.org/).

View File

@@ -0,0 +1,4 @@
{
"name": "@activepieces/piece-kizeo-forms",
"version": "0.3.17"
}

View File

@@ -0,0 +1,51 @@
{
"name": "pieces-kizeo-forms",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/kizeo-forms/src",
"projectType": "library",
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/kizeo-forms",
"tsConfig": "packages/pieces/community/kizeo-forms/tsconfig.lib.json",
"packageJson": "packages/pieces/community/kizeo-forms/package.json",
"main": "packages/pieces/community/kizeo-forms/src/index.ts",
"assets": [
"packages/pieces/community/kizeo-forms/*.md",
{
"input": "packages/pieces/community/kizeo-forms/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/kizeo-forms",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
},
"tags": []
}

View File

@@ -0,0 +1,85 @@
{
"Create custom mobile forms": "Eigene mobile Formulare erstellen",
"\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n": "\nUm sich mit Kizeo-Formularen zu verbinden, benötigst du ein API-Token vom Support-Team.\n",
"Get Data Definition": "Datendefinition erhalten",
"Push Data": "Push-Daten",
"Download Standard PDF": "Standard PDF herunterladen",
"Download custom export in its original format": "Eigenen Export im Originalformat herunterladen",
"Get List Definition": "Liste Definition abrufen",
"Get List Item": "Listenelement abrufen",
"Get All List Items": "Alle Listenelemente abrufen",
"Create List Item": "Listenelement erstellen",
"Edit List Item": "Listenelement bearbeiten",
"Delete List Item": "Listenelement löschen",
"Custom API Call": "Eigener API-Aufruf",
"Get the definition of a data": "Datendefinition abrufen",
"Push a data to a form": "Daten in ein Formular schieben",
"Get PDF data of a form": "PDF-Daten eines Formulars abrufen",
"Download a custom export in its original format": "Eigenen Export im Originalformat herunterladen",
"Get the definition of a list": "Erhalten Sie die Definition einer Liste",
"Get a specific item from a list": "Erhalte ein bestimmtes Element aus einer Liste",
"Get all items from a specific list": "Alle Elemente aus einer bestimmten Liste holen",
"Create a new list item in Kizeo Forms": "Neues Listenelement in Kizeo-Formularen erstellen",
"Edit a specific item in a list": "Ein bestimmtes Element in einer Liste bearbeiten",
"Delete a specific item from a list": "Ein bestimmtes Element aus einer Liste löschen",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Form": "Formular",
"Data Id": "Daten-Id",
"User": "Benutzer",
"Export": "Export",
"Export in PDF": "Als PDF exportieren",
"List": "Liste",
"Item Id": "Item Id",
"Search": "Suche",
"Offset": "Versatz",
"Limit": "Limit",
"Sort": "Sortieren",
"Direction": "Richtung",
"Item Label": "Artikelbezeichnung",
"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)",
"The ID of the item you want to retrieve from the list": "Die ID des Artikels, das Sie von der Liste abrufen möchten",
"Pattern to search": "Muster zum Suchen",
"Max number of results to return": "Maximale Anzahl der zurückzugebenden Ergebnisse",
"Target for sorting": "Sortierungsziel",
"Sorting: asc or desc": "Sortierung: asc oder desc",
"Label for the new list item": "Beschriftung für das neue Listenelement",
"The ID of the item to edit": "Die ID des zu bearbeitenden Elements",
"The ID of the item to delete": "Die ID des zu löschenden Elements",
"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",
"Event On Data": "Ereignis auf Daten",
"Event On Data Deleted": "Ereignis auf Daten gelöscht",
"Event On Data Finished": "Ereignis am Datenabschluss",
"Event On Data Pushed": "Ereignis auf Daten übertragen",
"Event On Data Received": "Ereignis auf Daten empfangen",
"Event On Data Updated": "Ereignis auf Daten aktualisiert",
"Handle EventOnData events via webhooks": "EventOnData Events über Webhooks bearbeiten",
"Handle EventOnData delete event via webhooks": "Ereignis-OnData löschen Ereignis via Webhooks",
"Handle EventOnData save event via webhooks": "Ereignis-OnData speichern über Webhooks",
"Handle EventOnData push event via webhooks": "EventOnData Push-Event über Webhooks bearbeiten",
"Handle EventOnData receive event via webhooks": "Event-OnData über Webhooks erhalten",
"Handle EventOnData update event via webhooks": "EventOnData Update-Ereignis über Webhooks bearbeiten",
"Output Format": "Ausgabeformat",
"Events": "Ereignisse",
"Select the output format": "Ausgabeformat auswählen",
"Which events will trigger this hook": "Welche Ereignisse diesen Hook auslösen",
"Simple format": "Einfaches Format",
"Advanced format": "Erweitertes Format",
"Data Deleted": "Daten gelöscht",
"Data Saved": "Daten gespeichert",
"Data Updated": "Daten aktualisiert",
"Push Received": "Push empfangen",
"Push Send": "Senden push"
}

View File

@@ -0,0 +1,85 @@
{
"Create custom mobile forms": "Crear formularios móviles personalizados",
"\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n": "\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n",
"Get Data Definition": "Obtener definición de datos",
"Push Data": "Enviar datos",
"Download Standard PDF": "Descargar PDF estándar",
"Download custom export in its original format": "Descargar exportación personalizada en su formato original",
"Get List Definition": "Obtener definición de lista",
"Get List Item": "Obtener elemento de lista",
"Get All List Items": "Obtener todos los artículos de lista",
"Create List Item": "Crear elemento de lista",
"Edit List Item": "Editar elemento de lista",
"Delete List Item": "Eliminar elemento de lista",
"Custom API Call": "Llamada API personalizada",
"Get the definition of a data": "Obtener la definición de datos",
"Push a data to a form": "Enviar datos a un formulario",
"Get PDF data of a form": "Obtener datos PDF de un formulario",
"Download a custom export in its original format": "Descargar una exportación personalizada en su formato original",
"Get the definition of a list": "Obtener la definición de una lista",
"Get a specific item from a list": "Obtener un elemento específico de una lista",
"Get all items from a specific list": "Obtener todos los elementos de una lista específica",
"Create a new list item in Kizeo Forms": "Crear un nuevo elemento de lista en formularios Kizeo",
"Edit a specific item in a list": "Editar un elemento específico en una lista",
"Delete a specific item from a list": "Eliminar un elemento específico de una lista",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Form": "Forma",
"Data Id": "Id de datos",
"User": "Usuario",
"Export": "Exportar",
"Export in PDF": "Exportar en PDF",
"List": "Lista",
"Item Id": "Item Id",
"Search": "Buscar",
"Offset": "Desplazamiento",
"Limit": "Límite",
"Sort": "Ordenar",
"Direction": "Dirección",
"Item Label": "Etiqueta del objeto",
"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)",
"The ID of the item you want to retrieve from the list": "El ID del elemento que desea recuperar de la lista",
"Pattern to search": "Patrón a buscar",
"Max number of results to return": "Número máximo de resultados a devolver",
"Target for sorting": "Objetivo para ordenar",
"Sorting: asc or desc": "Ordenando: asc o desc",
"Label for the new list item": "Etiqueta para el nuevo elemento de la lista",
"The ID of the item to edit": "El ID del elemento a editar",
"The ID of the item to delete": "El ID del elemento a eliminar",
"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",
"Event On Data": "Evento en datos",
"Event On Data Deleted": "Evento al eliminar datos",
"Event On Data Finished": "Evento al terminar los datos",
"Event On Data Pushed": "Evento al enviar datos",
"Event On Data Received": "Evento en Datos Recibidos",
"Event On Data Updated": "Evento en datos actualizado",
"Handle EventOnData events via webhooks": "Manejar eventos de EventOnData a través de webhooks",
"Handle EventOnData delete event via webhooks": "Manejar evento EventOnData borrar a través de webhooks",
"Handle EventOnData save event via webhooks": "Manejar evento de EventOnData a través de webhooks",
"Handle EventOnData push event via webhooks": "Manejar evento push de EventOnData a través de webhooks",
"Handle EventOnData receive event via webhooks": "Manejar EventOnData recibir evento a través de webhooks",
"Handle EventOnData update event via webhooks": "Manejar evento de actualización de EventOnData a través de webhooks",
"Output Format": "Formato de salida",
"Events": "Eventos",
"Select the output format": "Seleccione el formato de salida",
"Which events will trigger this hook": "Qué eventos activarán este gancho",
"Simple format": "Formato simple",
"Advanced format": "Formato avanzado",
"Data Deleted": "Datos eliminados",
"Data Saved": "Datos guardados",
"Data Updated": "Datos Actualizados",
"Push Received": "Recibido",
"Push Send": "Enviar push"
}

View File

@@ -0,0 +1,85 @@
{
"Create custom mobile forms": "Créer des formulaires mobiles personnalisés",
"\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n": "\nPour vous connecter à Kizeo Forms, vous avez besoin d'un jeton d'API fourni par leur équipe d'assistance.\n",
"Get Data Definition": "Obtenir la définition des données",
"Push Data": "Données Push",
"Download Standard PDF": "Télécharger le PDF standard",
"Download custom export in its original format": "Télécharger l'exportation personnalisée dans son format original",
"Get List Definition": "Obtenir la définition de la liste",
"Get List Item": "Obtenir l'élément de la liste",
"Get All List Items": "Obtenir tous les éléments de la liste",
"Create List Item": "Créer un élément de liste",
"Edit List Item": "Modifier l'élément de la liste",
"Delete List Item": "Supprimer l'élément de la liste",
"Custom API Call": "Appel API personnalisé",
"Get the definition of a data": "Obtenir la définition d'une donnée",
"Push a data to a form": "Envoyer une donnée vers un formulaire",
"Get PDF data of a form": "Obtenir les données PDF d'un formulaire",
"Download a custom export in its original format": "Télécharger un export personnalisé dans son format original",
"Get the definition of a list": "Obtenir la définition d'une liste",
"Get a specific item from a list": "Récupérer un élément spécifique dans une liste",
"Get all items from a specific list": "Récupérer tous les éléments d'une liste spécifique",
"Create a new list item in Kizeo Forms": "Créer un nouvel élément de liste dans les formulaires Kizeo",
"Edit a specific item in a list": "Modifier un élément spécifique dans une liste",
"Delete a specific item from a list": "Supprimer un élément spécifique d'une liste",
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un point de terminaison spécifique",
"Form": "Forme",
"Data Id": "Id des données",
"User": "Utilisateur",
"Export": "Exporter",
"Export in PDF": "Exporter en PDF",
"List": "Liste",
"Item Id": "Item Id",
"Search": "Rechercher",
"Offset": "Décalage",
"Limit": "Limite",
"Sort": "Trier",
"Direction": "Orientation",
"Item Label": "Étiquette de l'élément",
"Method": "Méthode",
"Headers": "En-têtes",
"Query Parameters": "Paramètres de requête",
"Body": "Corps",
"Response is Binary ?": "La réponse est Binaire ?",
"No Error on Failure": "Aucune erreur en cas d'échec",
"Timeout (in seconds)": "Délai d'attente (en secondes)",
"The ID of the item you want to retrieve from the list": "L'ID de l'élément que vous voulez récupérer de la liste",
"Pattern to search": "Schéma à rechercher",
"Max number of results to return": "Nombre maximum de résultats à retourner",
"Target for sorting": "Cible pour le tri",
"Sorting: asc or desc": "Tri : asc ou desc",
"Label for the new list item": "Étiquette pour le nouvel élément de la liste",
"The ID of the item to edit": "L'ID de l'élément à modifier",
"The ID of the item to delete": "L'ID de l'élément à supprimer",
"Authorization headers are injected automatically from your connection.": "Les en-têtes 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": "OBTENIR",
"POST": "POSTER",
"PATCH": "PATCH",
"PUT": "EFFACER",
"DELETE": "SUPPRIMER",
"HEAD": "TÊTE",
"Event On Data": "Événement sur les données",
"Event On Data Deleted": "Événement sur les données supprimées",
"Event On Data Finished": "Événement à la fin des données",
"Event On Data Pushed": "Événement lors du lancement des données",
"Event On Data Received": "Événement sur les données reçues",
"Event On Data Updated": "Événement sur les données mises à jour",
"Handle EventOnData events via webhooks": "Gérer les événements EventOnData via des webhooks",
"Handle EventOnData delete event via webhooks": "Gérer l'évènement EventOnData supprimer via des webhooks",
"Handle EventOnData save event via webhooks": "Gérer l'évènement de sauvegarde EventOnData via les webhooks",
"Handle EventOnData push event via webhooks": "Gérer les événements push EventOnData via des webhooks",
"Handle EventOnData receive event via webhooks": "Gérer la réception d'événements EventOnData via des webhooks",
"Handle EventOnData update event via webhooks": "Gérer l'évènement de mise à jour EventOnData via des webhooks",
"Output Format": "Format de sortie",
"Events": "Évènements",
"Select the output format": "Sélectionnez le format de sortie",
"Which events will trigger this hook": "Quels événements vont déclencher ce point d'accroche",
"Simple format": "Format simple",
"Advanced format": "Format avancé",
"Data Deleted": "Données supprimées",
"Data Saved": "Données enregistrées",
"Data Updated": "Données mises à jour",
"Push Received": "Push reçu",
"Push Send": "Envoyer par push"
}

View File

@@ -0,0 +1,85 @@
{
"Create custom mobile forms": "カスタムモバイルフォームを作成",
"\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n": "\nKizeoフォームに接続するには、サポートチームが提供するAPIトークンが必要です。\n",
"Get Data Definition": "データ定義の取得",
"Push Data": "プッシュデータ",
"Download Standard PDF": "標準のPDFをダウンロード",
"Download custom export in its original format": "オリジナルの形式でカスタムエクスポートをダウンロード",
"Get List Definition": "リスト定義の取得",
"Get List Item": "リストアイテムを取得する",
"Get All List Items": "すべてのリストアイテムを取得",
"Create List Item": "リストアイテムを作成",
"Edit List Item": "リスト項目を編集",
"Delete List Item": "リスト項目を削除",
"Custom API Call": "カスタムAPI通話",
"Get the definition of a data": "データの定義を取得する",
"Push a data to a form": "フォームにデータをプッシュする",
"Get PDF data of a form": "フォームのPDFデータを取得する",
"Download a custom export in its original format": "オリジナルの形式でカスタムエクスポートをダウンロード",
"Get the definition of a list": "リストの定義を取得する",
"Get a specific item from a list": "リストから特定のアイテムを取得する",
"Get all items from a specific list": "特定のリストからすべてのアイテムを取得します",
"Create a new list item in Kizeo Forms": "Kizeoフォームに新しいリストアイテムを作成",
"Edit a specific item in a list": "リスト内の特定の項目を編集",
"Delete a specific item from a list": "リストから特定のアイテムを削除",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Form": "フォーム",
"Data Id": "データ ID",
"User": "ユーザー",
"Export": "エクスポート",
"Export in PDF": "PDF形式でエクスポート",
"List": "リスト",
"Item Id": "Item Id",
"Search": "検索",
"Offset": "オフセット",
"Limit": "制限",
"Sort": "並べ替え",
"Direction": "方向",
"Item Label": "アイテムのラベル",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The ID of the item you want to retrieve from the list": "リストから取得したいアイテムの ID",
"Pattern to search": "検索するパターン",
"Max number of results to return": "返す結果の最大数",
"Target for sorting": "並べ替えのターゲット",
"Sorting: asc or desc": "並べ替え: asc または desc",
"Label for the new list item": "新しいリスト項目のラベル",
"The ID of the item to edit": "編集するアイテムのID",
"The ID of the item to delete": "削除するアイテムのID",
"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": "頭",
"Event On Data": "データ上のイベント",
"Event On Data Deleted": "データが削除されたイベント",
"Event On Data Finished": "データ終了のイベント",
"Event On Data Pushed": "データプッシュ時のイベント",
"Event On Data Received": "受信したデータ上のイベント",
"Event On Data Updated": "データ更新のイベント",
"Handle EventOnData events via webhooks": "WebhookでEventOnDataイベントを処理する",
"Handle EventOnData delete event via webhooks": "Webhook経由でEventOnDataを削除する",
"Handle EventOnData save event via webhooks": "Webhook経由でEventOnDataの保存を処理する",
"Handle EventOnData push event via webhooks": "Webhook経由でEventOnDataプッシュイベントを処理する",
"Handle EventOnData receive event via webhooks": "Webhook経由でEventOnDataの受信イベントを処理する",
"Handle EventOnData update event via webhooks": "Webhook経由でEventOnDataの更新イベントを処理する",
"Output Format": "出力形式",
"Events": "イベント",
"Select the output format": "出力形式を選択",
"Which events will trigger this hook": "どのイベントがこのフックをトリガーするか",
"Simple format": "シンプルなフォーマット",
"Advanced format": "高度なフォーマット",
"Data Deleted": "データが削除されました",
"Data Saved": "保存されたデータ",
"Data Updated": "データを更新しました",
"Push Received": "プッシュ受信済み",
"Push Send": "Push Send"
}

View File

@@ -0,0 +1,85 @@
{
"Create custom mobile forms": "Aangepaste mobiele formulieren maken",
"\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n": "\nOm verbinding te maken met Kizeo Forms, heb je een API Token nodig die is aangeboden door hun supportteam.\n",
"Get Data Definition": "Gegevensdefinitie ophalen",
"Push Data": "Push Data",
"Download Standard PDF": "Standaard PDF downloaden",
"Download custom export in its original format": "Download aangepaste export in het originele formaat",
"Get List Definition": "Ophalen lijstdefinitie",
"Get List Item": "Krijg Lijstitem",
"Get All List Items": "Krijg alle lijstitems",
"Create List Item": "Lijstitem aanmaken",
"Edit List Item": "Lijstitem bewerken",
"Delete List Item": "Verwijder lijstitem",
"Custom API Call": "Custom API Call",
"Get the definition of a data": "Verkrijg de definitie van een data",
"Push a data to a form": "Stuur gegevens door naar een formulier",
"Get PDF data of a form": "PDF-gegevens van een formulier ophalen",
"Download a custom export in its original format": "Download een aangepaste export in het oorspronkelijke formaat",
"Get the definition of a list": "Verkrijg de definitie van een lijst",
"Get a specific item from a list": "Haal een specifiek item op uit een lijst",
"Get all items from a specific list": "Haal alle items op van een specifieke lijst",
"Create a new list item in Kizeo Forms": "Maak een nieuw lijstitem in Kizeo formulieren",
"Edit a specific item in a list": "Bewerk een specifiek item in een lijst",
"Delete a specific item from a list": "Verwijder een specifiek item uit een lijst",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Form": "Vorm",
"Data Id": "Gegevens ID",
"User": "Gebruiker",
"Export": "Exporteer",
"Export in PDF": "In PDF exporteren",
"List": "Klantenlijst",
"Item Id": "Item Id",
"Search": "Zoeken",
"Offset": "Verschuiving",
"Limit": "Limiet",
"Sort": "Sorteren",
"Direction": "Richting",
"Item Label": "Item label",
"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)",
"The ID of the item you want to retrieve from the list": "Het ID van het item dat u wilt ophalen uit de lijst",
"Pattern to search": "Patroon om te zoeken",
"Max number of results to return": "Max. aantal resultaten om terug te keren",
"Target for sorting": "Doel voor sortering",
"Sorting: asc or desc": "Sorteren: oplopend of desc",
"Label for the new list item": "Label voor het nieuwe lijstitem",
"The ID of the item to edit": "Het ID van het te bewerken item",
"The ID of the item to delete": "Het ID van het te verwijderen item",
"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",
"Event On Data": "Gebeurtenis Op Data",
"Event On Data Deleted": "Event On Data Verwijderd",
"Event On Data Finished": "Event Op Data Afgerond",
"Event On Data Pushed": "Gebeurtenis op Data Gepushed",
"Event On Data Received": "Event On Data Ontvangen",
"Event On Data Updated": "Event On Data Updated",
"Handle EventOnData events via webhooks": "Handle EventOnData events via webhooks",
"Handle EventOnData delete event via webhooks": "Handle EventOnData verwijderen gebeurtenis via webhooks",
"Handle EventOnData save event via webhooks": "Handel EventOnData save event via webhooks",
"Handle EventOnData push event via webhooks": "Handle EventOnData push event via webhooks",
"Handle EventOnData receive event via webhooks": "Handle EventOnData ontvangen gebeurtenis via webhooks",
"Handle EventOnData update event via webhooks": "Handle EventOnData update event via webhooks",
"Output Format": "Uitvoer formaat",
"Events": "Evenementen",
"Select the output format": "Selecteer het uitgangsformaat",
"Which events will trigger this hook": "Welke gebeurtenissen deze haak activeren",
"Simple format": "Eenvoudige indeling",
"Advanced format": "Geavanceerd formaat",
"Data Deleted": "Gegevens verwijderd",
"Data Saved": "Gegevens opgeslagen",
"Data Updated": "Gegevens bijgewerkt",
"Push Received": "Push ontvangen",
"Push Send": "Push Verzenden"
}

View File

@@ -0,0 +1,85 @@
{
"Create custom mobile forms": "Criar formulários personalizados para celular",
"\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n": "\nPara se conectar a Kizeo Forms, você precisa de um Token de API fornecido por sua equipe de suporte.\n",
"Get Data Definition": "Obter Definição de Dados",
"Push Data": "Dados Push",
"Download Standard PDF": "Baixar PDF Padrão",
"Download custom export in its original format": "Baixar exportação personalizada em seu formato original",
"Get List Definition": "Obter definição de listas",
"Get List Item": "Obter Item da Lista",
"Get All List Items": "Obter todos os itens da lista",
"Create List Item": "Criar Item de Lista",
"Edit List Item": "Editar Item de Lista",
"Delete List Item": "Excluir Item de Lista",
"Custom API Call": "Chamada de API personalizada",
"Get the definition of a data": "Obter a definição de um dado",
"Push a data to a form": "Enviar dados para um formulário",
"Get PDF data of a form": "Obter dados PDF de um formulário",
"Download a custom export in its original format": "Baixar uma exportação personalizada em seu formato original",
"Get the definition of a list": "Obter a definição de uma lista",
"Get a specific item from a list": "Obtenha um item específico de uma lista",
"Get all items from a specific list": "Pegar todos os itens de uma lista específica",
"Create a new list item in Kizeo Forms": "Criar um novo item da lista nos Formulários Kizeo",
"Edit a specific item in a list": "Editar um item específico em uma lista",
"Delete a specific item from a list": "Exclui um item específico de uma lista",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Form": "Formulário",
"Data Id": "Identificação dos Dados",
"User": "Usuário",
"Export": "Exportar",
"Export in PDF": "Exportar em PDF",
"List": "Lista",
"Item Id": "Item Id",
"Search": "Pesquisar",
"Offset": "Deslocamento",
"Limit": "Limitar",
"Sort": "Ordenar",
"Direction": "Direção",
"Item Label": "Rótulo do Item",
"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)",
"The ID of the item you want to retrieve from the list": "A identificação do item que você deseja recuperar da lista",
"Pattern to search": "Padrão a pesquisar",
"Max number of results to return": "Número máximo de resultados para retornar",
"Target for sorting": "Alvo para ordenação",
"Sorting: asc or desc": "Classificação: asc ou desc",
"Label for the new list item": "Rótulo para o novo item da lista",
"The ID of the item to edit": "O ID do item a ser editado",
"The ID of the item to delete": "O ID do item a ser apagado",
"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",
"Event On Data": "Evento em dados",
"Event On Data Deleted": "Evento em dados excluídos",
"Event On Data Finished": "Dados do evento terminados",
"Event On Data Pushed": "Evento em dados arrastados",
"Event On Data Received": "Evento em dados recebidos",
"Event On Data Updated": "Dados atualizados do evento",
"Handle EventOnData events via webhooks": "Manipular eventos EventOnData através de webhooks",
"Handle EventOnData delete event via webhooks": "Manipular o evento de exclusão da EventOnData através de webhooks",
"Handle EventOnData save event via webhooks": "Manipular evento EventOnData através de webhooks",
"Handle EventOnData push event via webhooks": "Manipular o evento EventOnData através de webhooks",
"Handle EventOnData receive event via webhooks": "Manipular o evento EventOnData receive via webhooks",
"Handle EventOnData update event via webhooks": "Manipular o evento de atualização da EventOnData através de webhooks",
"Output Format": "Formato de saída",
"Events": "Eventos",
"Select the output format": "Selecionar formato de saída",
"Which events will trigger this hook": "Quais eventos irão acionar este gancho",
"Simple format": "Formato simples",
"Advanced format": "Formato avançado",
"Data Deleted": "Dados excluídos",
"Data Saved": "Dados salvos",
"Data Updated": "Dados atualizados",
"Push Received": "Push Recebido",
"Push Send": "Enviar por Push"
}

View File

@@ -0,0 +1,84 @@
{
"Kizeo Forms": "Формы Kizeo",
"Create custom mobile forms": "Создать мобильную форму",
"\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n": "\nДля подключения к Формам Kizeo вам нужен API токен, предоставленный командой поддержки.\n",
"Get Data Definition": "Получить определение данных",
"Push Data": "Push-данные",
"Download Standard PDF": "Скачать стандартный PDF",
"Download custom export in its original format": "Скачать пользовательский экспорт в оригинальном формате",
"Get List Definition": "Получить определение списка",
"Get List Item": "Получить элемент списка",
"Get All List Items": "Получить все элементы списка",
"Create List Item": "Создать элемент списка",
"Edit List Item": "Редактировать элемент списка",
"Delete List Item": "Удалить элемент списка",
"Custom API Call": "Пользовательский вызов API",
"Get the definition of a data": "Получить определение данных",
"Push a data to a form": "Отправить данные в форму",
"Get PDF data of a form": "Получить данные PDF формы",
"Download a custom export in its original format": "Скачать пользовательский экспорт в оригинальном формате",
"Get the definition of a list": "Получить определение списка",
"Get a specific item from a list": "Получить конкретный товар из списка",
"Get all items from a specific list": "Получить все товары из определенного списка",
"Create a new list item in Kizeo Forms": "Создать новый элемент списка в Kizeo Формах",
"Edit a specific item in a list": "Редактировать конкретный элемент в списке",
"Delete a specific item from a list": "Удалить конкретный элемент из списка",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Form": "Форма",
"Data Id": "Id данных",
"User": "Пользователь",
"Export": "Export",
"Export in PDF": "Экспорт в PDF",
"List": "Список",
"Item Id": "Item Id",
"Search": "Search",
"Offset": "Смещение",
"Limit": "Лимит",
"Sort": "Сортировка",
"Direction": "Направление",
"Item Label": "Ярлык элемента",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"The ID of the item you want to retrieve from the list": "ID элемента, который вы хотите получить из списка",
"Pattern to search": "Поиск шаблона",
"Max number of results to return": "Максимальное количество результатов для возврата",
"Target for sorting": "Цель для сортировки",
"Sorting: asc or desc": "Сортировка: asc или desc",
"Label for the new list item": "Метка для нового элемента списка",
"The ID of the item to edit": "ID элемента для редактирования",
"The ID of the item to delete": "ID элемента для удаления",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD",
"Event On Data": "Событие на данных",
"Event On Data Deleted": "Событие на данных удалено",
"Event On Data Finished": "Событие по данным завершено",
"Event On Data Pushed": "Событие на данных выгружено",
"Event On Data Received": "Получены данные о событии",
"Event On Data Updated": "Событие при обновлении данных",
"Handle EventOnData events via webhooks": "Обработка событий EventOnData через веб-хуки",
"Handle EventOnData delete event via webhooks": "Обработка событий удаления EventOnData через вебхуки",
"Handle EventOnData save event via webhooks": "Обработка событий EventOnData сохранения через веб-хуки",
"Handle EventOnData push event via webhooks": "Обработка событий EventOnData push через вебхуки",
"Handle EventOnData receive event via webhooks": "Обработка событий EventOnData получения через веб-хуки",
"Handle EventOnData update event via webhooks": "Обработка событий EventOnData обновления через вебхуки",
"Output Format": "Формат вывода",
"Events": "События",
"Select the output format": "Выберите выходной формат",
"Which events will trigger this hook": "Какие события вызовут этот хук",
"Simple format": "Простой формат",
"Advanced format": "Расширенный формат",
"Data Deleted": "Данные удалены",
"Data Saved": "Данные сохранены",
"Data Updated": "Данные обновлены",
"Push Received": "Получено",
"Push Send": "Отправить"
}

View File

@@ -0,0 +1,85 @@
{
"Create custom mobile forms": "Create custom mobile forms",
"\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n": "\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n",
"Get Data Definition": "Get Data Definition",
"Push Data": "Push Data",
"Download Standard PDF": "Download Standard PDF",
"Download custom export in its original format": "Download custom export in its original format",
"Get List Definition": "Get List Definition",
"Get List Item": "Get List Item",
"Get All List Items": "Get All List Items",
"Create List Item": "Create List Item",
"Edit List Item": "Edit List Item",
"Delete List Item": "Delete List Item",
"Custom API Call": "Custom API Call",
"Get the definition of a data": "Get the definition of a data",
"Push a data to a form": "Push a data to a form",
"Get PDF data of a form": "Get PDF data of a form",
"Download a custom export in its original format": "Download a custom export in its original format",
"Get the definition of a list": "Get the definition of a list",
"Get a specific item from a list": "Get a specific item from a list",
"Get all items from a specific list": "Get all items from a specific list",
"Create a new list item in Kizeo Forms": "Create a new list item in Kizeo Forms",
"Edit a specific item in a list": "Edit a specific item in a list",
"Delete a specific item from a list": "Delete a specific item from a list",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Form": "Form",
"Data Id": "Data Id",
"User": "User",
"Export": "Export",
"Export in PDF": "Export in PDF",
"List": "List",
"Item Id": "Item Id",
"Search": "Search",
"Offset": "Offset",
"Limit": "Limit",
"Sort": "Sort",
"Direction": "Direction",
"Item Label": "Item Label",
"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)",
"The ID of the item you want to retrieve from the list": "The ID of the item you want to retrieve from the list",
"Pattern to search": "Pattern to search",
"Max number of results to return": "Max number of results to return",
"Target for sorting": "Target for sorting",
"Sorting: asc or desc": "Sorting: asc or desc",
"Label for the new list item": "Label for the new list item",
"The ID of the item to edit": "The ID of the item to edit",
"The ID of the item to delete": "The ID of the item to delete",
"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",
"Event On Data": "Event On Data",
"Event On Data Deleted": "Event On Data Deleted",
"Event On Data Finished": "Event On Data Finished",
"Event On Data Pushed": "Event On Data Pushed",
"Event On Data Received": "Event On Data Received",
"Event On Data Updated": "Event On Data Updated",
"Handle EventOnData events via webhooks": "Handle EventOnData events via webhooks",
"Handle EventOnData delete event via webhooks": "Handle EventOnData delete event via webhooks",
"Handle EventOnData save event via webhooks": "Handle EventOnData save event via webhooks",
"Handle EventOnData push event via webhooks": "Handle EventOnData push event via webhooks",
"Handle EventOnData receive event via webhooks": "Handle EventOnData receive event via webhooks",
"Handle EventOnData update event via webhooks": "Handle EventOnData update event via webhooks",
"Output Format": "Output Format",
"Events": "Events",
"Select the output format": "Select the output format",
"Which events will trigger this hook": "Which events will trigger this hook",
"Simple format": "Simple format",
"Advanced format": "Advanced format",
"Data Deleted": "Data Deleted",
"Data Saved": "Data Saved",
"Data Updated": "Data Updated",
"Push Received": "Push Received",
"Push Send": "Push Send"
}

View File

@@ -0,0 +1,84 @@
{
"Kizeo Forms": "Kizeo Forms",
"Create custom mobile forms": "Create custom mobile forms",
"\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n": "\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n",
"Get Data Definition": "Get Data Definition",
"Push Data": "Push Data",
"Download Standard PDF": "Download Standard PDF",
"Download custom export in its original format": "Download custom export in its original format",
"Get List Definition": "Get List Definition",
"Get List Item": "Get List Item",
"Get All List Items": "Get All List Items",
"Create List Item": "Create List Item",
"Edit List Item": "Edit List Item",
"Delete List Item": "Delete List Item",
"Custom API Call": "Custom API Call",
"Get the definition of a data": "Get the definition of a data",
"Push a data to a form": "Push a data to a form",
"Get PDF data of a form": "Get PDF data of a form",
"Download a custom export in its original format": "Download a custom export in its original format",
"Get the definition of a list": "Get the definition of a list",
"Get a specific item from a list": "Get a specific item from a list",
"Get all items from a specific list": "Get all items from a specific list",
"Create a new list item in Kizeo Forms": "Create a new list item in Kizeo Forms",
"Edit a specific item in a list": "Edit a specific item in a list",
"Delete a specific item from a list": "Delete a specific item from a list",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Form": "Form",
"Data Id": "Data Id",
"User": "User",
"Export": "Export",
"Export in PDF": "Export in PDF",
"List": "List",
"Item Id": "Item Id",
"Search": "Search",
"Offset": "Offset",
"Limit": "Limit",
"Sort": "Sort",
"Direction": "Direction",
"Item Label": "Item Label",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The ID of the item you want to retrieve from the list": "The ID of the item you want to retrieve from the list",
"Pattern to search": "Pattern to search",
"Max number of results to return": "Max number of results to return",
"Target for sorting": "Target for sorting",
"Sorting: asc or desc": "Sorting: asc or desc",
"Label for the new list item": "Label for the new list item",
"The ID of the item to edit": "The ID of the item to edit",
"The ID of the item to delete": "The ID of the item to delete",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Event On Data": "Event On Data",
"Event On Data Deleted": "Event On Data Deleted",
"Event On Data Finished": "Event On Data Finished",
"Event On Data Pushed": "Event On Data Pushed",
"Event On Data Received": "Event On Data Received",
"Event On Data Updated": "Event On Data Updated",
"Handle EventOnData events via webhooks": "Handle EventOnData events via webhooks",
"Handle EventOnData delete event via webhooks": "Handle EventOnData delete event via webhooks",
"Handle EventOnData save event via webhooks": "Handle EventOnData save event via webhooks",
"Handle EventOnData push event via webhooks": "Handle EventOnData push event via webhooks",
"Handle EventOnData receive event via webhooks": "Handle EventOnData receive event via webhooks",
"Handle EventOnData update event via webhooks": "Handle EventOnData update event via webhooks",
"Output Format": "Output Format",
"Events": "Events",
"Select the output format": "Select the output format",
"Which events will trigger this hook": "Which events will trigger this hook",
"Simple format": "Simple format",
"Advanced format": "Advanced format",
"Data Deleted": "Data Deleted",
"Data Saved": "Data Saved",
"Data Updated": "Data Updated",
"Push Received": "Push Received",
"Push Send": "Push Send"
}

View File

@@ -0,0 +1,85 @@
{
"Create custom mobile forms": "Create custom mobile forms",
"\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n": "\nTo connect to Kizeo Forms, you need an API Token provided by their support team.\n",
"Get Data Definition": "Get Data Definition",
"Push Data": "Push Data",
"Download Standard PDF": "Download Standard PDF",
"Download custom export in its original format": "Download custom export in its original format",
"Get List Definition": "Get List Definition",
"Get List Item": "Get List Item",
"Get All List Items": "Get All List Items",
"Create List Item": "Create List Item",
"Edit List Item": "Edit List Item",
"Delete List Item": "Delete List Item",
"Custom API Call": "自定义 API 呼叫",
"Get the definition of a data": "Get the definition of a data",
"Push a data to a form": "Push a data to a form",
"Get PDF data of a form": "Get PDF data of a form",
"Download a custom export in its original format": "Download a custom export in its original format",
"Get the definition of a list": "Get the definition of a list",
"Get a specific item from a list": "Get a specific item from a list",
"Get all items from a specific list": "Get all items from a specific list",
"Create a new list item in Kizeo Forms": "Create a new list item in Kizeo Forms",
"Edit a specific item in a list": "Edit a specific item in a list",
"Delete a specific item from a list": "Delete a specific item from a list",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Form": "Form",
"Data Id": "Data Id",
"User": "用户",
"Export": "导出",
"Export in PDF": "Export in PDF",
"List": "List",
"Item Id": "Item Id",
"Search": "搜索",
"Offset": "Offset",
"Limit": "Limit",
"Sort": "Sort",
"Direction": "Direction",
"Item Label": "Item Label",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The ID of the item you want to retrieve from the list": "The ID of the item you want to retrieve from the list",
"Pattern to search": "Pattern to search",
"Max number of results to return": "Max number of results to return",
"Target for sorting": "Target for sorting",
"Sorting: asc or desc": "Sorting: asc or desc",
"Label for the new list item": "Label for the new list item",
"The ID of the item to edit": "The ID of the item to edit",
"The ID of the item to delete": "The ID of the item to delete",
"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": "黑色",
"Event On Data": "Event On Data",
"Event On Data Deleted": "Event On Data Deleted",
"Event On Data Finished": "Event On Data Finished",
"Event On Data Pushed": "Event On Data Pushed",
"Event On Data Received": "Event On Data Received",
"Event On Data Updated": "Event On Data Updated",
"Handle EventOnData events via webhooks": "Handle EventOnData events via webhooks",
"Handle EventOnData delete event via webhooks": "Handle EventOnData delete event via webhooks",
"Handle EventOnData save event via webhooks": "Handle EventOnData save event via webhooks",
"Handle EventOnData push event via webhooks": "Handle EventOnData push event via webhooks",
"Handle EventOnData receive event via webhooks": "Handle EventOnData receive event via webhooks",
"Handle EventOnData update event via webhooks": "Handle EventOnData update event via webhooks",
"Output Format": "Output Format",
"Events": "Events",
"Select the output format": "Select the output format",
"Which events will trigger this hook": "Which events will trigger this hook",
"Simple format": "Simple format",
"Advanced format": "Advanced format",
"Data Deleted": "Data Deleted",
"Data Saved": "Data Saved",
"Data Updated": "Data Updated",
"Push Received": "Push Received",
"Push Send": "Push Send"
}

View File

@@ -0,0 +1,70 @@
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import { PieceAuth, createPiece } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { CreateListItem } from './lib/actions/create-list-item';
import { deleteListItem } from './lib/actions/delete-list-item';
import { downloadCustomExportInItsOriginalFormat } from './lib/actions/download-custom-export-in-its-original-format';
import { downloadStandardPDF } from './lib/actions/download-standard-pdf';
import { editListItem } from './lib/actions/edit-list-item';
import { getAllListItems } from './lib/actions/get-all-list-items';
import { getDataDefinition } from './lib/actions/get-data-definition';
import { getListDefinition } from './lib/actions/get-list-definition';
import { getListItem } from './lib/actions/get-list-item';
import { pushData } from './lib/actions/push-data';
import { endpoint } from './lib/common';
import { eventOnDataDeleted } from './lib/trigger/event-on-data-deleted';
import { eventOnDataFinished } from './lib/trigger/event-on-data-finished';
import { eventOnDataPushed } from './lib/trigger/event-on-data-pushed';
import { eventOnDataPulled } from './lib/trigger/event-on-data-received';
import { eventOnDataUpdated } from './lib/trigger/event-on-data-updated';
import { eventOnData } from './lib/trigger/event-on-data.trigger';
const markdownDescription = `
To connect to Kizeo Forms, you need an API Token provided by their support team.
`;
export const kizeoFormsAuth = PieceAuth.SecretText({
displayName: 'Kizeo Forms API Key',
required: true,
description: markdownDescription,
});
export const kizeoForms = createPiece({
displayName: 'Kizeo Forms',
description: 'Create custom mobile forms',
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/kizeo-forms.png',
authors: ["BastienMe","kishanprmr","MoShizzle","khaledmashaly","abuaboud"],
categories: [PieceCategory.FORMS_AND_SURVEYS],
auth: kizeoFormsAuth,
actions: [
getDataDefinition,
pushData,
downloadStandardPDF,
downloadCustomExportInItsOriginalFormat,
getListDefinition,
getListItem,
getAllListItems,
CreateListItem,
editListItem,
deleteListItem,
createCustomApiCallAction({
baseUrl: () => endpoint,
auth: kizeoFormsAuth,
authMapping: async (auth) => {
return {
Authorization: auth.secret_text,
};
},
}),
],
triggers: [
eventOnData,
eventOnDataDeleted,
eventOnDataFinished,
eventOnDataPushed,
eventOnDataPulled,
eventOnDataUpdated,
],
});

View File

@@ -0,0 +1,64 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
export const CreateListItem = createAction({
auth: kizeoFormsAuth,
name: 'create_list_item',
displayName: 'Create List Item',
description: 'Create a new list item in Kizeo Forms',
props: {
listId: kizeoFormsCommon.listId,
itemLabel: Property.ShortText({
displayName: 'Item Label',
description: 'Label for the new list item',
required: true,
}),
properties: kizeoFormsCommon.listProperties,
},
async run(context) {
const { listId, itemLabel, properties } = context.propsValue;
type Body = {
items: [
{
label: string;
properties: Record<string, string | number>;
}
];
};
const body: Body = {
items: [
{
label: itemLabel,
properties: {},
},
],
};
for (let i = 0; i < Object.keys(properties).length; i++) {
const propertyId = Object.keys(properties)[i];
const propertyValue = properties[Object.keys(properties)[i]];
body.items[0].properties[propertyId] = parseFloat(propertyValue)
? parseFloat(propertyValue)
: propertyValue;
}
const response = await httpClient.sendRequest<{ data: unknown }>({
method: HttpMethod.POST,
url:
endpoint + `public/v4/lists/${listId}/items?used-with-active-pieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: context.auth.secret_text,
},
body: body,
});
if (response.status === 201) {
return response.body;
}
return [];
},
});

View File

@@ -0,0 +1,38 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
export const deleteListItem = createAction({
auth: kizeoFormsAuth,
name: 'delete_list_item',
displayName: 'Delete List Item',
description: 'Delete a specific item from a list',
props: {
listId: kizeoFormsCommon.listId,
itemId: Property.ShortText({
displayName: 'Item Id',
description: 'The ID of the item to delete',
required: true,
}),
},
async run(context) {
const { listId, itemId } = context.propsValue;
const response = await httpClient.sendRequest({
method: HttpMethod.DELETE,
url:
endpoint +
`public/v4/lists/${listId}/items/${itemId}?used-with-active-pieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: context.auth.secret_text,
},
});
if (response.status === 200) {
return response.body;
}
return [];
},
});

View File

@@ -0,0 +1,62 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { endpoint, kizeoFormsCommon } from '../common';
import axios from 'axios';
import { kizeoFormsAuth } from '../..';
export const downloadCustomExportInItsOriginalFormat = createAction({
auth: kizeoFormsAuth,
name: 'download_custom_export_in_its_original_format', // Must be a unique across the piece, this shouldn't be changed.
displayName: 'Download custom export in its original format',
description: 'Download a custom export in its original format',
props: {
formId: kizeoFormsCommon.formId,
exportId: kizeoFormsCommon.exportId,
exportInPdf: Property.Checkbox({
displayName: 'Export in PDF',
description: undefined,
required: true,
}),
dataId: Property.Number({
displayName: 'Data Id',
description: undefined,
required: true,
}),
},
async run(context) {
const { formId, dataId, exportId, exportInPdf } = context.propsValue;
let uri = '';
let headers = {};
if (exportInPdf) {
uri =
endpoint +
`v3/forms/${formId}/data/${dataId}/pdf?used-with-actives-pieces=`;
headers = {
'Content-Type': 'application/pdf',
Authorization: context.auth.secret_text,
};
} else {
uri =
endpoint +
`v3/forms/${formId}/data/${dataId}/exports/${exportId}?used-with-n8n=`;
headers = {
Accept:
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
Authorization: context.auth.secret_text,
};
}
const response = await axios.get(uri, {
headers: headers,
responseType: 'arraybuffer',
});
if (response.status === 200) {
return (
'data:application/octet-stream;base64,' +
Buffer.from(response.data).toString('base64')
);
}
return [];
},
});

View File

@@ -0,0 +1,42 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { endpoint, kizeoFormsCommon } from '../common';
import axios from 'axios';
import { kizeoFormsAuth } from '../..';
export const downloadStandardPDF = createAction({
auth: kizeoFormsAuth,
name: 'download_standard_pdf', // Must be a unique across the piece, this shouldn't be changed.
displayName: 'Download Standard PDF',
description: 'Get PDF data of a form',
props: {
formId: kizeoFormsCommon.formId,
dataId: Property.Number({
displayName: 'Data Id',
description: undefined,
required: true,
}),
},
async run(context) {
const { formId, dataId } = context.propsValue;
const response = await axios.get(
endpoint +
`v3/forms/${formId}/data/${dataId}/pdf?used-with-actives-pieces=`,
{
headers: {
'Content-Type': 'application/pdf',
Authorization: context.auth.secret_text,
},
responseType: 'arraybuffer',
}
);
if (response.status === 200) {
return (
'data:application/pdf;base64,' +
Buffer.from(response.data).toString('base64')
);
}
return [];
},
});

View File

@@ -0,0 +1,71 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
export const editListItem = createAction({
auth: kizeoFormsAuth,
name: 'edit_list_item',
displayName: 'Edit List Item',
description: 'Edit a specific item in a list',
props: {
listId: kizeoFormsCommon.listId,
itemId: Property.ShortText({
displayName: 'Item Id',
description: 'The ID of the item to edit',
required: true,
}),
itemLabel: Property.ShortText({
displayName: 'Item Label',
description: 'Label for the new list item',
required: true,
}),
properties: kizeoFormsCommon.listProperties,
},
async run(context) {
const { listId, itemId, itemLabel, properties } = context.propsValue;
type Body = {
items: [
{
item_id: string;
label: string;
properties: Record<string, string | number>;
}
];
};
const body: Body = {
items: [
{
item_id: itemId,
label: itemLabel,
properties: {},
},
],
};
for (let i = 0; i < Object.keys(properties).length; i++) {
const propertyId = Object.keys(properties)[i];
const propertyValue = properties[Object.keys(properties)[i]];
body.items[0].properties[propertyId] = parseFloat(propertyValue)
? parseFloat(propertyValue)
: propertyValue;
}
const response = await httpClient.sendRequest({
method: HttpMethod.PATCH,
url: endpoint + `public/v4/lists/${listId}/items?used-with-activepieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: context.auth.secret_text,
},
body: body,
});
if (response.status === 200) {
return response.body;
}
return [];
},
});

View File

@@ -0,0 +1,73 @@
import {
createAction,
Property,
} from '@activepieces/pieces-framework';
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
import { z } from 'zod';
import { propsValidation } from '@activepieces/pieces-common';
export const getAllListItems = createAction({
auth: kizeoFormsAuth,
name: 'get_all_list_items',
displayName: 'Get All List Items',
description: 'Get all items from a specific list',
props: {
search: Property.ShortText({
displayName: 'Search',
description: 'Pattern to search',
required: false,
}),
offset: Property.Number({
displayName: 'Offset',
required: false,
}),
limit: Property.Number({
displayName: 'Limit',
description: 'Max number of results to return',
required: false,
}),
sort: Property.ShortText({
displayName: 'Sort',
description: 'Target for sorting',
required: false,
}),
direction: Property.ShortText({
displayName: 'Direction',
description: 'Sorting: asc or desc',
required: false,
}),
listId: kizeoFormsCommon.listId,
},
async run(context) {
await propsValidation.validateZod(context.propsValue, {
limit: z.number().min(1).optional(),
});
const { listId, search, offset, limit, sort, direction } =
context.propsValue;
let parameters = '';
if (search) parameters += `search=${search}&`;
if (offset) parameters += `offset=${offset}&`;
if (limit) parameters += `limit=${limit}&`;
if (sort) parameters += `sort=${sort}&`;
if (direction) parameters += `direction=${direction}&`;
const response = await httpClient.sendRequest<{ data: unknown }>({
method: HttpMethod.GET,
url:
endpoint +
`public/v4/lists/${listId}/items?${parameters}used-with-activepieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: context.auth.secret_text,
},
});
if (response.status === 200) {
return response.body;
}
return [];
},
});

View File

@@ -0,0 +1,38 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
export const getDataDefinition = createAction({
auth: kizeoFormsAuth,
name: 'get_data_definition', // Must be a unique across the piece, this shouldn't be changed.
displayName: 'Get Data Definition',
description: 'Get the definition of a data',
props: {
formId: kizeoFormsCommon.formId,
dataId: Property.Number({
displayName: 'Data Id',
description: undefined,
required: true,
}),
},
async run(context) {
const { formId, dataId } = context.propsValue;
const response = await httpClient.sendRequest<{ data: unknown }>({
method: HttpMethod.GET,
url:
endpoint +
`v3/forms/${formId}/data/${dataId}?format=4&used-with-actives-pieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: context.auth.secret_text,
},
});
if (response.status === 200) {
return response.body.data;
}
return [];
},
});

View File

@@ -0,0 +1,33 @@
import { createAction } from '@activepieces/pieces-framework';
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
export const getListDefinition = createAction({
auth: kizeoFormsAuth,
name: 'get_list_definition',
displayName: 'Get List Definition',
description: 'Get the definition of a list',
props: {
listId: kizeoFormsCommon.listId,
},
async run(context) {
const { listId } = context.propsValue;
const response = await httpClient.sendRequest<{ list: unknown }>({
method: HttpMethod.GET,
url:
endpoint +
`public/v4/lists/${listId}/definition?used-with-activepieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: context.auth.secret_text,
},
});
if (response.status === 200) {
return response.body;
}
return [];
},
});

View File

@@ -0,0 +1,37 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
export const getListItem = createAction({
auth: kizeoFormsAuth,
name: 'get_list_item',
displayName: 'Get List Item',
description: 'Get a specific item from a list',
props: {
listId: kizeoFormsCommon.listId,
itemId: Property.ShortText({
displayName: 'Item Id',
description: 'The ID of the item you want to retrieve from the list',
required: true,
}),
},
async run(context) {
const { listId, itemId } = context.propsValue;
const response = await httpClient.sendRequest<{ data: unknown }>({
method: HttpMethod.GET,
url:
endpoint +
`public/v4/lists/${listId}/items/${itemId}?used-with-activepieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: context.auth.secret_text,
},
});
if (response.status === 200) {
return response.body;
}
return [];
},
});

View File

@@ -0,0 +1,49 @@
import { createAction } from '@activepieces/pieces-framework';
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
export const pushData = createAction({
auth: kizeoFormsAuth,
name: 'push_data', // Must be a unique across the piece, this shouldn't be changed.
displayName: 'Push Data',
description: 'Push a data to a form',
props: {
formId: kizeoFormsCommon.formId,
userId: kizeoFormsCommon.userId,
fields: kizeoFormsCommon.fields,
},
async run(context) {
const { formId, userId, fields } = context.propsValue;
type Body = {
recipient_user_id: string | undefined;
fields: Record<string, { value: string }>;
};
const body: Body = {
recipient_user_id: userId,
fields: {},
};
for (let i = 0; i < Object.keys(fields).length; i++) {
const fieldId = Object.keys(fields)[i];
body.fields[fieldId] = { value: fields[Object.keys(fields)[i]] };
}
const response = await httpClient.sendRequest<{ data: unknown }>({
method: HttpMethod.POST,
url: endpoint + `v3/forms/${formId}/push?used-with-actives-pieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: context.auth.secret_text,
},
body: body,
});
if (response.status === 200) {
return response.body.data;
}
return [];
},
});

View File

@@ -0,0 +1,400 @@
import { DynamicPropsValue, Property } from '@activepieces/pieces-framework';
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import {
KizeoFormsDataUsers,
KizeoFormsExports,
KizeoFormsForms,
KizeoFormsList,
KizeoFormsLists,
} from './models';
import { kizeoFormsAuth } from '../..';
export const endpoint = 'https://forms.kizeo.com/rest/';
export const kizeoFormsCommon = {
formId: Property.Dropdown<string,true,typeof kizeoFormsAuth>({
displayName: 'Form',
required: true,
refreshers: [],
auth: kizeoFormsAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account',
};
}
try {
const forms: KizeoFormsForms[] = await kizeoFormsCommon.fetchForms({
token: auth.secret_text,
});
if (forms) {
return {
disabled: false,
options: forms.map((forms) => ({
value: forms.id,
label: forms.name,
})),
};
}
} catch (e) {
console.debug(e);
return {
disabled: true,
options: [],
placeholder: 'Please check your permission scope',
};
}
return {
disabled: true,
options: [],
};
},
}),
userId: Property.Dropdown<string,true,typeof kizeoFormsAuth>({
displayName: 'User',
required: true,
refreshers: [],
auth: kizeoFormsAuth,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account',
};
}
try {
const dataUsers: KizeoFormsDataUsers =
await kizeoFormsCommon.fetchUsers({
token: auth.secret_text,
});
if (dataUsers) {
return {
disabled: false,
options: dataUsers.users.map((users) => ({
value: users.id,
label: users.first_name + ' ' + users.last_name,
})),
};
}
} catch (e) {
console.debug(e);
return {
disabled: true,
options: [],
placeholder: 'Please check your permission scope',
};
}
return {
disabled: true,
options: [],
};
},
}),
exportId: Property.Dropdown<string,true,typeof kizeoFormsAuth>({
displayName: 'Export',
required: true,
refreshers: ['formId'],
auth: kizeoFormsAuth,
options: async ({ auth, formId }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account',
};
}
if (!formId) {
return {
disabled: true,
options: [],
placeholder: 'Please select a form',
};
}
try {
const exportList: KizeoFormsExports[] =
await kizeoFormsCommon.fetchExports({
token: auth.secret_text,
formId: formId as string,
});
if (exportList) {
return {
disabled: false,
options: exportList.map((exportItem) => ({
value: exportItem.id,
label: exportItem.name,
})),
};
}
} catch (e) {
console.debug(e);
return {
disabled: true,
options: [],
placeholder: 'Please check your permission scope',
};
}
return {
disabled: true,
options: [],
};
},
}),
fields: Property.DynamicProperties({
displayName: 'Form',
required: true,
refreshers: ['formId'],
auth: kizeoFormsAuth,
props: async ({ auth, formId }) => {
if (!auth) return {};
if (!formId) return {};
const fields: DynamicPropsValue = {};
try {
const form: KizeoFormsForms = await kizeoFormsCommon.fetchForm({
token: auth.secret_text,
formId: formId as unknown as string,
});
const results: Record<string, any> = form.fields;
for (let i = 0; i < Object.keys(results).length; i++) {
const fieldId = Object.keys(results)[i];
if (Object.values(results)[i].type === 'text') {
fields[fieldId] = Property.ShortText({
displayName: Object.values(results)[i].caption,
required: Object.values(results)[i].required,
});
}
}
} catch (e) {
console.debug(e);
}
return fields;
},
}),
listId: Property.Dropdown<string,true,typeof kizeoFormsAuth>({
auth: kizeoFormsAuth,
displayName: 'List',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account',
};
}
try {
const lists: KizeoFormsLists[] = await kizeoFormsCommon.fetchLists({
token: auth.secret_text,
});
if (lists) {
return {
disabled: false,
options: lists.map((lists) => ({
value: lists.id,
label: lists.name,
})),
};
}
} catch (e) {
console.debug(e);
return {
disabled: true,
options: [],
placeholder: 'Please check your permission scope',
};
}
return {
disabled: true,
options: [],
};
},
}),
listProperties: Property.DynamicProperties({
displayName: 'List',
required: true,
refreshers: ['listId'],
auth: kizeoFormsAuth,
props: async ({ auth, listId }) => {
if (!auth) return {};
if (!listId) return {};
const properties: DynamicPropsValue = {};
try {
const list: KizeoFormsList = await kizeoFormsCommon.fetchList({
token: auth.secret_text,
listId: listId as unknown as string,
});
const results: Record<string, any> = list.properties_definition;
for (let i = 0; i < Object.keys(results).length; i++) {
const propertyId = Object.keys(results)[i];
if (Object.values(results)[i].type === 'string') {
properties[propertyId] = Property.ShortText({
displayName: Object.values(results)[i].display_name,
required: false,
});
} else {
properties[propertyId] = Property.Number({
displayName: Object.values(results)[i].display_name,
required: false,
});
}
}
} catch (e) {
console.debug(e);
}
return properties;
},
}),
async fetchForms({ token }: { token: string }): Promise<KizeoFormsForms[]> {
const response = await httpClient.sendRequest<{ forms: KizeoFormsForms[] }>(
{
method: HttpMethod.GET,
url: endpoint + `v3/forms?used-with-activepieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: token,
},
}
);
if (response.status === 200) {
return response.body.forms;
}
return [];
},
async fetchUsers({ token }: { token: string }): Promise<KizeoFormsDataUsers> {
const response = await httpClient.sendRequest<{
data: KizeoFormsDataUsers;
}>({
method: HttpMethod.GET,
url: endpoint + `v3/users?used-with-activepieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: token,
},
});
if (response.status === 200) {
return response.body.data;
}
return { users: [] };
},
async fetchForm({
token,
formId,
}: {
token: string;
formId: string;
}): Promise<KizeoFormsForms> {
const response = await httpClient.sendRequest<{ form: KizeoFormsForms }>({
method: HttpMethod.GET,
url: endpoint + `v3/forms/${formId}?used-with-activepieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: token,
},
});
if (response.status === 200) {
return response.body.form;
} else {
throw new Error(`Failed to fetch form ${formId}`);
}
},
async fetchExports({
token,
formId,
}: {
token: string;
formId: string;
}): Promise<KizeoFormsExports[]> {
const response = await httpClient.sendRequest<{
exports: KizeoFormsExports[];
}>({
method: HttpMethod.GET,
url: endpoint + `v3/forms/${formId}/exports?used-with-activepieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: token,
},
});
if (response.status === 200) {
return response.body.exports;
} else {
throw new Error(`Failed to fetch exports ${formId}`);
}
},
async fetchLists({ token }: { token: string }): Promise<KizeoFormsLists[]> {
const response = await httpClient.sendRequest<{ lists: KizeoFormsLists[] }>(
{
method: HttpMethod.GET,
url: endpoint + `v3/lists?used-with-activepieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: token,
},
}
);
if (response.status === 200) {
return response.body.lists;
}
return [];
},
async fetchList({
token,
listId,
}: {
token: string;
listId: string;
}): Promise<KizeoFormsList> {
const response = await httpClient.sendRequest<{ list: KizeoFormsList }>({
method: HttpMethod.GET,
url:
endpoint +
`public/v4/lists/${listId}/definition?used-with-activepieces=`,
headers: {
'Content-Type': 'application/json',
Authorization: token,
},
});
if (response.status === 200) {
const list: KizeoFormsList = response.body as unknown as KizeoFormsList;
return list;
} else {
throw new Error(`Failed to fetch form ${listId}`);
}
},
};

View File

@@ -0,0 +1,42 @@
export interface KizeoFormsForms {
id: string;
name: string;
fields: Record<string, KizeoFormsFields>;
}
export interface KizeoFormsFields {
caption: string;
type: string;
required: boolean;
}
export interface KizeoFormsDataExports {
exports: KizeoFormsExports[];
}
export interface KizeoFormsExports {
id: string;
name: string;
}
export interface KizeoFormsDataUsers {
users: KizeoFormsUsers[];
}
export interface KizeoFormsUsers {
id: string;
login: string;
first_name: string;
last_name: string;
}
export interface KizeoFormsLists {
id: string;
name: string;
}
export interface KizeoFormsList {
list_name: string;
properties_definition: Record<string, KizeoFormsListProperty>;
order_by: Array<{ id: string; type: string }>;
group_by: string[];
}
export interface KizeoFormsListProperty {
display_name: string;
type: string;
id: string;
}

View File

@@ -0,0 +1,156 @@
import {
HttpRequest,
HttpMethod,
httpClient,
} from '@activepieces/pieces-common';
import {
Property,
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
const triggerNameInStore = 'event_on_data_deleted_trigger';
export const eventOnDataDeleted = createTrigger({
auth: kizeoFormsAuth,
name: 'event_on_data_deleted',
displayName: 'Event On Data Deleted',
description: 'Handle EventOnData delete event via webhooks',
props: {
format: Property.StaticDropdown({
displayName: 'Output Format',
description: 'Select the output format',
required: true,
defaultValue: 'simple',
options: {
options: [
{
label: 'Simple format',
value: 'simple',
},
{
label: 'Advanced format',
value: 'advanced',
},
],
},
}),
formId: kizeoFormsCommon.formId,
},
sampleData: {
id: '1',
eventType: '[delete]',
data: {
format: '4',
answer_time: '2023-04-11T13:59:23+02:00',
update_answer_time: '2023-04-11T13:59:23+02:00',
id_tel: 'web2',
form_id: '1',
origin: 'web',
app_version: 'webapp',
media: [],
fields: {},
id: '1',
user_id: '1',
recipient_id: '1',
parent_data_id: null,
},
},
type: TriggerStrategy.WEBHOOK,
async onEnable(context) {
const { formId } = context.propsValue;
const webhookUrl = context.webhookUrl;
// eslint-disable-next-line no-useless-escape
const match = webhookUrl.match(/\/webhooks\/([^\/]+)/);
let workflowId = 'FlowId';
if (match) {
workflowId = match[1];
}
const request: HttpRequest = {
method: HttpMethod.POST,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks?used-with-actives-pieces=`,
body: {
on_events: ['delete'],
url: webhookUrl,
http_verb: 'POST',
body_content_choice: 'json_v4',
third_party: 'ActivePieces ',
third_party_id: workflowId,
},
headers: {
Authorization: context.auth.secret_text,
},
queryParams: {},
};
const { body } = await httpClient.sendRequest<{ id: string }>(request);
await context.store?.put<KizeoFormsWebhookInformation>(triggerNameInStore, {
webhookId: body.id,
});
},
async onDisable(context) {
const { formId } = context.propsValue;
const response = await context.store?.get<KizeoFormsWebhookInformation>(
triggerNameInStore
);
if (response !== null && response !== undefined) {
const request: HttpRequest = {
method: HttpMethod.DELETE,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks/${response.webhookId}?used-with-actives-pieces=`,
headers: {
Authorization: context.auth.secret_text,
},
};
await httpClient.sendRequest(request);
}
},
async run(context) {
if (!context.payload.body) {
return [];
}
const body = context.payload.body as BodyDataType;
const formattedData: FormattedData = {
id: body.id,
};
if (context.propsValue.format === 'simple') {
for (const fieldKey in body.data.fields) {
if (
body.data.fields[fieldKey].result &&
body.data.fields[fieldKey].result?.value !== undefined
) {
const newFieldKey = fieldKey;
formattedData[newFieldKey] = body.data.fields[fieldKey].result?.value;
}
}
return [formattedData];
}
return [body];
},
});
interface FormattedData {
id: string;
[key: string]: any;
}
interface BodyDataType {
id: string;
data: {
fields: {
[key: string]: {
result?: {
value: any;
};
};
};
};
}
interface KizeoFormsWebhookInformation {
webhookId: string;
}

View File

@@ -0,0 +1,156 @@
import {
HttpRequest,
HttpMethod,
httpClient,
} from '@activepieces/pieces-common';
import {
Property,
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
const triggerNameInStore = 'event_on_data_finished_trigger';
export const eventOnDataFinished = createTrigger({
auth: kizeoFormsAuth,
name: 'event_on_data_finished',
displayName: 'Event On Data Finished',
description: 'Handle EventOnData save event via webhooks',
props: {
format: Property.StaticDropdown({
displayName: 'Output Format',
description: 'Select the output format',
required: true,
defaultValue: 'simple',
options: {
options: [
{
label: 'Simple format',
value: 'simple',
},
{
label: 'Advanced format',
value: 'advanced',
},
],
},
}),
formId: kizeoFormsCommon.formId,
},
sampleData: {
id: '1',
eventType: '[finished]',
data: {
format: '4',
answer_time: '2023-04-11T13:59:23+02:00',
update_answer_time: '2023-04-11T13:59:23+02:00',
id_tel: 'web2',
form_id: '1',
origin: 'web',
app_version: 'webapp',
media: [],
fields: {},
id: '1',
user_id: '1',
recipient_id: '1',
parent_data_id: null,
},
},
type: TriggerStrategy.WEBHOOK,
async onEnable(context) {
const { formId } = context.propsValue;
const webhookUrl = context.webhookUrl;
// eslint-disable-next-line no-useless-escape
const match = webhookUrl.match(/\/webhooks\/([^\/]+)/);
let workflowId = 'FlowId';
if (match) {
workflowId = match[1];
}
const request: HttpRequest = {
method: HttpMethod.POST,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks?used-with-actives-pieces=`,
body: {
on_events: ['finished'],
url: webhookUrl,
http_verb: 'POST',
body_content_choice: 'json_v4',
third_party: 'ActivePieces ',
third_party_id: workflowId,
},
headers: {
Authorization: context.auth.secret_text,
},
queryParams: {},
};
const { body } = await httpClient.sendRequest<{ id: string }>(request);
await context.store?.put<KizeoFormsWebhookInformation>(triggerNameInStore, {
webhookId: body.id,
});
},
async onDisable(context) {
const { formId } = context.propsValue;
const response = await context.store?.get<KizeoFormsWebhookInformation>(
triggerNameInStore
);
if (response !== null && response !== undefined) {
const request: HttpRequest = {
method: HttpMethod.DELETE,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks/${response.webhookId}?used-with-actives-pieces=`,
headers: {
Authorization: context.auth.secret_text,
},
};
await httpClient.sendRequest(request);
}
},
async run(context) {
if (!context.payload.body) {
return [];
}
const body = context.payload.body as BodyDataType;
const formattedData: FormattedData = {
id: body.id,
};
if (context.propsValue.format === 'simple') {
for (const fieldKey in body.data.fields) {
if (
body.data.fields[fieldKey].result &&
body.data.fields[fieldKey].result?.value !== undefined
) {
const newFieldKey = fieldKey;
formattedData[newFieldKey] = body.data.fields[fieldKey].result?.value;
}
}
return [formattedData];
}
return [body];
},
});
interface FormattedData {
id: string;
[key: string]: any;
}
interface BodyDataType {
id: string;
data: {
fields: {
[key: string]: {
result?: {
value: any;
};
};
};
};
}
interface KizeoFormsWebhookInformation {
webhookId: string;
}

View File

@@ -0,0 +1,156 @@
import {
HttpRequest,
HttpMethod,
httpClient,
} from '@activepieces/pieces-common';
import {
Property,
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
const triggerNameInStore = 'event_on_data_pushed_trigger';
export const eventOnDataPushed = createTrigger({
auth: kizeoFormsAuth,
name: 'event_on_data_pushed',
displayName: 'Event On Data Pushed',
description: 'Handle EventOnData push event via webhooks',
props: {
format: Property.StaticDropdown({
displayName: 'Output Format',
description: 'Select the output format',
required: true,
defaultValue: 'simple',
options: {
options: [
{
label: 'Simple format',
value: 'simple',
},
{
label: 'Advanced format',
value: 'advanced',
},
],
},
}),
formId: kizeoFormsCommon.formId,
},
sampleData: {
id: '1',
eventType: '[push]',
data: {
format: '4',
answer_time: '2023-04-11T13:59:23+02:00',
update_answer_time: '2023-04-11T13:59:23+02:00',
id_tel: 'web2',
form_id: '1',
origin: 'web',
app_version: 'webapp',
media: [],
fields: {},
id: '1',
user_id: '1',
recipient_id: '1',
parent_data_id: null,
},
},
type: TriggerStrategy.WEBHOOK,
async onEnable(context) {
const { formId } = context.propsValue;
const webhookUrl = context.webhookUrl;
// eslint-disable-next-line no-useless-escape
const match = webhookUrl.match(/\/webhooks\/([^\/]+)/);
let workflowId = 'FlowId';
if (match) {
workflowId = match[1];
}
const request: HttpRequest = {
method: HttpMethod.POST,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks?used-with-actives-pieces=`,
body: {
on_events: ['push'],
url: webhookUrl,
http_verb: 'POST',
body_content_choice: 'json_v4',
third_party: 'ActivePieces ',
third_party_id: workflowId,
},
headers: {
Authorization: context.auth.secret_text,
},
queryParams: {},
};
const { body } = await httpClient.sendRequest<{ id: string }>(request);
await context.store?.put<KizeoFormsWebhookInformation>(triggerNameInStore, {
webhookId: body.id,
});
},
async onDisable(context) {
const { formId } = context.propsValue;
const response = await context.store?.get<KizeoFormsWebhookInformation>(
triggerNameInStore
);
if (response !== null && response !== undefined) {
const request: HttpRequest = {
method: HttpMethod.DELETE,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks/${response.webhookId}?used-with-actives-pieces=`,
headers: {
Authorization: context.auth.secret_text,
},
};
await httpClient.sendRequest(request);
}
},
async run(context) {
if (!context.payload.body) {
return [];
}
const body = context.payload.body as BodyDataType;
const formattedData: FormattedData = {
id: body.id,
};
if (context.propsValue.format === 'simple') {
for (const fieldKey in body.data.fields) {
if (
body.data.fields[fieldKey].result &&
body.data.fields[fieldKey].result?.value !== undefined
) {
const newFieldKey = fieldKey;
formattedData[newFieldKey] = body.data.fields[fieldKey].result?.value;
}
}
return [formattedData];
}
return [body];
},
});
interface FormattedData {
id: string;
[key: string]: any;
}
interface BodyDataType {
id: string;
data: {
fields: {
[key: string]: {
result?: {
value: any;
};
};
};
};
}
interface KizeoFormsWebhookInformation {
webhookId: string;
}

View File

@@ -0,0 +1,156 @@
import {
HttpRequest,
HttpMethod,
httpClient,
} from '@activepieces/pieces-common';
import {
Property,
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
const triggerNameInStore = 'event_on_data_received_trigger';
export const eventOnDataPulled = createTrigger({
auth: kizeoFormsAuth,
name: 'event_on_data_received',
displayName: 'Event On Data Received',
description: 'Handle EventOnData receive event via webhooks',
props: {
format: Property.StaticDropdown({
displayName: 'Output Format',
description: 'Select the output format',
required: true,
defaultValue: 'simple',
options: {
options: [
{
label: 'Simple format',
value: 'simple',
},
{
label: 'Advanced format',
value: 'advanced',
},
],
},
}),
formId: kizeoFormsCommon.formId,
},
sampleData: {
id: '1',
eventType: '[pull]',
data: {
format: '4',
answer_time: '2023-04-11T13:59:23+02:00',
update_answer_time: '2023-04-11T13:59:23+02:00',
id_tel: 'web2',
form_id: '1',
origin: 'web',
app_version: 'webapp',
media: [],
fields: {},
id: '1',
user_id: '1',
recipient_id: '1',
parent_data_id: null,
},
},
type: TriggerStrategy.WEBHOOK,
async onEnable(context) {
const { formId } = context.propsValue;
const webhookUrl = context.webhookUrl;
// eslint-disable-next-line no-useless-escape
const match = webhookUrl.match(/\/webhooks\/([^\/]+)/);
let workflowId = 'FlowId';
if (match) {
workflowId = match[1];
}
const request: HttpRequest = {
method: HttpMethod.POST,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks?used-with-actives-pieces=`,
body: {
on_events: ['pull'],
url: webhookUrl,
http_verb: 'POST',
body_content_choice: 'json_v4',
third_party: 'ActivePieces ',
third_party_id: workflowId,
},
headers: {
Authorization: context.auth.secret_text,
},
queryParams: {},
};
const { body } = await httpClient.sendRequest<{ id: string }>(request);
await context.store?.put<KizeoFormsWebhookInformation>(triggerNameInStore, {
webhookId: body.id,
});
},
async onDisable(context) {
const { formId } = context.propsValue;
const response = await context.store?.get<KizeoFormsWebhookInformation>(
triggerNameInStore
);
if (response !== null && response !== undefined) {
const request: HttpRequest = {
method: HttpMethod.DELETE,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks/${response.webhookId}?used-with-actives-pieces=`,
headers: {
Authorization: context.auth.secret_text,
},
};
await httpClient.sendRequest(request);
}
},
async run(context) {
if (!context.payload.body) {
return [];
}
const body = context.payload.body as BodyDataType;
const formattedData: FormattedData = {
id: body.id,
};
if (context.propsValue.format === 'simple') {
for (const fieldKey in body.data.fields) {
if (
body.data.fields[fieldKey].result &&
body.data.fields[fieldKey].result?.value !== undefined
) {
const newFieldKey = fieldKey;
formattedData[newFieldKey] = body.data.fields[fieldKey].result?.value;
}
}
return [formattedData];
}
return [body];
},
});
interface FormattedData {
id: string;
[key: string]: any;
}
interface BodyDataType {
id: string;
data: {
fields: {
[key: string]: {
result?: {
value: any;
};
};
};
};
}
interface KizeoFormsWebhookInformation {
webhookId: string;
}

View File

@@ -0,0 +1,156 @@
import {
HttpRequest,
HttpMethod,
httpClient,
} from '@activepieces/pieces-common';
import {
Property,
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
const triggerNameInStore = 'event_on_data_updated_trigger';
export const eventOnDataUpdated = createTrigger({
auth: kizeoFormsAuth,
name: 'event_on_data_updated',
displayName: 'Event On Data Updated',
description: 'Handle EventOnData update event via webhooks',
props: {
format: Property.StaticDropdown({
displayName: 'Output Format',
description: 'Select the output format',
required: true,
defaultValue: 'simple',
options: {
options: [
{
label: 'Simple format',
value: 'simple',
},
{
label: 'Advanced format',
value: 'advanced',
},
],
},
}),
formId: kizeoFormsCommon.formId,
},
sampleData: {
id: '1',
eventType: '[finished]',
data: {
format: '4',
answer_time: '2023-04-11T13:59:23+02:00',
update_answer_time: '2023-04-11T13:59:23+02:00',
id_tel: 'web2',
form_id: '1',
origin: 'web',
app_version: 'webapp',
media: [],
fields: {},
id: '1',
user_id: '1',
recipient_id: '1',
parent_data_id: null,
},
},
type: TriggerStrategy.WEBHOOK,
async onEnable(context) {
const { formId } = context.propsValue;
const webhookUrl = context.webhookUrl;
// eslint-disable-next-line no-useless-escape
const match = webhookUrl.match(/\/webhooks\/([^\/]+)/);
let workflowId = 'FlowId';
if (match) {
workflowId = match[1];
}
const request: HttpRequest = {
method: HttpMethod.POST,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks?used-with-actives-pieces=`,
body: {
on_events: ['update'],
url: webhookUrl,
http_verb: 'POST',
body_content_choice: 'json_v4',
third_party: 'ActivePieces ',
third_party_id: workflowId,
},
headers: {
Authorization: context.auth.secret_text,
},
queryParams: {},
};
const { body } = await httpClient.sendRequest<{ id: string }>(request);
await context.store?.put<KizeoFormsWebhookInformation>(triggerNameInStore, {
webhookId: body.id,
});
},
async onDisable(context) {
const { formId } = context.propsValue;
const response = await context.store?.get<KizeoFormsWebhookInformation>(
triggerNameInStore
);
if (response !== null && response !== undefined) {
const request: HttpRequest = {
method: HttpMethod.DELETE,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks/${response.webhookId}?used-with-actives-pieces=`,
headers: {
Authorization: context.auth.secret_text,
},
};
await httpClient.sendRequest(request);
}
},
async run(context) {
if (!context.payload.body) {
return [];
}
const body = context.payload.body as BodyDataType;
const formattedData: FormattedData = {
id: body.id,
};
if (context.propsValue.format === 'simple') {
for (const fieldKey in body.data.fields) {
if (
body.data.fields[fieldKey].result &&
body.data.fields[fieldKey].result?.value !== undefined
) {
const newFieldKey = fieldKey;
formattedData[newFieldKey] = body.data.fields[fieldKey].result?.value;
}
}
return [formattedData];
}
return [body];
},
});
interface FormattedData {
id: string;
[key: string]: any;
}
interface BodyDataType {
id: string;
data: {
fields: {
[key: string]: {
result?: {
value: any;
};
};
};
};
}
interface KizeoFormsWebhookInformation {
webhookId: string;
}

View File

@@ -0,0 +1,325 @@
import {
HttpRequest,
HttpMethod,
httpClient,
} from '@activepieces/pieces-common';
import {
Property,
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { endpoint, kizeoFormsCommon } from '../common';
import { kizeoFormsAuth } from '../..';
const triggerNameInStore = 'event_on_data_trigger';
export const eventOnData = createTrigger({
auth: kizeoFormsAuth,
name: 'event_on_data',
displayName: 'Event On Data',
description: 'Handle EventOnData events via webhooks',
props: {
format: Property.StaticDropdown({
displayName: 'Output Format',
description: 'Select the output format',
required: true,
defaultValue: 'simple',
options: {
options: [
{
label: 'Simple format',
value: 'simple',
},
{
label: 'Advanced format',
value: 'advanced',
},
],
},
}),
formId: kizeoFormsCommon.formId,
event1: Property.StaticDropdown({
displayName: 'Events',
description: 'Which events will trigger this hook',
required: true,
options: {
options: [
{
label: 'Data Deleted',
value: 'delete',
},
{
label: 'Data Saved',
value: 'finished',
},
{
label: 'Data Updated',
value: 'update',
},
{
label: 'Push Received',
value: 'pull',
},
{
label: 'Push Send',
value: 'push',
},
],
},
}),
event2: Property.StaticDropdown({
displayName: 'Events',
description: 'Which events will trigger this hook',
required: false,
options: {
options: [
{
label: '',
value: '',
},
{
label: 'Data Deleted',
value: 'delete',
},
{
label: 'Data Saved',
value: 'finished',
},
{
label: 'Data Updated',
value: 'update',
},
{
label: 'Push Received',
value: 'pull',
},
{
label: 'Push Send',
value: 'push',
},
],
},
}),
event3: Property.StaticDropdown({
displayName: 'Events',
description: 'Which events will trigger this hook',
required: false,
options: {
options: [
{
label: '',
value: '',
},
{
label: 'Data Deleted',
value: 'delete',
},
{
label: 'Data Saved',
value: 'finished',
},
{
label: 'Data Updated',
value: 'update',
},
{
label: 'Push Received',
value: 'pull',
},
{
label: 'Push Send',
value: 'push',
},
],
},
}),
event4: Property.StaticDropdown({
displayName: 'Events',
description: 'Which events will trigger this hook',
required: false,
options: {
options: [
{
label: '',
value: '',
},
{
label: 'Data Deleted',
value: 'delete',
},
{
label: 'Data Saved',
value: 'finished',
},
{
label: 'Data Updated',
value: 'update',
},
{
label: 'Push Received',
value: 'pull',
},
{
label: 'Push Send',
value: 'push',
},
],
},
}),
event5: Property.StaticDropdown({
displayName: 'Events',
description: 'Which events will trigger this hook',
required: false,
options: {
options: [
{
label: '',
value: '',
},
{
label: 'Data Deleted',
value: 'delete',
},
{
label: 'Data Saved',
value: 'finished',
},
{
label: 'Data Updated',
value: 'update',
},
{
label: 'Push Received',
value: 'pull',
},
{
label: 'Push Send',
value: 'push',
},
],
},
}),
},
sampleData: {
id: '1',
eventType: '[finished, pull]',
data: {
format: '4',
answer_time: '2023-04-11T13:59:23+02:00',
update_answer_time: '2023-04-11T13:59:23+02:00',
id_tel: 'web2',
form_id: '1',
origin: 'web',
app_version: 'webapp',
media: [],
fields: {},
id: '1',
user_id: '1',
recipient_id: '1',
parent_data_id: null,
},
},
type: TriggerStrategy.WEBHOOK,
async onEnable(context) {
const { formId, event1, event2, event3, event4, event5 } =
context.propsValue;
const onEvents = [
event1,
event2 !== '' ? event2 : null,
event3 !== '' ? event3 : null,
event4 !== '' ? event4 : null,
event5 !== '' ? event5 : null,
].filter(Boolean);
const webhookUrl = context.webhookUrl;
// eslint-disable-next-line no-useless-escape
const match = webhookUrl.match(/\/webhooks\/([^\/]+)/);
let workflowId = 'FlowId';
if (match) {
workflowId = match[1];
}
const request: HttpRequest = {
method: HttpMethod.POST,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks?used-with-actives-pieces=`,
body: {
on_events: onEvents,
url: webhookUrl,
http_verb: 'POST',
body_content_choice: 'json_v4',
third_party: 'ActivePieces ',
third_party_id: workflowId,
},
headers: {
Authorization: context.auth.secret_text,
},
queryParams: {},
};
const { body } = await httpClient.sendRequest<{ id: string }>(request);
await context.store?.put<KizeoFormsWebhookInformation>(triggerNameInStore, {
webhookId: body.id,
});
},
async onDisable(context) {
const { formId } = context.propsValue;
const response = await context.store?.get<KizeoFormsWebhookInformation>(
triggerNameInStore
);
if (response !== null && response !== undefined) {
const request: HttpRequest = {
method: HttpMethod.DELETE,
url:
endpoint +
`public/v4/forms/${formId}/third_party_webhooks/${response.webhookId}?used-with-actives-pieces=`,
headers: {
Authorization: context.auth.secret_text,
},
};
await httpClient.sendRequest(request);
}
},
async run(context) {
if (!context.payload.body) {
return [];
}
const body = context.payload.body as BodyDataType;
const formattedData: FormattedData = {
id: body.id,
};
if (context.propsValue.format === 'simple') {
for (const fieldKey in body.data.fields) {
if (
body.data.fields[fieldKey].result &&
body.data.fields[fieldKey].result?.value !== undefined
) {
const newFieldKey = fieldKey;
formattedData[newFieldKey] = body.data.fields[fieldKey].result?.value;
}
}
return [formattedData];
}
return [body];
},
});
interface FormattedData {
id: string;
[key: string]: any;
}
interface BodyDataType {
id: string;
data: {
fields: {
[key: string]: {
result?: {
value: any;
};
};
};
};
}
interface KizeoFormsWebhookInformation {
webhookId: string;
}

View File

@@ -0,0 +1,16 @@
{
"extends": "../../../../tsconfig.base.json",
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
],
"compilerOptions": {
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true
}
}

View File

@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}