Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

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

View File

@@ -0,0 +1,7 @@
# pieces-vbout
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-vbout` to build the library.

View File

@@ -0,0 +1,4 @@
{
"name": "@activepieces/piece-vbout",
"version": "0.0.10"
}

View File

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

View File

@@ -0,0 +1,73 @@
{
"VBOUT": "VBOUT",
"Marketing automation platform for agencies": "Marketing automation platform for agencies",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n",
"Add Contact to List": "Add Contact to List",
"Add Tag to Contact": "Add Tag to Contact",
"Create Email List": "Create Email List",
"Create Email Marketing Campaign": "Create Email Marketing Campaign",
"Create Social Media Message": "Create Social Media Message",
"Get Contact by Email": "Get Contact by Email",
"Get List Details with Custom Fields": "Get List Details with Custom Fields",
"Remove Tags from Contact": "Remove Tags from Contact",
"Unsubscribe Contact": "Unsubscribe Contact",
"Update Contact": "Update Contact",
"Adds a contact to a given email list.": "Adds a contact to a given email list.",
"Adds the tag to the contact.": "Adds the tag to the contact.",
"Creates a new email list.": "Creates a new email list.",
"Creates a new email campaign for specific list.": "Creates a new email campaign for specific list.",
"Post a message to one of your social media channel.": "Post a message to one of your social media channel.",
"Retrieves the contact by email.": "Retrieves the contact by email.",
"Retrieves specific list details with custom fields.": "Retrieves specific list details with custom fields.",
"Removes tags from an existing contact.": "Removes tags from an existing contact.",
"Unsubscribes an existing contact in a given email list.": "Unsubscribes an existing contact in a given email list.",
"Updates a contact in a given email list.": "Updates a contact in a given email list.",
"Email Address": "Email Address",
"List ID": "List ID",
"Contact Status": "Contact Status",
"IP Address": "IP Address",
"Fields": "Fields",
"Tag Name": "Tag Name",
"Name": "Name",
"Email Subject": "Email Subject",
"Reply To": "Reply To",
"From Email": "From Email",
"From Name": "From Name",
"Notify Email": "Notify Email",
"Success Email": "Success Email",
"Success Message": "Success Message",
"Error Message": "Error Message",
"Confirmation Email": "Confirmation Email",
"Confirmation Message": "Confirmation Message",
"Campaign Recipients List": "Campaign Recipients List",
"Campaign Name": "Campaign Name",
"Campaign Subject": "Campaign Subject",
"Campaign Type": "Campaign Type",
"Message Body": "Message Body",
"Message": "Message",
"Social Media Channel": "Social Media Channel",
"Social Media Account": "Social Media Account",
"Email": "Email",
"Contact Email": "Contact Email",
"The name of the list.": "The name of the list.",
"The default subscription subject.": "The default subscription subject.",
"The Reply to email of the list.": "The Reply to email of the list.",
"The From email of the list.": "The From email of the list.",
"The From name of the list.": "The From name of the list.",
"Notification Email.": "Notification Email.",
"Subscription Success Email.": "Subscription Success Email.",
"Subscription Success Message.": "Subscription Success Message.",
"Subscription Error Message.": "Subscription Error Message.",
"Confirmation Email Message.": "Confirmation Email Message.",
"use comma for multiple tag e.g. **tag1,tag2**.": "use comma for multiple tag e.g. **tag1,tag2**.",
"Contact email for update.": "Contact email for update.",
"Unconfirmed": "Unconfirmed",
"Active": "Active",
"Unsubscribe": "Unsubscribe",
"Bounced Email": "Bounced Email",
"Standard": "Standard",
"Automated": "Automated",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,72 @@
{
"Marketing automation platform for agencies": "Marketing-Automatisierungsplattform für Agenturen",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nUm Ihren API-Schlüssel zu erhalten, folgen Sie diesen Schritten:\n\n1.Gehen Sie zu **Einstellungen** indem Sie auf Ihr Profilbild (oben rechts) klicken.\n\n2.Navigiere zum Abschnitt **API Integrations**\n\n3.Unter **API USER KEY** ,kopieren Sie API-Schlüssel.\n\n",
"Add Contact to List": "Kontakt zur Liste hinzufügen",
"Add Tag to Contact": "Tag zu Kontakt hinzufügen",
"Create Email List": "E-Mail-Liste erstellen",
"Create Email Marketing Campaign": "E-Mail-Marketing-Kampagne erstellen",
"Create Social Media Message": "Social-Media-Nachricht erstellen",
"Get Contact by Email": "Kontakt per E-Mail erhalten",
"Get List Details with Custom Fields": "Listendetails mit benutzerdefinierten Feldern abrufen",
"Remove Tags from Contact": "Tags vom Kontakt entfernen",
"Unsubscribe Contact": "Kontakt abbestellen",
"Update Contact": "Kontakt aktualisieren",
"Adds a contact to a given email list.": "Fügt einen Kontakt zu einer angegebenen E-Mail-Liste hinzu.",
"Adds the tag to the contact.": "Fügt den Tag dem Kontakt hinzu.",
"Creates a new email list.": "Erstellt eine neue E-Mail-Liste.",
"Creates a new email campaign for specific list.": "Erstellt eine neue E-Mail-Kampagne für bestimmte Listen.",
"Post a message to one of your social media channel.": "Schreibe eine Nachricht auf deinen Social-Media-Kanal.",
"Retrieves the contact by email.": "Ruft den Kontakt per E-Mail ab.",
"Retrieves specific list details with custom fields.": "Ruft spezifische Listendetails mit benutzerdefinierten Feldern ab.",
"Removes tags from an existing contact.": "Entfernt Tags von einem existierenden Kontakt.",
"Unsubscribes an existing contact in a given email list.": "Abonniert einen bestehenden Kontakt in einer angegebenen E-Mail-Liste.",
"Updates a contact in a given email list.": "Aktualisiert einen Kontakt in einer angegebenen E-Mail-Liste.",
"Email Address": "E-Mail-Adresse",
"List ID": "Listen-ID",
"Contact Status": "Kontaktstatus",
"IP Address": "IP-Adresse",
"Fields": "Felder",
"Tag Name": "Tag-Name",
"Name": "Name",
"Email Subject": "E-Mail-Betreff",
"Reply To": "Antwort an",
"From Email": "Absender-E-Mail",
"From Name": "Absendername",
"Notify Email": "E-Mail benachrichtigen",
"Success Email": "Erfolgs-E-Mail",
"Success Message": "Erfolgsmeldung",
"Error Message": "Fehlermeldung",
"Confirmation Email": "Bestätigungs-E-Mail",
"Confirmation Message": "Bestätigungsnachricht",
"Campaign Recipients List": "Kampagnen-Empfängerliste",
"Campaign Name": "Kampagnenname",
"Campaign Subject": "Kampagnen-Betreff",
"Campaign Type": "Kampagnentyp",
"Message Body": "Nachrichtentext",
"Message": "Nachricht",
"Social Media Channel": "Social Media Kanal",
"Social Media Account": "Social Media Account",
"Email": "E-Mail",
"Contact Email": "Kontakt-E-Mail",
"The name of the list.": "Der Name der Liste.",
"The default subscription subject.": "Der Standard-Abonnement-Betreff.",
"The Reply to email of the list.": "Die Antwort auf E-Mail der Liste.",
"The From email of the list.": "Die Von E-Mail der Liste.",
"The From name of the list.": "Der Absendername der Liste.",
"Notification Email.": "Benachrichtigungs-E-Mail.",
"Subscription Success Email.": "Abonnement-Erfolgs-E-Mail.",
"Subscription Success Message.": "Erfolgreiche Abonnementsnachricht.",
"Subscription Error Message.": "Abonnement-Fehlermeldung.",
"Confirmation Email Message.": "Bestätigungs-E-Mail-Nachricht.",
"use comma for multiple tag e.g. **tag1,tag2**.": "benutze Komma für mehrere Tags z.B. **tag1,tag2**.",
"Contact email for update.": "Kontakt-E-Mail für das Update.",
"Unconfirmed": "Unbestätigt",
"Active": "Aktiv",
"Unsubscribe": "Abmelden",
"Bounced Email": "Abgelaufene E-Mail",
"Standard": "Standard",
"Automated": "Automatisiert",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,72 @@
{
"Marketing automation platform for agencies": "Plataforma de automatización de marketing para agencias",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n",
"Add Contact to List": "Añadir contacto a la lista",
"Add Tag to Contact": "Añadir etiqueta al contacto",
"Create Email List": "Crear Lista de Correos",
"Create Email Marketing Campaign": "Crear Campaña de Marketing por Email",
"Create Social Media Message": "Crear mensaje de redes sociales",
"Get Contact by Email": "Obtener contacto por email",
"Get List Details with Custom Fields": "Obtener detalles de la lista con campos personalizados",
"Remove Tags from Contact": "Eliminar Etiquetas del Contacto",
"Unsubscribe Contact": "Desuscribirse Contacto",
"Update Contact": "Actualizar contacto",
"Adds a contact to a given email list.": "Añade un contacto a una lista de correo dada.",
"Adds the tag to the contact.": "Añade la etiqueta al contacto.",
"Creates a new email list.": "Crea una nueva lista de correos.",
"Creates a new email campaign for specific list.": "Crea una nueva campaña de correo electrónico para una lista específica.",
"Post a message to one of your social media channel.": "Publica un mensaje en uno de tus canales de redes sociales.",
"Retrieves the contact by email.": "Recuperar el contacto por correo electrónico.",
"Retrieves specific list details with custom fields.": "Recuperar los detalles de la lista específica con los campos personalizados.",
"Removes tags from an existing contact.": "Elimina etiquetas de un contacto existente.",
"Unsubscribes an existing contact in a given email list.": "Darse de baja a un contacto existente en una lista de correo electrónico determinada.",
"Updates a contact in a given email list.": "Actualiza un contacto en una lista de correo determinada.",
"Email Address": "Dirección de email",
"List ID": "ID de lista",
"Contact Status": "Estado del Contacto",
"IP Address": "Dirección IP",
"Fields": "Campos",
"Tag Name": "Nombre de la etiqueta",
"Name": "Nombre",
"Email Subject": "Asunto de Email",
"Reply To": "Responder a",
"From Email": "Desde Email",
"From Name": "De nombre",
"Notify Email": "Notificar Email",
"Success Email": "Email Éxito",
"Success Message": "Mensaje de éxito",
"Error Message": "Mensaje de error",
"Confirmation Email": "Email de confirmación",
"Confirmation Message": "Mensaje de confirmación",
"Campaign Recipients List": "Lista de destinatarios de campaña",
"Campaign Name": "Nombre de Campaña",
"Campaign Subject": "Asunto de campaña",
"Campaign Type": "Tipo de Campaña",
"Message Body": "Cuerpo",
"Message": "Mensaje",
"Social Media Channel": "Canal de redes sociales",
"Social Media Account": "Cuenta de redes sociales",
"Email": "E-mail",
"Contact Email": "Email de contacto",
"The name of the list.": "El nombre de la lista.",
"The default subscription subject.": "El asunto de suscripción por defecto.",
"The Reply to email of the list.": "La respuesta al correo electrónico de la lista.",
"The From email of the list.": "El email Desde de la lista.",
"The From name of the list.": "El nombre de la lista.",
"Notification Email.": "Correo de notificación.",
"Subscription Success Email.": "Suscripción Éxito Correo Electrónico.",
"Subscription Success Message.": "Mensaje de Éxito de Suscripción.",
"Subscription Error Message.": "Mensaje de error de la suscripción.",
"Confirmation Email Message.": "Mensaje de correo de confirmación.",
"use comma for multiple tag e.g. **tag1,tag2**.": "use coma para la etiqueta múltiple ej. **tag1,tag2**.",
"Contact email for update.": "Email de contacto para actualizar.",
"Unconfirmed": "Sin confirmar",
"Active": "Activo",
"Unsubscribe": "Darse de baja",
"Bounced Email": "Correo rebotado",
"Standard": "Estándar",
"Automated": "Automatizado",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,72 @@
{
"Marketing automation platform for agencies": "Plateforme d'automatisation marketing pour les agences",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n",
"Add Contact to List": "Ajouter un contact à la liste",
"Add Tag to Contact": "Ajouter un tag au contact",
"Create Email List": "Créer une liste d'emails",
"Create Email Marketing Campaign": "Créer une campagne de marketing par e-mail",
"Create Social Media Message": "Créer un message sur les réseaux sociaux",
"Get Contact by Email": "Obtenir un contact par e-mail",
"Get List Details with Custom Fields": "Obtenir les détails de la liste avec les champs personnalisés",
"Remove Tags from Contact": "Supprimer les tags du contact",
"Unsubscribe Contact": "Se désabonner du contact",
"Update Contact": "Mettre à jour le contact",
"Adds a contact to a given email list.": "Ajoute un contact à une liste de courriels donnée.",
"Adds the tag to the contact.": "Ajoute le tag au contact.",
"Creates a new email list.": "Crée une nouvelle liste de courriels.",
"Creates a new email campaign for specific list.": "Crée une nouvelle campagne d'email pour une liste spécifique.",
"Post a message to one of your social media channel.": "Poster un message sur l'un de vos réseaux sociaux.",
"Retrieves the contact by email.": "Récupère le contact par email.",
"Retrieves specific list details with custom fields.": "Récupère les détails spécifiques de la liste avec les champs personnalisés.",
"Removes tags from an existing contact.": "Supprime les tags d'un contact existant.",
"Unsubscribes an existing contact in a given email list.": "Désabonne un contact existant dans une liste email donnée.",
"Updates a contact in a given email list.": "Met à jour un contact dans une liste email donnée.",
"Email Address": "Adresse e-mail",
"List ID": "ID de la liste",
"Contact Status": "Statut du contact",
"IP Address": "Adresse IP",
"Fields": "Champs",
"Tag Name": "Nom de l'étiquette",
"Name": "Nom",
"Email Subject": "Sujet de l'e-mail",
"Reply To": "Répondre à",
"From Email": "De l'E-mail",
"From Name": "De nom",
"Notify Email": "E-mail de notification",
"Success Email": "E-mail de Succès",
"Success Message": "Message de réussite",
"Error Message": "Message d'erreur",
"Confirmation Email": "E-mail de confirmation",
"Confirmation Message": "Message de confirmation",
"Campaign Recipients List": "Liste des destinataires de la campagne",
"Campaign Name": "Nom de la campagne",
"Campaign Subject": "Sujet de la campagne",
"Campaign Type": "Type de campagne",
"Message Body": "Corps du message",
"Message": "Message",
"Social Media Channel": "Chaîne de médias sociaux",
"Social Media Account": "Compte de réseaux sociaux",
"Email": "Courriel",
"Contact Email": "Courriel du contact",
"The name of the list.": "Le nom de la liste.",
"The default subscription subject.": "Le sujet de l'abonnement par défaut.",
"The Reply to email of the list.": "La réponse à l'email de la liste.",
"The From email of the list.": "Courriel d'expéditeur de la liste.",
"The From name of the list.": "Le nom de l'expéditeur de la liste.",
"Notification Email.": "E-Mail de notification.",
"Subscription Success Email.": "E-Mail de Succès de l'abonnement.",
"Subscription Success Message.": "Message de Succès de l'Abonnement.",
"Subscription Error Message.": "Message d'erreur d'abonnement.",
"Confirmation Email Message.": "Message de confirmation par e-mail.",
"use comma for multiple tag e.g. **tag1,tag2**.": "utiliser des virgules pour des tags multiples, par exemple **tag1,tag2**.",
"Contact email for update.": "E-mail de contact pour la mise à jour.",
"Unconfirmed": "Non confirmé",
"Active": "Actif",
"Unsubscribe": "Se désabonner",
"Bounced Email": "Courriel rebondi",
"Standard": "Standard",
"Automated": "Automatisé",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,73 @@
{
"VBOUT": "VBOUT",
"Marketing automation platform for agencies": "Marketing automation platform for agencies",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n",
"Add Contact to List": "Add Contact to List",
"Add Tag to Contact": "Add Tag to Contact",
"Create Email List": "Create Email List",
"Create Email Marketing Campaign": "Create Email Marketing Campaign",
"Create Social Media Message": "Create Social Media Message",
"Get Contact by Email": "Get Contact by Email",
"Get List Details with Custom Fields": "Get List Details with Custom Fields",
"Remove Tags from Contact": "Remove Tags from Contact",
"Unsubscribe Contact": "Unsubscribe Contact",
"Update Contact": "Update Contact",
"Adds a contact to a given email list.": "Adds a contact to a given email list.",
"Adds the tag to the contact.": "Adds the tag to the contact.",
"Creates a new email list.": "Creates a new email list.",
"Creates a new email campaign for specific list.": "Creates a new email campaign for specific list.",
"Post a message to one of your social media channel.": "Post a message to one of your social media channel.",
"Retrieves the contact by email.": "Retrieves the contact by email.",
"Retrieves specific list details with custom fields.": "Retrieves specific list details with custom fields.",
"Removes tags from an existing contact.": "Removes tags from an existing contact.",
"Unsubscribes an existing contact in a given email list.": "Unsubscribes an existing contact in a given email list.",
"Updates a contact in a given email list.": "Updates a contact in a given email list.",
"Email Address": "Email Address",
"List ID": "List ID",
"Contact Status": "Contact Status",
"IP Address": "IP Address",
"Fields": "Fields",
"Tag Name": "Tag Name",
"Name": "Name",
"Email Subject": "Email Subject",
"Reply To": "Reply To",
"From Email": "From Email",
"From Name": "From Name",
"Notify Email": "Notify Email",
"Success Email": "Success Email",
"Success Message": "Success Message",
"Error Message": "Error Message",
"Confirmation Email": "Confirmation Email",
"Confirmation Message": "Confirmation Message",
"Campaign Recipients List": "Campaign Recipients List",
"Campaign Name": "Campaign Name",
"Campaign Subject": "Campaign Subject",
"Campaign Type": "Campaign Type",
"Message Body": "Message Body",
"Message": "Message",
"Social Media Channel": "Social Media Channel",
"Social Media Account": "Social Media Account",
"Email": "Email",
"Contact Email": "Contact Email",
"The name of the list.": "The name of the list.",
"The default subscription subject.": "The default subscription subject.",
"The Reply to email of the list.": "The Reply to email of the list.",
"The From email of the list.": "The From email of the list.",
"The From name of the list.": "The From name of the list.",
"Notification Email.": "Notification Email.",
"Subscription Success Email.": "Subscription Success Email.",
"Subscription Success Message.": "Subscription Success Message.",
"Subscription Error Message.": "Subscription Error Message.",
"Confirmation Email Message.": "Confirmation Email Message.",
"use comma for multiple tag e.g. **tag1,tag2**.": "use comma for multiple tag e.g. **tag1,tag2**.",
"Contact email for update.": "Contact email for update.",
"Unconfirmed": "Unconfirmed",
"Active": "Active",
"Unsubscribe": "Unsubscribe",
"Bounced Email": "Bounced Email",
"Standard": "Standard",
"Automated": "Automated",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,73 @@
{
"VBOUT": "VBOUT",
"Marketing automation platform for agencies": "Marketing automation platform for agencies",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n",
"Add Contact to List": "Add Contact to List",
"Add Tag to Contact": "Add Tag to Contact",
"Create Email List": "Create Email List",
"Create Email Marketing Campaign": "Create Email Marketing Campaign",
"Create Social Media Message": "Create Social Media Message",
"Get Contact by Email": "Get Contact by Email",
"Get List Details with Custom Fields": "Get List Details with Custom Fields",
"Remove Tags from Contact": "Remove Tags from Contact",
"Unsubscribe Contact": "Unsubscribe Contact",
"Update Contact": "Update Contact",
"Adds a contact to a given email list.": "Adds a contact to a given email list.",
"Adds the tag to the contact.": "Adds the tag to the contact.",
"Creates a new email list.": "Creates a new email list.",
"Creates a new email campaign for specific list.": "Creates a new email campaign for specific list.",
"Post a message to one of your social media channel.": "Post a message to one of your social media channel.",
"Retrieves the contact by email.": "Retrieves the contact by email.",
"Retrieves specific list details with custom fields.": "Retrieves specific list details with custom fields.",
"Removes tags from an existing contact.": "Removes tags from an existing contact.",
"Unsubscribes an existing contact in a given email list.": "Unsubscribes an existing contact in a given email list.",
"Updates a contact in a given email list.": "Updates a contact in a given email list.",
"Email Address": "Email Address",
"List ID": "List ID",
"Contact Status": "Contact Status",
"IP Address": "IP Address",
"Fields": "Fields",
"Tag Name": "Tag Name",
"Name": "Name",
"Email Subject": "Email Subject",
"Reply To": "Reply To",
"From Email": "From Email",
"From Name": "From Name",
"Notify Email": "Notify Email",
"Success Email": "Success Email",
"Success Message": "Success Message",
"Error Message": "Error Message",
"Confirmation Email": "Confirmation Email",
"Confirmation Message": "Confirmation Message",
"Campaign Recipients List": "Campaign Recipients List",
"Campaign Name": "Campaign Name",
"Campaign Subject": "Campaign Subject",
"Campaign Type": "Campaign Type",
"Message Body": "Message Body",
"Message": "Message",
"Social Media Channel": "Social Media Channel",
"Social Media Account": "Social Media Account",
"Email": "Email",
"Contact Email": "Contact Email",
"The name of the list.": "The name of the list.",
"The default subscription subject.": "The default subscription subject.",
"The Reply to email of the list.": "The Reply to email of the list.",
"The From email of the list.": "The From email of the list.",
"The From name of the list.": "The From name of the list.",
"Notification Email.": "Notification Email.",
"Subscription Success Email.": "Subscription Success Email.",
"Subscription Success Message.": "Subscription Success Message.",
"Subscription Error Message.": "Subscription Error Message.",
"Confirmation Email Message.": "Confirmation Email Message.",
"use comma for multiple tag e.g. **tag1,tag2**.": "use comma for multiple tag e.g. **tag1,tag2**.",
"Contact email for update.": "Contact email for update.",
"Unconfirmed": "Unconfirmed",
"Active": "Aktif",
"Unsubscribe": "Unsubscribe",
"Bounced Email": "Bounced Email",
"Standard": "Standard",
"Automated": "Automated",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,72 @@
{
"Marketing automation platform for agencies": "代理店向けのマーケティング自動化プラットフォーム",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n",
"Add Contact to List": "連絡先を一覧に追加",
"Add Tag to Contact": "連絡先にタグを追加",
"Create Email List": "メーリングリストを作成",
"Create Email Marketing Campaign": "メールマーケティングキャンペーンを作成",
"Create Social Media Message": "ソーシャルメディアメッセージを作成",
"Get Contact by Email": "メールで連絡先を取得",
"Get List Details with Custom Fields": "カスタムフィールドでリストの詳細を取得する",
"Remove Tags from Contact": "連絡先からタグを削除",
"Unsubscribe Contact": "連絡先を購読解除",
"Update Contact": "連絡先を更新",
"Adds a contact to a given email list.": "指定されたメールリストに連絡先を追加します。",
"Adds the tag to the contact.": "連絡先にタグを追加します。",
"Creates a new email list.": "新しい電子メールリストを作成します。",
"Creates a new email campaign for specific list.": "特定のリストの新しいメールキャンペーンを作成します。",
"Post a message to one of your social media channel.": "いずれかのソーシャルメディアチャンネルにメッセージを投稿します。",
"Retrieves the contact by email.": "メールで連絡先を取得します。",
"Retrieves specific list details with custom fields.": "カスタム項目で特定のリストの詳細を取得します。",
"Removes tags from an existing contact.": "既存の連絡先からタグを削除します。",
"Unsubscribes an existing contact in a given email list.": "指定された電子メールリストの既存の連絡先を購読解除します。",
"Updates a contact in a given email list.": "指定された電子メールリストの連絡先を更新します。",
"Email Address": "メールアドレス",
"List ID": "リストID",
"Contact Status": "連絡先のステータス",
"IP Address": "IP アドレス",
"Fields": "フィールド",
"Tag Name": "タグ名",
"Name": "Name",
"Email Subject": "メールの件名",
"Reply To": "返信先",
"From Email": "差出人メールアドレス",
"From Name": "差出人名",
"Notify Email": "メール通知",
"Success Email": "成功メール",
"Success Message": "成功メッセージ",
"Error Message": "エラー メッセージ",
"Confirmation Email": "確認メール",
"Confirmation Message": "確認メッセージ",
"Campaign Recipients List": "キャンペーン受信者リスト",
"Campaign Name": "キャンペーン名",
"Campaign Subject": "キャンペーンの件名",
"Campaign Type": "キャンペーンタイプ",
"Message Body": "メッセージ本文",
"Message": "メッセージ",
"Social Media Channel": "ソーシャルメディアチャンネル",
"Social Media Account": "ソーシャルメディアアカウント",
"Email": "Eメールアドレス",
"Contact Email": "連絡先メールアドレス",
"The name of the list.": "リストの名前",
"The default subscription subject.": "デフォルトのサブスクリプションの件名",
"The Reply to email of the list.": "リストのメールに返信します。",
"The From email of the list.": "リストの送信元メール。",
"The From name of the list.": "リストの From 名",
"Notification Email.": "通知メール",
"Subscription Success Email.": "サブスクリプションの成功メール。",
"Subscription Success Message.": "サブスクリプションの成功メッセージ",
"Subscription Error Message.": "サブスクリプションエラー メッセージ。",
"Confirmation Email Message.": "確認メールメッセージ",
"use comma for multiple tag e.g. **tag1,tag2**.": "複数のタグにカンマを使用します。例: **tag1,tag2**",
"Contact email for update.": "更新のための連絡先メール。",
"Unconfirmed": "未確認",
"Active": "有効",
"Unsubscribe": "購読解除",
"Bounced Email": "バウンスメール",
"Standard": "標準",
"Automated": "自動化済み",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,72 @@
{
"Marketing automation platform for agencies": "Marketing automatiseringsplatform voor stocksites",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nOm je API-sleutel te verkrijgen, volg de volgende stappen:\n\n1.Ga naar **instellingen** door op je profiel-pic (rechtsboven) te klikken.\n\n2.Navigeer naar **API Integrations** sectie.\n\n3.Onder **API USER KEY** ,kopieer API-sleutel.\n\n",
"Add Contact to List": "Contactpersonen toevoegen aan lijst",
"Add Tag to Contact": "Tag aan contactpersoon toevoegen",
"Create Email List": "E-maillijst aanmaken",
"Create Email Marketing Campaign": "Maak E-mail Marketing Campagne",
"Create Social Media Message": "Maken van social media bericht",
"Get Contact by Email": "Contact via e-mail verkrijgen",
"Get List Details with Custom Fields": "Krijg lijstdetails met extra velden",
"Remove Tags from Contact": "Labels uit contact verwijderen",
"Unsubscribe Contact": "Ontvangers uitschrijven",
"Update Contact": "Contactpersoon bijwerken",
"Adds a contact to a given email list.": "Voegt een contactpersoon toe aan een bepaalde e-maillijst.",
"Adds the tag to the contact.": "Voegt de tag toe aan de contactpersoon",
"Creates a new email list.": "Maakt een nieuwe e-maillijst aan.",
"Creates a new email campaign for specific list.": "Maakt een nieuwe e-mailcampagne aan voor een specifieke lijst.",
"Post a message to one of your social media channel.": "Plaats een bericht op een van je sociale media kanaal.",
"Retrieves the contact by email.": "De contactpersoon wordt via e-mail opgehaald.",
"Retrieves specific list details with custom fields.": "Haal specifieke lijstdetails op met aangepaste velden.",
"Removes tags from an existing contact.": "Verwijdert tags van een bestaand contactpersoon.",
"Unsubscribes an existing contact in a given email list.": "Een bestaande contactpersoon in een bepaalde e-maillijst uitschrijft.",
"Updates a contact in a given email list.": "Werkt een contactpersoon bij in een bepaalde e-maillijst.",
"Email Address": "Uw e-mailadres",
"List ID": "Lijst ID",
"Contact Status": "Contact status",
"IP Address": "IP adres",
"Fields": "Velden",
"Tag Name": "Tag naam",
"Name": "Naam",
"Email Subject": "E-mail Onderwerp",
"Reply To": "Antwoord aan",
"From Email": "Van e-mail",
"From Name": "Afzender naam",
"Notify Email": "E-mail melden",
"Success Email": "Succes e-mail",
"Success Message": "Succes bericht",
"Error Message": "Fout bericht",
"Confirmation Email": "Bevestiging e-mail",
"Confirmation Message": "Bevestigingsbericht",
"Campaign Recipients List": "Campagne Ontvangers lijst",
"Campaign Name": "Campagne Naam",
"Campaign Subject": "Campagne onderwerp",
"Campaign Type": "Campagne Type",
"Message Body": "Bericht Body",
"Message": "bericht",
"Social Media Channel": "Social Media Kanaal",
"Social Media Account": "Social Media Account",
"Email": "E-mail",
"Contact Email": "Contact e-mail adres",
"The name of the list.": "De naam van de lijst.",
"The default subscription subject.": "Het standaard abonnement onderwerp.",
"The Reply to email of the list.": "Het antwoord op de e-mail van de lijst.",
"The From email of the list.": "De Van e-mail van de lijst.",
"The From name of the list.": "De naam van de lijst.",
"Notification Email.": "Notificatie E-mail.",
"Subscription Success Email.": "Abonnement geslaagd E-mail.",
"Subscription Success Message.": "Abonnement gelukt in bericht.",
"Subscription Error Message.": "Abonnement fout bericht.",
"Confirmation Email Message.": "Bevestigings e-mailbericht.",
"use comma for multiple tag e.g. **tag1,tag2**.": "gebruik een komma voor meerdere tags, bijv. **tag1,tag2**.",
"Contact email for update.": "Contact e-mail voor update.",
"Unconfirmed": "Onbevestigd",
"Active": "Actief",
"Unsubscribe": "Afmelden",
"Bounced Email": "Bounced e-mail",
"Standard": "Standaard",
"Automated": "Geautomatiseerd",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,72 @@
{
"Marketing automation platform for agencies": "Plataforma de automação de marketing para agências",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nPara obter sua chave de API, siga estas etapas:\n\n1.Vá para **configurações** clicando no seu perfil-pic (top-right).\n\n2.Navegue para a seção **Integração API**.\n\n3. Sob **API USER KEY** ,copy API key.\n\n",
"Add Contact to List": "Adicionar contato à lista",
"Add Tag to Contact": "Adicionar Tag ao Contato",
"Create Email List": "Criar lista de e-mail",
"Create Email Marketing Campaign": "Criar Campanha De E-Marketing",
"Create Social Media Message": "Criar Mensagem de Mídia Social",
"Get Contact by Email": "Obter contato por e-mail",
"Get List Details with Custom Fields": "Obter Detalhes da lista com campos personalizados",
"Remove Tags from Contact": "Remover Etiquetas do Contato",
"Unsubscribe Contact": "Cancelar contato",
"Update Contact": "Atualizar contato",
"Adds a contact to a given email list.": "Adiciona um contato a uma determinada lista de e-mail.",
"Adds the tag to the contact.": "Adiciona a etiqueta ao contato.",
"Creates a new email list.": "Cria uma nova lista de e-mail.",
"Creates a new email campaign for specific list.": "Cria uma nova campanha de e-mail para uma lista específica.",
"Post a message to one of your social media channel.": "Poste uma mensagem a um de seu canal de mídia social.",
"Retrieves the contact by email.": "Recupera o contato por e-mail.",
"Retrieves specific list details with custom fields.": "Recupera detalhes de lista específica com campos personalizados.",
"Removes tags from an existing contact.": "Remove tags de um contato existente.",
"Unsubscribes an existing contact in a given email list.": "Remove subscrição de contatos existentes em uma determinada lista de e-mail.",
"Updates a contact in a given email list.": "Atualiza um contato em uma lista de e-mail fornecida.",
"Email Address": "Endereço de e-mail",
"List ID": "ID da lista",
"Contact Status": "Estado do contato",
"IP Address": "Endereço IP",
"Fields": "campos",
"Tag Name": "Nome do Marcador",
"Name": "Nome",
"Email Subject": "Assunto do e-mail",
"Reply To": "Responder a",
"From Email": "E-mail do Remetente",
"From Name": "Nome do Remetente",
"Notify Email": "Notificar E-mail",
"Success Email": "E-mail de sucesso",
"Success Message": "Mensagem de sucesso",
"Error Message": "Mensagem de Erro",
"Confirmation Email": "E-mail de confirmação",
"Confirmation Message": "Mensagem de confirmação",
"Campaign Recipients List": "Campanha Lista Destinatários",
"Campaign Name": "Nome Da Campanha",
"Campaign Subject": "Assunto da Campanha",
"Campaign Type": "Tipo De Campanha",
"Message Body": "Corpo da Mensagem",
"Message": "mensagem",
"Social Media Channel": "Canal de Mídias Sociais",
"Social Media Account": "Conta de mídia social",
"Email": "e-mail",
"Contact Email": "E-mail de contato",
"The name of the list.": "O nome da lista.",
"The default subscription subject.": "O assunto padrão da inscrição.",
"The Reply to email of the list.": "A Resposta para o e-mail da lista.",
"The From email of the list.": "E-mail de origem da lista.",
"The From name of the list.": "O nome da lista.",
"Notification Email.": "E-mail de notificação.",
"Subscription Success Email.": "E-mail com sucesso da assinatura.",
"Subscription Success Message.": "Mensagem de Sucesso da Assinatura.",
"Subscription Error Message.": "Mensagem de Erro de Assinatura.",
"Confirmation Email Message.": "Confirmação de E-mail",
"use comma for multiple tag e.g. **tag1,tag2**.": "use vírgula para múltiplas tags, por exemplo, **tag1,tag2**.",
"Contact email for update.": "E-mail de contato para atualização.",
"Unconfirmed": "Não confirmada",
"Active": "Ativo",
"Unsubscribe": "Desinscrever",
"Bounced Email": "Email devolvido",
"Standard": "Padrão",
"Automated": "Automatizado",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Siga-nos"
}

View File

@@ -0,0 +1,73 @@
{
"VBOUT": "ОБУЧЕНИЕ",
"Marketing automation platform for agencies": "Платформа автоматизации маркетинга для агентств",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n",
"Add Contact to List": "Добавить контакт в список",
"Add Tag to Contact": "Добавить тег в контакт",
"Create Email List": "Создать список E-mail",
"Create Email Marketing Campaign": "Создать маркетинговую кампанию",
"Create Social Media Message": "Создать сообщение в социальных сетях",
"Get Contact by Email": "Получить контакт по электронной почте",
"Get List Details with Custom Fields": "Получить подробности списка с пользовательскими полями",
"Remove Tags from Contact": "Удалить теги из контакта",
"Unsubscribe Contact": "Отписаться от контактов",
"Update Contact": "Обновить контакт",
"Adds a contact to a given email list.": "Добавляет контакт в указанный список электронной почты.",
"Adds the tag to the contact.": "Добавляет тег контакту.",
"Creates a new email list.": "Создать новый список электронной почты.",
"Creates a new email campaign for specific list.": "Создает новую кампанию по электронной почте для определенного списка.",
"Post a message to one of your social media channel.": "Опубликовать сообщение в один из ваших социальных сетей.",
"Retrieves the contact by email.": "Получает контакт по электронной почте.",
"Retrieves specific list details with custom fields.": "Получает информацию о конкретном списке с настраиваемыми полями.",
"Removes tags from an existing contact.": "Удаляет теги из существующего контакта.",
"Unsubscribes an existing contact in a given email list.": "Отписаться от существующего контакта в данном списке электронной почты.",
"Updates a contact in a given email list.": "Обновляет контакт в заданном списке электронной почты.",
"Email Address": "Email Address",
"List ID": "ID списка",
"Contact Status": "Статус контакта",
"IP Address": "IP-адрес",
"Fields": "Поля",
"Tag Name": "Имя тега",
"Name": "Наименование",
"Email Subject": "Тема письма",
"Reply To": "Ответить",
"From Email": "От E-mail",
"From Name": "От имени",
"Notify Email": "Уведомить E-mail",
"Success Email": "Письмо успешно отправлено",
"Success Message": "Сообщение об успехе",
"Error Message": "Сообщение об ошибке",
"Confirmation Email": "Email подтверждения",
"Confirmation Message": "Сообщение подтверждения",
"Campaign Recipients List": "Список получателей кампании",
"Campaign Name": "Название кампании",
"Campaign Subject": "Тема кампании",
"Campaign Type": "Тип кампании",
"Message Body": "Тело сообщения",
"Message": "Сообщение",
"Social Media Channel": "Социальные Медиа Канал",
"Social Media Account": "Аккаунт социальных сетей",
"Email": "Почта",
"Contact Email": "Контактный адрес электронной почты",
"The name of the list.": "Название списка.",
"The default subscription subject.": "Тема подписки по умолчанию.",
"The Reply to email of the list.": "Ответ по электронной почте списка.",
"The From email of the list.": "От электронной почты списка.",
"The From name of the list.": "От имени списка.",
"Notification Email.": "Email для уведомления.",
"Subscription Success Email.": "Подписка успешно отправлена.",
"Subscription Success Message.": "Сообщение об успешной подписке.",
"Subscription Error Message.": "Сообщение об ошибке подписки.",
"Confirmation Email Message.": "Подтверждение сообщения электронной почты.",
"use comma for multiple tag e.g. **tag1,tag2**.": "используйте запятую для нескольких тегов, например **tag1,tag2**.",
"Contact email for update.": "Адрес электронной почты для обновления.",
"Unconfirmed": "Не подтверждено",
"Active": "Активен",
"Unsubscribe": "Отписаться",
"Bounced Email": "Отказаться от E-mail",
"Standard": "Стандартный",
"Automated": "Автоматически",
"Twitter": "Твиттер",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,72 @@
{
"Marketing automation platform for agencies": "Marketing automation platform for agencies",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n",
"Add Contact to List": "Add Contact to List",
"Add Tag to Contact": "Add Tag to Contact",
"Create Email List": "Create Email List",
"Create Email Marketing Campaign": "Create Email Marketing Campaign",
"Create Social Media Message": "Create Social Media Message",
"Get Contact by Email": "Get Contact by Email",
"Get List Details with Custom Fields": "Get List Details with Custom Fields",
"Remove Tags from Contact": "Remove Tags from Contact",
"Unsubscribe Contact": "Unsubscribe Contact",
"Update Contact": "Update Contact",
"Adds a contact to a given email list.": "Adds a contact to a given email list.",
"Adds the tag to the contact.": "Adds the tag to the contact.",
"Creates a new email list.": "Creates a new email list.",
"Creates a new email campaign for specific list.": "Creates a new email campaign for specific list.",
"Post a message to one of your social media channel.": "Post a message to one of your social media channel.",
"Retrieves the contact by email.": "Retrieves the contact by email.",
"Retrieves specific list details with custom fields.": "Retrieves specific list details with custom fields.",
"Removes tags from an existing contact.": "Removes tags from an existing contact.",
"Unsubscribes an existing contact in a given email list.": "Unsubscribes an existing contact in a given email list.",
"Updates a contact in a given email list.": "Updates a contact in a given email list.",
"Email Address": "Email Address",
"List ID": "List ID",
"Contact Status": "Contact Status",
"IP Address": "IP Address",
"Fields": "Fields",
"Tag Name": "Tag Name",
"Name": "Name",
"Email Subject": "Email Subject",
"Reply To": "Reply To",
"From Email": "From Email",
"From Name": "From Name",
"Notify Email": "Notify Email",
"Success Email": "Success Email",
"Success Message": "Success Message",
"Error Message": "Error Message",
"Confirmation Email": "Confirmation Email",
"Confirmation Message": "Confirmation Message",
"Campaign Recipients List": "Campaign Recipients List",
"Campaign Name": "Campaign Name",
"Campaign Subject": "Campaign Subject",
"Campaign Type": "Campaign Type",
"Message Body": "Message Body",
"Message": "Message",
"Social Media Channel": "Social Media Channel",
"Social Media Account": "Social Media Account",
"Email": "Email",
"Contact Email": "Contact Email",
"The name of the list.": "The name of the list.",
"The default subscription subject.": "The default subscription subject.",
"The Reply to email of the list.": "The Reply to email of the list.",
"The From email of the list.": "The From email of the list.",
"The From name of the list.": "The From name of the list.",
"Notification Email.": "Notification Email.",
"Subscription Success Email.": "Subscription Success Email.",
"Subscription Success Message.": "Subscription Success Message.",
"Subscription Error Message.": "Subscription Error Message.",
"Confirmation Email Message.": "Confirmation Email Message.",
"use comma for multiple tag e.g. **tag1,tag2**.": "use comma for multiple tag e.g. **tag1,tag2**.",
"Contact email for update.": "Contact email for update.",
"Unconfirmed": "Unconfirmed",
"Active": "Active",
"Unsubscribe": "Unsubscribe",
"Bounced Email": "Bounced Email",
"Standard": "Standard",
"Automated": "Automated",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,73 @@
{
"VBOUT": "VBOUT",
"Marketing automation platform for agencies": "Marketing automation platform for agencies",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n",
"Add Contact to List": "Add Contact to List",
"Add Tag to Contact": "Add Tag to Contact",
"Create Email List": "Create Email List",
"Create Email Marketing Campaign": "Create Email Marketing Campaign",
"Create Social Media Message": "Create Social Media Message",
"Get Contact by Email": "Get Contact by Email",
"Get List Details with Custom Fields": "Get List Details with Custom Fields",
"Remove Tags from Contact": "Remove Tags from Contact",
"Unsubscribe Contact": "Unsubscribe Contact",
"Update Contact": "Update Contact",
"Adds a contact to a given email list.": "Adds a contact to a given email list.",
"Adds the tag to the contact.": "Adds the tag to the contact.",
"Creates a new email list.": "Creates a new email list.",
"Creates a new email campaign for specific list.": "Creates a new email campaign for specific list.",
"Post a message to one of your social media channel.": "Post a message to one of your social media channel.",
"Retrieves the contact by email.": "Retrieves the contact by email.",
"Retrieves specific list details with custom fields.": "Retrieves specific list details with custom fields.",
"Removes tags from an existing contact.": "Removes tags from an existing contact.",
"Unsubscribes an existing contact in a given email list.": "Unsubscribes an existing contact in a given email list.",
"Updates a contact in a given email list.": "Updates a contact in a given email list.",
"Email Address": "Email Address",
"List ID": "List ID",
"Contact Status": "Contact Status",
"IP Address": "IP Address",
"Fields": "Fields",
"Tag Name": "Tag Name",
"Name": "Name",
"Email Subject": "Email Subject",
"Reply To": "Reply To",
"From Email": "From Email",
"From Name": "From Name",
"Notify Email": "Notify Email",
"Success Email": "Success Email",
"Success Message": "Success Message",
"Error Message": "Error Message",
"Confirmation Email": "Confirmation Email",
"Confirmation Message": "Confirmation Message",
"Campaign Recipients List": "Campaign Recipients List",
"Campaign Name": "Campaign Name",
"Campaign Subject": "Campaign Subject",
"Campaign Type": "Campaign Type",
"Message Body": "Message Body",
"Message": "Message",
"Social Media Channel": "Social Media Channel",
"Social Media Account": "Social Media Account",
"Email": "Email",
"Contact Email": "Contact Email",
"The name of the list.": "The name of the list.",
"The default subscription subject.": "The default subscription subject.",
"The Reply to email of the list.": "The Reply to email of the list.",
"The From email of the list.": "The From email of the list.",
"The From name of the list.": "The From name of the list.",
"Notification Email.": "Notification Email.",
"Subscription Success Email.": "Subscription Success Email.",
"Subscription Success Message.": "Subscription Success Message.",
"Subscription Error Message.": "Subscription Error Message.",
"Confirmation Email Message.": "Confirmation Email Message.",
"use comma for multiple tag e.g. **tag1,tag2**.": "use comma for multiple tag e.g. **tag1,tag2**.",
"Contact email for update.": "Contact email for update.",
"Unconfirmed": "Unconfirmed",
"Active": "Tích cực",
"Unsubscribe": "Unsubscribe",
"Bounced Email": "Bounced Email",
"Standard": "Standard",
"Automated": "Automated",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,72 @@
{
"Marketing automation platform for agencies": "Marketing automation platform for agencies",
"\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n": "\nTo obtain your API key, follow these steps:\n\n1.Go to **settings** by clicking your profile-pic (top-right).\n\n2.Navigate to **API Integrations** section.\n\n3.Under **API USER KEY** ,copy API key.\n\n",
"Add Contact to List": "Add Contact to List",
"Add Tag to Contact": "Add Tag to Contact",
"Create Email List": "Create Email List",
"Create Email Marketing Campaign": "Create Email Marketing Campaign",
"Create Social Media Message": "Create Social Media Message",
"Get Contact by Email": "Get Contact by Email",
"Get List Details with Custom Fields": "Get List Details with Custom Fields",
"Remove Tags from Contact": "Remove Tags from Contact",
"Unsubscribe Contact": "Unsubscribe Contact",
"Update Contact": "Update Contact",
"Adds a contact to a given email list.": "Adds a contact to a given email list.",
"Adds the tag to the contact.": "Adds the tag to the contact.",
"Creates a new email list.": "Creates a new email list.",
"Creates a new email campaign for specific list.": "Creates a new email campaign for specific list.",
"Post a message to one of your social media channel.": "Post a message to one of your social media channel.",
"Retrieves the contact by email.": "Retrieves the contact by email.",
"Retrieves specific list details with custom fields.": "Retrieves specific list details with custom fields.",
"Removes tags from an existing contact.": "Removes tags from an existing contact.",
"Unsubscribes an existing contact in a given email list.": "Unsubscribes an existing contact in a given email list.",
"Updates a contact in a given email list.": "Updates a contact in a given email list.",
"Email Address": "Email Address",
"List ID": "List ID",
"Contact Status": "Contact Status",
"IP Address": "IP 地址",
"Fields": "Fields",
"Tag Name": "Tag Name",
"Name": "名称",
"Email Subject": "Email Subject",
"Reply To": "Reply To",
"From Email": "From Email",
"From Name": "From Name",
"Notify Email": "Notify Email",
"Success Email": "Success Email",
"Success Message": "Success Message",
"Error Message": "Error Message",
"Confirmation Email": "Confirmation Email",
"Confirmation Message": "Confirmation Message",
"Campaign Recipients List": "Campaign Recipients List",
"Campaign Name": "Campaign Name",
"Campaign Subject": "Campaign Subject",
"Campaign Type": "Campaign Type",
"Message Body": "Message Body",
"Message": "Message",
"Social Media Channel": "Social Media Channel",
"Social Media Account": "Social Media Account",
"Email": "电子邮件地址",
"Contact Email": "Contact Email",
"The name of the list.": "The name of the list.",
"The default subscription subject.": "The default subscription subject.",
"The Reply to email of the list.": "The Reply to email of the list.",
"The From email of the list.": "The From email of the list.",
"The From name of the list.": "The From name of the list.",
"Notification Email.": "Notification Email.",
"Subscription Success Email.": "Subscription Success Email.",
"Subscription Success Message.": "Subscription Success Message.",
"Subscription Error Message.": "Subscription Error Message.",
"Confirmation Email Message.": "Confirmation Email Message.",
"use comma for multiple tag e.g. **tag1,tag2**.": "use comma for multiple tag e.g. **tag1,tag2**.",
"Contact email for update.": "Contact email for update.",
"Unconfirmed": "Unconfirmed",
"Active": "使用中",
"Unsubscribe": "Unsubscribe",
"Bounced Email": "Bounced Email",
"Standard": "Standard",
"Automated": "Automated",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Facebook": "Facebook"
}

View File

@@ -0,0 +1,64 @@
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { addContactAction } from './lib/actions/add-contact';
import { addTagToContactAction } from './lib/actions/add-tag-to-contact';
import { createEmailMarketingCampaignAction } from './lib/actions/create-campaign';
import { createEmailListAction } from './lib/actions/create-email-list';
import { createSocialMediaMessageAction } from './lib/actions/create-social-media-message';
import { getContactByEmailAction } from './lib/actions/get-contact-by-email';
import { getEmailListAction } from './lib/actions/get-email-list';
import { removeTagFromContactAction } from './lib/actions/remove-tag-from-contact';
import { unsubscribeContactAction } from './lib/actions/unsubscribe-contact';
import { updateContactAction } from './lib/actions/update-contact';
import { makeClient } from './lib/common';
const markdown = `
To obtain your API key, follow these steps:
1.Go to **settings** by clicking your profile-pic (top-right).\n
2.Navigate to **API Integrations** section.\n
3.Under **API USER KEY** ,copy API key.\n
`;
export const vboutAuth = PieceAuth.SecretText({
displayName: 'API Key',
required: true,
description: markdown,
async validate({ auth }) {
const client = makeClient(auth);
try {
await client.validateAuth();
return {
valid: true,
};
} catch (e) {
return {
valid: false,
error: 'Invalid API key.',
};
}
},
});
export const vbout = createPiece({
displayName: 'VBOUT',
description: 'Marketing automation platform for agencies',
auth: vboutAuth,
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/vbout.png',
authors: ["kishanprmr","abuaboud"],
categories: [PieceCategory.MARKETING],
actions: [
addContactAction,
addTagToContactAction,
createEmailListAction,
createEmailMarketingCampaignAction,
createSocialMediaMessageAction,
getContactByEmailAction,
getEmailListAction,
removeTagFromContactAction,
unsubscribeContactAction,
updateContactAction,
],
triggers: [],
});

View File

@@ -0,0 +1,27 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { vboutAuth } from '../..';
import { makeClient, vboutCommon } from '../common';
export const addContactAction = createAction({
auth: vboutAuth,
name: 'vbout_add_contact',
displayName: 'Add Contact to List',
description: 'Adds a contact to a given email list.',
props: {
email: Property.ShortText({
displayName: 'Email Address',
required: true,
}),
listid: vboutCommon.listid(true),
status: vboutCommon.contactStatus(true),
ipaddress: Property.ShortText({
displayName: 'IP Address',
required: false,
}),
fields: vboutCommon.listFields,
},
async run(context) {
const client = makeClient(context.auth.secret_text);
return await client.addContact(context.propsValue);
},
});

View File

@@ -0,0 +1,28 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { vboutAuth } from '../..';
import { makeClient } from '../common';
export const addTagToContactAction = createAction({
auth: vboutAuth,
name: 'vbout_add_tag',
displayName: 'Add Tag to Contact',
description: 'Adds the tag to the contact.',
props: {
email: Property.ShortText({
displayName: 'Email Address',
required: true,
}),
tagname: Property.Array({
displayName: 'Tag Name',
required: true,
}),
},
async run(context) {
const { email, tagname } = context.propsValue;
const client = makeClient(context.auth.secret_text);
return await client.addTagToContact({
email: email,
tagname: tagname as string[],
});
},
});

View File

@@ -0,0 +1,95 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { vboutAuth } from '../..';
import { makeClient } from '../common';
export const createEmailMarketingCampaignAction = createAction({
auth: vboutAuth,
name: 'vbout_add_email_marketing_campaign',
displayName: 'Create Email Marketing Campaign',
description: 'Creates a new email campaign for specific list.',
props: {
lists: Property.MultiSelectDropdown({
auth: vboutAuth,
displayName: 'Campaign Recipients List',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
placeholder: 'Connect your account first',
options: [],
};
}
const client = makeClient(auth.secret_text);
const res = await client.listEmailLists();
return {
disabled: false,
options: res.lists.items.map((list) => {
return {
label: list.name,
value: list.id,
};
}),
};
},
}),
name: Property.ShortText({
displayName: 'Campaign Name',
required: true,
}),
subject: Property.ShortText({
displayName: 'Campaign Subject',
required: true,
}),
type: Property.StaticDropdown({
displayName: 'Campaign Type',
required: true,
defaultValue: 'standard',
options: {
disabled: false,
options: [
{
label: 'Standard',
value: 'standard',
},
{
label: 'Automated',
value: 'automated',
},
],
},
}),
fromemail: Property.ShortText({
displayName: 'From Email',
required: true,
}),
from_name: Property.ShortText({
displayName: 'From Name',
required: true,
}),
reply_to: Property.ShortText({
displayName: 'Reply To',
required: true,
}),
body: Property.LongText({
displayName: 'Message Body',
required: true,
}),
},
async run(context) {
const { lists, name, from_name, fromemail, reply_to, subject, body, type } =
context.propsValue;
const client = makeClient(context.auth.secret_text);
return await client.addCampaign({
lists: lists.join(','),
name,
from_name,
fromemail,
reply_to,
subject,
body,
type,
});
},
});

View File

@@ -0,0 +1,71 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { vboutAuth } from '../..';
import { makeClient } from '../common';
export const createEmailListAction = createAction({
auth: vboutAuth,
name: 'vbout_create_email_list',
displayName: 'Create Email List',
description: 'Creates a new email list.',
props: {
name: Property.ShortText({
required: true,
displayName: 'Name',
description: 'The name of the list.',
}),
email_subject: Property.LongText({
required: false,
displayName: 'Email Subject',
description: 'The default subscription subject.',
}),
reply_to: Property.ShortText({
required: false,
displayName: 'Reply To',
description: 'The Reply to email of the list.',
}),
fromemail: Property.ShortText({
required: false,
displayName: 'From Email',
description: 'The From email of the list.',
}),
from_name: Property.ShortText({
required: false,
displayName: 'From Name',
description: 'The From name of the list.',
}),
notify_email: Property.ShortText({
required: false,
displayName: 'Notify Email',
description: 'Notification Email.',
}),
success_email: Property.ShortText({
required: false,
displayName: 'Success Email',
description: 'Subscription Success Email.',
}),
success_message: Property.ShortText({
required: false,
displayName: 'Success Message',
description: 'Subscription Success Message.',
}),
error_message: Property.ShortText({
required: false,
displayName: 'Error Message',
description: 'Subscription Error Message.',
}),
confirmation_email: Property.ShortText({
required: false,
displayName: 'Confirmation Email',
description: 'Confirmation Email Message.',
}),
confirmation_message: Property.ShortText({
required: false,
displayName: 'Confirmation Message',
}),
},
async run({ auth, propsValue }) {
const client = makeClient(auth.secret_text);
return await client.createEmailList(propsValue);
},
});

View File

@@ -0,0 +1,21 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { vboutAuth } from '../../';
import { makeClient, vboutCommon } from '../common';
export const createSocialMediaMessageAction = createAction({
auth: vboutAuth,
name: 'vbout_create_social_media_message',
displayName: 'Create Social Media Message',
description: 'Post a message to one of your social media channel.',
props: {
message: Property.LongText({
displayName: 'Message',
required: true,
}),
channel: vboutCommon.socialMediaChannel,
channelid: vboutCommon.socialMediaProfile,
},
async run(context) {
const client = makeClient(context.auth.secret_text);
return await client.createSocialMediaPost(context.propsValue);
},
});

View File

@@ -0,0 +1,23 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { vboutAuth } from '../..';
import { makeClient, vboutCommon } from '../common';
export const getContactByEmailAction = createAction({
auth: vboutAuth,
name: 'vbout_get_contact_by_email',
displayName: 'Get Contact by Email',
description: 'Retrieves the contact by email.',
props: {
listid: vboutCommon.listid(false),
email: Property.ShortText({
displayName: 'Email',
required: true,
}),
},
async run({ auth, propsValue }) {
const client = makeClient(auth.secret_text);
const { listid, email } = propsValue;
return await client.getContactByEmail(email, listid);
},
});

View File

@@ -0,0 +1,19 @@
import { createAction } from '@activepieces/pieces-framework';
import { vboutAuth } from '../..';
import { makeClient, vboutCommon } from '../common';
export const getEmailListAction = createAction({
auth: vboutAuth,
name: 'vbout_get_email_list',
displayName: 'Get List Details with Custom Fields',
description: 'Retrieves specific list details with custom fields.',
props: {
listid: vboutCommon.listid(true),
},
async run({ auth, propsValue }) {
const client = makeClient(auth.secret_text);
const listId = propsValue.listid!;
return await client.getEmailList(listId);
},
});

View File

@@ -0,0 +1,26 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { vboutAuth } from '../..';
import { makeClient } from '../common';
export const removeTagFromContactAction = createAction({
auth: vboutAuth,
name: 'vbout_remove_tag',
displayName: 'Remove Tags from Contact',
description: 'Removes tags from an existing contact.',
props: {
email: Property.ShortText({
displayName: 'Email Address',
required: true,
}),
tagname: Property.ShortText({
displayName: 'Tag Name',
required: true,
description: `use comma for multiple tag e.g. **tag1,tag2**.`,
}),
},
async run(context) {
const { email, tagname } = context.propsValue;
const client = makeClient(context.auth.secret_text);
return await client.removeTagFromContact(email, tagname);
},
});

View File

@@ -0,0 +1,38 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { vboutAuth } from '../..';
import { makeClient, vboutCommon } from '../common';
import { ContactStatusValues } from '../common/models';
export const unsubscribeContactAction = createAction({
auth: vboutAuth,
name: 'vbout_unsubscribe_contact',
displayName: 'Unsubscribe Contact',
description: 'Unsubscribes an existing contact in a given email list.',
props: {
email: Property.ShortText({
displayName: 'Contact Email',
required: true,
description: 'Contact email for update.',
}),
listid: vboutCommon.listid(true),
},
async run(context) {
const client = makeClient(context.auth.secret_text);
const { email, listid } = context.propsValue;
const res = await client.getContactByEmail(
email as string,
listid as string
);
const contact = res.response.data.contact;
if ('errorCode' in contact) {
return res;
} else {
const contactId = contact[0].id;
return await client.updateContact({
id: contactId,
status: ContactStatusValues.UNSUBSCRIBE,
});
}
},
});

View File

@@ -0,0 +1,40 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { vboutAuth } from '../..';
import { makeClient, vboutCommon } from '../common';
export const updateContactAction = createAction({
auth: vboutAuth,
name: 'vbout_update_contact',
displayName: 'Update Contact',
description: 'Updates a contact in a given email list.',
props: {
email: Property.ShortText({
displayName: 'Contact Email',
required: true,
description: 'Contact email for update.',
}),
listid: vboutCommon.listid(true),
status: vboutCommon.contactStatus(false),
ipaddress: Property.ShortText({
displayName: 'IP Address',
required: false,
}),
fields: vboutCommon.listFields,
},
async run(context) {
const client = makeClient(context.auth.secret_text);
const { email } = context.propsValue;
const res = await client.getContactByEmail(email as string);
const contact = res.response.data.contact;
if ('errorCode' in contact) {
return res;
} else {
const contactId = contact[0].id;
return await client.updateContact({
id: contactId,
...context.propsValue,
});
}
},
});

View File

@@ -0,0 +1,170 @@
import {
HttpMessageBody,
HttpMethod,
QueryParams,
httpClient,
} from '@activepieces/pieces-common';
import { vboutCommon } from '.';
import {
CampaignCreateRequest,
ContactCreateRequest,
ContactList,
ContactUpdateRequest,
EmailListCreateRequest,
SocialMediaChannelListResponse,
SocialMediaPostCreateRequest,
TagCreateRequest,
VboutResponseBody,
} from './models';
function emptyValueFilter(
accessor: (key: string) => any
): (key: string) => boolean {
return (key: string) => {
const val = accessor(key);
return (
val !== null &&
val !== undefined &&
(typeof val != 'string' || val.length > 0)
);
};
}
export function prepareQuery(request?: Record<string, any>): QueryParams {
const params: QueryParams = {};
if (!request) return params;
Object.keys(request)
.filter(emptyValueFilter((k) => request[k]))
.forEach((k: string) => {
params[k] = (request as Record<string, any>)[k].toString();
});
return params;
}
export class VboutClient {
constructor(private apiKey: string) {}
async makeRequest<T extends HttpMessageBody>(
method: HttpMethod,
url: string,
query?: QueryParams,
body?: object
): Promise<T> {
const res = await httpClient.sendRequest<T>({
method,
url: vboutCommon.baseUrl + url,
queryParams: { key: this.apiKey, ...query },
body,
});
return res.body;
}
async validateAuth() {
return await this.makeRequest(HttpMethod.GET, '/app/me');
}
async listEmailLists() {
return (
await this.makeRequest<
VboutResponseBody<{
lists: {
count: number;
items: ContactList[];
};
}>
>(HttpMethod.GET, '/emailmarketing/getlists')
).response.data;
}
async getContactByEmail(email: string, listId?: string) {
return await this.makeRequest<
VboutResponseBody<{
contact: {
id: string;
email: string;
listid: string;
list_name: string;
[key: string]: any;
}[];
}>
>(
HttpMethod.GET,
'/emailmarketing/getcontactbyemail',
prepareQuery({ email: email, listid: listId })
);
}
async getEmailList(listId: string) {
return await this.makeRequest<VboutResponseBody<{ list: ContactList }>>(
HttpMethod.GET,
'/emailmarketing/getlist',
prepareQuery({ id: listId })
);
}
async createEmailList(request: EmailListCreateRequest) {
return await this.makeRequest(
HttpMethod.POST,
'/emailMarketing/AddList',
undefined,
request
);
}
async addContact(request: ContactCreateRequest) {
return await this.makeRequest(
HttpMethod.POST,
'/emailMarketing/AddContact',
undefined,
request
);
}
async updateContact(request: ContactUpdateRequest) {
return await this.makeRequest(
HttpMethod.POST,
'/emailMarketing/EditContact',
undefined,
request
);
}
async addTagToContact(request: TagCreateRequest) {
return await this.makeRequest(
HttpMethod.POST,
'/emailMarketing/AddTag',
undefined,
request
);
}
async removeTagFromContact(email: string, tagname: string) {
return await this.makeRequest(
HttpMethod.DELETE,
'/emailMarketing/RemoveTag',
prepareQuery({
email,
tagname,
})
);
}
async addCampaign(request: CampaignCreateRequest) {
return await this.makeRequest(
HttpMethod.POST,
'/emailMarketing/AddCampaign',
undefined,
request
);
}
async listSocialMediaChannels() {
return (
await this.makeRequest<
VboutResponseBody<{ channels: SocialMediaChannelListResponse }>
>(HttpMethod.GET, '/socialMedia/Channels')
).response.data;
}
async createSocialMediaPost(request: SocialMediaPostCreateRequest) {
return await this.makeRequest(
HttpMethod.POST,
'/socialMedia/AddPost',
undefined,
request
);
}
}

View File

@@ -0,0 +1,175 @@
import { DynamicPropsValue, Property } from '@activepieces/pieces-framework';
import { VboutClient } from './client';
import {
ContactStatusValues,
SocialMediaChannelValues,
SocialMediaProfile,
} from './models';
import { vboutAuth } from '../..';
export function makeClient(apiKey: string): VboutClient {
return new VboutClient(apiKey);
}
export const vboutCommon = {
baseUrl: 'https://api.vbout.com/1',
listid: (required = true) =>
Property.Dropdown({
auth: vboutAuth,
displayName: 'List ID',
required: required,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
placeholder: 'Connect your account first',
options: [],
};
}
const client = makeClient(auth.secret_text);
const res = await client.listEmailLists();
return {
disabled: false,
options: res.lists.items.map((list) => {
return {
label: list.name,
value: list.id,
};
}),
};
},
}),
listFields: Property.DynamicProperties({
auth: vboutAuth,
displayName: 'Fields',
required: true,
refreshers: ['listid'],
props: async ({ auth, listid }) => {
if (!auth || !listid) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account and select Email List.',
};
}
const fields: DynamicPropsValue = {};
const client = makeClient(auth.secret_text);
const contactList = await client.getEmailList(
listid as unknown as string
);
const contactListFields = contactList.response.data.list.fields;
Object.keys(contactListFields).forEach((key) => {
fields[key] = Property.ShortText({
displayName: contactListFields[key],
required: false,
});
});
return fields;
},
}),
contactStatus: (required = true) =>
Property.StaticDropdown({
displayName: 'Contact Status',
required: required,
options: {
disabled: false,
options: [
{
label: 'Unconfirmed',
value: ContactStatusValues.UNCONFIRMED,
},
{
label: 'Active',
value: ContactStatusValues.ACTIVE,
},
{
label: 'Unsubscribe',
value: ContactStatusValues.UNSUBSCRIBE,
},
{
label: 'Bounced Email',
value: ContactStatusValues.BOUNCED_EMAIL,
},
],
},
}),
socialMediaChannel: Property.StaticDropdown({
displayName: 'Social Media Channel',
required: true,
options: {
disabled: false,
options: [
{
label: 'Twitter',
value: SocialMediaChannelValues.TWITTER,
},
{
label: 'LinkedIn',
value: SocialMediaChannelValues.LINKEDIN,
},
{
label: 'Facebook',
value: SocialMediaChannelValues.FACEBOOK,
},
],
},
}),
socialMediaProfile: Property.Dropdown({
auth: vboutAuth,
displayName: 'Social Media Account',
required: true,
refreshers: ['channel'],
options: async ({ auth, channel }) => {
if (!auth || !channel) {
return {
disabled: true,
options: [],
placeholder:
'Please connect your account and select social media channel.',
};
}
const client = makeClient(auth.secret_text);
const { channels } = await client.listSocialMediaChannels();
let options: { label: string; value: string }[] = [];
switch (channel as string) {
case SocialMediaChannelValues.TWITTER: {
options = [
...options,
...mapSocialMediaProfile(channels.Twitter.profiles),
];
break;
}
case SocialMediaChannelValues.FACEBOOK: {
options = [
...options,
...mapSocialMediaProfile(channels.Facebook.pages),
];
break;
}
case SocialMediaChannelValues.LINKEDIN: {
options = [
...options,
...mapSocialMediaProfile(channels.Linkedin.companies),
...mapSocialMediaProfile(channels.Linkedin.profiles),
];
break;
}
}
return {
disabled: false,
options: options,
};
},
}),
};
function mapSocialMediaProfile(
profiles: SocialMediaProfile[]
): { label: string; value: string }[] {
return profiles.map((profile) => {
return {
label: profile.name,
value: profile.id,
};
});
}

View File

@@ -0,0 +1,122 @@
import { HttpMessageBody } from '@activepieces/pieces-common';
export interface VboutResponseBody<T> extends HttpMessageBody {
response: {
header: {
status: string;
dataType: string;
limit: string;
cached?: string;
};
data: T;
};
}
export interface EmailListCreateRequest {
name: string;
email_subject?: string;
reply_to?: string;
fromemail?: string;
from_name?: string;
doubleOption?: string;
notify?: string;
notify_email?: string;
success_email?: string;
success_message?: string;
error_message?: string;
confirmation_email?: string;
confirmation_message?: string;
communications?: boolean;
}
export interface ContactList {
id: string;
name: string;
form_title: string;
email_subject: string;
reply_to: string;
from_email: string;
from_name: string;
confirmation_email: string;
success_email: string;
confirmation_message: string;
success_message: string;
error_message: string;
doubleOption: string;
notify_email: string;
creation_date: string;
fields: {
[key: string]: string;
};
}
export interface ContactCreateRequest {
listid?: string;
status?: string;
email: string;
ipaddress?: string;
fields?: {
[key: string]: string;
};
}
export interface ContactUpdateRequest {
id: string;
listid?: string;
status?: string;
email?: string;
ipaddress?: string;
fields?: {
[key: string]: string;
};
}
export interface TagCreateRequest {
email: string;
tagname: string[];
}
export interface CampaignCreateRequest {
name: string;
subject: string;
fromemail: string;
from_name: string;
reply_to: string;
body: string;
type: string;
lists: string;
}
export interface SocialMediaProfile {
id: string;
name: string;
}
export interface SocialMediaChannelListResponse {
Facebook: {
count: number;
pages: SocialMediaProfile[];
};
Twitter: {
count: number;
profiles: SocialMediaProfile[];
};
Linkedin: {
count: number;
profiles: SocialMediaProfile[];
companies: SocialMediaProfile[];
};
}
export interface SocialMediaPostCreateRequest {
message: string;
channel: string;
channelid: string;
}
export enum SocialMediaChannelValues {
TWITTER = 'twitter',
LINKEDIN = 'linkedin',
FACEBOOK = 'facebook',
}
export enum ContactStatusValues {
UNCONFIRMED = '0',
ACTIVE = '1',
UNSUBSCRIBE = '2',
BOUNCED_EMAIL = '3',
}

View File

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

View File

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