Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"Create interactive forms and automate workflows with Fillout": "Erstellen Sie interaktive Formulare und automatisieren Sie Workflows mit Fillout",
|
||||
"To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.": "Um Ihren API-Schlüssel zu erhalten:\n1. Gehen Sie zu Ihren Fillout-Kontoeinstellungen.\n2. Klicken Sie auf \"Entwicklereinstellungen\".\n3. Generieren und kopieren Sie Ihren API-Schlüssel.\n4. Fügen Sie ihn hier ein.",
|
||||
"Get Form Responses": "Formularantworten erhalten",
|
||||
"Get Single Response": "Einzelantwort erhalten",
|
||||
"Find Form by Title": "Formular nach Titel suchen",
|
||||
"Custom API Call": "Eigener API-Aufruf",
|
||||
"Fetch all responses for a Fillout form, with optional filters.": "Rufe alle Antworten für ein Fillout-Formular mit optionalen Filtern ab.",
|
||||
"Retrieves a specific submission from a form.": "Ruft eine bestimmte Abgabe von einem Formular ab.",
|
||||
"Finds an existing forms by title.": "Findet ein vorhandenes Formular nach Titel.",
|
||||
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
|
||||
"Form": "Formular",
|
||||
"Limit": "Limit",
|
||||
"After Date": "Nach Datum",
|
||||
"Before Date": "Vor Datum",
|
||||
"Offset": "Versatz",
|
||||
"Status": "Status",
|
||||
"Include Edit Link": "Edit-Link einbeziehen",
|
||||
"Include Preview": "Vorschau einbeziehen",
|
||||
"Sort": "Sortieren",
|
||||
"Search": "Suche",
|
||||
"Submission": "Einreichung",
|
||||
"Form Title": "Formulartitel",
|
||||
"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)",
|
||||
"Max number of submissions to retrieve (1-150).": "Max. Anzahl der abzurufenden Einreichungen (1-150).",
|
||||
"Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filtern Sie die Einreichungen nach diesem Datum (JJJ-MM-TDTHH:mm:ss.sssZ).",
|
||||
"Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filtern Sie Einreichungen vor diesem Datum (JJJJ-MM-TDTHH:mm:ss.sssZ).",
|
||||
"Starting position for fetching submissions.": "Startposition für das Abrufen von Einreichungen.",
|
||||
"By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.": "Standardmäßig werden nur fertige Einreichungen zurückgegeben. Wählen Sie \"In Bearbeitung\", um stattdessen unfertige Einreichungen zu erhalten.",
|
||||
"Include a link to edit the submission.": "Fügen Sie einen Link ein, um den Beitrag zu bearbeiten.",
|
||||
"Include preview responses.": "Vorschau-Antworten einschließen.",
|
||||
"Sort order.": "Sortierung.",
|
||||
"Filter for submissions containing this text.": "Filter für Einreichungen, die diesen Text enthalten.",
|
||||
"Select from the 50 most recent submissions for the chosen form.": "Wählen Sie aus den 50 letzten Einreichungen für das gewählte Formular aus.",
|
||||
"The (partial or full) title of the form to search for.": "Der (teilweise oder vollständig) Titel des zu suchenden Formulars.",
|
||||
"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..",
|
||||
"In Progress (unfinished)": "In Bearbeitung (unvollständig)",
|
||||
"Ascending": "Aufsteigend",
|
||||
"Descending": "Absteigend",
|
||||
"GET": "ERHALTEN",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "LÖSCHEN",
|
||||
"HEAD": "HEAD",
|
||||
"New Form Response": "Neue Formular-Antwort",
|
||||
"Triggers when a new submission is received for a selected Fillout form.": "Wird ausgelöst, wenn eine neue Einreichung für ein ausgewähltes Fillout-Formular empfangen wird."
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"Create interactive forms and automate workflows with Fillout": "Crear formularios interactivos y automatizar flujos de trabajo con Fillout",
|
||||
"To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.": "Para obtener tu clave API:\n1. Ve a la configuración de tu cuenta de Fillout.\n2. Haz clic en \"Configuración del desarrollador\".\n3. Genera y copia tu clave API.\n4. Pégala aquí.",
|
||||
"Get Form Responses": "Obtener respuestas de forma",
|
||||
"Get Single Response": "Obtener una respuesta individual",
|
||||
"Find Form by Title": "Buscar Formulario por Título",
|
||||
"Custom API Call": "Llamada API personalizada",
|
||||
"Fetch all responses for a Fillout form, with optional filters.": "Obtener todas las respuestas para un formulario de relleno, con filtros opcionales.",
|
||||
"Retrieves a specific submission from a form.": "Recuperar un envío específico de un formulario.",
|
||||
"Finds an existing forms by title.": "Encuentra un formulario existente por título.",
|
||||
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
|
||||
"Form": "Forma",
|
||||
"Limit": "Límite",
|
||||
"After Date": "Después de la fecha",
|
||||
"Before Date": "Antes de la fecha",
|
||||
"Offset": "Desplazamiento",
|
||||
"Status": "Estado",
|
||||
"Include Edit Link": "Incluye Editar Enlace",
|
||||
"Include Preview": "Incluye vista previa",
|
||||
"Sort": "Ordenar",
|
||||
"Search": "Buscar",
|
||||
"Submission": "Envío",
|
||||
"Form Title": "Título del formulario",
|
||||
"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)",
|
||||
"Max number of submissions to retrieve (1-150).": "Número máximo de envíos a recuperar (1-150).",
|
||||
"Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filtrar envíos después de esta fecha (AA-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filtrar envíos antes de esta fecha (AA-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Starting position for fetching submissions.": "Posición inicial para la obtención de sumisiones.",
|
||||
"By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.": "De forma predeterminada, sólo se devuelven los envíos finalizados. Seleccione \"En progreso\" para obtener en su lugar los envíos sin finalizar.",
|
||||
"Include a link to edit the submission.": "Incluye un enlace para editar el envío.",
|
||||
"Include preview responses.": "Incluye la vista previa de respuestas.",
|
||||
"Sort order.": "Ordenar.",
|
||||
"Filter for submissions containing this text.": "Filtro para envíos que contengan este texto.",
|
||||
"Select from the 50 most recent submissions for the chosen form.": "Seleccione entre los 50 envíos más recientes para el formulario elegido.",
|
||||
"The (partial or full) title of the form to search for.": "El título (parcial o completo) del formulario a buscar.",
|
||||
"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.",
|
||||
"In Progress (unfinished)": "En progreso (sin finalizar)",
|
||||
"Ascending": "Ascendiente",
|
||||
"Descending": "Descendiente",
|
||||
"GET": "RECOGER",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "BORRAR",
|
||||
"HEAD": "LIMPIO",
|
||||
"New Form Response": "Nueva respuesta de formulario",
|
||||
"Triggers when a new submission is received for a selected Fillout form.": "Se activa cuando se recibe un nuevo envío para un formulario de rellenado seleccionado."
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"Create interactive forms and automate workflows with Fillout": "Créer des formulaires interactifs et automatiser les workflows avec le remplissage",
|
||||
"To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.": "Pour obtenir votre clé API :\n1. Allez dans les paramètres de votre compte de remplissage.\n2. Cliquez sur \"Paramètres du développeur\".\n3. Générez et copiez votre clé API.\n4. Collez-la ici.",
|
||||
"Get Form Responses": "Obtenir les réponses du formulaire",
|
||||
"Get Single Response": "Obtenir une réponse unique",
|
||||
"Find Form by Title": "Rechercher le formulaire par titre",
|
||||
"Custom API Call": "Appel API personnalisé",
|
||||
"Fetch all responses for a Fillout form, with optional filters.": "Récupère toutes les réponses pour un formulaire de remplissage, avec des filtres facultatifs.",
|
||||
"Retrieves a specific submission from a form.": "Récupère une soumission spécifique à partir d'un formulaire.",
|
||||
"Finds an existing forms by title.": "Trouve un formulaire existant par titre.",
|
||||
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un point de terminaison spécifique",
|
||||
"Form": "Forme",
|
||||
"Limit": "Limite",
|
||||
"After Date": "Après la date",
|
||||
"Before Date": "Avant la date",
|
||||
"Offset": "Décalage",
|
||||
"Status": "Statut",
|
||||
"Include Edit Link": "Inclure le lien d'édition",
|
||||
"Include Preview": "Inclure l'aperçu",
|
||||
"Sort": "Trier",
|
||||
"Search": "Rechercher",
|
||||
"Submission": "Soumission",
|
||||
"Form Title": "Titre du formulaire",
|
||||
"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)",
|
||||
"Max number of submissions to retrieve (1-150).": "Nombre maximum de soumissions à récupérer (1-150).",
|
||||
"Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filtrer les soumissions après cette date (AAAAA-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filtrer les soumissions avant cette date (AAAAA-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Starting position for fetching submissions.": "Position de départ pour la récupération des soumissions.",
|
||||
"By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.": "Par défaut, seules les soumissions terminées sont retournées. Sélectionnez \"En cours\" pour obtenir des soumissions inachevées à la place.",
|
||||
"Include a link to edit the submission.": "Inclure un lien pour modifier la soumission.",
|
||||
"Include preview responses.": "Inclure les réponses de prévisualisation.",
|
||||
"Sort order.": "Ordre de tri.",
|
||||
"Filter for submissions containing this text.": "Filtrer les soumissions contenant ce texte.",
|
||||
"Select from the 50 most recent submissions for the chosen form.": "Sélectionnez parmi les 50 soumissions les plus récentes pour le formulaire choisi.",
|
||||
"The (partial or full) title of the form to search for.": "Le titre (partiel ou complet) du formulaire à rechercher.",
|
||||
"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.",
|
||||
"In Progress (unfinished)": "En cours (inachevé)",
|
||||
"Ascending": "Ascendant",
|
||||
"Descending": "Descendant",
|
||||
"GET": "OBTENIR",
|
||||
"POST": "POSTER",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "EFFACER",
|
||||
"DELETE": "SUPPRIMER",
|
||||
"HEAD": "TÊTE",
|
||||
"New Form Response": "Nouveau formulaire de réponse",
|
||||
"Triggers when a new submission is received for a selected Fillout form.": "Déclenche quand une nouvelle soumission est reçue pour un formulaire de remplissage sélectionné."
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"Create interactive forms and automate workflows with Fillout": "Fillout でインタラクティブなフォームを作成し、ワークフローを自動化します",
|
||||
"To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.": "To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.",
|
||||
"Get Form Responses": "フォーム応答を取得する",
|
||||
"Get Single Response": "単一の応答を取得",
|
||||
"Find Form by Title": "タイトルでフォームを検索",
|
||||
"Custom API Call": "カスタムAPI通話",
|
||||
"Fetch all responses for a Fillout form, with optional filters.": "Fillout フォームのすべての応答を、任意のフィルターで取得します。",
|
||||
"Retrieves a specific submission from a form.": "フォームから特定の提出物を取得します。",
|
||||
"Finds an existing forms by title.": "タイトルで既存のフォームを検索します。",
|
||||
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
|
||||
"Form": "フォーム",
|
||||
"Limit": "制限",
|
||||
"After Date": "終了日",
|
||||
"Before Date": "終了日",
|
||||
"Offset": "オフセット",
|
||||
"Status": "ステータス",
|
||||
"Include Edit Link": "編集リンクを含める",
|
||||
"Include Preview": "プレビューを含める",
|
||||
"Sort": "並べ替え",
|
||||
"Search": "検索",
|
||||
"Submission": "提出",
|
||||
"Form Title": "フォームタイトル",
|
||||
"Method": "方法",
|
||||
"Headers": "ヘッダー",
|
||||
"Query Parameters": "クエリパラメータ",
|
||||
"Body": "本文",
|
||||
"Response is Binary ?": "応答はバイナリですか?",
|
||||
"No Error on Failure": "失敗時にエラーはありません",
|
||||
"Timeout (in seconds)": "タイムアウト(秒)",
|
||||
"Max number of submissions to retrieve (1-150).": "取得する提出物の最大数 (1-150)。",
|
||||
"Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "この日付(YYYY-MM-DDTHH:mm:sssZ)の後に提出物をフィルタリングします。",
|
||||
"Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "この日付(YYYY-MM-DDTHH:mm:sssZ)の前に提出物をフィルタリングします。",
|
||||
"Starting position for fetching submissions.": "提出物を取得する位置を開始しています。",
|
||||
"By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.": "デフォルトでは、終了した提出物のみが返されます。代わりに未完了の提出物を取得するには、「進行中」を選択してください。",
|
||||
"Include a link to edit the submission.": "提出物を編集するためのリンクを含めます.",
|
||||
"Include preview responses.": "プレビュー応答を含めます。",
|
||||
"Sort order.": "並び順.",
|
||||
"Filter for submissions containing this text.": "このテキストを含む提出物のフィルター",
|
||||
"Select from the 50 most recent submissions for the chosen form.": "選択したフォームの最新の投稿50件から選択します。",
|
||||
"The (partial or full) title of the form to search for.": "検索するフォームの(部分的または完全な)タイトル。",
|
||||
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
|
||||
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
|
||||
"In Progress (unfinished)": "進行中 (未完了)",
|
||||
"Ascending": "昇順",
|
||||
"Descending": "降順",
|
||||
"GET": "取得",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "削除",
|
||||
"HEAD": "頭",
|
||||
"New Form Response": "新しいフォームの回答",
|
||||
"Triggers when a new submission is received for a selected Fillout form.": "選択した塗りつぶしフォームに対して新しい提出物が受信されたときにトリガーします。"
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"Create interactive forms and automate workflows with Fillout": "Maak interactieve formulieren en automatiseer de workflows met Fillout",
|
||||
"To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.": "Om je API-sleutel te verkrijgen:\n1. Ga naar je Fillout account instellingen.\n2. Klik op \"Ontwikkelaarsinstellingen\".\n3. Genereer en kopieer de API-sleutel.\n4. Plak deze hier.",
|
||||
"Get Form Responses": "Formulierantwoorden ophalen",
|
||||
"Get Single Response": "Krijg Single Response",
|
||||
"Find Form by Title": "Formulier zoeken op titel",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Fetch all responses for a Fillout form, with optional filters.": "Ophalen van alle antwoorden voor een Fillout formulier, met optionele filters.",
|
||||
"Retrieves a specific submission from a form.": "Haal een specifieke uitwerking op vanuit een formulier.",
|
||||
"Finds an existing forms by title.": "Vindt een bestaande formulieren op titel.",
|
||||
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
|
||||
"Form": "Vorm",
|
||||
"Limit": "Limiet",
|
||||
"After Date": "Na datum",
|
||||
"Before Date": "Voor de datum",
|
||||
"Offset": "Verschuiving",
|
||||
"Status": "status",
|
||||
"Include Edit Link": "Voeg link voor bewerken toe",
|
||||
"Include Preview": "Voorvertoning opnemen",
|
||||
"Sort": "Sorteren",
|
||||
"Search": "Zoeken",
|
||||
"Submission": "Inzending",
|
||||
"Form Title": "Formulier titel",
|
||||
"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)",
|
||||
"Max number of submissions to retrieve (1-150).": "Max aantal op te halen uitwerkingen (1-150).",
|
||||
"Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filter uitwerkingen na deze datum (YYYY-MM-DDDH:mm:ss.sssZ).",
|
||||
"Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filter op inzendingen voor deze datum (YYYY-MM-DDDH:mm:ss.sssZ).",
|
||||
"Starting position for fetching submissions.": "Beginpositie voor het ophalen van uitwerkingen.",
|
||||
"By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.": "Standaard worden alleen voltooide inzendingen teruggegeven. Selecteer \"In uitvoering\" om in plaats daarvan onvoltooide inzendingen te krijgen.",
|
||||
"Include a link to edit the submission.": "Voeg een link toe om de uitwerking te bewerken.",
|
||||
"Include preview responses.": "Inclusief preview reacties.",
|
||||
"Sort order.": "Sorteer bestelling.",
|
||||
"Filter for submissions containing this text.": "Filter op inzendingen die deze tekst bevatten.",
|
||||
"Select from the 50 most recent submissions for the chosen form.": "Selecteer uit de 50 meest recente uitwerkingen voor het gekozen formulier.",
|
||||
"The (partial or full) title of the form to search for.": "De (gedeeltelijke of volledige) titel van het te zoeken formulier.",
|
||||
"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..",
|
||||
"In Progress (unfinished)": "In uitvoering (onvoltooid)",
|
||||
"Ascending": "Oplopend",
|
||||
"Descending": "Aflopend",
|
||||
"GET": "KRIJG",
|
||||
"POST": "POSTE",
|
||||
"PATCH": "BEKIJK",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "VERWIJDEREN",
|
||||
"HEAD": "HOOFD",
|
||||
"New Form Response": "Nieuw formulierantwoord",
|
||||
"Triggers when a new submission is received for a selected Fillout form.": "Activeert wanneer een nieuwe uitwerking wordt ontvangen voor een geselecteerd Fillout formulier."
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"Create interactive forms and automate workflows with Fillout": "Criar formas interativas e automatizar fluxos de trabalho com o Preenchimento",
|
||||
"To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.": "Para obter sua chave de API:\n1. Vá para suas configurações de conta Fillout.\n2. Clique em \"Configurações do Desenvolvedor\".\n3. Gerar e copiar a sua chave de API.\n4. Cole-o aqui.",
|
||||
"Get Form Responses": "Obter respostas de formulário",
|
||||
"Get Single Response": "Obter Resposta Única",
|
||||
"Find Form by Title": "Encontrar formulário por título",
|
||||
"Custom API Call": "Chamada de API personalizada",
|
||||
"Fetch all responses for a Fillout form, with optional filters.": "Procurar todas as respostas de um formulário de preenchimento, com filtros opcionais.",
|
||||
"Retrieves a specific submission from a form.": "Recupera uma submissão específica de um formulário.",
|
||||
"Finds an existing forms by title.": "Localiza um formulário existente por título.",
|
||||
"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",
|
||||
"Limit": "Limitar",
|
||||
"After Date": "Data posterior",
|
||||
"Before Date": "Data anterior",
|
||||
"Offset": "Deslocamento",
|
||||
"Status": "Estado",
|
||||
"Include Edit Link": "Incluir link para edição",
|
||||
"Include Preview": "Incluir pré-visualização",
|
||||
"Sort": "Ordenar",
|
||||
"Search": "Pesquisar",
|
||||
"Submission": "Submissão",
|
||||
"Form Title": "Título do formulário",
|
||||
"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)",
|
||||
"Max number of submissions to retrieve (1-150).": "Número máximo de submissões para recuperar (1-150).",
|
||||
"Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filtrar submissões após esta data (AAAA-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filtrar submissões antes desta data (AAAA-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Starting position for fetching submissions.": "Posição inicial para buscar submissões.",
|
||||
"By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.": "Por padrão, apenas submissões terminadas são retornadas. Selecione \"Em curso\" para obter submissões não concluídas.",
|
||||
"Include a link to edit the submission.": "Inclua um link para editar a submissão.",
|
||||
"Include preview responses.": "Incluir respostas de pré-visualização.",
|
||||
"Sort order.": "Ordem de classificação.",
|
||||
"Filter for submissions containing this text.": "Filtrar por submissões que contêm este texto.",
|
||||
"Select from the 50 most recent submissions for the chosen form.": "Selecione uma das 50 submissões mais recentes para o formulário escolhido.",
|
||||
"The (partial or full) title of the form to search for.": "O título (parcial ou total) do formulário a ser pesquisado.",
|
||||
"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..",
|
||||
"In Progress (unfinished)": "Em Progresso (não finalizado)",
|
||||
"Ascending": "Crescente",
|
||||
"Descending": "Decrescente",
|
||||
"GET": "OBTER",
|
||||
"POST": "POSTAR",
|
||||
"PATCH": "COMPRAR",
|
||||
"PUT": "COLOCAR",
|
||||
"DELETE": "EXCLUIR",
|
||||
"HEAD": "CABEÇA",
|
||||
"New Form Response": "Nova resposta ao formulário",
|
||||
"Triggers when a new submission is received for a selected Fillout form.": "Aciona quando uma nova submissão for recebida para um formulário de Fillout selecionado."
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"Fillout Forms": "Формы заполнения",
|
||||
"Create interactive forms and automate workflows with Fillout": "Создавайте интерактивные формы и автоматизируйте рабочие процессы с Fillout",
|
||||
"To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.": "Чтобы получить ключ API:\n1. Перейдите к настройкам аккаунта Fillout.\n2. Нажмите на \"Настройки разработчика\".\n3. Сгенерируйте и скопируйте ключ API.\n4. Вставьте его здесь.",
|
||||
"Get Form Responses": "Получить ответы на форму",
|
||||
"Get Single Response": "Получить один ответ",
|
||||
"Find Form by Title": "Поиск формы по названию",
|
||||
"Custom API Call": "Пользовательский вызов API",
|
||||
"Fetch all responses for a Fillout form, with optional filters.": "Получить все ответы для формы заполнения, с дополнительными фильтрами.",
|
||||
"Retrieves a specific submission from a form.": "Получает определённую запись из формы.",
|
||||
"Finds an existing forms by title.": "Ищет существующие формы по названию.",
|
||||
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
|
||||
"Form": "Форма",
|
||||
"Limit": "Лимит",
|
||||
"After Date": "После даты",
|
||||
"Before Date": "До даты",
|
||||
"Offset": "Смещение",
|
||||
"Status": "Status",
|
||||
"Include Edit Link": "Включить ссылку редактирования",
|
||||
"Include Preview": "Включить предпросмотр",
|
||||
"Sort": "Сортировка",
|
||||
"Search": "Search",
|
||||
"Submission": "Представление",
|
||||
"Form Title": "Заголовок формы",
|
||||
"Method": "Метод",
|
||||
"Headers": "Заголовки",
|
||||
"Query Parameters": "Параметры запроса",
|
||||
"Body": "Тело",
|
||||
"No Error on Failure": "Нет ошибок при ошибке",
|
||||
"Timeout (in seconds)": "Таймаут (в секундах)",
|
||||
"Max number of submissions to retrieve (1-150).": "Максимальное количество попыток получения (1-150).",
|
||||
"Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Фильтровать сабмиты после этой даты (YYYY-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Фильтровать сабмиты до этой даты (ГГГГ-ММ-DDTHH:mm:ss.sssZ).",
|
||||
"Starting position for fetching submissions.": "Начальная позиция для выборки представлений.",
|
||||
"By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.": "По умолчанию возвращаются только завершенные сообщения. Выберите \"В процессе\", чтобы вместо этого получить незавершенные сообщения.",
|
||||
"Include a link to edit the submission.": "Включите ссылку для редактирования сданной работы.",
|
||||
"Include preview responses.": "Включить ответы предварительного просмотра.",
|
||||
"Sort order.": "Порядок сортировки.",
|
||||
"Filter for submissions containing this text.": "Фильтр для сабмитов, содержащих этот текст.",
|
||||
"Select from the 50 most recent submissions for the chosen form.": "Выберите из 50 самых последних сообщений для выбранной формы.",
|
||||
"The (partial or full) title of the form to search for.": "Заголовок (частичный) формы для поиска.",
|
||||
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
|
||||
"In Progress (unfinished)": "В процессе (незавершено)",
|
||||
"Ascending": "По возрастанию",
|
||||
"Descending": "По убыванию",
|
||||
"GET": "ПОЛУЧИТЬ",
|
||||
"POST": "ПОСТ",
|
||||
"PATCH": "ПАТЧ",
|
||||
"PUT": "ПОКУПИТЬ",
|
||||
"DELETE": "УДАЛИТЬ",
|
||||
"HEAD": "HEAD",
|
||||
"New Form Response": "Новый ответ в форме",
|
||||
"Triggers when a new submission is received for a selected Fillout form.": "Включает при получении новой заявки для выбранной формы заполнения."
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"Create interactive forms and automate workflows with Fillout": "Create interactive forms and automate workflows with Fillout",
|
||||
"To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.": "To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.",
|
||||
"Get Form Responses": "Get Form Responses",
|
||||
"Get Single Response": "Get Single Response",
|
||||
"Find Form by Title": "Find Form by Title",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Fetch all responses for a Fillout form, with optional filters.": "Fetch all responses for a Fillout form, with optional filters.",
|
||||
"Retrieves a specific submission from a form.": "Retrieves a specific submission from a form.",
|
||||
"Finds an existing forms by title.": "Finds an existing forms by title.",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Form": "Form",
|
||||
"Limit": "Limit",
|
||||
"After Date": "After Date",
|
||||
"Before Date": "Before Date",
|
||||
"Offset": "Offset",
|
||||
"Status": "Status",
|
||||
"Include Edit Link": "Include Edit Link",
|
||||
"Include Preview": "Include Preview",
|
||||
"Sort": "Sort",
|
||||
"Search": "Search",
|
||||
"Submission": "Submission",
|
||||
"Form Title": "Form Title",
|
||||
"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)",
|
||||
"Max number of submissions to retrieve (1-150).": "Max number of submissions to retrieve (1-150).",
|
||||
"Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Starting position for fetching submissions.": "Starting position for fetching submissions.",
|
||||
"By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.": "By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.",
|
||||
"Include a link to edit the submission.": "Include a link to edit the submission.",
|
||||
"Include preview responses.": "Include preview responses.",
|
||||
"Sort order.": "Sort order.",
|
||||
"Filter for submissions containing this text.": "Filter for submissions containing this text.",
|
||||
"Select from the 50 most recent submissions for the chosen form.": "Select from the 50 most recent submissions for the chosen form.",
|
||||
"The (partial or full) title of the form to search for.": "The (partial or full) title of the form to search for.",
|
||||
"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..",
|
||||
"In Progress (unfinished)": "In Progress (unfinished)",
|
||||
"Ascending": "Ascending",
|
||||
"Descending": "Descending",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New Form Response": "New Form Response",
|
||||
"Triggers when a new submission is received for a selected Fillout form.": "Triggers when a new submission is received for a selected Fillout form."
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"Fillout Forms": "Fillout Forms",
|
||||
"Create interactive forms and automate workflows with Fillout": "Create interactive forms and automate workflows with Fillout",
|
||||
"To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.": "To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.",
|
||||
"Get Form Responses": "Get Form Responses",
|
||||
"Get Single Response": "Get Single Response",
|
||||
"Find Form by Title": "Find Form by Title",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Fetch all responses for a Fillout form, with optional filters.": "Fetch all responses for a Fillout form, with optional filters.",
|
||||
"Retrieves a specific submission from a form.": "Retrieves a specific submission from a form.",
|
||||
"Finds an existing forms by title.": "Finds an existing forms by title.",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Form": "Form",
|
||||
"Limit": "Limit",
|
||||
"After Date": "After Date",
|
||||
"Before Date": "Before Date",
|
||||
"Offset": "Offset",
|
||||
"Status": "Status",
|
||||
"Include Edit Link": "Include Edit Link",
|
||||
"Include Preview": "Include Preview",
|
||||
"Sort": "Sort",
|
||||
"Search": "Search",
|
||||
"Submission": "Submission",
|
||||
"Form Title": "Form Title",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"Max number of submissions to retrieve (1-150).": "Max number of submissions to retrieve (1-150).",
|
||||
"Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Starting position for fetching submissions.": "Starting position for fetching submissions.",
|
||||
"By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.": "By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.",
|
||||
"Include a link to edit the submission.": "Include a link to edit the submission.",
|
||||
"Include preview responses.": "Include preview responses.",
|
||||
"Sort order.": "Sort order.",
|
||||
"Filter for submissions containing this text.": "Filter for submissions containing this text.",
|
||||
"Select from the 50 most recent submissions for the chosen form.": "Select from the 50 most recent submissions for the chosen form.",
|
||||
"The (partial or full) title of the form to search for.": "The (partial or full) title of the form to search for.",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"In Progress (unfinished)": "In Progress (unfinished)",
|
||||
"Ascending": "Tăng dần",
|
||||
"Descending": "Giảm dần",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New Form Response": "New Form Response",
|
||||
"Triggers when a new submission is received for a selected Fillout form.": "Triggers when a new submission is received for a selected Fillout form."
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"Create interactive forms and automate workflows with Fillout": "Create interactive forms and automate workflows with Fillout",
|
||||
"To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.": "To get your API key:\n1. Go to your Fillout account settings.\n2. Click on \"Developer settings\".\n3. Generate and copy your API key.\n4. Paste it here.",
|
||||
"Get Form Responses": "Get Form Responses",
|
||||
"Get Single Response": "Get Single Response",
|
||||
"Find Form by Title": "Find Form by Title",
|
||||
"Custom API Call": "自定义 API 呼叫",
|
||||
"Fetch all responses for a Fillout form, with optional filters.": "Fetch all responses for a Fillout form, with optional filters.",
|
||||
"Retrieves a specific submission from a form.": "Retrieves a specific submission from a form.",
|
||||
"Finds an existing forms by title.": "Finds an existing forms by title.",
|
||||
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
|
||||
"Form": "Form",
|
||||
"Limit": "Limit",
|
||||
"After Date": "After Date",
|
||||
"Before Date": "Before Date",
|
||||
"Offset": "Offset",
|
||||
"Status": "状态",
|
||||
"Include Edit Link": "Include Edit Link",
|
||||
"Include Preview": "Include Preview",
|
||||
"Sort": "Sort",
|
||||
"Search": "搜索",
|
||||
"Submission": "Submission",
|
||||
"Form Title": "Form Title",
|
||||
"Method": "方法",
|
||||
"Headers": "信头",
|
||||
"Query Parameters": "查询参数",
|
||||
"Body": "正文内容",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "失败时没有错误",
|
||||
"Timeout (in seconds)": "超时(秒)",
|
||||
"Max number of submissions to retrieve (1-150).": "Max number of submissions to retrieve (1-150).",
|
||||
"Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).": "Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).",
|
||||
"Starting position for fetching submissions.": "Starting position for fetching submissions.",
|
||||
"By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.": "By default, only finished submissions are returned. Select \"In Progress\" to get unfinished submissions instead.",
|
||||
"Include a link to edit the submission.": "Include a link to edit the submission.",
|
||||
"Include preview responses.": "Include preview responses.",
|
||||
"Sort order.": "Sort order.",
|
||||
"Filter for submissions containing this text.": "Filter for submissions containing this text.",
|
||||
"Select from the 50 most recent submissions for the chosen form.": "Select from the 50 most recent submissions for the chosen form.",
|
||||
"The (partial or full) title of the form to search for.": "The (partial or full) title of the form to search for.",
|
||||
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"In Progress (unfinished)": "In Progress (unfinished)",
|
||||
"Ascending": "升序",
|
||||
"Descending": "降序",
|
||||
"GET": "获取",
|
||||
"POST": "帖子",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "弹出",
|
||||
"DELETE": "删除",
|
||||
"HEAD": "黑色",
|
||||
"New Form Response": "New Form Response",
|
||||
"Triggers when a new submission is received for a selected Fillout form.": "Triggers when a new submission is received for a selected Fillout form."
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
import { createPiece } from '@activepieces/pieces-framework';
|
||||
import { getFormResponses } from './lib/actions/get-form-responses';
|
||||
import { getSingleResponse } from './lib/actions/get-single-response';
|
||||
import { findFormByTitle } from './lib/actions/find-form-by-title';
|
||||
import { newFormResponse } from './lib/triggers/new-form-response';
|
||||
import { createCustomApiCallAction, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { PieceAuth } from '@activepieces/pieces-framework';
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
import { makeRequest } from './lib/common';
|
||||
|
||||
export const filloutFormsAuth = PieceAuth.SecretText({
|
||||
displayName: 'API Key',
|
||||
required: true,
|
||||
description: `To get your API key:
|
||||
1. Go to your Fillout account settings.
|
||||
2. Click on "Developer settings".
|
||||
3. Generate and copy your API key.
|
||||
4. Paste it here.`,
|
||||
validate: async ({ auth }) => {
|
||||
try {
|
||||
await makeRequest(auth, HttpMethod.GET, '/forms', undefined);
|
||||
return { valid: true };
|
||||
} catch (error: any) {
|
||||
return {
|
||||
valid: false,
|
||||
error: error.message || 'Invalid API Key. Please check your API key and try again.',
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export const filloutForms = createPiece({
|
||||
displayName: 'Fillout Forms',
|
||||
description: 'Create interactive forms and automate workflows with Fillout',
|
||||
auth: filloutFormsAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/fillout-forms.png',
|
||||
categories: [PieceCategory.FORMS_AND_SURVEYS],
|
||||
authors: ['Sanket6652', 'onyedikachi-david'],
|
||||
actions: [
|
||||
getFormResponses,
|
||||
getSingleResponse,
|
||||
findFormByTitle,
|
||||
createCustomApiCallAction({
|
||||
auth: filloutFormsAuth,
|
||||
baseUrl: () => 'https://api.fillout.com/v1/api',
|
||||
authMapping: async (auth) => {
|
||||
return {
|
||||
Authorization: `Bearer ${auth.secret_text}`,
|
||||
};
|
||||
},
|
||||
}),
|
||||
],
|
||||
triggers: [newFormResponse],
|
||||
});
|
||||
@@ -0,0 +1,32 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { makeRequest } from '../common';
|
||||
import { filloutFormsAuth } from '../../index';
|
||||
|
||||
export const findFormByTitle = createAction({
|
||||
auth: filloutFormsAuth,
|
||||
name: 'findFormByTitle',
|
||||
displayName: 'Find Form by Title',
|
||||
description: 'Finds an existing forms by title.',
|
||||
props: {
|
||||
title: Property.ShortText({
|
||||
displayName: 'Form Title',
|
||||
required: true,
|
||||
description: 'The (partial or full) title of the form to search for.'
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const apiKey = context.auth.secret_text;
|
||||
const response = await makeRequest(apiKey, HttpMethod.GET, `/forms`, undefined);
|
||||
|
||||
const forms = response as Array<{ name: string; formId: string }>;
|
||||
const searchTitle = context.propsValue['title'].toLowerCase();
|
||||
const matches = forms.filter((f) =>
|
||||
f.name.toLowerCase().includes(searchTitle)
|
||||
);
|
||||
return {
|
||||
found:matches.length>0,
|
||||
result:matches
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,104 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { makeRequest } from '../common';
|
||||
import { formIdDropdown } from '../common/props';
|
||||
import { filloutFormsAuth } from '../../index';
|
||||
|
||||
export const getFormResponses = createAction({
|
||||
auth: filloutFormsAuth,
|
||||
name: 'getFormResponses',
|
||||
displayName: 'Get Form Responses',
|
||||
description: 'Fetch all responses for a Fillout form, with optional filters.',
|
||||
props: {
|
||||
formId: formIdDropdown,
|
||||
limit: Property.Number({
|
||||
displayName: 'Limit',
|
||||
required: false,
|
||||
description: 'Max number of submissions to retrieve (1-150).'
|
||||
}),
|
||||
afterDate: Property.DateTime({
|
||||
displayName: 'After Date',
|
||||
required: false,
|
||||
description: 'Filter submissions after this date (YYYY-MM-DDTHH:mm:ss.sssZ).'
|
||||
}),
|
||||
beforeDate: Property.DateTime({
|
||||
displayName: 'Before Date',
|
||||
required: false,
|
||||
description: 'Filter submissions before this date (YYYY-MM-DDTHH:mm:ss.sssZ).'
|
||||
}),
|
||||
offset: Property.Number({
|
||||
displayName: 'Offset',
|
||||
required: false,
|
||||
description: 'Starting position for fetching submissions.'
|
||||
}),
|
||||
status: Property.StaticDropdown({
|
||||
displayName: 'Status',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'In Progress (unfinished)', value: 'in_progress' }
|
||||
]
|
||||
},
|
||||
description: 'By default, only finished submissions are returned. Select "In Progress" to get unfinished submissions instead.'
|
||||
}),
|
||||
includeEditLink: Property.Checkbox({
|
||||
displayName: 'Include Edit Link',
|
||||
required: false,
|
||||
description: 'Include a link to edit the submission.'
|
||||
}),
|
||||
includePreview: Property.Checkbox({
|
||||
displayName: 'Include Preview',
|
||||
required: false,
|
||||
description: 'Include preview responses.'
|
||||
}),
|
||||
sort: Property.StaticDropdown({
|
||||
displayName: 'Sort',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Ascending', value: 'asc' },
|
||||
{ label: 'Descending', value: 'desc' }
|
||||
]
|
||||
},
|
||||
description: 'Sort order.'
|
||||
}),
|
||||
search: Property.ShortText({
|
||||
displayName: 'Search',
|
||||
required: false,
|
||||
description: 'Filter for submissions containing this text.'
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const apiKey = context.auth.secret_text;
|
||||
|
||||
const formId = context.propsValue['formId'];
|
||||
const queryParams: Record<string, any> = {};
|
||||
if (context.propsValue['limit'] !== undefined)
|
||||
queryParams['limit'] = context.propsValue['limit'];
|
||||
if (context.propsValue['afterDate'] !== undefined)
|
||||
queryParams['afterDate'] = context.propsValue['afterDate'];
|
||||
if (context.propsValue['beforeDate'] !== undefined)
|
||||
queryParams['beforeDate'] = context.propsValue['beforeDate'];
|
||||
if (context.propsValue['offset'] !== undefined)
|
||||
queryParams['offset'] = context.propsValue['offset'];
|
||||
if (context.propsValue['status'] !== undefined)
|
||||
queryParams['status'] = context.propsValue['status'];
|
||||
if (context.propsValue['includeEditLink'] !== undefined)
|
||||
queryParams['includeEditLink'] = context.propsValue['includeEditLink'];
|
||||
if (context.propsValue['includePreview'] !== undefined)
|
||||
queryParams['includePreview'] = context.propsValue['includePreview'];
|
||||
if (context.propsValue['sort'] !== undefined)
|
||||
queryParams['sort'] = context.propsValue['sort'];
|
||||
if (context.propsValue['search'] !== undefined)
|
||||
queryParams['search'] = context.propsValue['search'];
|
||||
|
||||
const response = await makeRequest(
|
||||
apiKey,
|
||||
HttpMethod.GET,
|
||||
`/forms/${formId}/submissions`,
|
||||
queryParams
|
||||
);
|
||||
|
||||
return response;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,39 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { makeRequest } from '../common';
|
||||
import { formIdDropdown, submissionIdDropdown } from '../common/props';
|
||||
import { filloutFormsAuth } from '../../index';
|
||||
|
||||
export const getSingleResponse = createAction({
|
||||
auth: filloutFormsAuth,
|
||||
name: 'getSingleResponse',
|
||||
displayName: 'Get Single Response',
|
||||
description: 'Retrieves a specific submission from a form.',
|
||||
props: {
|
||||
formId: formIdDropdown,
|
||||
submissionId: submissionIdDropdown,
|
||||
includeEditLink: Property.Checkbox({
|
||||
displayName: 'Include Edit Link',
|
||||
required: false,
|
||||
description: 'Include a link to edit the submission.',
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const apiKey = context.auth.secret_text;
|
||||
|
||||
const { formId, submissionId } = context.propsValue;
|
||||
|
||||
const queryParams: Record<string, any> = {};
|
||||
if (context.propsValue['includeEditLink'] !== undefined) {
|
||||
queryParams['includeEditLink'] = context.propsValue['includeEditLink'];
|
||||
}
|
||||
|
||||
const response = await makeRequest(
|
||||
apiKey,
|
||||
HttpMethod.GET,
|
||||
`/forms/${formId}/submissions/${submissionId}`,
|
||||
queryParams,
|
||||
);
|
||||
return response;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,39 @@
|
||||
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
|
||||
|
||||
export const BASE_URL = 'https://api.fillout.com/v1/api';
|
||||
|
||||
export async function makeRequest(
|
||||
apiKey: string,
|
||||
method: HttpMethod,
|
||||
path: string,
|
||||
queryParams?: Record<string, any>,
|
||||
body?: unknown
|
||||
) {
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method,
|
||||
url: `${BASE_URL}${path}`,
|
||||
headers: {
|
||||
Authorization: `Bearer ${apiKey}`,
|
||||
},
|
||||
queryParams,
|
||||
body,
|
||||
});
|
||||
|
||||
return response.body;
|
||||
} catch (error: any) {
|
||||
if (error.response?.status === 401) {
|
||||
throw new Error('Invalid API Key. Please check your authentication credentials.');
|
||||
}
|
||||
if (error.response?.status === 403) {
|
||||
throw new Error('Access denied. Please check your API key permissions.');
|
||||
}
|
||||
if (error.response?.status === 404) {
|
||||
throw new Error('Resource not found. Please check the form ID or submission ID.');
|
||||
}
|
||||
if (error.response?.status >= 500) {
|
||||
throw new Error('Fillout service error. Please try again later.');
|
||||
}
|
||||
throw new Error(`Request failed: ${error.message || 'Unknown error'}`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
import { DropdownOption, Property } from '@activepieces/pieces-framework';
|
||||
import { makeRequest } from '.';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { filloutFormsAuth } from '../..';
|
||||
|
||||
export const formIdDropdown = Property.Dropdown({
|
||||
auth: filloutFormsAuth,
|
||||
displayName: 'Form',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please connect your Fillout Forms account.',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
const apiKey = auth.secret_text;
|
||||
const forms = await makeRequest(apiKey, HttpMethod.GET, '/forms', undefined);
|
||||
|
||||
const options: DropdownOption<string>[] = forms.map((form: any) => ({
|
||||
label: form.name,
|
||||
value: form.formId,
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
export const submissionIdDropdown = Property.Dropdown({
|
||||
auth: filloutFormsAuth,
|
||||
displayName: 'Submission',
|
||||
description: 'Select from the 50 most recent submissions for the chosen form.',
|
||||
required: true,
|
||||
refreshers: ['formId'],
|
||||
options: async ({ auth, formId }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please connect your Fillout Forms account',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
if (!formId) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please select a form first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const apiKey = auth.secret_text;
|
||||
const response = await makeRequest(
|
||||
apiKey,
|
||||
HttpMethod.GET,
|
||||
`/forms/${formId}/submissions`,
|
||||
{ limit: 50 }
|
||||
);
|
||||
|
||||
const submissions = response.responses || [];
|
||||
|
||||
const options: DropdownOption<string>[] = submissions.map((submission: any) => {
|
||||
const firstQuestion = submission.questions && submission.questions[0];
|
||||
const firstValue = firstQuestion ? firstQuestion.value : 'No data';
|
||||
const submissionTime = new Date(submission.submissionTime).toLocaleString();
|
||||
|
||||
return {
|
||||
label: `${submissionTime} - ${firstValue}`,
|
||||
value: submission.submissionId,
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
placeholder: options.length === 0 ? 'No submissions found' : 'Select a submission',
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Error loading submissions',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,111 @@
|
||||
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
|
||||
import { formIdDropdown } from '../common/props';
|
||||
import { filloutFormsAuth } from '../../index';
|
||||
import { makeRequest } from '../common';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { isNil } from '@activepieces/shared';
|
||||
|
||||
const TRIGGER_KEY = 'new-form-response-trigger';
|
||||
|
||||
export const newFormResponse = createTrigger({
|
||||
auth: filloutFormsAuth,
|
||||
name: 'new-form-response',
|
||||
displayName: 'New Form Response',
|
||||
description:
|
||||
'Triggers when a new submission is received for a selected Fillout form.',
|
||||
props: {
|
||||
formId: formIdDropdown,
|
||||
},
|
||||
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(context) {
|
||||
const { formId } = context.propsValue;
|
||||
const apiKey = context.auth.secret_text;
|
||||
|
||||
const response = (await makeRequest(
|
||||
apiKey,
|
||||
HttpMethod.POST,
|
||||
'/webhook/create',
|
||||
undefined,
|
||||
{
|
||||
formId,
|
||||
url: context.webhookUrl,
|
||||
}
|
||||
)) as { id: number };
|
||||
|
||||
await context.store.put<number>(TRIGGER_KEY, response.id);
|
||||
},
|
||||
async onDisable(context) {
|
||||
const apiKey = context.auth.secret_text;
|
||||
|
||||
const webhookId = await context.store.get<number>(TRIGGER_KEY);
|
||||
if (!isNil(webhookId)) {
|
||||
await makeRequest(apiKey, HttpMethod.POST, '/webhook/delete', undefined, {
|
||||
webhookId,
|
||||
});
|
||||
}
|
||||
},
|
||||
async test(context) {
|
||||
const { formId } = context.propsValue;
|
||||
const apiKey = context.auth.secret_text;
|
||||
|
||||
const response = await makeRequest(
|
||||
apiKey,
|
||||
HttpMethod.GET,
|
||||
`/forms/${formId}/submissions`,
|
||||
{
|
||||
limit: '10',
|
||||
sort: 'desc',
|
||||
}
|
||||
);
|
||||
|
||||
const submissions = response as { responses: Record<string, any>[] };
|
||||
|
||||
return submissions.responses;
|
||||
},
|
||||
async run(context) {
|
||||
const payload = JSON.parse(context.payload.body as string) as {
|
||||
submission: Record<string, any>;
|
||||
};
|
||||
return [payload.submission];
|
||||
},
|
||||
sampleData: {
|
||||
questions: [
|
||||
{
|
||||
id: '5AtgG35AAZVcrSVfRubvp1',
|
||||
name: 'What is your name?',
|
||||
type: 'ShortAnswer',
|
||||
value: 'John Doe',
|
||||
},
|
||||
{
|
||||
id: 'gRBWVbE2fut2oiAMprdZpY',
|
||||
name: 'What is your email?',
|
||||
type: 'Email',
|
||||
value: 'john@example.com',
|
||||
},
|
||||
{
|
||||
id: 'hP4bHA1CgvyD2LKhBnnGHy',
|
||||
name: 'Pick your favorite color',
|
||||
type: 'MultipleChoice',
|
||||
value: 'Blue',
|
||||
},
|
||||
],
|
||||
calculations: [
|
||||
{
|
||||
id: 'abcdef',
|
||||
name: 'Price',
|
||||
type: 'number',
|
||||
value: '12.50',
|
||||
},
|
||||
],
|
||||
urlParameters: [
|
||||
{
|
||||
id: 'email',
|
||||
name: 'email',
|
||||
value: 'john@example.com',
|
||||
},
|
||||
],
|
||||
submissionId: 'abc123',
|
||||
submissionTime: '2024-05-16T23:20:05.324Z',
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user