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,55 @@
{
"MailerLite": "MailerLite",
"Email marketing software": "Email marketing software",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n",
"Add Subscriber to a Group": "Add Subscriber to a Group",
"Add or Update subscriber": "Add or Update subscriber",
"Find a Subscriber": "Find a Subscriber",
"Remove Subscriber from a Group": "Remove Subscriber from a Group",
"Custom API Call": "Custom API Call",
"Adds existing subscriber to a specific group.": "Adds existing subscriber to a specific group.",
"Create a new subscriber or updates an existing one if the email already exists.": "Create a new subscriber or updates an existing one if the email already exists.",
"Search for subscriber by email or name.": "Search for subscriber by email or name.",
"Removes subscriber from a specific group.": "Removes subscriber from a specific group.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Subscriber ID": "Subscriber ID",
"Group ID": "Group ID",
"Email": "Email",
"Fields": "Fields",
"Status": "Status",
"Group IDs": "Group IDs",
"Subscribed On": "Subscribed On",
"Opt-in Date": "Opt-in Date",
"Signup IP address": "Signup IP address",
"Opt-in IP address": "Opt-in IP address",
"Subscriber ID or Email": "Subscriber ID or Email",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"Email of the new contact": "Email of the new contact",
"If empty, status Active is used by default.": "If empty, status Active is used by default.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Active": "Active",
"Unsubscribed": "Unsubscribed",
"Unconfirmed": "Unconfirmed",
"Bounced": "Bounced",
"Junk": "Junk",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Subscriber Created": "Subscriber Created",
"Subscriber Fields Updated": "Subscriber Fields Updated",
"Subscriber Unsubscribed": "Subscriber Unsubscribed",
"Subscriber Added to Group": "Subscriber Added to Group",
"Triggers when a subscriber was created on your mailing list.": "Triggers when a subscriber was created on your mailing list.",
"Triggers when the subscriber fields have been updated.": "Triggers when the subscriber fields have been updated.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Triggers when a subscriber has unsubscribed from your mailing list.",
"Triggers when a subscriber is added to a group.": "Triggers when a subscriber is added to a group.",
"Webhook Name": "Webhook Name"
}

View File

@@ -0,0 +1,56 @@
{
"Email marketing software": "E-Mail-Marketing-Software",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nUm Ihren API-Schlüssel zu erhalten, folgen Sie diesen Schritten:\n\n1. Loggen Sie sich in Ihr MailerLite-Konto ein.\n2. Besuchen Sie die [API-Seite](https://dashboard.mailerlite.com/integrations/api).\n3. Klicken Sie auf die **Generiere neue Token** Schaltfläche.\n4. Kopieren Sie den generierten API-Schlüssel.\n",
"Add Subscriber to a Group": "Abonnent zu einer Gruppe hinzufügen",
"Add or Update subscriber": "Abonnent hinzufügen oder aktualisieren",
"Find a Subscriber": "Abonnent finden",
"Remove Subscriber from a Group": "Abonnenten aus einer Gruppe entfernen",
"Custom API Call": "Eigener API-Aufruf",
"Adds existing subscriber to a specific group.": "Fügt existierende Abonnenten einer bestimmten Gruppe hinzu.",
"Create a new subscriber or updates an existing one if the email already exists.": "Erstelle einen neuen Abonnenten oder aktualisiere einen existierenden, falls die E-Mail bereits existiert.",
"Search for subscriber by email or name.": "Suche nach Abonnenten per E-Mail oder Namen.",
"Removes subscriber from a specific group.": "Entfernt Abonnenten einer bestimmten Gruppe.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Subscriber ID": "Abonnenten-ID",
"Group ID": "Gruppen-ID",
"Email": "E-Mail",
"Fields": "Felder",
"Status": "Status",
"Group IDs": "Gruppen IDs",
"Subscribed On": "Abonniert am",
"Opt-in Date": "Opt-in-Datum",
"Signup IP address": "IP-Adresse registrieren",
"Opt-in IP address": "Opt-in-IP-Adresse",
"Subscriber ID or Email": "Abonnenten-ID oder E-Mail",
"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)",
"Email of the new contact": "E-Mail des neuen Kontakts",
"If empty, status Active is used by default.": "Wenn leer, wird der Status aktiv standardmäßig verwendet.",
"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..",
"Active": "Aktiv",
"Unsubscribed": "Abgemeldet",
"Unconfirmed": "Unbestätigt",
"Bounced": "Geprallt",
"Junk": "Junk",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD",
"Subscriber Created": "Abonnent erstellt",
"Subscriber Fields Updated": "Abonnentenfelder aktualisiert",
"Subscriber Unsubscribed": "Abonnent abgemeldet",
"Subscriber Added to Group": "Abonnent zur Gruppe hinzugefügt",
"Triggers when a subscriber was created on your mailing list.": "Trigger, wenn ein Abonnent auf Ihrer Mailingliste erstellt wurde.",
"Triggers when the subscriber fields have been updated.": "Löscht aus, wenn die Abonnentenfelder aktualisiert wurden.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Löst aus, wenn ein Abonnent von Ihrer Mailingliste abgemeldet wurde.",
"Triggers when a subscriber is added to a group.": "Wird ausgelöst, wenn ein Abonnent einer Gruppe hinzugefügt wird.",
"Webhook Name": "Webhook-Name"
}

View File

@@ -0,0 +1,56 @@
{
"Email marketing software": "Software de marketing por email",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n",
"Add Subscriber to a Group": "Añadir suscriptor a un grupo",
"Add or Update subscriber": "Añadir o actualizar suscriptor",
"Find a Subscriber": "Encontrar un suscriptor",
"Remove Subscriber from a Group": "Quitar suscriptor de un grupo",
"Custom API Call": "Llamada API personalizada",
"Adds existing subscriber to a specific group.": "Añade suscriptores existentes a un grupo específico.",
"Create a new subscriber or updates an existing one if the email already exists.": "Crear un nuevo suscriptor o actualizar uno existente si el correo electrónico ya existe.",
"Search for subscriber by email or name.": "Buscar suscriptores por correo electrónico o nombre.",
"Removes subscriber from a specific group.": "Elimina el suscriptor de un grupo específico.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Subscriber ID": "ID del suscriptor",
"Group ID": "ID de grupo",
"Email": "E-mail",
"Fields": "Campos",
"Status": "Estado",
"Group IDs": "IDs de grupo",
"Subscribed On": "Suscrito el",
"Opt-in Date": "Fecha de confirmación",
"Signup IP address": "Dirección IP de registro",
"Opt-in IP address": "Dirección IP opt-in",
"Subscriber ID or Email": "ID de suscriptor o correo electrónico",
"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)",
"Email of the new contact": "Email del nuevo contacto",
"If empty, status Active is used by default.": "Si está vacío, el estado activo se utiliza por defecto.",
"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.",
"Active": "Activo",
"Unsubscribed": "Desuscrito",
"Unconfirmed": "Sin confirmar",
"Bounced": "Rebotado",
"Junk": "Basura",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO",
"Subscriber Created": "Suscriptor creado",
"Subscriber Fields Updated": "Campos de suscriptores actualizados",
"Subscriber Unsubscribed": "Suscriptor desuscrito",
"Subscriber Added to Group": "Suscriptor añadido al grupo",
"Triggers when a subscriber was created on your mailing list.": "Se activa cuando un suscriptor fue creado en su lista de correo.",
"Triggers when the subscriber fields have been updated.": "Activadores cuando los campos del suscriptor han sido actualizados.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Dispara cuando un suscriptor se ha dado de baja de su lista de correo.",
"Triggers when a subscriber is added to a group.": "Dispara cuando un suscriptor se agrega a un grupo.",
"Webhook Name": "Nombre del webhook"
}

View File

@@ -0,0 +1,56 @@
{
"Email marketing software": "Logiciel de marketing par e-mail",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n",
"Add Subscriber to a Group": "Ajouter un abonné à un groupe",
"Add or Update subscriber": "Ajouter ou mettre à jour l'abonné",
"Find a Subscriber": "Trouver un abonné",
"Remove Subscriber from a Group": "Retirer un abonné d'un groupe",
"Custom API Call": "Appel API personnalisé",
"Adds existing subscriber to a specific group.": "Ajoute un abonné existant à un groupe spécifique.",
"Create a new subscriber or updates an existing one if the email already exists.": "Créer un nouvel abonné ou mettre à jour un abonné existant si l'e-mail existe déjà.",
"Search for subscriber by email or name.": "Rechercher un abonné par email ou par nom.",
"Removes subscriber from a specific group.": "Supprime l'abonné d'un groupe spécifique.",
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un point de terminaison spécifique",
"Subscriber ID": "Identifiant de l'abonné",
"Group ID": "ID du groupe",
"Email": "Courriel",
"Fields": "Champs",
"Status": "Statut",
"Group IDs": "ID de groupe",
"Subscribed On": "Inscrit le",
"Opt-in Date": "Date d'Opt-in",
"Signup IP address": "Adresse IP d'inscription",
"Opt-in IP address": "Adresse IP opt-in",
"Subscriber ID or Email": "Identifiant de l'abonné ou de l'e-mail",
"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)",
"Email of the new contact": "E-mail du nouveau contact",
"If empty, status Active is used by default.": "Si vide, le statut Actif est utilisé par défaut.",
"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.",
"Active": "Actif",
"Unsubscribed": "Désabonné",
"Unconfirmed": "Non confirmé",
"Bounced": "Rebondi",
"Junk": "Indésirables",
"GET": "OBTENIR",
"POST": "POSTER",
"PATCH": "PATCH",
"PUT": "EFFACER",
"DELETE": "SUPPRIMER",
"HEAD": "TÊTE",
"Subscriber Created": "Abonné créé",
"Subscriber Fields Updated": "Champs d'abonné mis à jour",
"Subscriber Unsubscribed": "Abonné désabonné",
"Subscriber Added to Group": "Abonné ajouté au groupe",
"Triggers when a subscriber was created on your mailing list.": "Déclenche lorsqu'un abonné a été créé sur votre liste de diffusion.",
"Triggers when the subscriber fields have been updated.": "Déclenche quand les champs d'abonné ont été mis à jour.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Déclenche lorsqu'un abonné s'est désabonné de votre liste de diffusion.",
"Triggers when a subscriber is added to a group.": "Déclenche lorsqu'un abonné est ajouté à un groupe.",
"Webhook Name": "Nom du Webhook"
}

View File

@@ -0,0 +1,55 @@
{
"MailerLite": "MailerLite",
"Email marketing software": "Email marketing software",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n",
"Add Subscriber to a Group": "Add Subscriber to a Group",
"Add or Update subscriber": "Add or Update subscriber",
"Find a Subscriber": "Find a Subscriber",
"Remove Subscriber from a Group": "Remove Subscriber from a Group",
"Custom API Call": "Custom API Call",
"Adds existing subscriber to a specific group.": "Adds existing subscriber to a specific group.",
"Create a new subscriber or updates an existing one if the email already exists.": "Create a new subscriber or updates an existing one if the email already exists.",
"Search for subscriber by email or name.": "Search for subscriber by email or name.",
"Removes subscriber from a specific group.": "Removes subscriber from a specific group.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Subscriber ID": "Subscriber ID",
"Group ID": "Group ID",
"Email": "Email",
"Fields": "Fields",
"Status": "Status",
"Group IDs": "Group IDs",
"Subscribed On": "Subscribed On",
"Opt-in Date": "Opt-in Date",
"Signup IP address": "Signup IP address",
"Opt-in IP address": "Opt-in IP address",
"Subscriber ID or Email": "Subscriber ID or Email",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"Email of the new contact": "Email of the new contact",
"If empty, status Active is used by default.": "If empty, status Active is used by default.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Active": "Active",
"Unsubscribed": "Unsubscribed",
"Unconfirmed": "Unconfirmed",
"Bounced": "Bounced",
"Junk": "Junk",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Subscriber Created": "Subscriber Created",
"Subscriber Fields Updated": "Subscriber Fields Updated",
"Subscriber Unsubscribed": "Subscriber Unsubscribed",
"Subscriber Added to Group": "Subscriber Added to Group",
"Triggers when a subscriber was created on your mailing list.": "Triggers when a subscriber was created on your mailing list.",
"Triggers when the subscriber fields have been updated.": "Triggers when the subscriber fields have been updated.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Triggers when a subscriber has unsubscribed from your mailing list.",
"Triggers when a subscriber is added to a group.": "Triggers when a subscriber is added to a group.",
"Webhook Name": "Webhook Name"
}

View File

@@ -0,0 +1,55 @@
{
"MailerLite": "MailerLite",
"Email marketing software": "Email marketing software",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n",
"Add Subscriber to a Group": "Add Subscriber to a Group",
"Add or Update subscriber": "Add or Update subscriber",
"Find a Subscriber": "Find a Subscriber",
"Remove Subscriber from a Group": "Remove Subscriber from a Group",
"Custom API Call": "Custom API Call",
"Adds existing subscriber to a specific group.": "Adds existing subscriber to a specific group.",
"Create a new subscriber or updates an existing one if the email already exists.": "Create a new subscriber or updates an existing one if the email already exists.",
"Search for subscriber by email or name.": "Search for subscriber by email or name.",
"Removes subscriber from a specific group.": "Removes subscriber from a specific group.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Subscriber ID": "Subscriber ID",
"Group ID": "Group ID",
"Email": "Email",
"Fields": "Fields",
"Status": "Status",
"Group IDs": "Group IDs",
"Subscribed On": "Subscribed On",
"Opt-in Date": "Opt-in Date",
"Signup IP address": "Signup IP address",
"Opt-in IP address": "Opt-in IP address",
"Subscriber ID or Email": "Subscriber ID or Email",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"Email of the new contact": "Email of the new contact",
"If empty, status Active is used by default.": "If empty, status Active is used by default.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Active": "Aktif",
"Unsubscribed": "Unsubscribed",
"Unconfirmed": "Unconfirmed",
"Bounced": "Bounced",
"Junk": "Junk",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Subscriber Created": "Subscriber Created",
"Subscriber Fields Updated": "Subscriber Fields Updated",
"Subscriber Unsubscribed": "Subscriber Unsubscribed",
"Subscriber Added to Group": "Subscriber Added to Group",
"Triggers when a subscriber was created on your mailing list.": "Triggers when a subscriber was created on your mailing list.",
"Triggers when the subscriber fields have been updated.": "Triggers when the subscriber fields have been updated.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Triggers when a subscriber has unsubscribed from your mailing list.",
"Triggers when a subscriber is added to a group.": "Triggers when a subscriber is added to a group.",
"Webhook Name": "Webhook Name"
}

View File

@@ -0,0 +1,56 @@
{
"Email marketing software": "Eメールマーケティングソフトウェア",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nAPIキーを取得するには、以下の手順に従ってください:\n\n1. MailerLiteアカウントにログインします。\n2. [API page](https://dashboard.mailerlite.com/integrations/api)を参照してください。\n3. **新しいトークンを生成**ボタンをクリックします。\n4. 生成された API キーをコピーします。\n",
"Add Subscriber to a Group": "購読者をグループに追加",
"Add or Update subscriber": "購読者を追加または更新",
"Find a Subscriber": "購読者を探す",
"Remove Subscriber from a Group": "グループから購読者を削除",
"Custom API Call": "カスタムAPI通話",
"Adds existing subscriber to a specific group.": "既存の購読者を特定のグループに追加します。",
"Create a new subscriber or updates an existing one if the email already exists.": "メールがすでに存在する場合は、新しい購読者を作成するか、既存の購読者を更新します。",
"Search for subscriber by email or name.": "メールまたは名前で購読者を検索します。",
"Removes subscriber from a specific group.": "特定のグループから購読者を削除します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Subscriber ID": "購読者ID",
"Group ID": "グループID",
"Email": "Eメールアドレス",
"Fields": "フィールド",
"Status": "ステータス",
"Group IDs": "グループID",
"Subscribed On": "購読日時",
"Opt-in Date": "オプトイン日",
"Signup IP address": "サインアップ IP アドレス",
"Opt-in IP address": "オプトインのIPアドレス",
"Subscriber ID or Email": "購読者IDまたはメールアドレス",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"Email of the new contact": "新しい連絡先のメール",
"If empty, status Active is used by default.": "空の場合、ステータスはデフォルトでアクティブになります。",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"Active": "有効",
"Unsubscribed": "購読解除済み",
"Unconfirmed": "未確認",
"Bounced": "バウンスしました",
"Junk": "ジャンクコード",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭",
"Subscriber Created": "購読者が作成されました",
"Subscriber Fields Updated": "購読者フィールドが更新されました",
"Subscriber Unsubscribed": "購読登録解除",
"Subscriber Added to Group": "グループに追加された顧客",
"Triggers when a subscriber was created on your mailing list.": "メーリングリストに登録者が作成されたときにトリガーします。",
"Triggers when the subscriber fields have been updated.": "購読者項目が更新されたときにトリガーされます。",
"Triggers when a subscriber has unsubscribed from your mailing list.": "購読者があなたのメーリングリストから購読解除されたときにトリガーします。",
"Triggers when a subscriber is added to a group.": "購読者がグループに追加されたときにトリガーします。",
"Webhook Name": "Webhook名"
}

View File

@@ -0,0 +1,56 @@
{
"Email marketing software": "E-mail marketing software",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n",
"Add Subscriber to a Group": "Voeg abonnee toe aan een groep",
"Add or Update subscriber": "Abonnee toevoegen of bijwerken",
"Find a Subscriber": "Vind een abonnee",
"Remove Subscriber from a Group": "Verwijder Abonnee uit een groep",
"Custom API Call": "Custom API Call",
"Adds existing subscriber to a specific group.": "Voegt een bestaande abonnee toe aan een specifieke groep.",
"Create a new subscriber or updates an existing one if the email already exists.": "Maak een nieuwe abonnee aan of update een bestaande als het e-mailadres al bestaat.",
"Search for subscriber by email or name.": "Zoek abonnee op e-mail of naam.",
"Removes subscriber from a specific group.": "Verwijdert abonnee uit een specifieke groep.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Subscriber ID": "Abonnee ID",
"Group ID": "Groep ID",
"Email": "E-mail",
"Fields": "Velden",
"Status": "status",
"Group IDs": "Groep IDs",
"Subscribed On": "Geabonneerd op",
"Opt-in Date": "Opt-in datum",
"Signup IP address": "Aanmelden IP adres",
"Opt-in IP address": "Opt-in IP adres",
"Subscriber ID or Email": "Abonnee ID of e-mail",
"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)",
"Email of the new contact": "E-mail van de nieuwe contactpersoon",
"If empty, status Active is used by default.": "Indien leeg, wordt de status actief standaard gebruikt.",
"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..",
"Active": "Actief",
"Unsubscribed": "Uitgeschreven",
"Unconfirmed": "Onbevestigd",
"Bounced": "Bounced",
"Junk": "Ongewenste",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD",
"Subscriber Created": "Abonnee aangemaakt",
"Subscriber Fields Updated": "Abonnee velden bijgewerkt",
"Subscriber Unsubscribed": "Abonnee uitgeschreven",
"Subscriber Added to Group": "Abonnee toegevoegd aan groep",
"Triggers when a subscriber was created on your mailing list.": "Triggert wanneer een abonnee op uw mailinglijst is gemaakt.",
"Triggers when the subscriber fields have been updated.": "Triggert wanneer de abonnee velden zijn bijgewerkt.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Triggert wanneer een abonnee zich heeft afgemeld van uw mailinglijst.",
"Triggers when a subscriber is added to a group.": "Triggert wanneer een abonnee aan een groep wordt toegevoegd.",
"Webhook Name": "Webhook Naam"
}

View File

@@ -0,0 +1,56 @@
{
"Email marketing software": "Software de e-mail marketing",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n",
"Add Subscriber to a Group": "Adicionar Assinante a um Grupo",
"Add or Update subscriber": "Adicionar ou atualizar assinante",
"Find a Subscriber": "Encontre um Assinante",
"Remove Subscriber from a Group": "Remover Assinante de um Grupo",
"Custom API Call": "Chamada de API personalizada",
"Adds existing subscriber to a specific group.": "Adiciona um membro existente a um grupo específico.",
"Create a new subscriber or updates an existing one if the email already exists.": "Criar um novo assinante ou atualiza um existente, caso o e-mail já exista.",
"Search for subscriber by email or name.": "Procure por assinantes por e-mail ou nome.",
"Removes subscriber from a specific group.": "Remove assinante de um grupo específico.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Subscriber ID": "Identificação do assinante",
"Group ID": "Grupo ID",
"Email": "e-mail",
"Fields": "campos",
"Status": "Estado",
"Group IDs": "IDs de grupos",
"Subscribed On": "Subscrito em",
"Opt-in Date": "Data Opt-in",
"Signup IP address": "Registrar endereço IP",
"Opt-in IP address": "Opt-in endereço IP",
"Subscriber ID or Email": "Identificação ou E-mail do assinante",
"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)",
"Email of the new contact": "E-mail do novo contato",
"If empty, status Active is used by default.": "Se vazio, o status ativo é usado por padrão.",
"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..",
"Active": "Ativo",
"Unsubscribed": "Cancelada",
"Unconfirmed": "Não confirmada",
"Bounced": "Devolvido",
"Junk": "Lixo",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA",
"Subscriber Created": "Inscrito Criado",
"Subscriber Fields Updated": "Campos Assinantes Atualizados",
"Subscriber Unsubscribed": "Inscrito Inscrito",
"Subscriber Added to Group": "Assinante adicionado ao grupo",
"Triggers when a subscriber was created on your mailing list.": "Dispara quando um assinante foi criado em sua lista de endereços.",
"Triggers when the subscriber fields have been updated.": "Dispara quando os campos de membros forem atualizados.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Dispara quando um assinante tiver descadastrado da sua lista de correio.",
"Triggers when a subscriber is added to a group.": "Dispara quando um assinante é adicionado a um grupo.",
"Webhook Name": "Nome Webhook"
}

View File

@@ -0,0 +1,55 @@
{
"MailerLite": "MailerLite",
"Email marketing software": "Программное обеспечение по электронной почте",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nДля получения API ключа выполните следующие действия:\n\n1. Войдите в свою учетную запись MailerLite.\n2. Посетите [API-страницу](https://dashboard.mailerlite.com/integrations/api).\n3. Нажмите на кнопку **Создать новый токен**.\n4. Скопируйте сгенерированный API ключ.\n",
"Add Subscriber to a Group": "Добавить подписчика в группу",
"Add or Update subscriber": "Добавить или обновить подписчика",
"Find a Subscriber": "Найти подписчика",
"Remove Subscriber from a Group": "Удалить подписчика из группы",
"Custom API Call": "Пользовательский вызов API",
"Adds existing subscriber to a specific group.": "Добавляет существующего подписчика к конкретной группе.",
"Create a new subscriber or updates an existing one if the email already exists.": "Создать нового подписчика или обновить существующий, если он уже существует.",
"Search for subscriber by email or name.": "Поиск подписчика по электронной почте или имени.",
"Removes subscriber from a specific group.": "Удаляет подписчика из определенной группы.",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Subscriber ID": "ID подписчика",
"Group ID": "ID группы",
"Email": "Почта",
"Fields": "Поля",
"Status": "Статус",
"Group IDs": "ID группы",
"Subscribed On": "Подписан на",
"Opt-in Date": "Дата выбора",
"Signup IP address": "IP адрес регистрации",
"Opt-in IP address": "Регистрация IP-адреса",
"Subscriber ID or Email": "ID подписчика или Email",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"Email of the new contact": "Email нового контакта",
"If empty, status Active is used by default.": "Если пусто, статус Активность используется по умолчанию.",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"Active": "Активен",
"Unsubscribed": "Отписано",
"Unconfirmed": "Не подтверждено",
"Bounced": "Возврат",
"Junk": "Мусор",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD",
"Subscriber Created": "Абонент создан",
"Subscriber Fields Updated": "Поля подписчика обновлены",
"Subscriber Unsubscribed": "Подписчик отписался",
"Subscriber Added to Group": "Абонент добавлен в группу",
"Triggers when a subscriber was created on your mailing list.": "Включает при создании подписчика в вашем списке рассылки.",
"Triggers when the subscriber fields have been updated.": "Включает при обновлении полей подписчика.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Срабатывает, когда подписчик отписался от вашего списка рассылки.",
"Triggers when a subscriber is added to a group.": "Включает при добавлении подписчика в группу.",
"Webhook Name": "Имя вебхука"
}

View File

@@ -0,0 +1,56 @@
{
"Email marketing software": "Email marketing software",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n",
"Add Subscriber to a Group": "Add Subscriber to a Group",
"Add or Update subscriber": "Add or Update subscriber",
"Find a Subscriber": "Find a Subscriber",
"Remove Subscriber from a Group": "Remove Subscriber from a Group",
"Custom API Call": "Custom API Call",
"Adds existing subscriber to a specific group.": "Adds existing subscriber to a specific group.",
"Create a new subscriber or updates an existing one if the email already exists.": "Create a new subscriber or updates an existing one if the email already exists.",
"Search for subscriber by email or name.": "Search for subscriber by email or name.",
"Removes subscriber from a specific group.": "Removes subscriber from a specific group.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Subscriber ID": "Subscriber ID",
"Group ID": "Group ID",
"Email": "Email",
"Fields": "Fields",
"Status": "Status",
"Group IDs": "Group IDs",
"Subscribed On": "Subscribed On",
"Opt-in Date": "Opt-in Date",
"Signup IP address": "Signup IP address",
"Opt-in IP address": "Opt-in IP address",
"Subscriber ID or Email": "Subscriber ID or Email",
"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)",
"Email of the new contact": "Email of the new contact",
"If empty, status Active is used by default.": "If empty, status Active is used by default.",
"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..",
"Active": "Active",
"Unsubscribed": "Unsubscribed",
"Unconfirmed": "Unconfirmed",
"Bounced": "Bounced",
"Junk": "Junk",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Subscriber Created": "Subscriber Created",
"Subscriber Fields Updated": "Subscriber Fields Updated",
"Subscriber Unsubscribed": "Subscriber Unsubscribed",
"Subscriber Added to Group": "Subscriber Added to Group",
"Triggers when a subscriber was created on your mailing list.": "Triggers when a subscriber was created on your mailing list.",
"Triggers when the subscriber fields have been updated.": "Triggers when the subscriber fields have been updated.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Triggers when a subscriber has unsubscribed from your mailing list.",
"Triggers when a subscriber is added to a group.": "Triggers when a subscriber is added to a group.",
"Webhook Name": "Webhook Name"
}

View File

@@ -0,0 +1,55 @@
{
"MailerLite": "MailerLite",
"Email marketing software": "Email marketing software",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n",
"Add Subscriber to a Group": "Add Subscriber to a Group",
"Add or Update subscriber": "Add or Update subscriber",
"Find a Subscriber": "Find a Subscriber",
"Remove Subscriber from a Group": "Remove Subscriber from a Group",
"Custom API Call": "Custom API Call",
"Adds existing subscriber to a specific group.": "Adds existing subscriber to a specific group.",
"Create a new subscriber or updates an existing one if the email already exists.": "Create a new subscriber or updates an existing one if the email already exists.",
"Search for subscriber by email or name.": "Search for subscriber by email or name.",
"Removes subscriber from a specific group.": "Removes subscriber from a specific group.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Subscriber ID": "Subscriber ID",
"Group ID": "Group ID",
"Email": "Email",
"Fields": "Fields",
"Status": "Status",
"Group IDs": "Group IDs",
"Subscribed On": "Subscribed On",
"Opt-in Date": "Opt-in Date",
"Signup IP address": "Signup IP address",
"Opt-in IP address": "Opt-in IP address",
"Subscriber ID or Email": "Subscriber ID or Email",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"Email of the new contact": "Email of the new contact",
"If empty, status Active is used by default.": "If empty, status Active is used by default.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Active": "Tích cực",
"Unsubscribed": "Unsubscribed",
"Unconfirmed": "Unconfirmed",
"Bounced": "Bounced",
"Junk": "Junk",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Subscriber Created": "Subscriber Created",
"Subscriber Fields Updated": "Subscriber Fields Updated",
"Subscriber Unsubscribed": "Subscriber Unsubscribed",
"Subscriber Added to Group": "Subscriber Added to Group",
"Triggers when a subscriber was created on your mailing list.": "Triggers when a subscriber was created on your mailing list.",
"Triggers when the subscriber fields have been updated.": "Triggers when the subscriber fields have been updated.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Triggers when a subscriber has unsubscribed from your mailing list.",
"Triggers when a subscriber is added to a group.": "Triggers when a subscriber is added to a group.",
"Webhook Name": "Webhook Name"
}

View File

@@ -0,0 +1,56 @@
{
"Email marketing software": "Email marketing software",
"\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n": "\nTo obtain your API key, follow these steps:\n\n1. Log in to your MailerLite account.\n2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).\n3. Click the **Generate new token** button.\n4. Copy the generated API key.\n",
"Add Subscriber to a Group": "Add Subscriber to a Group",
"Add or Update subscriber": "Add or Update subscriber",
"Find a Subscriber": "Find a Subscriber",
"Remove Subscriber from a Group": "Remove Subscriber from a Group",
"Custom API Call": "自定义 API 呼叫",
"Adds existing subscriber to a specific group.": "Adds existing subscriber to a specific group.",
"Create a new subscriber or updates an existing one if the email already exists.": "Create a new subscriber or updates an existing one if the email already exists.",
"Search for subscriber by email or name.": "Search for subscriber by email or name.",
"Removes subscriber from a specific group.": "Removes subscriber from a specific group.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Subscriber ID": "Subscriber ID",
"Group ID": "Group ID",
"Email": "电子邮件地址",
"Fields": "Fields",
"Status": "状态",
"Group IDs": "Group IDs",
"Subscribed On": "Subscribed On",
"Opt-in Date": "Opt-in Date",
"Signup IP address": "Signup IP address",
"Opt-in IP address": "Opt-in IP address",
"Subscriber ID or Email": "Subscriber ID or Email",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"Email of the new contact": "Email of the new contact",
"If empty, status Active is used by default.": "If empty, status Active is used by default.",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"Active": "使用中",
"Unsubscribed": "Unsubscribed",
"Unconfirmed": "Unconfirmed",
"Bounced": "Bounced",
"Junk": "Junk",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色",
"Subscriber Created": "Subscriber Created",
"Subscriber Fields Updated": "Subscriber Fields Updated",
"Subscriber Unsubscribed": "Subscriber Unsubscribed",
"Subscriber Added to Group": "Subscriber Added to Group",
"Triggers when a subscriber was created on your mailing list.": "Triggers when a subscriber was created on your mailing list.",
"Triggers when the subscriber fields have been updated.": "Triggers when the subscriber fields have been updated.",
"Triggers when a subscriber has unsubscribed from your mailing list.": "Triggers when a subscriber has unsubscribed from your mailing list.",
"Triggers when a subscriber is added to a group.": "Triggers when a subscriber is added to a group.",
"Webhook Name": "Webhook Name"
}

View File

@@ -0,0 +1,48 @@
import { PieceAuth, createPiece } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { createOrUpdateSubscriber } from './lib/actions/create-or-update-subscription';
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import { triggers } from './triggers/triggers';
import { addSubscriberToGroupAction } from './lib/actions/add-subscriber-to-group';
import { removeSubscriberFromGroupAction } from './lib/actions/remove-subscriber-from-group';
import { findSubscriberAction } from './lib/actions/find-subscriber';
const markdownDescription = `
To obtain your API key, follow these steps:
1. Log in to your MailerLite account.
2. Visit the [API page](https://dashboard.mailerlite.com/integrations/api).
3. Click the **Generate new token** button.
4. Copy the generated API key.
`;
export const mailerLiteAuth = PieceAuth.SecretText({
displayName: 'API Key',
description: markdownDescription,
required: true,
});
export const mailerLite = createPiece({
displayName: 'MailerLite',
description: 'Email marketing software',
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/mailer-lite.png',
categories: [PieceCategory.MARKETING],
authors: ["Willianwg","kanarelo","kishanprmr","khaledmashaly","abuaboud"],
auth: mailerLiteAuth,
actions: [
addSubscriberToGroupAction,
createOrUpdateSubscriber,
findSubscriberAction,
removeSubscriberFromGroupAction,
createCustomApiCallAction({
baseUrl: () => 'https://connect.mailerlite.com/',
auth: mailerLiteAuth,
authMapping: async (auth) => ({
Authorization: `Bearer ${auth.secret_text}`,
}),
}),
],
triggers,
});

View File

@@ -0,0 +1,23 @@
import MailerLite from '@mailerlite/mailerlite-nodejs';
import { createAction } from '@activepieces/pieces-framework';
import { mailerLiteAuth } from '../..';
import { mailerLiteCommon } from '../common';
export const addSubscriberToGroupAction = createAction({
auth: mailerLiteAuth,
name: 'add_subscriber_to_group',
displayName: 'Add Subscriber to a Group',
description: 'Adds existing subscriber to a specific group.',
props: {
subscriberId: mailerLiteCommon.subscriberId(true),
subscriberGroupId: mailerLiteCommon.subscriberGroupId(true),
},
async run(context) {
const client = new MailerLite({ api_key: context.auth.secret_text });
const response = await client.groups.assignSubscriber(
context.propsValue.subscriberId!,
context.propsValue.subscriberGroupId!,
);
return response.data;
},
});

View File

@@ -0,0 +1,88 @@
import MailerLite from '@mailerlite/mailerlite-nodejs';
import { createAction, Property } from '@activepieces/pieces-framework';
import { mailerLiteAuth } from '../..';
import { mailerLiteCommon } from '../common';
import dayjs from 'dayjs';
export const createOrUpdateSubscriber = createAction({
auth: mailerLiteAuth,
name: 'add_or_update_subscriber',
displayName: 'Add or Update subscriber',
description: 'Create a new subscriber or updates an existing one if the email already exists.',
props: {
email: Property.ShortText({
displayName: 'Email',
description: 'Email of the new contact',
required: true,
}),
subscriberFields: mailerLiteCommon.subscriberFields,
status: Property.StaticDropdown({
displayName: 'Status',
required: false,
description: 'If empty, status Active is used by default.',
defaultValue: 'active',
options: {
disabled: false,
options: [
{
label: 'Active',
value: 'active',
},
{
label: 'Unsubscribed',
value: 'unsubscribed',
},
{
label: 'Unconfirmed',
value: 'unconfirmed',
},
{
label: 'Bounced',
value: 'bounced',
},
{
label: 'Junk',
value: 'junk',
},
],
},
}),
subscriberGroupId: mailerLiteCommon.subscriberGroupIds(false),
subscribed_at: Property.DateTime({
displayName: 'Subscribed On',
required: false,
}),
opted_in_at: Property.DateTime({
displayName: 'Opt-in Date',
required: false,
}),
ip_address: Property.ShortText({
displayName: 'Signup IP address',
required: false,
}),
optin_ip: Property.ShortText({
displayName: 'Opt-in IP address',
required: false,
}),
},
async run(context) {
const client = new MailerLite({ api_key: context.auth.secret_text });
const response = await client.subscribers.createOrUpdate({
email: context.propsValue.email,
fields: context.propsValue.subscriberFields,
groups: context.propsValue.subscriberGroupId,
status: context.propsValue.status as status,
subscribed_at: context.propsValue.subscribed_at
? dayjs(context.propsValue.subscribed_at).format('YYYY-MM-DD HH:mm:ss')
: undefined,
opted_in_at: context.propsValue.opted_in_at
? dayjs(context.propsValue.opted_in_at).format('YYYY-MM-DD HH:mm:ss')
: undefined,
ip_address: context.propsValue.ip_address,
optin_ip: context.propsValue.optin_ip,
});
return response.data;
},
});
type status = 'active' | 'unsubscribed' | 'unconfirmed' | 'bounced' | 'junk';

View File

@@ -0,0 +1,21 @@
import MailerLite from '@mailerlite/mailerlite-nodejs';
import { Property, createAction } from '@activepieces/pieces-framework';
import { mailerLiteAuth } from '../..';
export const findSubscriberAction = createAction({
auth: mailerLiteAuth,
name: 'find_subscriber',
displayName: 'Find a Subscriber',
description: 'Search for subscriber by email or name.',
props: {
searchValue: Property.ShortText({
displayName: 'Subscriber ID or Email',
required: true,
}),
},
async run(context) {
const client = new MailerLite({ api_key: context.auth.secret_text });
const response = await client.subscribers.find(context.propsValue.searchValue);
return response.data;
},
});

View File

@@ -0,0 +1,23 @@
import MailerLite from '@mailerlite/mailerlite-nodejs';
import { createAction } from '@activepieces/pieces-framework';
import { mailerLiteAuth } from '../..';
import { mailerLiteCommon } from '../common';
export const removeSubscriberFromGroupAction = createAction({
auth: mailerLiteAuth,
name: 'remove_subscriber_from_group',
displayName: 'Remove Subscriber from a Group',
description: 'Removes subscriber from a specific group.',
props: {
subscriberId: mailerLiteCommon.subscriberId(true),
subscriberGroupId: mailerLiteCommon.subscriberGroupId(true),
},
async run(context) {
const client = new MailerLite({ api_key: context.auth.secret_text });
const response = await client.groups.unAssignSubscriber(
context.propsValue.subscriberId!,
context.propsValue.subscriberGroupId!,
);
return response.data;
},
});

View File

@@ -0,0 +1,147 @@
import { DynamicPropsValue, Property } from '@activepieces/pieces-framework';
import MailerLite from '@mailerlite/mailerlite-nodejs';
import { mailerLiteAuth } from '../..';
export const mailerLiteCommon = {
subscriberFields: Property.DynamicProperties({
auth: mailerLiteAuth,
displayName: 'Fields',
refreshers: [],
required: true,
props: async ({ auth }) => {
if (!auth) return {};
const props: DynamicPropsValue = {};
const client = new MailerLite({ api_key: auth.secret_text });
const response = await client.fields.get({ page: 1, limit: 100 });
for (const field of response.data.data) {
switch (field.type) {
case 'number':
props[field.key] = Property.Number({
displayName: field.name,
required: false,
});
break;
case 'text':
props[field.key] = Property.LongText({
displayName: field.name,
required: false,
});
break;
case 'date':
props[field.key] = Property.DateTime({
displayName: field.name,
required: false,
description: 'Provide YYYY-MM-DD format.',
});
break;
}
}
return props;
},
}),
subscriberGroupIds: (required = false) =>
Property.MultiSelectDropdown({
auth: mailerLiteAuth,
displayName: 'Group IDs',
required,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
placeholder: 'Please connect your account first.',
options: [],
};
}
const client = new MailerLite({ api_key: auth.secret_text });
const response = await client.groups.get({
page: 1,
limit: 100,
sort: '-created_at',
});
return {
disabled: false,
options: response.data.data.map((group) => {
return {
label: group.name,
value: group.id,
};
}),
};
},
}),
subscriberGroupId: (required = false) =>
Property.Dropdown({
auth: mailerLiteAuth,
displayName: 'Group ID',
required,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
placeholder: 'Please connect your account first.',
options: [],
};
}
const client = new MailerLite({ api_key: auth.secret_text });
const response = await client.groups.get({
page: 1,
limit: 100,
sort: '-created_at',
});
return {
disabled: false,
options: response.data.data.map((group) => {
return {
label: group.name,
value: group.id,
};
}),
};
},
}),
subscriberId: (required = false) =>
Property.Dropdown({
auth: mailerLiteAuth,
displayName: 'Subscriber ID',
refreshers: [],
required,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
placeholder: 'Please connect your account first.',
options: [],
};
}
const client = new MailerLite({ api_key: auth.secret_text });
const subscribers: { label: string; value: string }[] = [];
let cursor;
do {
const response = await client.subscribers.get({
limit: 25,
cursor: cursor,
});
subscribers.push(
...response.data.data.map((subscriber) => ({
label: subscriber.email,
value: subscriber.id,
})),
);
cursor = response.data.meta.next_cursor;
} while (cursor !== null);
return {
disabled: false,
options: subscribers,
};
},
}),
};

View File

@@ -0,0 +1,149 @@
import MailerLite from '@mailerlite/mailerlite-nodejs';
import { createTrigger, Property, TriggerStrategy } from '@activepieces/pieces-framework';
import { mailerLiteAuth } from '..';
const subscriberSample = {
id: '112375610569918142',
email: 'aa@gmail.com',
status: 'active',
source: 'manual',
sent: null,
opens_count: null,
clicks_count: null,
open_rate: 0,
click_rate: 0,
ip_address: null,
subscribed_at: '2024-02-05T21:48:53.000000Z',
unsubscribed_at: null,
created_at: '2024-02-05T21:48:53.000000Z',
updated_at: '2024-02-05T21:48:53.000000Z',
deleted_at: null,
forget_at: null,
fields: {
name: 'ad',
last_name: null,
company: null,
country: null,
city: null,
phone: null,
state: null,
z_i_p: null,
},
opted_in_at: null,
option_ip: null,
};
export const triggers = [
{
name: 'subscriber.created',
displayName: 'Subscriber Created',
description: 'Triggers when a subscriber was created on your mailing list.',
sampleData: subscriberSample,
},
{
name: 'subscriber.updated',
displayName: 'Subscriber Fields Updated',
description: 'Triggers when the subscriber fields have been updated.',
sampleData: subscriberSample,
},
{
name: 'subscriber.unsubscribed',
displayName: 'Subscriber Unsubscribed',
description: 'Triggers when a subscriber has unsubscribed from your mailing list.',
sampleData: {
id: '112374478518880188',
email: 'example@gmail.com',
status: 'unsubscribed',
source: 'manual',
sent: 0,
opens_count: 0,
clicks_count: 0,
open_rate: 0,
click_rate: 0,
ip_address: null,
subscribed_at: '2024-02-05 21:30:54',
unsubscribed_at: '2024-02-05 21:54:58',
created_at: '2024-02-05 21:30:53',
updated_at: '2024-02-05 21:54:58',
opted_in_at: null,
option_ip: null,
email_changed_at: null,
},
},
{
name: 'subscriber.added_to_group',
displayName: 'Subscriber Added to Group',
description: 'Triggers when a subscriber is added to a group.',
sampleData: {
type: 'subscriber.added_to_group',
subscriber: subscriberSample,
group: { id: '108162245463115431', name: "[M]'s Network" },
},
},
].map(register);
export function register({
name,
displayName,
description,
sampleData,
}: {
name: string;
displayName: string;
description: string;
sampleData: unknown;
}) {
return createTrigger({
auth: mailerLiteAuth,
name,
displayName,
description,
props: {
name: Property.ShortText({
displayName: 'Webhook Name',
required: true,
}),
},
sampleData: sampleData,
type: TriggerStrategy.WEBHOOK,
async onEnable(context) {
const mailerLite = new MailerLite({ api_key: context.auth.secret_text });
mailerLite.webhooks
.create({
name: context.propsValue.name,
events: [name],
url: context.webhookUrl,
})
.then(async (response) => {
await context.store.put<Webhook>(name, response.data);
})
.catch((error) => {
if (error.response) console.log(error.response.data);
});
},
async onDisable(context) {
const webhook = await context.store.get<Webhook>(name);
if (webhook?.data.id) {
const mailerLite = new MailerLite({ api_key: context.auth.secret_text });
mailerLite.webhooks.delete(webhook?.data.id);
}
},
async run(context) {
return [context.payload.body];
},
});
}
interface Webhook {
data: {
id: string;
name: string;
url: string;
events: string[];
enabled: boolean;
secret: string;
created_at: string;
updated_at: string;
};
}