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,77 @@
{
"Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.": "Zoho Mail ist ein leistungsstarker E-Mail-Service, mit dem Sie Ihre E-Mails, Kontakte und Kalender effizient verwalten können.",
"Location": "Standort",
"The location of your Zoho Mail account.": "Der Standort Ihres Zoho Mail-Kontos.",
"zoho.eu (Europe)": "zoho.eu (Europa)",
"zoho.com (United States)": "zoho.com (Vereinigte Staaten)",
"zoho.com.au (Australia)": "zoho.com.au (Australien)",
"zoho.jp (Japan)": "zoho.jp (Japan)",
"zoho.in (India)": "zoho.in (Indien)",
"zohocloud.ca (Canada)": "zohocloud.ca (Canada)",
"Authentication for Zoho Desk": "Authentifizierung für Zoho Desk",
"Get Email Details": "E-Mail-Details abrufen",
"Mark Email as Read": "E-Mail als gelesen markieren",
"Mark Emai as Unread": "Emai als ungelesen markieren",
"Archive Email": "E-Mail archivieren",
"Unarchive Email": "Unarchive Email",
"Move Email to Folder": "E-Mail in Ordner verschieben",
"Send Email": "E-Mail senden",
"Custom API Call": "Eigener API-Aufruf",
"Retrieves full content and metadata of a specific email.": "Ruft den vollständigen Inhalt und die Metadaten einer bestimmten E-Mail ab.",
"Marks an email as read.": "Markiert eine E-Mail als gelesen.",
"Marks an email as unread.": "Markiert eine E-Mail als ungelesen.",
"Archives an email.": "Archiviert eine E-Mail.",
"Unarchives an email.": "Dearchiviert eine E-Mail.",
"Moves an email to a different folder.": "Verschiebt eine E-Mail in einen anderen Ordner.",
"Sends an email.": "Sendet eine E-Mail.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Account": "Konto",
"Folder": "Ordner",
"Message ID": "Nachrichten-ID",
"Current Folder": "Aktueller Ordner",
"Destination Folder": "Zielordner",
"From Email Address": "Absenderadresse",
"To Email Address": "An E-Mail-Adresse",
"Subject": "Betreff",
"Mail Format": "Mail-Format",
"Content": "Inhalt",
"CC Email Address": "CC-E-Mail-Adresse",
"BCC Email Address": "BCC E-Mail-Adresse",
"Ask for Read Receipt": "Nach Lesebestätigung fragen",
"Attachment": "Anhang",
"Attachment Name": "Anhangname",
"Method": "Methode",
"Headers": "Kopfzeilen",
"Query Parameters": "Abfrageparameter",
"Body": "Körper",
"Response is Binary ?": "Antwort ist binär?",
"No Error on Failure": "Kein Fehler bei Fehler",
"Timeout (in seconds)": "Timeout (in Sekunden)",
"The ID of the email message to retrieve.": "Die ID der abzurufenden E-Mail-Nachricht.",
"The ID of the email message to mark as read.": "Die ID der E-Mail-Nachricht, die als gelesen markiert wird.",
"The ID of the email message to mark as unread.": "Die ID der E-Mail-Nachricht, die als ungelesen markiert wird.",
"The ID of the email message to archive.": "Die ID der zu archivierenden E-Mail-Nachricht.",
"The ID of the email message to unarchive.": "Die ID der zu entpackenden E-Mail-Nachricht.",
"The ID of the email message to move.": "Die ID der zu verschiebenden E-Mail-Nachricht.",
"Select the folder to move the email to.": "Wählen Sie den Ordner, an den die E-Mail verschoben werden soll.",
"Recipient's email address.": "E-Mail-Adresse des Empfängers",
"HTML or plain text content of the email.": "HTML- oder Klartextinhalt der E-Mail.",
"CC recipient's email address.": "E-Mail-Adresse des CC-Empfängers.",
"BCC recipient's email address.": "E-Mail-Adresse des BCC-Empfängers.",
"In case you want to change the name of the attachment.": "Falls Sie den Namen des Anhangs ändern möchten.",
"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..",
"HTML": "HTML",
"Plain Text": "Einfacher Text",
"Yes": "Ja",
"No": "Nein",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD",
"New Email Received": "Neue E-Mail erhalten",
"Triggers when a new email is received in a specified folder (or inbox).": "Wird ausgelöst, wenn eine neue E-Mail in einem bestimmten Ordner (oder Posteingang) empfangen wird.",
"Select the folder to watch. If empty, watches the inbox/all messages based on API default.": "Wählen Sie den zu beobachtenden Ordner. Wenn leer, beobachtet der Posteingang/alle Nachrichten basierend auf der API-Standardeinstellung."
}

View File

@@ -0,0 +1,77 @@
{
"Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.": "Zoho Mail es un potente servicio de correo electrónico que le permite administrar su correo electrónico, contactos y calendarios de manera eficiente.",
"Location": "Ubicación",
"The location of your Zoho Mail account.": "La ubicación de su cuenta de correo de Zoho.",
"zoho.eu (Europe)": "zoho.eu (Europa)",
"zoho.com (United States)": "zoho.com (Estados Unidos)",
"zoho.com.au (Australia)": "zoho.com.au (Tamaño)",
"zoho.jp (Japan)": "zoho.jp (Japón)",
"zoho.in (India)": "zoho.in (India)",
"zohocloud.ca (Canada)": "zohocloud.ca (Canada)",
"Authentication for Zoho Desk": "Autenticación para Zoho Desk",
"Get Email Details": "Obtener detalles del email",
"Mark Email as Read": "Marcar email como leído",
"Mark Emai as Unread": "Marcar Emai como no leído",
"Archive Email": "Archivar Email",
"Unarchive Email": "Unarchive Email",
"Move Email to Folder": "Mover correo a la carpeta",
"Send Email": "Enviar Email",
"Custom API Call": "Llamada API personalizada",
"Retrieves full content and metadata of a specific email.": "Obtiene el contenido completo y los metadatos de un correo electrónico específico.",
"Marks an email as read.": "Marca un correo electrónico como leído.",
"Marks an email as unread.": "Marca un correo electrónico como no leído.",
"Archives an email.": "Archivar un correo electrónico.",
"Unarchives an email.": "Desarchiva un correo electrónico.",
"Moves an email to a different folder.": "Mover un email a una carpeta diferente.",
"Sends an email.": "Envía un correo electrónico.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Account": "Cuenta",
"Folder": "Carpeta",
"Message ID": "ID del mensaje",
"Current Folder": "Carpeta actual",
"Destination Folder": "Carpeta de destino",
"From Email Address": "Dirección de Email",
"To Email Address": "A la dirección de correo",
"Subject": "Asunto",
"Mail Format": "Formato de correo",
"Content": "Contenido",
"CC Email Address": "Dirección de Email CC",
"BCC Email Address": "Dirección de email BCC",
"Ask for Read Receipt": "Solicitar recibo de lectura",
"Attachment": "Adjunto",
"Attachment Name": "Nombre del archivo adjunto",
"Method": "Método",
"Headers": "Encabezados",
"Query Parameters": "Parámetros de consulta",
"Body": "Cuerpo",
"Response is Binary ?": "¿Respuesta es binaria?",
"No Error on Failure": "No hay ningún error en fallo",
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
"The ID of the email message to retrieve.": "El ID del mensaje de correo electrónico a recuperar.",
"The ID of the email message to mark as read.": "El ID del mensaje de correo electrónico a marcar como leído.",
"The ID of the email message to mark as unread.": "El ID del mensaje de correo electrónico a marcar como no leído.",
"The ID of the email message to archive.": "El ID del mensaje de correo electrónico a archivar.",
"The ID of the email message to unarchive.": "El ID del mensaje de correo electrónico a desarchivar.",
"The ID of the email message to move.": "El ID del mensaje de correo electrónico a mover.",
"Select the folder to move the email to.": "Seleccione la carpeta a la que mover el correo electrónico.",
"Recipient's email address.": "Dirección de correo electrónico del destinatario.",
"HTML or plain text content of the email.": "Contenido HTML o texto plano del correo electrónico.",
"CC recipient's email address.": "Dirección de correo electrónico del destinatario de CC.",
"BCC recipient's email address.": "Dirección de correo electrónico del destinatario de BCC.",
"In case you want to change the name of the attachment.": "En caso de que desee cambiar el nombre del archivo adjunto.",
"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.",
"HTML": "HTML",
"Plain Text": "Texto simple",
"Yes": "Sí",
"No": "Nu",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO",
"New Email Received": "Nuevo email recibido",
"Triggers when a new email is received in a specified folder (or inbox).": "Se activa cuando se recibe un nuevo correo electrónico en una carpeta (o bandeja de entrada).",
"Select the folder to watch. If empty, watches the inbox/all messages based on API default.": "Seleccione la carpeta a ver. Si está vacía, observa la bandeja de entrada o todos los mensajes basados en el valor predeterminado de la API."
}

View File

@@ -0,0 +1,77 @@
{
"Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.": "Zoho Mail est un service de messagerie puissant qui vous permet de gérer efficacement vos e-mails, vos contacts et vos calendriers.",
"Location": "Localisation",
"The location of your Zoho Mail account.": "La localisation de votre compte Zoho Mail.",
"zoho.eu (Europe)": "zoho.eu (Europe)",
"zoho.com (United States)": "zoho.com (États-Unis)",
"zoho.com.au (Australia)": "zoho.com.au (Australie)",
"zoho.jp (Japan)": "zoho.jp (Japon)",
"zoho.in (India)": "zoho.in (Inde)",
"zohocloud.ca (Canada)": "zohocloud.ca (Canada)",
"Authentication for Zoho Desk": "Authentification pour Zoho Desk",
"Get Email Details": "Obtenir les détails de l'e-mail",
"Mark Email as Read": "Marquer l'e-mail comme lu",
"Mark Emai as Unread": "Marquer Emai comme non lu",
"Archive Email": "Archiver l'e-mail",
"Unarchive Email": "Unarchive Email",
"Move Email to Folder": "Déplacer l'e-mail vers le dossier",
"Send Email": "Envoyer un e-mail",
"Custom API Call": "Appel d'API personnalisé",
"Retrieves full content and metadata of a specific email.": "Récupère le contenu complet et les métadonnées d'un e-mail spécifique.",
"Marks an email as read.": "Marque un e-mail comme lu.",
"Marks an email as unread.": "Marque un e-mail comme non lu.",
"Archives an email.": "Archive un e-mail.",
"Unarchives an email.": "Désarchive un e-mail.",
"Moves an email to a different folder.": "Déplace un email vers un dossier différent.",
"Sends an email.": "Envoie un e-mail.",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"Account": "Compte client",
"Folder": "Dossier",
"Message ID": "ID du message",
"Current Folder": "Répertoire actuel",
"Destination Folder": "Dossier de destination",
"From Email Address": "Adresse e-mail de l'expéditeur",
"To Email Address": "À l'adresse e-mail",
"Subject": "Sujet",
"Mail Format": "Format de l'e-mail",
"Content": "Contenus",
"CC Email Address": "Adresse e-mail CC",
"BCC Email Address": "Adresse email BCC",
"Ask for Read Receipt": "Demander un reçu de lecture",
"Attachment": "Pièce jointe",
"Attachment Name": "Nom de la pièce jointe",
"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'expiration (en secondes)",
"The ID of the email message to retrieve.": "L'ID du message à récupérer.",
"The ID of the email message to mark as read.": "L'ID du message e-mail à marquer comme lu.",
"The ID of the email message to mark as unread.": "L'ID du message e-mail à marquer comme non lu.",
"The ID of the email message to archive.": "L'ID du message à archiver.",
"The ID of the email message to unarchive.": "L'ID du message à désarchiver.",
"The ID of the email message to move.": "L'ID du message à déplacer.",
"Select the folder to move the email to.": "Sélectionnez le dossier vers lequel vous souhaitez déplacer l'email.",
"Recipient's email address.": "Adresse e-mail du destinataire.",
"HTML or plain text content of the email.": "Contenu HTML ou texte brut de l'email.",
"CC recipient's email address.": "Adresse e-mail du destinataire du CC.",
"BCC recipient's email address.": "Adresse email du destinataire de la BCC.",
"In case you want to change the name of the attachment.": "Si vous voulez changer le nom de la pièce jointe.",
"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.",
"HTML": "HTML",
"Plain Text": "Texte brut",
"Yes": "Oui",
"No": "Non",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Email Received": "Nouvel e-mail reçu",
"Triggers when a new email is received in a specified folder (or inbox).": "Déclenche lorsqu'un nouvel e-mail est reçu dans un dossier (ou une boîte de réception).",
"Select the folder to watch. If empty, watches the inbox/all messages based on API default.": "Sélectionnez le dossier à surveiller. Si vide, surveille la boîte de réception/tous les messages en fonction de l'API par défaut."
}

View File

@@ -0,0 +1,77 @@
{
"Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.": "Zoho Mail は、メール、連絡先、カレンダーを効率的に管理できる強力なメールサービスです。",
"Location": "場所",
"The location of your Zoho Mail account.": "Zoho メールアカウントの場所。",
"zoho.eu (Europe)": "zoho.eu (ヨーロッパ)",
"zoho.com (United States)": "zoho.com (アメリカ合衆国)",
"zoho.com.au (Australia)": "zoho.com.au (オーストラリア)",
"zoho.jp (Japan)": "zoho.jp (日本)",
"zoho.in (India)": "zoho.in (インド)",
"zohocloud.ca (Canada)": "zohocloud.ca (Canada)",
"Authentication for Zoho Desk": "Zoho Deskの認証",
"Get Email Details": "メールの詳細を取得",
"Mark Email as Read": "メールを既読にする",
"Mark Emai as Unread": "Emaiを未読にする",
"Archive Email": "電子メールをアーカイブ",
"Unarchive Email": "Unarchive Email",
"Move Email to Folder": "メールをフォルダに移動",
"Send Email": "メール送信",
"Custom API Call": "カスタムAPI通話",
"Retrieves full content and metadata of a specific email.": "特定のメールの完全なコンテンツとメタデータを取得します。",
"Marks an email as read.": "メールを既読にします。",
"Marks an email as unread.": "メールを未読としてマークします。",
"Archives an email.": "メールをアーカイブする",
"Unarchives an email.": "メールのアーカイブを解除します。",
"Moves an email to a different folder.": "メールを別のフォルダに移動します。",
"Sends an email.": "メールを送信します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Account": "アカウント",
"Folder": "フォルダ",
"Message ID": "メッセージID",
"Current Folder": "現在のフォルダ",
"Destination Folder": "宛先フォルダ",
"From Email Address": "差出人メールアドレス",
"To Email Address": "宛先メールアドレス",
"Subject": "件名",
"Mail Format": "メール形式",
"Content": "コンテンツ",
"CC Email Address": "CC メールアドレス",
"BCC Email Address": "BCCのメールアドレス",
"Ask for Read Receipt": "開封通知を要求",
"Attachment": "添付ファイル",
"Attachment Name": "添付ファイル名",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The ID of the email message to retrieve.": "取得する電子メールメッセージのID。",
"The ID of the email message to mark as read.": "既読にする電子メールメッセージの ID。",
"The ID of the email message to mark as unread.": "未読としてマークする電子メールメッセージのID。",
"The ID of the email message to archive.": "アーカイブする電子メールメッセージの ID。",
"The ID of the email message to unarchive.": "アーカイブを解除するメールメッセージの ID",
"The ID of the email message to move.": "移動する電子メールメッセージのID。",
"Select the folder to move the email to.": "メールを移動するフォルダを選択します。",
"Recipient's email address.": "受信者のメールアドレス",
"HTML or plain text content of the email.": "メールのHTMLまたはプレーンテキストコンテンツ。",
"CC recipient's email address.": "CC受信者のメールアドレス。",
"BCC recipient's email address.": "BCC 受信者のメールアドレス",
"In case you want to change the name of the attachment.": "添付ファイルの名前を変更したい場合.",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"HTML": "HTML",
"Plain Text": "プレーンテキスト",
"Yes": "はい",
"No": "いいえ",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭",
"New Email Received": "新しいメールを受信しました",
"Triggers when a new email is received in a specified folder (or inbox).": "指定したフォルダ(または受信トレイ)に新しいメールを受信したときにトリガーします。",
"Select the folder to watch. If empty, watches the inbox/all messages based on API default.": "監視するフォルダを選択します。空の場合は、API のデフォルトに基づいて受信トレイ/すべてのメッセージを監視します。"
}

View File

@@ -0,0 +1,77 @@
{
"Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.": "Zoho Mail is een krachtige e-maildienst waarmee u uw e-mail, contacten en kalenders efficiënt kunt beheren.",
"Location": "Locatie",
"The location of your Zoho Mail account.": "De locatie van je Zoho Mail account.",
"zoho.eu (Europe)": "zoho.eu (Europa)",
"zoho.com (United States)": "zoho.com (Verenigde Staten)",
"zoho.com.au (Australia)": "zoho.com.au (Australia)",
"zoho.jp (Japan)": "zoho.jp (Japan)",
"zoho.in (India)": "zoho.in (India)",
"zohocloud.ca (Canada)": "zohocloud.ca (Canada)",
"Authentication for Zoho Desk": "Authenticatie voor Zoho Desk",
"Get Email Details": "Krijg E-mail Details",
"Mark Email as Read": "Markeer E-mail als gelezen",
"Mark Emai as Unread": "Emai markeren als ongelezen",
"Archive Email": "Archief e-mail",
"Unarchive Email": "Unarchive Email",
"Move Email to Folder": "Verplaats E-mail naar map",
"Send Email": "E-mail verzenden",
"Custom API Call": "Custom API Call",
"Retrieves full content and metadata of a specific email.": "Haal volledige inhoud en metadata op van een specifiek e-mailadres.",
"Marks an email as read.": "Markeer een e-mail als gelezen.",
"Marks an email as unread.": "Markeer een e-mail als ongelezen.",
"Archives an email.": "Archiveer een e-mail.",
"Unarchives an email.": "Dearchiveer een e-mail.",
"Moves an email to a different folder.": "Verplaatst een e-mail naar een andere map.",
"Sends an email.": "Verstuurt een e-mail.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Account": "Rekening",
"Folder": "Map",
"Message ID": "Bericht ID",
"Current Folder": "Huidige map",
"Destination Folder": "Doelmap map",
"From Email Address": "Van e-mailadres",
"To Email Address": "Naar e-mailadres",
"Subject": "Onderwerp",
"Mail Format": "E-mail formaat",
"Content": "Inhoud",
"CC Email Address": "CC e-mailadres",
"BCC Email Address": "BCC e-mailadres",
"Ask for Read Receipt": "Vraag naar leesbevestiging",
"Attachment": "Bijlage",
"Attachment Name": "Bijlage naam",
"Method": "Methode",
"Headers": "Kopteksten",
"Query Parameters": "Query parameters",
"Body": "Lichaam",
"Response is Binary ?": "Antwoord is binair?",
"No Error on Failure": "Geen fout bij fout",
"Timeout (in seconds)": "Time-out (in seconden)",
"The ID of the email message to retrieve.": "Het ID van het op te halen e-mailbericht.",
"The ID of the email message to mark as read.": "Het ID van het e-mailbericht om als gelezen te markeren.",
"The ID of the email message to mark as unread.": "Het ID van het e-mailbericht om als ongelezen te markeren.",
"The ID of the email message to archive.": "Het ID van het e-mail bericht om te archiveren.",
"The ID of the email message to unarchive.": "Het ID van het e-mail bericht om te dearchiveren.",
"The ID of the email message to move.": "Het ID van het te verplaatsen e-mailbericht.",
"Select the folder to move the email to.": "Selecteer de map waar de e-mail naartoe moet worden verplaatst.",
"Recipient's email address.": "E-mailadres ontvanger",
"HTML or plain text content of the email.": "HTML of platte tekst inhoud van de e-mail.",
"CC recipient's email address.": "CC ontvanger zijn e-mailadres",
"BCC recipient's email address.": "BCC ontvanger's e-mailadres.",
"In case you want to change the name of the attachment.": "In het geval dat u de naam van de bijlage wilt wijzigen.",
"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..",
"HTML": "HTML",
"Plain Text": "Onopgemaakte tekst",
"Yes": "ja",
"No": "Neen",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD",
"New Email Received": "Nieuwe e-mail ontvangen",
"Triggers when a new email is received in a specified folder (or inbox).": "Triggert wanneer een nieuwe e-mail wordt ontvangen in een opgegeven map (of inbox).",
"Select the folder to watch. If empty, watches the inbox/all messages based on API default.": "Selecteer de te bekijken map. Indien leeg, kijk dan naar de inbox/alle berichten gebaseerd op API-standaard."
}

View File

@@ -0,0 +1,77 @@
{
"Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.": "Zoho Mail é um serviço de e-mail poderoso que permite que você gerencie seu e-mail, contatos e agenda eficientemente.",
"Location": "Local:",
"The location of your Zoho Mail account.": "A localização da sua conta Zoho Mail.",
"zoho.eu (Europe)": "zoho.eu (Europa)",
"zoho.com (United States)": "zoho.com (Estados Unidos)",
"zoho.com.au (Australia)": "zoho.com.au (Austrália)",
"zoho.jp (Japan)": "zoho.jp (Japão)",
"zoho.in (India)": "zoho.in (Índia)",
"zohocloud.ca (Canada)": "zohocloud.ca (Canada)",
"Authentication for Zoho Desk": "Autenticação para Zoho Desk",
"Get Email Details": "Obter Detalhes do E-mail",
"Mark Email as Read": "Marcar E-mail como lido",
"Mark Emai as Unread": "Marcar Emai como Não Lida",
"Archive Email": "Arquivo Email",
"Unarchive Email": "Unarchive Email",
"Move Email to Folder": "Mover e-mail para pasta",
"Send Email": "Enviar e-mail",
"Custom API Call": "Chamada de API personalizada",
"Retrieves full content and metadata of a specific email.": "Obtém conteúdo completo e metadados de um e-mail específico.",
"Marks an email as read.": "Marca um email como lido.",
"Marks an email as unread.": "Marca um email como não lido.",
"Archives an email.": "Arquiva um e-mail.",
"Unarchives an email.": "Desarquiva um e-mail.",
"Moves an email to a different folder.": "Move um e-mail para uma pasta diferente.",
"Sends an email.": "Envia um e-mail.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Account": "conta",
"Folder": "Pasta",
"Message ID": "ID da mensagem",
"Current Folder": "Pasta atual",
"Destination Folder": "Pasta de destino",
"From Email Address": "Do Email Address",
"To Email Address": "Endereço de E-mail",
"Subject": "Cargo",
"Mail Format": "Formato de correio",
"Content": "Conteúdo",
"CC Email Address": "Endereço de E-mail CC",
"BCC Email Address": "Endereço de E-mail BCC",
"Ask for Read Receipt": "Pedir confirmação de leitura",
"Attachment": "Anexo",
"Attachment Name": "Nome do anexo",
"Method": "Método",
"Headers": "Cabeçalhos",
"Query Parameters": "Parâmetros da consulta",
"Body": "Conteúdo",
"Response is Binary ?": "A resposta é binária ?",
"No Error on Failure": "Nenhum erro no Failure",
"Timeout (in seconds)": "Tempo limite (em segundos)",
"The ID of the email message to retrieve.": "O ID da mensagem de e-mail a ser recuperada.",
"The ID of the email message to mark as read.": "O ID da mensagem de e-mail a ser marcada como lida.",
"The ID of the email message to mark as unread.": "O ID da mensagem de e-mail a ser marcada como não lida.",
"The ID of the email message to archive.": "O ID da mensagem de e-mail a arquivar.",
"The ID of the email message to unarchive.": "O ID da mensagem de e-mail para desarquivar.",
"The ID of the email message to move.": "O ID da mensagem de e-mail a ser movida.",
"Select the folder to move the email to.": "Selecione a pasta para mover o e-mail.",
"Recipient's email address.": "E-mail do destinatário.",
"HTML or plain text content of the email.": "HTML ou conteúdo de texto simples do e-mail.",
"CC recipient's email address.": "E-mail do destinatário CC",
"BCC recipient's email address.": "E-mail do destinatário BCC.",
"In case you want to change the name of the attachment.": "Caso queira alterar o nome do anexo.",
"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..",
"HTML": "HTML",
"Plain Text": "Texto sem Formatação",
"Yes": "sim",
"No": "Não",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA",
"New Email Received": "Novo e-mail recebido",
"Triggers when a new email is received in a specified folder (or inbox).": "Aciona quando um novo email é recebido em uma pasta especificada (ou caixa de entrada).",
"Select the folder to watch. If empty, watches the inbox/all messages based on API default.": "Selecione a pasta para assistir. Se vazia, assiste à caixa de entrada/todas as mensagens baseadas no padrão da API."
}

View File

@@ -0,0 +1,70 @@
{
"Zoho Mail": "Zoho Mail",
"Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.": "Zoho Mail это мощный сервис электронной почты, который позволяет эффективно управлять электронной почтой, контактами и календарями.",
"Location": "Местоположение",
"The location of your Zoho Mail account.": "Местоположение вашей учетной записи Zoho Mail.",
"zoho.eu (Europe)": "zoho.eu (Европа)",
"zoho.com (United States)": "zoho.com (Соединенные Штаты)",
"zoho.com.au (Australia)": "zoho.com.au (Австралия)",
"zoho.jp (Japan)": "zoho.jp (Япония)",
"zoho.in (India)": "zoho.in (Индия)",
"zohocloud.ca (Canada)": "zohocloud.ca (Canada)",
"Authentication for Zoho Desk": "Аутентификация для Zoho Desk",
"Get Email Details": "Получить подробности по электронной почте",
"Mark Email as Read": "Пометить письмо как прочитанное",
"Mark Emai as Unread": "Пометить Emai как непрочитанное",
"Move Email to Folder": "Переместить Email в папку",
"Send Email": "Отправить письмо",
"Custom API Call": "Пользовательский вызов API",
"Retrieves full content and metadata of a specific email.": "Получает полное содержимое и метаданные определенного email.",
"Marks an email as read.": "Отмечает email как прочитанный.",
"Marks an email as unread.": "Помечает письмо как непрочитанное.",
"Moves an email to a different folder.": "Перемещает письмо в другую папку.",
"Sends an email.": "Отправляет письмо.",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Account": "Аккаунт",
"Folder": "Папка",
"Message ID": "ID сообщения",
"Current Folder": "Текущая папка",
"Destination Folder": "Папка назначения",
"From Email Address": "От адреса электронной почты",
"To Email Address": "Адрес электронной почты",
"Subject": "Тема",
"Mail Format": "Формат почты",
"Content": "Содержание",
"CC Email Address": "CC адрес электронной почты",
"BCC Email Address": "BCC Email Address",
"Ask for Read Receipt": "Запрашивать прочтение квитанции",
"Attachment": "Вложение",
"Attachment Name": "Название вложения",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"The ID of the email message to retrieve.": "Идентификатор email сообщения для получения.",
"The ID of the email message to mark as read.": "Идентификатор сообщения электронной почты, чтобы отметить как прочитанные.",
"The ID of the email message to mark as unread.": "ID сообщения электронной почты для отметки как непрочитанные.",
"The ID of the email message to move.": "ID сообщения для перемещения.",
"Select the folder to move the email to.": "Выберите папку для перемещения электронной почты.",
"Recipient's email address.": "Адрес электронной почты получателя.",
"HTML or plain text content of the email.": "HTML или обычный текстовый контент электронной почты.",
"CC recipient's email address.": "Адрес электронной почты получателя Копии.",
"BCC recipient's email address.": "Адрес электронной почты получателя BCC.",
"In case you want to change the name of the attachment.": "В случае, если вы хотите изменить имя вложения.",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"HTML": "HTML",
"Plain Text": "Обычный текст",
"Yes": "Да",
"No": "Нет",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD",
"New Email Received": "Получено новое письмо",
"Triggers when a new email is received in a specified folder (or inbox).": "Запускает при получении нового письма в указанной папке (или в папке).",
"Select the folder to watch. If empty, watches the inbox/all messages based on API default.": "Выберите папку для просмотра. Если пустой, смотрит входящие/все сообщения, основанные на API по умолчанию."
}

View File

@@ -0,0 +1,77 @@
{
"Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.": "Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.",
"Location": "Location",
"The location of your Zoho Mail account.": "The location of your Zoho Mail account.",
"zoho.eu (Europe)": "zoho.eu (Europe)",
"zoho.com (United States)": "zoho.com (United States)",
"zoho.com.au (Australia)": "zoho.com.au (Australia)",
"zoho.jp (Japan)": "zoho.jp (Japan)",
"zoho.in (India)": "zoho.in (India)",
"zohocloud.ca (Canada)": "zohocloud.ca (Canada)",
"Authentication for Zoho Desk": "Authentication for Zoho Desk",
"Get Email Details": "Get Email Details",
"Mark Email as Read": "Mark Email as Read",
"Mark Emai as Unread": "Mark Emai as Unread",
"Archive Email": "Archive Email",
"Unarchive Email": "Unarchive Email",
"Move Email to Folder": "Move Email to Folder",
"Send Email": "Send Email",
"Custom API Call": "Custom API Call",
"Retrieves full content and metadata of a specific email.": "Retrieves full content and metadata of a specific email.",
"Marks an email as read.": "Marks an email as read.",
"Marks an email as unread.": "Marks an email as unread.",
"Archives an email.": "Archives an email.",
"Unarchives an email.": "Unarchives an email.",
"Moves an email to a different folder.": "Moves an email to a different folder.",
"Sends an email.": "Sends an email.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Account": "Account",
"Folder": "Folder",
"Message ID": "Message ID",
"Current Folder": "Current Folder",
"Destination Folder": "Destination Folder",
"From Email Address": "From Email Address",
"To Email Address": "To Email Address",
"Subject": "Subject",
"Mail Format": "Mail Format",
"Content": "Content",
"CC Email Address": "CC Email Address",
"BCC Email Address": "BCC Email Address",
"Ask for Read Receipt": "Ask for Read Receipt",
"Attachment": "Attachment",
"Attachment Name": "Attachment Name",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The ID of the email message to retrieve.": "The ID of the email message to retrieve.",
"The ID of the email message to mark as read.": "The ID of the email message to mark as read.",
"The ID of the email message to mark as unread.": "The ID of the email message to mark as unread.",
"The ID of the email message to archive.": "The ID of the email message to archive.",
"The ID of the email message to unarchive.": "The ID of the email message to unarchive.",
"The ID of the email message to move.": "The ID of the email message to move.",
"Select the folder to move the email to.": "Select the folder to move the email to.",
"Recipient's email address.": "Recipient's email address.",
"HTML or plain text content of the email.": "HTML or plain text content of the email.",
"CC recipient's email address.": "CC recipient's email address.",
"BCC recipient's email address.": "BCC recipient's email address.",
"In case you want to change the name of the attachment.": "In case you want to change the name of the attachment.",
"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..",
"HTML": "HTML",
"Plain Text": "Plain Text",
"Yes": "Yes",
"No": "No",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Email Received": "New Email Received",
"Triggers when a new email is received in a specified folder (or inbox).": "Triggers when a new email is received in a specified folder (or inbox).",
"Select the folder to watch. If empty, watches the inbox/all messages based on API default.": "Select the folder to watch. If empty, watches the inbox/all messages based on API default."
}

View File

@@ -0,0 +1,70 @@
{
"Zoho Mail": "Zoho Mail",
"Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.": "Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.",
"Location": "Location",
"The location of your Zoho Mail account.": "The location of your Zoho Mail account.",
"zoho.eu (Europe)": "zoho.eu (Europe)",
"zoho.com (United States)": "zoho.com (United States)",
"zoho.com.au (Australia)": "zoho.com.au (Australia)",
"zoho.jp (Japan)": "zoho.jp (Japan)",
"zoho.in (India)": "zoho.in (India)",
"zohocloud.ca (Canada)": "zohocloud.ca (Canada)",
"Authentication for Zoho Desk": "Authentication for Zoho Desk",
"Get Email Details": "Get Email Details",
"Mark Email as Read": "Mark Email as Read",
"Mark Emai as Unread": "Mark Emai as Unread",
"Move Email to Folder": "Move Email to Folder",
"Send Email": "Send Email",
"Custom API Call": "Custom API Call",
"Retrieves full content and metadata of a specific email.": "Retrieves full content and metadata of a specific email.",
"Marks an email as read.": "Marks an email as read.",
"Marks an email as unread.": "Marks an email as unread.",
"Moves an email to a different folder.": "Moves an email to a different folder.",
"Sends an email.": "Sends an email.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Account": "Account",
"Folder": "Folder",
"Message ID": "Message ID",
"Current Folder": "Current Folder",
"Destination Folder": "Destination Folder",
"From Email Address": "From Email Address",
"To Email Address": "To Email Address",
"Subject": "Subject",
"Mail Format": "Mail Format",
"Content": "Content",
"CC Email Address": "CC Email Address",
"BCC Email Address": "BCC Email Address",
"Ask for Read Receipt": "Ask for Read Receipt",
"Attachment": "Attachment",
"Attachment Name": "Attachment Name",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The ID of the email message to retrieve.": "The ID of the email message to retrieve.",
"The ID of the email message to mark as read.": "The ID of the email message to mark as read.",
"The ID of the email message to mark as unread.": "The ID of the email message to mark as unread.",
"The ID of the email message to move.": "The ID of the email message to move.",
"Select the folder to move the email to.": "Select the folder to move the email to.",
"Recipient's email address.": "Recipient's email address.",
"HTML or plain text content of the email.": "HTML or plain text content of the email.",
"CC recipient's email address.": "CC recipient's email address.",
"BCC recipient's email address.": "BCC recipient's email address.",
"In case you want to change the name of the attachment.": "In case you want to change the name of the attachment.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"HTML": "HTML",
"Plain Text": "Plain Text",
"Yes": "Yes",
"No": "No",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Email Received": "New Email Received",
"Triggers when a new email is received in a specified folder (or inbox).": "Triggers when a new email is received in a specified folder (or inbox).",
"Select the folder to watch. If empty, watches the inbox/all messages based on API default.": "Select the folder to watch. If empty, watches the inbox/all messages based on API default."
}

View File

@@ -0,0 +1,77 @@
{
"Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.": "Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.",
"Location": "Location",
"The location of your Zoho Mail account.": "The location of your Zoho Mail account.",
"zoho.eu (Europe)": "zoho.eu (Europe)",
"zoho.com (United States)": "zoho.com (United States)",
"zoho.com.au (Australia)": "zoho.com.au (Australia)",
"zoho.jp (Japan)": "zoho.jp (Japan)",
"zoho.in (India)": "zoho.in (India)",
"zohocloud.ca (Canada)": "zohocloud.ca (Canada)",
"Authentication for Zoho Desk": "Authentication for Zoho Desk",
"Get Email Details": "Get Email Details",
"Mark Email as Read": "Mark Email as Read",
"Mark Emai as Unread": "Mark Emai as Unread",
"Archive Email": "Archive Email",
"Unarchive Email": "Unarchive Email",
"Move Email to Folder": "Move Email to Folder",
"Send Email": "Send Email",
"Custom API Call": "自定义 API 呼叫",
"Retrieves full content and metadata of a specific email.": "Retrieves full content and metadata of a specific email.",
"Marks an email as read.": "Marks an email as read.",
"Marks an email as unread.": "Marks an email as unread.",
"Archives an email.": "Archives an email.",
"Unarchives an email.": "Unarchives an email.",
"Moves an email to a different folder.": "Moves an email to a different folder.",
"Sends an email.": "Sends an email.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Account": "Account",
"Folder": "Folder",
"Message ID": "Message ID",
"Current Folder": "Current Folder",
"Destination Folder": "Destination Folder",
"From Email Address": "From Email Address",
"To Email Address": "To Email Address",
"Subject": "Subject",
"Mail Format": "Mail Format",
"Content": "Content",
"CC Email Address": "CC Email Address",
"BCC Email Address": "BCC Email Address",
"Ask for Read Receipt": "Ask for Read Receipt",
"Attachment": "Attachment",
"Attachment Name": "Attachment Name",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The ID of the email message to retrieve.": "The ID of the email message to retrieve.",
"The ID of the email message to mark as read.": "The ID of the email message to mark as read.",
"The ID of the email message to mark as unread.": "The ID of the email message to mark as unread.",
"The ID of the email message to archive.": "The ID of the email message to archive.",
"The ID of the email message to unarchive.": "The ID of the email message to unarchive.",
"The ID of the email message to move.": "The ID of the email message to move.",
"Select the folder to move the email to.": "Select the folder to move the email to.",
"Recipient's email address.": "Recipient's email address.",
"HTML or plain text content of the email.": "HTML or plain text content of the email.",
"CC recipient's email address.": "CC recipient's email address.",
"BCC recipient's email address.": "BCC recipient's email address.",
"In case you want to change the name of the attachment.": "In case you want to change the name of the attachment.",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"HTML": "HTML",
"Plain Text": "Plain Text",
"Yes": "Yes",
"No": "No",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色",
"New Email Received": "New Email Received",
"Triggers when a new email is received in a specified folder (or inbox).": "Triggers when a new email is received in a specified folder (or inbox).",
"Select the folder to watch. If empty, watches the inbox/all messages based on API default.": "Select the folder to watch. If empty, watches the inbox/all messages based on API default."
}

View File

@@ -0,0 +1,50 @@
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import {
createPiece,
OAuth2PropertyValue,
PiecePropValueSchema,
} from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { getEmailDetailsAction } from './lib/actions/get-email-details';
import { markEmailAsReadAction } from './lib/actions/mark-email-as-read';
import { markEmailAsUnreadAction } from './lib/actions/mark-email-as-unread';
import { archiveEmailAction } from './lib/actions/archive-email';
import { unarchiveEmailAction } from './lib/actions/unarchive-email';
import { moveEmailAction } from './lib/actions/move-email';
import { sendEmailAction } from './lib/actions/send-email';
import { zohoMailAuth } from './lib/common/auth';
import { newEmailReceivedTrigger } from './lib/triggers/new-email-received-trigger';
export const zohoMail = createPiece({
displayName: 'Zoho Mail',
logoUrl: 'https://cdn.activepieces.com/pieces/zoho-mail.png',
auth: zohoMailAuth,
authors: ['onyedikachi-david', 'kishanprmr', 'kdurek'],
description:
'Zoho Mail is a powerful email service that allows you to manage your email, contacts, and calendars efficiently.',
minimumSupportedRelease: '0.36.1',
categories: [PieceCategory.COMMUNICATION],
actions: [
getEmailDetailsAction,
markEmailAsReadAction,
markEmailAsUnreadAction,
archiveEmailAction,
unarchiveEmailAction,
moveEmailAction,
sendEmailAction,
createCustomApiCallAction({
auth: zohoMailAuth,
baseUrl: (auth) => {
const authValue = auth as PiecePropValueSchema<typeof zohoMailAuth>;
const location = authValue.props?.['location'] ?? 'zoho.com';
return `https://mail.${location}/api`;
},
authMapping: async (auth) => {
return {
Authorization: `Zoho-oauthtoken ${(auth as OAuth2PropertyValue).access_token}`,
};
},
}),
],
triggers: [newEmailReceivedTrigger],
});

View File

@@ -0,0 +1,36 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction } from '@activepieces/pieces-framework';
import { zohoMailApiCall } from '../common';
import { zohoMailAuth } from '../common/auth';
import { accountId, folderId, messageId } from '../common/props';
export const archiveEmailAction = createAction({
auth: zohoMailAuth,
name: 'archive_email',
displayName: 'Archive Email',
description: 'Archives an email.',
props: {
accountId: accountId({ displayName: 'Account', required: true }),
folderId: folderId({ displayName: 'Folder', required: true }),
messageId: messageId({
displayName: 'Message ID',
description: 'The ID of the email message to archive.',
required: true,
}),
},
async run(context) {
const { accountId, messageId } = context.propsValue;
const response = await zohoMailApiCall({
auth: context.auth,
method: HttpMethod.PUT,
resourceUri: `/accounts/${accountId}/updatemessage`,
body: {
mode: 'archiveMails',
messageId: [messageId],
},
});
return response;
},
});

View File

@@ -0,0 +1,38 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction } from '@activepieces/pieces-framework';
import { convertAttachment, parseStream, zohoMailApiCall } from '../common';
import { zohoMailAuth } from '../common/auth';
import { accountId, folderId, messageId } from '../common/props';
export const getEmailDetailsAction = createAction({
auth: zohoMailAuth,
name: 'get_email_details',
displayName: 'Get Email Details',
description: 'Retrieves full content and metadata of a specific email.',
props: {
accountId: accountId({ displayName: 'Account', required: true }),
folderId: folderId({ displayName: 'Folder', required: true }),
messageId: messageId({
displayName: 'Message ID',
description: 'The ID of the email message to retrieve.',
required: true,
}),
},
async run(context) {
const { accountId, messageId } = context.propsValue;
const response = await zohoMailApiCall<{ data: { content: string; messageId: string } }>({
auth: context.auth,
method: HttpMethod.GET,
resourceUri: `/accounts/${accountId}/messages/${messageId}/originalmessage`,
});
const parsedMailResponse = await parseStream(response.data.content);
return {
...parsedMailResponse,
attachments: await convertAttachment(parsedMailResponse.attachments, context.files),
id: response.data.messageId,
};
},
});

View File

@@ -0,0 +1,36 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction } from '@activepieces/pieces-framework';
import { zohoMailApiCall } from '../common';
import { zohoMailAuth } from '../common/auth';
import { accountId, folderId, messageId } from '../common/props';
export const markEmailAsReadAction = createAction({
auth: zohoMailAuth,
name: 'mark_email_as_read',
displayName: 'Mark Email as Read',
description: 'Marks an email as read.',
props: {
accountId: accountId({ displayName: 'Account', required: true }),
folderId: folderId({ displayName: 'Folder', required: true }),
messageId: messageId({
displayName: 'Message ID',
description: 'The ID of the email message to mark as read.',
required: true,
}),
},
async run(context) {
const { accountId, messageId } = context.propsValue;
const response = await zohoMailApiCall({
auth: context.auth,
method: HttpMethod.PUT,
resourceUri: `/accounts/${accountId}/updatemessage`,
body: {
mode: 'markAsRead',
messageId: [messageId],
},
});
return response;
},
});

View File

@@ -0,0 +1,36 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction } from '@activepieces/pieces-framework';
import { zohoMailApiCall } from '../common';
import { zohoMailAuth } from '../common/auth';
import { accountId, folderId, messageId } from '../common/props';
export const markEmailAsUnreadAction = createAction({
auth: zohoMailAuth,
name: 'mark_email_as_unread',
displayName: 'Mark Emai as Unread',
description: 'Marks an email as unread.',
props: {
accountId: accountId({ displayName: 'Account', required: true }),
folderId: folderId({ displayName: 'Folder', required: true }),
messageId: messageId({
displayName: 'Message ID',
description: 'The ID of the email message to mark as unread.',
required: true,
}),
},
async run(context) {
const { accountId, messageId } = context.propsValue;
const response = await zohoMailApiCall({
auth: context.auth,
method: HttpMethod.PUT,
resourceUri: `/accounts/${accountId}/updatemessage`,
body: {
mode: 'markAsUnread',
messageId: [messageId],
},
});
return response;
},
});

View File

@@ -0,0 +1,45 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction } from '@activepieces/pieces-framework';
import { zohoMailApiCall } from '../common';
import { zohoMailAuth } from '../common/auth';
import { accountId, folderId, messageId } from '../common/props';
export const moveEmailAction = createAction({
auth: zohoMailAuth,
name: 'move_email',
displayName: 'Move Email to Folder',
description: 'Moves an email to a different folder.',
props: {
accountId: accountId({ displayName: 'Account', required: true }),
folderId: folderId({ displayName: 'Current Folder', required: true }),
messageId: messageId({
displayName: 'Message ID',
description: 'The ID of the email message to move.',
required: true,
}),
destfolderId: folderId({
displayName: 'Destination Folder',
description: 'Select the folder to move the email to.',
required: true,
}),
},
async run(context) {
const { accountId, destfolderId, messageId, folderId } = context.propsValue;
const response = await zohoMailApiCall({
auth: context.auth,
method: HttpMethod.PUT,
resourceUri: `/accounts/${accountId}/updatemessage`,
body: {
mode: 'moveMessage',
destfolderId: destfolderId,
messageId: [messageId],
isFolderSpecific: true,
folderId: folderId,
},
});
return response;
},
});

View File

@@ -0,0 +1,136 @@
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
import { Property, createAction } from '@activepieces/pieces-framework';
import FormData from 'form-data';
import { zohoMailApiCall } from '../common';
import { zohoMailAuth } from '../common/auth';
import { accountId, fromAddress } from '../common/props';
export const sendEmailAction = createAction({
auth: zohoMailAuth,
name: 'send_email',
displayName: 'Send Email',
description: 'Sends an email.',
props: {
accountId: accountId({ displayName: 'Account', required: true }),
fromAddress: fromAddress({ displayName: 'From Email Address', required: true }),
toAddress: Property.ShortText({
displayName: 'To Email Address',
description: "Recipient's email address.",
required: true,
}),
subject: Property.LongText({
displayName: 'Subject',
required: true,
}),
mailFormat: Property.StaticDropdown({
displayName: 'Mail Format',
required: true,
options: {
options: [
{ label: 'HTML', value: 'html' },
{ label: 'Plain Text', value: 'plaintext' },
],
},
defaultValue: 'html',
}),
content: Property.LongText({
displayName: 'Content',
description: 'HTML or plain text content of the email.',
required: true,
}),
ccAddress: Property.ShortText({
displayName: 'CC Email Address',
description: "CC recipient's email address.",
required: false,
}),
bccAddress: Property.ShortText({
displayName: 'BCC Email Address',
description: "BCC recipient's email address.",
required: false,
}),
askReceipt: Property.StaticDropdown({
displayName: 'Ask for Read Receipt',
required: false,
options: {
options: [
{ label: 'Yes', value: 'yes' },
{ label: 'No', value: 'no' },
],
},
}),
attachment: Property.File({
displayName: 'Attachment',
required: false,
}),
attachmentName: Property.ShortText({
displayName: 'Attachment Name',
description: 'In case you want to change the name of the attachment.',
required: false,
}),
},
async run(context) {
const {
accountId,
fromAddress,
toAddress,
ccAddress,
bccAddress,
subject,
content,
mailFormat,
askReceipt,
attachment,
attachmentName,
} = context.propsValue;
const requestBody: Record<string, unknown> = {
fromAddress,
toAddress,
subject,
content,
mailFormat: mailFormat ?? 'html',
};
if (ccAddress) requestBody['ccAddress'] = ccAddress;
if (bccAddress) requestBody['bccAddress'] = bccAddress;
if (askReceipt) requestBody['askReceipt'] = askReceipt;
if (attachment) {
const formData = new FormData();
formData.append(
'attach',
Buffer.from(attachment.base64, 'base64'),
attachmentName || attachment.filename,
);
const location = context.auth.props?.['location'] ?? 'zoho.com';
const baseUrl = `https://mail.${location}/api`;
const uploadResponse = await httpClient.sendRequest<{
data: { storeName: string; attachmentName: string; attachmentPath: string }[];
}>({
url: baseUrl + `/accounts/${accountId}/messages/attachments?uploadType=multipart`,
method: HttpMethod.POST,
body: formData,
headers: {
...formData.getHeaders(),
Authorization: `Zoho-oauthtoken ${context.auth.access_token}`,
},
});
requestBody['attachments'] = uploadResponse.body.data;
}
const response = await zohoMailApiCall({
auth: context.auth,
method: HttpMethod.POST,
resourceUri: `/accounts/${accountId}/messages`,
body: requestBody,
});
return response;
},
});

View File

@@ -0,0 +1,36 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction } from '@activepieces/pieces-framework';
import { zohoMailApiCall } from '../common';
import { zohoMailAuth } from '../common/auth';
import { accountId, folderId, messageId } from '../common/props';
export const unarchiveEmailAction = createAction({
auth: zohoMailAuth,
name: 'unarchive_email',
displayName: 'Unarchive Email',
description: 'Unarchives an email.',
props: {
accountId: accountId({ displayName: 'Account', required: true }),
folderId: folderId({ displayName: 'Folder', required: true }),
messageId: messageId({
displayName: 'Message ID',
description: 'The ID of the email message to unarchive.',
required: true,
}),
},
async run(context) {
const { accountId, messageId } = context.propsValue;
const response = await zohoMailApiCall({
auth: context.auth,
method: HttpMethod.PUT,
resourceUri: `/accounts/${accountId}/updatemessage`,
body: {
mode: 'unArchiveMails',
messageId: [messageId],
},
});
return response;
},
});

View File

@@ -0,0 +1,49 @@
import { PieceAuth, Property } from '@activepieces/pieces-framework';
export const zohoMailAuth = PieceAuth.OAuth2({
props: {
location: Property.StaticDropdown({
displayName: 'Location',
description: 'The location of your Zoho Mail account.',
required: true,
options: {
options: [
{
label: 'zoho.eu (Europe)',
value: 'zoho.eu',
},
{
label: 'zoho.com (United States)',
value: 'zoho.com',
},
{
label: 'zoho.com.au (Australia)',
value: 'zoho.com.au',
},
{
label: 'zoho.jp (Japan)',
value: 'zoho.jp',
},
{
label: 'zoho.in (India)',
value: 'zoho.in',
},
{
label: 'zohocloud.ca (Canada)',
value: 'zohocloud.ca',
},
],
},
}),
},
description: 'Authentication for Zoho Desk',
scope: [
'ZohoMail.accounts.READ',
'ZohoMail.messages.ALL',
'ZohoMail.folders.ALL',
'ZohoMail.organization.accounts.READ',
],
authUrl: 'https://accounts.{location}/oauth/v2/auth',
tokenUrl: 'https://accounts.{location}/oauth/v2/token',
required: true,
});

View File

@@ -0,0 +1,85 @@
import {
HttpMessageBody,
HttpMethod,
HttpRequest,
QueryParams,
httpClient,
} from '@activepieces/pieces-common';
import { FilesService, PiecePropValueSchema } from '@activepieces/pieces-framework';
import { Attachment, ParsedMail, simpleParser } from 'mailparser';
import { zohoMailAuth } from './auth';
export type ZohoMailApiCallParams = {
auth: PiecePropValueSchema<typeof zohoMailAuth>;
method: HttpMethod;
resourceUri: string;
query?: Record<string, string | number | string[] | undefined>;
body?: any;
};
export async function zohoMailApiCall<T extends HttpMessageBody>({
auth,
method,
resourceUri,
query,
body,
}: ZohoMailApiCallParams): Promise<T> {
const location = auth.props?.['location'] ?? 'zoho.com';
const baseUrl = `https://mail.${location}/api`;
const qs: QueryParams = {};
if (query) {
for (const [key, value] of Object.entries(query)) {
if (value !== null && value !== undefined) {
qs[key] = String(value);
}
}
}
const request: HttpRequest = {
method,
url: baseUrl + resourceUri,
headers: {
Authorization: `Zoho-oauthtoken ${auth.access_token}`,
},
queryParams: qs,
body,
};
const response = await httpClient.sendRequest<T>(request);
return response.body;
}
export async function parseStream(stream: string | Buffer): Promise<ParsedMail> {
return new Promise<ParsedMail>((resolve, reject) => {
simpleParser(stream, (err, parsed) => {
if (err) {
reject(err);
} else {
resolve(parsed);
}
});
});
}
export async function convertAttachment(attachments: Attachment[], files: FilesService) {
const promises = attachments.map(async (attachment) => {
try {
const fileName = attachment.filename ?? `attachment-${Date.now()}`;
return {
fileName,
mimeType: attachment.contentType,
size: attachment.size,
data: await files.write({
fileName: fileName,
data: attachment.content,
}),
};
} catch (error) {
console.error(`Failed to process attachment: ${attachment.filename}`, error);
return null;
}
});
const results = await Promise.all(promises);
return results.filter((result) => result !== null);
}

View File

@@ -0,0 +1,192 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { PiecePropValueSchema, Property } from '@activepieces/pieces-framework';
import { zohoMailApiCall } from '.';
import { zohoMailAuth } from './auth';
interface DropdownParams {
displayName: string;
description?: string;
required: boolean;
}
export const accountId = (params: DropdownParams) =>
Property.Dropdown({
auth: zohoMailAuth,
displayName: params.displayName,
description: params.description,
refreshers: [],
required: params.required,
options: async ({ auth }) => {
if (!auth) {
return {
placeholder: 'Please connect your account first.',
options: [],
disabled: true,
};
}
const authValue = auth as PiecePropValueSchema<typeof zohoMailAuth>;
const response = await zohoMailApiCall<{
data: { accountId: string; displayName: string }[];
}>({
auth: authValue,
method: HttpMethod.GET,
resourceUri: '/accounts',
});
return {
disabled: false,
options: response.data.map((account) => {
return {
label: account.displayName || account.accountId,
value: account.accountId,
};
}),
};
},
});
export const folderId = (params: DropdownParams) =>
Property.Dropdown({
auth: zohoMailAuth,
displayName: params.displayName,
description: params.description,
refreshers: ['accountId'],
required: params.required,
options: async ({ auth, accountId }) => {
if (!auth) {
return {
placeholder: 'Please connect your account first.',
options: [],
disabled: true,
};
}
if (!accountId) {
return {
placeholder: 'Please select Account first.',
options: [],
disabled: true,
};
}
const authValue = auth as PiecePropValueSchema<typeof zohoMailAuth>;
const response = await zohoMailApiCall<{
data: { folderId: string; path: string }[];
}>({
auth: authValue,
method: HttpMethod.GET,
resourceUri: `/accounts/${accountId}/folders`,
});
return {
disabled: false,
options: response.data.map((folder) => {
return {
label: folder.path || folder.folderId,
value: folder.folderId,
};
}),
};
},
});
export const messageId = (params: DropdownParams) =>
Property.Dropdown({
auth: zohoMailAuth,
displayName: params.displayName,
description: params.description,
refreshers: ['accountId', 'folderId'],
required: params.required,
options: async ({ auth, accountId, folderId }) => {
if (!auth) {
return {
placeholder: 'Please connect your account first.',
options: [],
disabled: true,
};
}
if (!accountId) {
return {
placeholder: 'Please select Account first.',
options: [],
disabled: true,
};
}
if (!folderId) {
return {
placeholder: 'Please select Folder first.',
options: [],
disabled: true,
};
}
const authValue = auth as PiecePropValueSchema<typeof zohoMailAuth>;
const response = await zohoMailApiCall<{
data: { messageId: string; subject: string }[];
}>({
auth: authValue,
method: HttpMethod.GET,
resourceUri: `/accounts/${accountId}/messages/view`,
query: {
folderId: folderId as string,
limit: 50,
},
});
return {
disabled: false,
options: response.data.map((message) => {
return {
label: message.subject,
value: message.messageId,
};
}),
};
},
});
export const fromAddress = (params: DropdownParams) =>
Property.Dropdown({
auth: zohoMailAuth,
displayName: params.displayName,
description: params.description,
refreshers: ['accountId'],
required: params.required,
options: async ({ auth, accountId }) => {
if (!auth) {
return {
placeholder: 'Please connect your account first.',
options: [],
disabled: true,
};
}
if (!accountId) {
return {
placeholder: 'Please select Account first.',
options: [],
disabled: true,
};
}
const authValue = auth as PiecePropValueSchema<typeof zohoMailAuth>;
const response = await zohoMailApiCall<{
data: { sendMailDetails: { fromAddress: string }[] };
}>({
auth: authValue,
method: HttpMethod.GET,
resourceUri: `/accounts/${accountId}`,
});
return {
disabled: false,
options: response.data.sendMailDetails.map((account) => {
return {
label: account.fromAddress,
value: account.fromAddress,
};
}),
};
},
});

View File

@@ -0,0 +1,138 @@
import {
DedupeStrategy,
HttpMethod,
Polling,
QueryParams,
pollingHelper,
} from '@activepieces/pieces-common';
import {
AppConnectionValueForAuthProperty,
PiecePropValueSchema,
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { zohoMailApiCall } from '../common';
import { zohoMailAuth } from '../common/auth';
import { accountId, folderId } from '../common/props';
type Props = {
accountId?: string;
folderId?: string;
};
const polling: Polling<AppConnectionValueForAuthProperty<typeof zohoMailAuth>, Props> = {
strategy: DedupeStrategy.TIMEBASED,
async items({ auth, propsValue, lastFetchEpochMS }) {
const { accountId, folderId } = propsValue;
let page = 1;
let hasMore = true;
const allMessages = [];
do {
const queryParams: QueryParams = {
start: page.toString(),
limit: lastFetchEpochMS === 0 ? '10' : '200',
};
if (folderId) {
queryParams['folderId'] = folderId;
}
const response = await zohoMailApiCall<{ data: { receivedTime: string }[] }>({
auth,
resourceUri: `/accounts/${accountId}/messages/view`,
method: HttpMethod.GET,
query: queryParams,
});
const messages = response.data || [];
if (messages.length === 0) {
break;
}
for (const msg of messages) {
const receivedTime = Number(msg.receivedTime);
if (lastFetchEpochMS > 0 && receivedTime <= lastFetchEpochMS) {
hasMore = false;
break; // Stop processing this page
}
allMessages.push(msg); // Only add if it's newer
}
// if it's test mode, only fetch first page
if (lastFetchEpochMS === 0) break;
if (!hasMore) {
break;
}
page++;
} while (hasMore);
return allMessages.map((msg) => {
return {
epochMilliSeconds: Number(msg.receivedTime),
data: msg,
};
});
},
};
export const newEmailReceivedTrigger = createTrigger({
auth: zohoMailAuth,
name: 'new_email_received',
displayName: 'New Email Received',
description: 'Triggers when a new email is received in a specified folder (or inbox).',
props: {
accountId: accountId({ displayName: 'Account', required: true }),
folderId: folderId({
displayName: 'Folder',
description:
'Select the folder to watch. If empty, watches the inbox/all messages based on API default.',
required: false,
}),
},
type: TriggerStrategy.POLLING,
async onEnable(context) {
await pollingHelper.onEnable(polling, {
auth: context.auth,
store: context.store,
propsValue: context.propsValue,
});
},
async onDisable(context) {
await pollingHelper.onDisable(polling, {
auth: context.auth,
store: context.store,
propsValue: context.propsValue,
});
},
async test(context) {
return await pollingHelper.test(polling, context);
},
async run(context) {
return await pollingHelper.poll(polling, context);
},
sampleData: {
summary: 'test mail',
sentDateInGMT: '1749273996000',
calendarType: 0,
subject: 'test mail',
messageId: '1749293811021114900',
flagid: 'flag_not_set',
status2: '0',
priority: '3',
hasInline: 'false',
toAddress: '',
folderId: '7723149000000002014',
ccAddress: 'Not Provided',
hasAttachment: '0',
size: '238',
sender: 'john.doe@gmail.com',
receivedTime: '1749293811018',
fromAddress: 'john.doe@gmail.com',
status: '0',
},
});