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,100 @@
{
"Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.": "Du kannst API-Schlüssel erhalten, indem du **Einstellungen->Arbeitsbereich-Einstellungen-> API** kontaktierst.",
"Create Subscription": "Abonnement erstellen",
"Update Subscription": "Abonnement aktualisieren",
"Add Subscription to Automation": "Abonnement zur Automatisierung hinzufügen",
"List Automations": "Listenautomationen",
"List Posts": "Listenbeiträge",
"Custom API Call": "Eigener API-Aufruf",
"Creates a new subscription.": "Erstellt ein neues Abonnement.",
"Update an existing subscription.": "Aktualisiere ein bestehendes Abonnement.",
"Adds an existing subscription to a specific automation flow.": "Fügt ein bestehendes Abonnement zu einem bestimmten Automatisierungsfluss hinzu.",
"Retrieves a list of automations for a publication.": "Ruft eine Liste von Automatisierungen für eine Publikation ab.",
"Retrieves all posts belonging to a specific publication.": "Ruft alle Beiträge einer bestimmten Publikation ab.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Publication": "Veröffentlichung",
"Email": "E-Mail",
"Reactivate Existing": "Existierende Reaktivieren",
"Send Welcome Email": "Willkommens-E-Mail senden",
"UTM Source": "UTM-Quelle",
"UTM Medium": "UTM Medium",
"UTM Campaign": "UTM-Kampagne",
"Referring Site": "Verweisende Site",
"Referral Code": "Empfehlungscode",
"Subscription Tier": "Abonnementstufe",
"Custom Fields": "Eigene Felder",
"Stripe Customer ID": "Stripe-Kunden-ID",
"Double Opt-in Override": "Doppel-Opt-in-Überschreibung",
"Premium Tier IDs": "Premium-IDs",
"Automation IDs": "Automatisierungs-IDs",
"Subscription ID": "Abonnement-ID",
"Unsubscribe": "Abmelden",
"Automation ID": "Automatisierungs-ID",
"Subscription Email": "Abonnement-E-Mail",
"Limit": "Limit",
"Page": "Seite",
"Expand Results": "Ergebnisse erweitern",
"Audience": "Zielgruppe",
"Platform": "Plattform",
"Status": "Status",
"Content Tags": "Inhalts-Tags",
"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 email address of the new subscription.": "Die E-Mail-Adresse des neuen Abonnements.",
"Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.": "Gibt an, ob das Abonnement reaktiviert werden soll, wenn es bereits abgemeldet ist. Benutzen Sie nur, wenn das Abonnement bewusst erneut abonniert wird.",
"Whether to send the default welcome email to the subscription.": "Gibt an, ob die Standard-Willkommens-E-Mail an das Abonnement gesendet werden soll.",
"The source of the subscription.": "Die Quelle des Abonnements.",
"The medium of the subscription.": "Das Medium des Abonnements.",
"The acquisition campaign of the subscription.": "Die Akquisitionskampagne des Abonnements.",
"The website that the subscription was referred from.": "Die Website, von der das Abonnement verwiesen wurde.",
"A subscription's referral_code to give them credit for the new subscription.": "Der referral_code eines Abonnements, um ihm das neue Abonnement gutzuschreiben.",
"The tier for this subscription.": "Der Status für dieses Abonnement.",
"The Stripe customer ID for this subscription.": "Die Stripe-Kunden-ID für dieses Abonnement.",
"Override publication double-opt settings for this subscription.": "Doppelte Opt-Einstellungen für dieses Abonnement überschreiben.",
"The IDs of the premium tiers this subscription is associated with.": "Die IDs der Premium-Stufen, mit denen dieses Abonnement verbunden ist.",
"Enroll the subscription into automations after their subscription has been created.": "Melden Sie sich nach der Erstellung des Abonnements für Automatisierungen an.",
"Set the tier for this subscription.": "Legen Sie den Status für dieses Abonnement fest.",
"The Stripe Customer ID of the subscription.": "Die Stripe-Kunden-ID des Abonnements.",
"Whether to unsubscribe this subscription from the publication.": "Gibt an, ob dieses Abonnement von der Publikation abgemeldet werden soll.",
"The email address of the subscription. Provide either Email or Subscription ID.": "Die E-Mail-Adresse des Abonnements. Geben Sie entweder E-Mail oder Abonnement-ID an.",
"Override publication double-opt settings for this subscription (e.g., \"on\").": "Überschreiben Sie die Publikations-Doppelopt-Einstellungen für dieses Abonnement (z.B. \"on\").",
"A limit on the number of automations to be returned (1-100, default 10).": "Ein Limit für die Anzahl der zurückzugebenden Automatisierungen (1-100, Standard 10).",
"The page number for pagination (default 1).": "Die Seitenzahl für die Seitenzahl (Standard 1).",
"Optionally expand the results by adding additional information.": "Erweitern Sie die Ergebnisse durch Hinzufügen zusätzlicher Informationen.",
"Filter posts by content tags. Returns posts with ANY of the specified tags.": "Filtern Sie Beiträge nach Inhalts-Tags. Gibt Beiträge mit JEDE der angegebenen Tags zurück.",
"Number of posts to return (1-100, default 10).": "Anzahl der zurückzugebenden Beiträge (1-100, Standard 10).",
"Page number for pagination (default 1).": "Seitenzahl für die Seitennummerierung (Standard 1).",
"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..",
"Free": "Kostenlos",
"Premium": "Prämie",
"Stats": "Statistik",
"Free Web Content": "Freier Webcontent",
"Free Email Content": "Free Email Content",
"Free RSS Content": "Freier RSS-Inhalt",
"Premium Web Content": "Premium-Webcontent",
"Premium Email Content": "Premium Email Content",
"All": "Alle",
"Web": "Web",
"Both": "Beides",
"Draft": "Entwurf",
"Confirmed": "Bestätigt",
"Archived": "Archiviert",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD",
"New Post Sent": "Neuer Beitrag gesendet",
"User Unsubscribes": "Benutzer abbestellen",
"New Subscription Confirmation": "Bestätigung des neuen Abonnements",
"Triggers when a new post is sent.": "Wird ausgelöst, wenn ein neuer Beitrag gesendet wird.",
"Triggers when a user unsubscribes.": "Wird ausgelöst, wenn ein Benutzer sich abmeldet.",
"Triggers when a new subscriber confirms their subscription.": "Löst aus, wenn ein neuer Abonnent sein Abonnement bestätigt."
}

View File

@@ -0,0 +1,100 @@
{
"Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.": "Usted puede obtener la clave API naviando a **Configuración->Configuración-espacio de trabajo> API**.",
"Create Subscription": "Crear suscripción",
"Update Subscription": "Actualizar suscripción",
"Add Subscription to Automation": "Añadir suscripción a automatización",
"List Automations": "Lista de automatizaciones",
"List Posts": "Listar Mensajes",
"Custom API Call": "Llamada API personalizada",
"Creates a new subscription.": "Crea una nueva suscripción.",
"Update an existing subscription.": "Actualizar una suscripción existente.",
"Adds an existing subscription to a specific automation flow.": "Añade una suscripción existente a un flujo de automatización específico.",
"Retrieves a list of automations for a publication.": "Recuperar una lista de automatizaciones para una publicación.",
"Retrieves all posts belonging to a specific publication.": "Devuelve todos los mensajes pertenecientes a una publicación específica.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Publication": "Publicación",
"Email": "E-mail",
"Reactivate Existing": "Reactivar existente",
"Send Welcome Email": "Enviar Email de Bienvenida",
"UTM Source": "Fuente UTM",
"UTM Medium": "Medios UTM",
"UTM Campaign": "Campaña UTM",
"Referring Site": "Refiriendo sitio",
"Referral Code": "Código de referencia",
"Subscription Tier": "Nivel de suscripción",
"Custom Fields": "Campos personalizados",
"Stripe Customer ID": "ID de cliente de Stripe",
"Double Opt-in Override": "Reemplazo de doble opción",
"Premium Tier IDs": "IDs de nivel Premium",
"Automation IDs": "ID de automatización",
"Subscription ID": "ID de suscripción",
"Unsubscribe": "Darse de baja",
"Automation ID": "ID de automatización",
"Subscription Email": "Correo de suscripción",
"Limit": "Límite",
"Page": "Pgina",
"Expand Results": "Expandir resultados",
"Audience": "Público",
"Platform": "Plataforma",
"Status": "Estado",
"Content Tags": "Etiquetas de contenido",
"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 email address of the new subscription.": "La dirección de correo electrónico de la nueva suscripción.",
"Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.": "Si quieres reactivar la suscripción si ya se han dado de baja. Úsalo sólo si la suscripción se vuelve a reenviar sabiamente.",
"Whether to send the default welcome email to the subscription.": "Si enviar o no el correo electrónico de bienvenida por defecto a la suscripción.",
"The source of the subscription.": "La fuente de la suscripción.",
"The medium of the subscription.": "El medio de la suscripción.",
"The acquisition campaign of the subscription.": "La campaña de adquisición de la suscripción.",
"The website that the subscription was referred from.": "La página web a la que se remitió la suscripción.",
"A subscription's referral_code to give them credit for the new subscription.": "El código de referencia de una suscripción para darles crédito por la nueva suscripción.",
"The tier for this subscription.": "El nivel para esta suscripción.",
"The Stripe customer ID for this subscription.": "El ID de cliente de Stripe para esta suscripción.",
"Override publication double-opt settings for this subscription.": "Anular la configuración de doble opción de publicación para esta suscripción.",
"The IDs of the premium tiers this subscription is associated with.": "Los IDs de los niveles premium con los que esta suscripción está asociada.",
"Enroll the subscription into automations after their subscription has been created.": "Inscríbase la suscripción en automatizaciones después de que su suscripción haya sido creada.",
"Set the tier for this subscription.": "Establecer el nivel para esta suscripción.",
"The Stripe Customer ID of the subscription.": "El ID de cliente de Stripe de la suscripción.",
"Whether to unsubscribe this subscription from the publication.": "Si desea darse de baja de esta suscripción a la publicación.",
"The email address of the subscription. Provide either Email or Subscription ID.": "La dirección de correo electrónico de la suscripción. Proporcione el ID de correo electrónico o suscripción.",
"Override publication double-opt settings for this subscription (e.g., \"on\").": "Anular la configuración de doble opción de publicación para esta suscripción (por ej., \"en\").",
"A limit on the number of automations to be returned (1-100, default 10).": "Un límite en el número de automatizaciones que se devolverán (1-100, por defecto 10).",
"The page number for pagination (default 1).": "El número de página de paginación (por defecto 1).",
"Optionally expand the results by adding additional information.": "Opcionalmente expandir los resultados añadiendo información adicional.",
"Filter posts by content tags. Returns posts with ANY of the specified tags.": "Filtrar mensajes por etiquetas de contenido. Devuelve mensajes con CUALQUIER de las etiquetas especificadas.",
"Number of posts to return (1-100, default 10).": "Número de publicaciones a devolver (1-100, por defecto 10).",
"Page number for pagination (default 1).": "Número de página para paginación (por defecto 1).",
"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.",
"Free": "Gratis",
"Premium": "Premium",
"Stats": "Estadísticas",
"Free Web Content": "Contenido web gratuito",
"Free Email Content": "Free Email Content",
"Free RSS Content": "Contenido RSS gratuito",
"Premium Web Content": "Contenido web premium",
"Premium Email Content": "Premium Email Content",
"All": "Todos",
"Web": "Web",
"Both": "Ambos",
"Draft": "Borrador",
"Confirmed": "Confirmada",
"Archived": "Archivado",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO",
"New Post Sent": "Nuevo mensaje enviado",
"User Unsubscribes": "Darse de baja del usuario",
"New Subscription Confirmation": "Confirmación de nueva suscripción",
"Triggers when a new post is sent.": "Dispara cuando se envía una nueva publicación.",
"Triggers when a user unsubscribes.": "Se activa cuando un usuario se da de baja.",
"Triggers when a new subscriber confirms their subscription.": "Dispara cuando un nuevo suscriptor confirma su suscripción."
}

View File

@@ -0,0 +1,100 @@
{
"Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.": "Vous pouvez obtenir la clé API en naviguant dans **Paramètres->Paramètres de l'espace de travail-> API**.",
"Create Subscription": "Créer un abonnement",
"Update Subscription": "Mettre à jour l'abonnement",
"Add Subscription to Automation": "Ajouter un abonnement à l'automatisation",
"List Automations": "Automatisation de la liste",
"List Posts": "Lister les messages",
"Custom API Call": "Appel API personnalisé",
"Creates a new subscription.": "Crée un nouvel abonnement.",
"Update an existing subscription.": "Mettre à jour un abonnement existant.",
"Adds an existing subscription to a specific automation flow.": "Ajoute un abonnement existant à un flux d'automatisation spécifique.",
"Retrieves a list of automations for a publication.": "Récupère une liste d'automatisations pour une publication.",
"Retrieves all posts belonging to a specific publication.": "Récupère tous les messages appartenant à une publication spécifique.",
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un point de terminaison spécifique",
"Publication": "Publication",
"Email": "Courriel",
"Reactivate Existing": "Réactiver l'existant",
"Send Welcome Email": "Envoyer un e-mail de bienvenue",
"UTM Source": "Source UTM",
"UTM Medium": "UTM Moyen",
"UTM Campaign": "Campagne UTM",
"Referring Site": "Site référant",
"Referral Code": "Code de parrainage",
"Subscription Tier": "Niveau d'Abonnement",
"Custom Fields": "Champs personnalisés",
"Stripe Customer ID": "ID client Stripe",
"Double Opt-in Override": "Surcharge double opt-in",
"Premium Tier IDs": "ID de niveau premium",
"Automation IDs": "ID d'automatisation",
"Subscription ID": "ID de l'abonnement",
"Unsubscribe": "Se désabonner",
"Automation ID": "ID de l'automatisation",
"Subscription Email": "E-mail de l'abonnement",
"Limit": "Limite",
"Page": "Page",
"Expand Results": "Développer les résultats",
"Audience": "Audience",
"Platform": "Plateforme",
"Status": "Statut",
"Content Tags": "Tags de contenu",
"Method": "Méthode",
"Headers": "En-têtes",
"Query Parameters": "Paramètres de requête",
"Body": "Corps",
"Response is Binary ?": "La réponse est Binaire ?",
"No Error on Failure": "Aucune erreur en cas d'échec",
"Timeout (in seconds)": "Délai d'attente (en secondes)",
"The email address of the new subscription.": "L'adresse email du nouvel abonnement.",
"Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.": "Réactiver ou non l'abonnement s'il s'est déjà désabonné. N'utiliser que si l'abonnement se réabonne sciemment.",
"Whether to send the default welcome email to the subscription.": "Si vous voulez envoyer l'email de bienvenue par défaut à l'abonnement.",
"The source of the subscription.": "La source de l'abonnement.",
"The medium of the subscription.": "Le support de l'abonnement.",
"The acquisition campaign of the subscription.": "La campagne d'acquisition de l'abonnement.",
"The website that the subscription was referred from.": "Le site Web sur lequel l'abonnement a été mentionné.",
"A subscription's referral_code to give them credit for the new subscription.": "Un code referral_code d'abonnement pour leur donner du crédit pour le nouvel abonnement.",
"The tier for this subscription.": "Le niveau pour cet abonnement.",
"The Stripe customer ID for this subscription.": "L'ID client Stripe pour cet abonnement.",
"Override publication double-opt settings for this subscription.": "Remplacer les paramètres de double option de publication pour cet abonnement.",
"The IDs of the premium tiers this subscription is associated with.": "Les IDs des paliers premium auxquels cet abonnement est associé.",
"Enroll the subscription into automations after their subscription has been created.": "Inscrire l'abonnement dans les automatisations après la création de leur abonnement.",
"Set the tier for this subscription.": "Définissez le niveau pour cet abonnement.",
"The Stripe Customer ID of the subscription.": "L'ID client Stripe de l'abonnement.",
"Whether to unsubscribe this subscription from the publication.": "Si vous voulez vous désabonner de cette inscription.",
"The email address of the subscription. Provide either Email or Subscription ID.": "L'adresse e-mail de l'abonnement. Fournissez soit un e-mail soit un ID d'abonnement.",
"Override publication double-opt settings for this subscription (e.g., \"on\").": "Remplacer les paramètres de double option de publication pour cet abonnement (par exemple, \"on\").",
"A limit on the number of automations to be returned (1-100, default 10).": "Une limite au nombre d'automatisations à retourner (1-100, par défaut 10).",
"The page number for pagination (default 1).": "Le numéro de page pour la pagination (par défaut 1).",
"Optionally expand the results by adding additional information.": "Élargissez éventuellement les résultats en ajoutant des informations supplémentaires.",
"Filter posts by content tags. Returns posts with ANY of the specified tags.": "Filtrer les messages par tags de contenu. Renvoie les messages avec TOUTE étiquette spécifiée.",
"Number of posts to return (1-100, default 10).": "Nombre de messages à retourner (1-100, par défaut 10).",
"Page number for pagination (default 1).": "Numéro de page pour la pagination (par défaut 1).",
"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.",
"Free": "Gratuit",
"Premium": "Premium",
"Stats": "Stats",
"Free Web Content": "Contenu Web gratuit",
"Free Email Content": "Free Email Content",
"Free RSS Content": "Contenu RSS gratuit",
"Premium Web Content": "Contenu Web premium",
"Premium Email Content": "Premium Email Content",
"All": "Tous",
"Web": "Web",
"Both": "Les deux",
"Draft": "Brouillon",
"Confirmed": "Confirmé",
"Archived": "Archivé",
"GET": "OBTENIR",
"POST": "POSTER",
"PATCH": "PATCH",
"PUT": "EFFACER",
"DELETE": "SUPPRIMER",
"HEAD": "TÊTE",
"New Post Sent": "Nouveau message envoyé",
"User Unsubscribes": "Se désabonner de l'utilisateur",
"New Subscription Confirmation": "Confirmation d'abonnement",
"Triggers when a new post is sent.": "Déclenche lorsqu'un nouveau message est envoyé.",
"Triggers when a user unsubscribes.": "Déclenche lorsqu'un utilisateur se désabonne.",
"Triggers when a new subscriber confirms their subscription.": "Déclenche lorsqu'un nouvel abonné confirme son abonnement."
}

View File

@@ -0,0 +1,100 @@
{
"Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.": "API キーは **Settings->ワークスペース設定> API** に指定することで取得できます。",
"Create Subscription": "サブスクリプションを作成",
"Update Subscription": "サブスクリプションを更新",
"Add Subscription to Automation": "自動化にサブスクリプションを追加",
"List Automations": "リストの自動化",
"List Posts": "投稿一覧",
"Custom API Call": "カスタムAPI通話",
"Creates a new subscription.": "新しいサブスクリプションを作成します。",
"Update an existing subscription.": "既存の契約を更新します。",
"Adds an existing subscription to a specific automation flow.": "特定のオートメーションフローに既存の契約を追加します。",
"Retrieves a list of automations for a publication.": "出版物の自動化リストを取得します。",
"Retrieves all posts belonging to a specific publication.": "特定の出版物に属するすべての投稿を取得します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Publication": "公開",
"Email": "Eメールアドレス",
"Reactivate Existing": "既存のものを再度有効にする",
"Send Welcome Email": "ウェルカムメールを送信",
"UTM Source": "UTM ソース",
"UTM Medium": "UTM Medium",
"UTM Campaign": "UTMキャンペーン",
"Referring Site": "参照サイト",
"Referral Code": "紹介コード",
"Subscription Tier": "サブスクリプションレベル",
"Custom Fields": "カスタムフィールド",
"Stripe Customer ID": "Stripe Customer ID",
"Double Opt-in Override": "ダブルオプトインの上書き",
"Premium Tier IDs": "プレミアムTier ID",
"Automation IDs": "オートメーションID",
"Subscription ID": "サブスクリプションID",
"Unsubscribe": "購読解除",
"Automation ID": "自動化ID",
"Subscription Email": "サブスクリプションメール",
"Limit": "制限",
"Page": "ページ",
"Expand Results": "結果を展開",
"Audience": "オーディエンス:",
"Platform": "プラットフォーム",
"Status": "ステータス",
"Content Tags": "コンテンツタグ",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The email address of the new subscription.": "新しいサブスクリプションのメールアドレス",
"Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.": "すでに購読を解除している場合、購読を再開するかどうかを設定します。購読が意図的に再購読されている場合にのみ使用してください。",
"Whether to send the default welcome email to the subscription.": "デフォルトのウェルカムメールをサブスクリプションに送信するかどうか。",
"The source of the subscription.": "サブスクリプションのソース",
"The medium of the subscription.": "サブスクリプションの媒体。",
"The acquisition campaign of the subscription.": "サブスクリプションの取得キャンペーン。",
"The website that the subscription was referred from.": "サブスクリプションから参照されたウェブサイト。",
"A subscription's referral_code to give them credit for the new subscription.": "新しいサブスクリプションのクレジットを与える契約の referral_code です。",
"The tier for this subscription.": "このサブスクリプションの階層。",
"The Stripe customer ID for this subscription.": "このサブスクリプションのStripe顧客ID。",
"Override publication double-opt settings for this subscription.": "このサブスクリプションのパブリケーションダブルオプト設定を上書きします。",
"The IDs of the premium tiers this subscription is associated with.": "このサブスクリプションに関連付けられているプレミアム階層のID。",
"Enroll the subscription into automations after their subscription has been created.": "サブスクリプションが作成された後、自動化にサブスクリプションを登録します。",
"Set the tier for this subscription.": "このサブスクリプションの階層を設定します。",
"The Stripe Customer ID of the subscription.": "サブスクリプションのStripe顧客ID。",
"Whether to unsubscribe this subscription from the publication.": "このサブスクリプションの購読を解除するかどうかを設定します。",
"The email address of the subscription. Provide either Email or Subscription ID.": "サブスクリプションのメールアドレス メールアドレスまたはサブスクリプションIDを入力してください。",
"Override publication double-opt settings for this subscription (e.g., \"on\").": "このサブスクリプションのパブリケーションダブルオプト設定を上書きします (例: \"on\")。",
"A limit on the number of automations to be returned (1-100, default 10).": "返されるオートメーションの数の制限1-100、デフォルト10。",
"The page number for pagination (default 1).": "ページネーションのページ番号 (デフォルト 1)。",
"Optionally expand the results by adding additional information.": "必要に応じて追加情報を追加して結果を拡大します。",
"Filter posts by content tags. Returns posts with ANY of the specified tags.": "コンテンツタグで投稿をフィルタリングします。指定したタグの任意の投稿を返します。",
"Number of posts to return (1-100, default 10).": "Number of posts to return (1-100, default 10).",
"Page number for pagination (default 1).": "ページネーションのページ番号 (デフォルト 1)。",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"Free": "無料",
"Premium": "プレミアム",
"Stats": "統計",
"Free Web Content": "無料のWebコンテンツ",
"Free Email Content": "Free Email Content",
"Free RSS Content": "無料RSSコンテンツ",
"Premium Web Content": "プレミアムWebコンテンツ",
"Premium Email Content": "Premium Email Content",
"All": "すべて",
"Web": "ウェブ",
"Both": "両方とも",
"Draft": "下書き",
"Confirmed": "確認済み",
"Archived": "アーカイブ済み",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭",
"New Post Sent": "新しい投稿を送信しました",
"User Unsubscribes": "ユーザーの購読解除",
"New Subscription Confirmation": "新しいサブスクリプションの確認",
"Triggers when a new post is sent.": "新しい投稿が送信されたときにトリガーします。",
"Triggers when a user unsubscribes.": "ユーザーが購読を解除したときにトリガーします。",
"Triggers when a new subscriber confirms their subscription.": "新しい契約者がサブスクリプションを確認したときにトリガーします。"
}

View File

@@ -0,0 +1,100 @@
{
"Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.": "Je kunt de API-sleutel verkrijgen door te marineren in **Instellingen->Workspace Instellingen-> API**.",
"Create Subscription": "Abonnement aanmaken",
"Update Subscription": "Abonnement bijwerken",
"Add Subscription to Automation": "Voeg abonnement toe aan automatisering",
"List Automations": "Automatisering weergeven",
"List Posts": "Toon berichten",
"Custom API Call": "Custom API Call",
"Creates a new subscription.": "Maakt een nieuw abonnement aan.",
"Update an existing subscription.": "Een bestaand abonnement bijwerken.",
"Adds an existing subscription to a specific automation flow.": "Voegt een bestaand abonnement toe aan een specifieke automatisering.",
"Retrieves a list of automations for a publication.": "Haal een lijst op van automatiseringen voor een publicatie.",
"Retrieves all posts belonging to a specific publication.": "Haal alle berichten op die tot een specifieke publicatie behoren.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Publication": "Publicatie",
"Email": "E-mail",
"Reactivate Existing": "Heractiveer bestaande",
"Send Welcome Email": "Welkomst-e-mail verzenden",
"UTM Source": "UTM bron",
"UTM Medium": "UTM Medium",
"UTM Campaign": "UTM campagne",
"Referring Site": "Verwijzende site",
"Referral Code": "Verwijzingscode",
"Subscription Tier": "Abonnement Tier",
"Custom Fields": "Aangepaste velden",
"Stripe Customer ID": "Stripe klant ID",
"Double Opt-in Override": "Double Opt-in Override",
"Premium Tier IDs": "Premium Tier ID's",
"Automation IDs": "Automatisering IDs",
"Subscription ID": "Abonnement ID",
"Unsubscribe": "Afmelden",
"Automation ID": "Automation ID",
"Subscription Email": "Abonnement e-mail",
"Limit": "Limiet",
"Page": "Pagina",
"Expand Results": "Resultaten uitvouwen",
"Audience": "Auditie",
"Platform": "Platform",
"Status": "status",
"Content Tags": "Inhoud tags",
"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 email address of the new subscription.": "Het e-mailadres van het nieuwe abonnement.",
"Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.": "Of u het abonnement opnieuw activeert als ze al hebben afgemeld. Gebruik alleen als het abonnement bewust opnieuw wordt ingeschreven.",
"Whether to send the default welcome email to the subscription.": "Of u de standaard welkomstmail naar het abonnement wilt sturen.",
"The source of the subscription.": "De bron van het abonnement.",
"The medium of the subscription.": "Het medium van het abonnement.",
"The acquisition campaign of the subscription.": "De acquisitie campagne van het abonnement.",
"The website that the subscription was referred from.": "De website waar het abonnement van werd genoemd.",
"A subscription's referral_code to give them credit for the new subscription.": "Referal_code van een abonnement om ze te belonen voor het nieuwe abonnement.",
"The tier for this subscription.": "De tier voor dit abonnement.",
"The Stripe customer ID for this subscription.": "De Stripe klant-ID voor dit abonnement.",
"Override publication double-opt settings for this subscription.": "Publicatie dubbele optinstellingen overschrijven voor dit abonnement.",
"The IDs of the premium tiers this subscription is associated with.": "De IDs van de premium niveaus waarmee dit abonnement is verbonden.",
"Enroll the subscription into automations after their subscription has been created.": "Activeer het abonnement in automatiseringen nadat hun abonnement is aangemaakt.",
"Set the tier for this subscription.": "Stel de rang in voor dit abonnement.",
"The Stripe Customer ID of the subscription.": "De Stripe klant ID van het abonnement.",
"Whether to unsubscribe this subscription from the publication.": "Of u dit abonnement wilt opzeggen van de publicatie.",
"The email address of the subscription. Provide either Email or Subscription ID.": "Het e-mailadres van het abonnement. Geef e-mail of Abonnement ID.",
"Override publication double-opt settings for this subscription (e.g., \"on\").": "Publicatie dubbele opt-instellingen overschrijven voor dit abonnement (bijv. \"op\").",
"A limit on the number of automations to be returned (1-100, default 10).": "Een limiet op het aantal te retourneren automaties (1-100, standaard 10).",
"The page number for pagination (default 1).": "Het paginanummer voor paginering (standaard 1).",
"Optionally expand the results by adding additional information.": "Vergroot de resultaten optioneel door aanvullende informatie toe te voegen.",
"Filter posts by content tags. Returns posts with ANY of the specified tags.": "Berichten filteren op inhoudslabels. Retourneert posts met ELKE van de opgegeven tags.",
"Number of posts to return (1-100, default 10).": "Aantal berichten om terug te keren (1-100, standaard 10).",
"Page number for pagination (default 1).": "Paginanummer voor paginering (standaard 1).",
"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..",
"Free": "Vrij",
"Premium": "Premium",
"Stats": "Statistieken",
"Free Web Content": "Gratis webinhoud",
"Free Email Content": "Free Email Content",
"Free RSS Content": "Gratis RSS content",
"Premium Web Content": "Premium webcontent",
"Premium Email Content": "Premium Email Content",
"All": "Allemaal",
"Web": "Internet",
"Both": "Allebei",
"Draft": "Concept",
"Confirmed": "Bevestigd",
"Archived": "Gearchiveerd",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD",
"New Post Sent": "Nieuw bericht verzonden",
"User Unsubscribes": "Gebruiker uitschrijft",
"New Subscription Confirmation": "Bevestiging nieuw abonnement",
"Triggers when a new post is sent.": "Triggert wanneer een nieuw bericht wordt verzonden.",
"Triggers when a user unsubscribes.": "Triggert wanneer een gebruiker zich uitschrijft.",
"Triggers when a new subscriber confirms their subscription.": "Triggert wanneer een nieuwe abonnee zijn abonnement bevestigt."
}

View File

@@ -0,0 +1,100 @@
{
"Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.": "Você pode obter uma chave de API navegando em **Configurações->Configurações do espaço de trabalho-> API**.",
"Create Subscription": "Criar Assinatura",
"Update Subscription": "Atualizar assinatura",
"Add Subscription to Automation": "Adicionar Assinatura para Automação",
"List Automations": "Listar Automações",
"List Posts": "Listar postagens",
"Custom API Call": "Chamada de API personalizada",
"Creates a new subscription.": "Cria uma nova assinatura.",
"Update an existing subscription.": "Atualizar uma assinatura existente.",
"Adds an existing subscription to a specific automation flow.": "Adiciona uma assinatura existente a um fluxo de automação específico.",
"Retrieves a list of automations for a publication.": "Recupera uma lista de automações para uma publicação.",
"Retrieves all posts belonging to a specific publication.": "Recupera todos os posts pertencentes a uma publicação específica.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Publication": "Publicação",
"Email": "e-mail",
"Reactivate Existing": "Reativar Existente",
"Send Welcome Email": "Enviar Email de Boas-Vindas",
"UTM Source": "Fonte UTM",
"UTM Medium": "Médio UTM",
"UTM Campaign": "Campanha UTM",
"Referring Site": "Site de referência",
"Referral Code": "Código de Referência",
"Subscription Tier": "Nível de assinatura",
"Custom Fields": "Campos Personalizados",
"Stripe Customer ID": "ID do Cliente Stripe",
"Double Opt-in Override": "Substituição de Double Opt-in",
"Premium Tier IDs": "IDs de Nível Premium",
"Automation IDs": "IDs de automação",
"Subscription ID": "ID de assinatura",
"Unsubscribe": "Desinscrever",
"Automation ID": "ID de automação",
"Subscription Email": "E-mail de inscrição",
"Limit": "Limitar",
"Page": "Página",
"Expand Results": "Expandir Resultados",
"Audience": "Público",
"Platform": "Plataforma",
"Status": "Estado",
"Content Tags": "Tags de Conteúdo",
"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 email address of the new subscription.": "O endereço de e-mail da nova assinatura.",
"Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.": "Se é necessário reativar a subscrição se ela já tiver cancelado. Use somente se a subscrição for deliberadamente recrita.",
"Whether to send the default welcome email to the subscription.": "Se você deseja enviar o e-mail de boas-vindas padrão para a inscrição.",
"The source of the subscription.": "A fonte da assinatura.",
"The medium of the subscription.": "O meio da assinatura.",
"The acquisition campaign of the subscription.": "A campanha de aquisição da assinatura.",
"The website that the subscription was referred from.": "O site do qual a assinatura foi indicada.",
"A subscription's referral_code to give them credit for the new subscription.": "Indicação_code de uma assinatura para dar a eles crédito pela nova assinatura.",
"The tier for this subscription.": "O nível desta assinatura.",
"The Stripe customer ID for this subscription.": "O ID de cliente Stripe para esta assinatura.",
"Override publication double-opt settings for this subscription.": "Sobrescrever configurações de dupla publicação para essa assinatura.",
"The IDs of the premium tiers this subscription is associated with.": "Os IDs dos níveis premium que esta assinatura está associada.",
"Enroll the subscription into automations after their subscription has been created.": "Inscrever a assinatura em automações após sua assinatura ter sido criada.",
"Set the tier for this subscription.": "Defina o nível para esta assinatura.",
"The Stripe Customer ID of the subscription.": "O ID de Cliente Stripe da assinatura.",
"Whether to unsubscribe this subscription from the publication.": "Se deseja cancelar a assinatura da publicação.",
"The email address of the subscription. Provide either Email or Subscription ID.": "O endereço de e-mail da assinatura. Forneça o ID de e-mail ou assinatura.",
"Override publication double-opt settings for this subscription (e.g., \"on\").": "Substituir configurações de duplo opção de publicação para esta assinatura (por exemplo, \"on\").",
"A limit on the number of automations to be returned (1-100, default 10).": "Um limite para o número de automações a devolver (1-100, padrão 10).",
"The page number for pagination (default 1).": "O número da página para paginação (padrão 1).",
"Optionally expand the results by adding additional information.": "Opcionalmente, expanda os resultados adicionando informações adicionais.",
"Filter posts by content tags. Returns posts with ANY of the specified tags.": "Filtrar postagens por tags de conteúdo. Retorna postagens com QUALQUER uma das tags especificadas.",
"Number of posts to return (1-100, default 10).": "Número de postagens a retornar (1-100, padrão 10).",
"Page number for pagination (default 1).": "Número de página para paginação (padrão 1).",
"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..",
"Free": "Gratuito",
"Premium": "Prêmio",
"Stats": "Estatísticas",
"Free Web Content": "Conteúdo Web Grátis",
"Free Email Content": "Free Email Content",
"Free RSS Content": "Conteúdo RSS gratuito",
"Premium Web Content": "Conteúdo Web Premium",
"Premium Email Content": "Premium Email Content",
"All": "TODOS",
"Web": "Web",
"Both": "Ambos",
"Draft": "Rascunho",
"Confirmed": "Confirmado",
"Archived": "Arquivado",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA",
"New Post Sent": "Novo Post Enviado",
"User Unsubscribes": "Usuário desinscreve",
"New Subscription Confirmation": "Nova confirmação de assinatura",
"Triggers when a new post is sent.": "Dispara quando uma nova postagem é enviada.",
"Triggers when a user unsubscribes.": "Dispara quando um usuário cancela.",
"Triggers when a new subscriber confirms their subscription.": "Dispara quando um novo assinante confirma sua assinatura."
}

View File

@@ -0,0 +1,99 @@
{
"Beehiiv": "Beehiiv",
"Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.": "Вы можете получить ключ API, пройдя по ссылке **Settings->Workspace Settings-> API**.",
"Create Subscription": "Создать подписку",
"Update Subscription": "Обновить подписку",
"Add Subscription to Automation": "Добавить подписку к автоматизации",
"List Automations": "Список автоматизации",
"List Posts": "Список сообщений",
"Custom API Call": "Пользовательский вызов API",
"Creates a new subscription.": "Создает новую подписку.",
"Update an existing subscription.": "Обновить существующую подписку.",
"Adds an existing subscription to a specific automation flow.": "Добавляет подписку к определенному автоматическому потоку.",
"Retrieves a list of automations for a publication.": "Получает список автоматизации публикации.",
"Retrieves all posts belonging to a specific publication.": "Получает все должности, относящиеся к конкретному изданию.",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Publication": "Публикация",
"Email": "Почта",
"Reactivate Existing": "Переактивировать существующий",
"Send Welcome Email": "Отправить приветственное письмо",
"UTM Source": "Источник UTM",
"UTM Medium": "Средний UTM",
"UTM Campaign": "UTM Кампания",
"Referring Site": "Ссылающийся сайт",
"Referral Code": "Код реферала",
"Subscription Tier": "Уровень подписки",
"Custom Fields": "Пользовательские поля",
"Stripe Customer ID": "ID клиента Stripe",
"Double Opt-in Override": "Переопределение двойного выбора",
"Premium Tier IDs": "ID премиум уровня",
"Automation IDs": "Идентификаторы автоматизации",
"Subscription ID": "ID подписки",
"Unsubscribe": "Отписаться",
"Automation ID": "Идентификатор автоматизации",
"Subscription Email": "Подписка Email",
"Limit": "Лимит",
"Page": "Страница",
"Expand Results": "Развернуть результаты",
"Audience": "Аудитория",
"Platform": "Платформа",
"Status": "Status",
"Content Tags": "Теги содержимого",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"The email address of the new subscription.": "Адрес электронной почты новой подписки.",
"Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.": "Активировать ли подписку, если она уже отписалась от рассылки. Используйте только если вы сознательно пересдали подписку.",
"Whether to send the default welcome email to the subscription.": "Отправлять подписку на приветственное письмо по умолчанию.",
"The source of the subscription.": "Источник подписки.",
"The medium of the subscription.": "Средство подписки.",
"The acquisition campaign of the subscription.": "Приемная кампания подписки.",
"The website that the subscription was referred from.": "Веб-сайт, с которого была направлена подписка.",
"A subscription's referral_code to give them credit for the new subscription.": "Реферал_код подписки, чтобы дать им кредит за новую подписку.",
"The tier for this subscription.": "Уровень для этой подписки.",
"The Stripe customer ID for this subscription.": "ID клиента Stripe для этой подписки.",
"Override publication double-opt settings for this subscription.": "Переопределить параметры двухфактурной подписки для публикации.",
"The IDs of the premium tiers this subscription is associated with.": "Идентификаторы премиальных уровней, с которыми связана эта подписка.",
"Enroll the subscription into automations after their subscription has been created.": "Записаться на автоматизацию подписки после того, как их подписка будет создана.",
"Set the tier for this subscription.": "Установить уровень для этой подписки.",
"The Stripe Customer ID of the subscription.": "Идентификатор Клиента подписки.",
"Whether to unsubscribe this subscription from the publication.": "Отписаться от этой подписки от публикации.",
"The email address of the subscription. Provide either Email or Subscription ID.": "Адрес электронной почты подписки. Предоставьте адрес электронной почты или ID подписки.",
"Override publication double-opt settings for this subscription (e.g., \"on\").": "Переопределить параметры публикации дважды opt для этой подписки (например, \"on\").",
"A limit on the number of automations to be returned (1-100, default 10).": "Ограничение на количество возвращаемых автоматических (1-100, по умолчанию 10).",
"The page number for pagination (default 1).": "Номер страницы для пагинации (по умолчанию 1).",
"Optionally expand the results by adding additional information.": "При необходимости разверните результаты путем добавления дополнительной информации.",
"Filter posts by content tags. Returns posts with ANY of the specified tags.": "Фильтр сообщений по тэгам содержимого. Возвращает записи с ЛЮБЫМ из указанных тэгов.",
"Number of posts to return (1-100, default 10).": "Количество возвращаемых записей (1-100, по умолчанию 10).",
"Page number for pagination (default 1).": "Номер страницы для пагинации (по умолчанию 1).",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"Free": "Бесплатно",
"Premium": "Премиум",
"Stats": "Статистика",
"Free Web Content": "Бесплатный сетевой контент",
"Free Email Content": "Free Email Content",
"Free RSS Content": "Бесплатный RSS контент",
"Premium Web Content": "Премиум сетевой контент",
"Premium Email Content": "Premium Email Content",
"All": "Все",
"Web": "Веб",
"Both": "Оба",
"Draft": "Черновик",
"Confirmed": "Подтверждено",
"Archived": "Архивировано",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD",
"New Post Sent": "Новое сообщение отправлено",
"User Unsubscribes": "Пользователь отписался",
"New Subscription Confirmation": "Подтверждение новой подписки",
"Triggers when a new post is sent.": "Триггеры при отправке нового сообщения.",
"Triggers when a user unsubscribes.": "Включает при отказе от подписки.",
"Triggers when a new subscriber confirms their subscription.": "Включает при подтверждении новой подписки."
}

View File

@@ -0,0 +1,100 @@
{
"Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.": "Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.",
"Create Subscription": "Create Subscription",
"Update Subscription": "Update Subscription",
"Add Subscription to Automation": "Add Subscription to Automation",
"List Automations": "List Automations",
"List Posts": "List Posts",
"Custom API Call": "Custom API Call",
"Creates a new subscription.": "Creates a new subscription.",
"Update an existing subscription.": "Update an existing subscription.",
"Adds an existing subscription to a specific automation flow.": "Adds an existing subscription to a specific automation flow.",
"Retrieves a list of automations for a publication.": "Retrieves a list of automations for a publication.",
"Retrieves all posts belonging to a specific publication.": "Retrieves all posts belonging to a specific publication.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Publication": "Publication",
"Email": "Email",
"Reactivate Existing": "Reactivate Existing",
"Send Welcome Email": "Send Welcome Email",
"UTM Source": "UTM Source",
"UTM Medium": "UTM Medium",
"UTM Campaign": "UTM Campaign",
"Referring Site": "Referring Site",
"Referral Code": "Referral Code",
"Subscription Tier": "Subscription Tier",
"Custom Fields": "Custom Fields",
"Stripe Customer ID": "Stripe Customer ID",
"Double Opt-in Override": "Double Opt-in Override",
"Premium Tier IDs": "Premium Tier IDs",
"Automation IDs": "Automation IDs",
"Subscription ID": "Subscription ID",
"Unsubscribe": "Unsubscribe",
"Automation ID": "Automation ID",
"Subscription Email": "Subscription Email",
"Limit": "Limit",
"Page": "Page",
"Expand Results": "Expand Results",
"Audience": "Audience",
"Platform": "Platform",
"Status": "Status",
"Content Tags": "Content Tags",
"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 email address of the new subscription.": "The email address of the new subscription.",
"Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.": "Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.",
"Whether to send the default welcome email to the subscription.": "Whether to send the default welcome email to the subscription.",
"The source of the subscription.": "The source of the subscription.",
"The medium of the subscription.": "The medium of the subscription.",
"The acquisition campaign of the subscription.": "The acquisition campaign of the subscription.",
"The website that the subscription was referred from.": "The website that the subscription was referred from.",
"A subscription's referral_code to give them credit for the new subscription.": "A subscription's referral_code to give them credit for the new subscription.",
"The tier for this subscription.": "The tier for this subscription.",
"The Stripe customer ID for this subscription.": "The Stripe customer ID for this subscription.",
"Override publication double-opt settings for this subscription.": "Override publication double-opt settings for this subscription.",
"The IDs of the premium tiers this subscription is associated with.": "The IDs of the premium tiers this subscription is associated with.",
"Enroll the subscription into automations after their subscription has been created.": "Enroll the subscription into automations after their subscription has been created.",
"Set the tier for this subscription.": "Set the tier for this subscription.",
"The Stripe Customer ID of the subscription.": "The Stripe Customer ID of the subscription.",
"Whether to unsubscribe this subscription from the publication.": "Whether to unsubscribe this subscription from the publication.",
"The email address of the subscription. Provide either Email or Subscription ID.": "The email address of the subscription. Provide either Email or Subscription ID.",
"Override publication double-opt settings for this subscription (e.g., \"on\").": "Override publication double-opt settings for this subscription (e.g., \"on\").",
"A limit on the number of automations to be returned (1-100, default 10).": "A limit on the number of automations to be returned (1-100, default 10).",
"The page number for pagination (default 1).": "The page number for pagination (default 1).",
"Optionally expand the results by adding additional information.": "Optionally expand the results by adding additional information.",
"Filter posts by content tags. Returns posts with ANY of the specified tags.": "Filter posts by content tags. Returns posts with ANY of the specified tags.",
"Number of posts to return (1-100, default 10).": "Number of posts to return (1-100, default 10).",
"Page number for pagination (default 1).": "Page number for pagination (default 1).",
"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..",
"Free": "Free",
"Premium": "Premium",
"Stats": "Stats",
"Free Web Content": "Free Web Content",
"Free Email Content": "Free Email Content",
"Free RSS Content": "Free RSS Content",
"Premium Web Content": "Premium Web Content",
"Premium Email Content": "Premium Email Content",
"All": "All",
"Web": "Web",
"Both": "Both",
"Draft": "Draft",
"Confirmed": "Confirmed",
"Archived": "Archived",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Post Sent": "New Post Sent",
"User Unsubscribes": "User Unsubscribes",
"New Subscription Confirmation": "New Subscription Confirmation",
"Triggers when a new post is sent.": "Triggers when a new post is sent.",
"Triggers when a user unsubscribes.": "Triggers when a user unsubscribes.",
"Triggers when a new subscriber confirms their subscription.": "Triggers when a new subscriber confirms their subscription."
}

View File

@@ -0,0 +1,99 @@
{
"Beehiiv": "Beehiiv",
"Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.": "Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.",
"Create Subscription": "Create Subscription",
"Update Subscription": "Update Subscription",
"Add Subscription to Automation": "Add Subscription to Automation",
"List Automations": "List Automations",
"List Posts": "List Posts",
"Custom API Call": "Custom API Call",
"Creates a new subscription.": "Creates a new subscription.",
"Update an existing subscription.": "Update an existing subscription.",
"Adds an existing subscription to a specific automation flow.": "Adds an existing subscription to a specific automation flow.",
"Retrieves a list of automations for a publication.": "Retrieves a list of automations for a publication.",
"Retrieves all posts belonging to a specific publication.": "Retrieves all posts belonging to a specific publication.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Publication": "Publication",
"Email": "Email",
"Reactivate Existing": "Reactivate Existing",
"Send Welcome Email": "Send Welcome Email",
"UTM Source": "UTM Source",
"UTM Medium": "UTM Medium",
"UTM Campaign": "UTM Campaign",
"Referring Site": "Referring Site",
"Referral Code": "Referral Code",
"Subscription Tier": "Subscription Tier",
"Custom Fields": "Custom Fields",
"Stripe Customer ID": "Stripe Customer ID",
"Double Opt-in Override": "Double Opt-in Override",
"Premium Tier IDs": "Premium Tier IDs",
"Automation IDs": "Automation IDs",
"Subscription ID": "Subscription ID",
"Unsubscribe": "Unsubscribe",
"Automation ID": "Automation ID",
"Subscription Email": "Subscription Email",
"Limit": "Limit",
"Page": "Page",
"Expand Results": "Expand Results",
"Audience": "Audience",
"Platform": "Nền tảng",
"Status": "Status",
"Content Tags": "Content Tags",
"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 email address of the new subscription.": "The email address of the new subscription.",
"Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.": "Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.",
"Whether to send the default welcome email to the subscription.": "Whether to send the default welcome email to the subscription.",
"The source of the subscription.": "The source of the subscription.",
"The medium of the subscription.": "The medium of the subscription.",
"The acquisition campaign of the subscription.": "The acquisition campaign of the subscription.",
"The website that the subscription was referred from.": "The website that the subscription was referred from.",
"A subscription's referral_code to give them credit for the new subscription.": "A subscription's referral_code to give them credit for the new subscription.",
"The tier for this subscription.": "The tier for this subscription.",
"The Stripe customer ID for this subscription.": "The Stripe customer ID for this subscription.",
"Override publication double-opt settings for this subscription.": "Override publication double-opt settings for this subscription.",
"The IDs of the premium tiers this subscription is associated with.": "The IDs of the premium tiers this subscription is associated with.",
"Enroll the subscription into automations after their subscription has been created.": "Enroll the subscription into automations after their subscription has been created.",
"Set the tier for this subscription.": "Set the tier for this subscription.",
"The Stripe Customer ID of the subscription.": "The Stripe Customer ID of the subscription.",
"Whether to unsubscribe this subscription from the publication.": "Whether to unsubscribe this subscription from the publication.",
"The email address of the subscription. Provide either Email or Subscription ID.": "The email address of the subscription. Provide either Email or Subscription ID.",
"Override publication double-opt settings for this subscription (e.g., \"on\").": "Override publication double-opt settings for this subscription (e.g., \"on\").",
"A limit on the number of automations to be returned (1-100, default 10).": "A limit on the number of automations to be returned (1-100, default 10).",
"The page number for pagination (default 1).": "The page number for pagination (default 1).",
"Optionally expand the results by adding additional information.": "Optionally expand the results by adding additional information.",
"Filter posts by content tags. Returns posts with ANY of the specified tags.": "Filter posts by content tags. Returns posts with ANY of the specified tags.",
"Number of posts to return (1-100, default 10).": "Number of posts to return (1-100, default 10).",
"Page number for pagination (default 1).": "Page number for pagination (default 1).",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Free": "Free",
"Premium": "Premium",
"Stats": "Stats",
"Free Web Content": "Free Web Content",
"Free Email Content": "Free Email Content",
"Free RSS Content": "Free RSS Content",
"Premium Web Content": "Premium Web Content",
"Premium Email Content": "Premium Email Content",
"All": "Tất cả",
"Web": "Web",
"Both": "Both",
"Draft": "Bản nháp",
"Confirmed": "Confirmed",
"Archived": "Archived",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Post Sent": "New Post Sent",
"User Unsubscribes": "User Unsubscribes",
"New Subscription Confirmation": "New Subscription Confirmation",
"Triggers when a new post is sent.": "Triggers when a new post is sent.",
"Triggers when a user unsubscribes.": "Triggers when a user unsubscribes.",
"Triggers when a new subscriber confirms their subscription.": "Triggers when a new subscriber confirms their subscription."
}

View File

@@ -0,0 +1,100 @@
{
"Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.": "Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.",
"Create Subscription": "Create Subscription",
"Update Subscription": "Update Subscription",
"Add Subscription to Automation": "Add Subscription to Automation",
"List Automations": "List Automations",
"List Posts": "List Posts",
"Custom API Call": "自定义 API 呼叫",
"Creates a new subscription.": "Creates a new subscription.",
"Update an existing subscription.": "Update an existing subscription.",
"Adds an existing subscription to a specific automation flow.": "Adds an existing subscription to a specific automation flow.",
"Retrieves a list of automations for a publication.": "Retrieves a list of automations for a publication.",
"Retrieves all posts belonging to a specific publication.": "Retrieves all posts belonging to a specific publication.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Publication": "Publication",
"Email": "电子邮件地址",
"Reactivate Existing": "Reactivate Existing",
"Send Welcome Email": "Send Welcome Email",
"UTM Source": "UTM Source",
"UTM Medium": "UTM Medium",
"UTM Campaign": "UTM Campaign",
"Referring Site": "Referring Site",
"Referral Code": "Referral Code",
"Subscription Tier": "Subscription Tier",
"Custom Fields": "Custom Fields",
"Stripe Customer ID": "Stripe Customer ID",
"Double Opt-in Override": "Double Opt-in Override",
"Premium Tier IDs": "Premium Tier IDs",
"Automation IDs": "Automation IDs",
"Subscription ID": "Subscription ID",
"Unsubscribe": "Unsubscribe",
"Automation ID": "Automation ID",
"Subscription Email": "Subscription Email",
"Limit": "Limit",
"Page": "Page",
"Expand Results": "Expand Results",
"Audience": "Audience",
"Platform": "平台",
"Status": "状态",
"Content Tags": "Content Tags",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The email address of the new subscription.": "The email address of the new subscription.",
"Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.": "Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.",
"Whether to send the default welcome email to the subscription.": "Whether to send the default welcome email to the subscription.",
"The source of the subscription.": "The source of the subscription.",
"The medium of the subscription.": "The medium of the subscription.",
"The acquisition campaign of the subscription.": "The acquisition campaign of the subscription.",
"The website that the subscription was referred from.": "The website that the subscription was referred from.",
"A subscription's referral_code to give them credit for the new subscription.": "A subscription's referral_code to give them credit for the new subscription.",
"The tier for this subscription.": "The tier for this subscription.",
"The Stripe customer ID for this subscription.": "The Stripe customer ID for this subscription.",
"Override publication double-opt settings for this subscription.": "Override publication double-opt settings for this subscription.",
"The IDs of the premium tiers this subscription is associated with.": "The IDs of the premium tiers this subscription is associated with.",
"Enroll the subscription into automations after their subscription has been created.": "Enroll the subscription into automations after their subscription has been created.",
"Set the tier for this subscription.": "Set the tier for this subscription.",
"The Stripe Customer ID of the subscription.": "The Stripe Customer ID of the subscription.",
"Whether to unsubscribe this subscription from the publication.": "Whether to unsubscribe this subscription from the publication.",
"The email address of the subscription. Provide either Email or Subscription ID.": "The email address of the subscription. Provide either Email or Subscription ID.",
"Override publication double-opt settings for this subscription (e.g., \"on\").": "Override publication double-opt settings for this subscription (e.g., \"on\").",
"A limit on the number of automations to be returned (1-100, default 10).": "A limit on the number of automations to be returned (1-100, default 10).",
"The page number for pagination (default 1).": "The page number for pagination (default 1).",
"Optionally expand the results by adding additional information.": "Optionally expand the results by adding additional information.",
"Filter posts by content tags. Returns posts with ANY of the specified tags.": "Filter posts by content tags. Returns posts with ANY of the specified tags.",
"Number of posts to return (1-100, default 10).": "Number of posts to return (1-100, default 10).",
"Page number for pagination (default 1).": "Page number for pagination (default 1).",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"Free": "Free",
"Premium": "Premium",
"Stats": "Stats",
"Free Web Content": "Free Web Content",
"Free Email Content": "Free Email Content",
"Free RSS Content": "Free RSS Content",
"Premium Web Content": "Premium Web Content",
"Premium Email Content": "Premium Email Content",
"All": "所有的",
"Web": "Web",
"Both": "Both",
"Draft": "草稿",
"Confirmed": "Confirmed",
"Archived": "Archived",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色",
"New Post Sent": "New Post Sent",
"User Unsubscribes": "User Unsubscribes",
"New Subscription Confirmation": "New Subscription Confirmation",
"Triggers when a new post is sent.": "Triggers when a new post is sent.",
"Triggers when a user unsubscribes.": "Triggers when a user unsubscribes.",
"Triggers when a new subscriber confirms their subscription.": "Triggers when a new subscriber confirms their subscription."
}

View File

@@ -0,0 +1,39 @@
import { createPiece } from '@activepieces/pieces-framework';
import { createSubscriptionAction } from './lib/actions/create-subscription.action';
import { updateSubscriptionAction } from './lib/actions/update-subscription.action';
import { addSubscriptionToAutomationAction } from './lib/actions/add-subscription-to-automation.action';
import { listAutomationsAction } from './lib/actions/list-automations.action';
import { listPostsAction } from './lib/actions/list-posts.action';
import { newPostSentTrigger } from './lib/triggers/new-post-sent.trigger';
import { userUnsubscribesTrigger } from './lib/triggers/user-unsubscribes.trigger';
import { newSubscriptionConfirmedTrigger } from './lib/triggers/new-subscription-confirmed.trigger';
import { PieceCategory } from '@activepieces/shared';
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import { beehiivAuth } from './lib/common/auth';
import { BEEHIIV_API_URL } from './lib/common/client';
export const beehiiv = createPiece({
displayName: 'Beehiiv',
auth: beehiivAuth,
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/beehiiv.png',
authors: ['onyedikachi-david', 'kishanprmr'],
categories: [PieceCategory.MARKETING],
actions: [
createSubscriptionAction,
updateSubscriptionAction,
addSubscriptionToAutomationAction,
listAutomationsAction,
listPostsAction,
createCustomApiCallAction({
auth: beehiivAuth,
baseUrl: () => BEEHIIV_API_URL,
authMapping: async (auth) => {
return {
Authorization: `Bearer ${auth.secret_text}`,
};
},
}),
],
triggers: [newPostSentTrigger, userUnsubscribesTrigger, newSubscriptionConfirmedTrigger],
});

View File

@@ -0,0 +1,55 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { beehiivAuth } from '../common/auth';
import { automationId, publicationId, subscriptionId } from '../common/props';
import { beehiivApiCall } from '../common/client';
export const addSubscriptionToAutomationAction = createAction({
auth: beehiivAuth,
name: 'add_subscription_to_automation',
displayName: 'Add Subscription to Automation',
description: 'Adds an existing subscription to a specific automation flow.',
props: {
publicationId: publicationId,
automationId: automationId('Automation ID', '', true,true),
email: Property.ShortText({
displayName: 'Subscription Email',
description: 'The email address of the subscription. Provide either Email or Subscription ID.',
required: false,
}),
subscription_id:subscriptionId(),
double_opt_override: Property.ShortText({
displayName: 'Double Opt-in Override',
description: 'Override publication double-opt settings for this subscription (e.g., "on").',
required: false,
}),
},
async run(context) {
const { publicationId, automationId, email, subscription_id, double_opt_override } =
context.propsValue;
if (!email && !subscription_id) {
throw new Error('Either Subscription Email or Subscription ID must be provided.');
}
const body: Record<string, unknown> = {};
if (email) {
body['email'] = email;
}
if (subscription_id) {
body['subscription_id'] = subscription_id;
}
if (double_opt_override) {
body['double_opt_override'] = double_opt_override;
}
const response = await beehiivApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.POST,
resourceUri: `/publications/${publicationId}/automations/${automationId}/journeys`,
body,
});
return response;
},
});

View File

@@ -0,0 +1,133 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { beehiivAuth } from '../common/auth';
import { automationId, customFields, publicationId } from '../common/props';
import { beehiivApiCall } from '../common/client';
export const createSubscriptionAction = createAction({
auth: beehiivAuth,
name: 'create_subscription',
displayName: 'Create Subscription',
description: 'Creates a new subscription.',
props: {
publicationId: publicationId,
email: Property.ShortText({
displayName: 'Email',
description: 'The email address of the new subscription.',
required: true,
}),
reactivate_existing: Property.Checkbox({
displayName: 'Reactivate Existing',
description:
'Whether to reactivate the subscription if they have already unsubscribed. Use only if the subscription is knowingly resubscribing.',
required: false,
defaultValue: false,
}),
send_welcome_email: Property.Checkbox({
displayName: 'Send Welcome Email',
description: 'Whether to send the default welcome email to the subscription.',
required: false,
defaultValue: false,
}),
utm_source: Property.ShortText({
displayName: 'UTM Source',
description: 'The source of the subscription.',
required: false,
}),
utm_medium: Property.ShortText({
displayName: 'UTM Medium',
description: 'The medium of the subscription.',
required: false,
}),
utm_campaign: Property.ShortText({
displayName: 'UTM Campaign',
description: 'The acquisition campaign of the subscription.',
required: false,
}),
referring_site: Property.ShortText({
displayName: 'Referring Site',
description: 'The website that the subscription was referred from.',
required: false,
}),
referral_code: Property.ShortText({
displayName: 'Referral Code',
description: "A subscription's referral_code to give them credit for the new subscription.",
required: false,
}),
tier: Property.StaticDropdown({
displayName: 'Subscription Tier',
description: 'The tier for this subscription.',
required: false,
options: {
options: [
{ label: 'Free', value: 'free' },
{ label: 'Premium', value: 'premium' },
],
},
}),
custom_fields: customFields,
stripe_customer_id: Property.ShortText({
displayName: 'Stripe Customer ID',
description: 'The Stripe customer ID for this subscription.',
required: false,
}),
double_opt_override: Property.ShortText({
displayName: 'Double Opt-in Override',
description: 'Override publication double-opt settings for this subscription.',
required: false,
}),
premium_tier_ids: Property.Array({
displayName: 'Premium Tier IDs',
description: 'The IDs of the premium tiers this subscription is associated with.',
required: false,
}),
automation_ids: automationId('Automation IDs','Enroll the subscription into automations after their subscription has been created.',false),
},
async run(context) {
const {
publicationId,
email,
utm_campaign,
utm_medium,
tier,
utm_source,
reactivate_existing,
referral_code,
referring_site,
send_welcome_email,
stripe_customer_id,
double_opt_override,
} = context.propsValue;
const customFields = context.propsValue.custom_fields ?? {};
const automationIds = context.propsValue.automation_ids ?? [];
const premiumTierIds = context.propsValue.premium_tier_ids ?? [];
const response = await beehiivApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.POST,
resourceUri: `/publications/${publicationId}/subscriptions`,
body: {
email,
reactivate_existing,
send_welcome_email,
utm_source,
utm_campaign,
utm_medium,
referring_site,
referral_code,
double_opt_override,
tier,
premium_tier_ids: premiumTierIds.length > 0 ? premiumTierIds : undefined,
stripe_customer_id,
automation_ids: automationIds.length > 0 ? automationIds : undefined,
custom_fields: Object.entries(customFields).map(([key, value]) => ({
name: key,
value: value,
})),
},
});
return response;
},
});

View File

@@ -0,0 +1,51 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { publicationId } from '../common/props';
import { beehiivAuth } from '../common/auth';
import { beehiivApiCall, BeehiivPaginatedApiCall } from '../common/client';
import { isNil } from '@activepieces/shared';
export const listAutomationsAction = createAction({
auth: beehiivAuth,
name: 'list_automations',
displayName: 'List Automations',
description: 'Retrieves a list of automations for a publication.',
props: {
publicationId: publicationId,
limit: Property.Number({
displayName: 'Limit',
description: 'A limit on the number of automations to be returned (1-100, default 10).',
required: false,
}),
page: Property.Number({
displayName: 'Page',
description: 'The page number for pagination (default 1).',
required: false,
}),
},
async run(context) {
const { publicationId, page, limit } = context.propsValue;
if (isNil(page) && isNil(limit)) {
const response = await BeehiivPaginatedApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.GET,
resourceUri: `/publications/${publicationId}/automations`,
});
return response;
}
const response = await beehiivApiCall<{ data: Record<string, any>[] }>({
apiKey: context.auth.secret_text,
method: HttpMethod.GET,
resourceUri: `/publications/${publicationId}/automations`,
query: {
page,
limit,
},
});
return response.data;
},
});

View File

@@ -0,0 +1,125 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { beehiivAuth } from '../common/auth';
import { publicationId } from '../common/props';
import { isNil } from '@activepieces/shared';
import { beehiivApiCall, BeehiivPaginatedApiCall } from '../common/client';
export const listPostsAction = createAction({
auth: beehiivAuth,
name: 'list_posts',
displayName: 'List Posts',
description: 'Retrieves all posts belonging to a specific publication.',
props: {
publicationId: publicationId,
expand: Property.StaticMultiSelectDropdown({
displayName: 'Expand Results',
description: 'Optionally expand the results by adding additional information.',
required: false,
options: {
options: [
{ label: 'Stats', value: 'stats' },
{ label: 'Free Web Content', value: 'free_web_content' },
{ label: 'Free Email Content', value: 'free_email_content' },
{ label: 'Free RSS Content', value: 'free_rss_content' },
{ label: 'Premium Web Content', value: 'premium_web_content' },
{ label: 'Premium Email Content', value: 'premium_email_content' },
],
},
}),
audience: Property.StaticDropdown({
displayName: 'Audience',
required: true,
options: {
options: [
{ label: 'All', value: 'all' },
{ label: 'Free', value: 'free' },
{ label: 'Premium', value: 'premium' },
],
},
}),
platform: Property.StaticDropdown({
displayName: 'Platform',
required: true,
options: {
options: [
{ label: 'All', value: 'all' },
{ label: 'Web', value: 'web' },
{ label: 'Email', value: 'email' },
{ label: 'Both', value: 'both' },
],
},
}),
status: Property.StaticDropdown({
displayName: 'Status',
required: true,
options: {
options: [
{ label: 'All', value: 'all' },
{ label: 'Draft', value: 'draft' },
{ label: 'Confirmed', value: 'confirmed' },
{ label: 'Archived', value: 'archived' },
],
},
}),
content_tags: Property.Array({
displayName: 'Content Tags',
description: 'Filter posts by content tags. Returns posts with ANY of the specified tags.',
required: false,
}),
limit: Property.Number({
displayName: 'Limit',
description: 'Number of posts to return (1-100, default 10).',
required: false,
}),
page: Property.Number({
displayName: 'Page',
description: 'Page number for pagination (default 1).',
required: false,
}),
},
async run(context) {
const { publicationId, page, limit, status, platform, audience } = context.propsValue;
const expand = context.propsValue.expand ?? [];
const tags = context.propsValue.content_tags ?? [];
const queryParams: Record<string, string | string[] | undefined> = {
audience,
platform,
status,
order_by: 'created',
direction: 'desc',
};
if (expand) {
queryParams['expand'] = (expand as string[]).join(',');
}
if (tags.length > 0) {
queryParams['content_tags'] = tags as string[];
}
if (isNil(page) && isNil(limit)) {
const response = await BeehiivPaginatedApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.GET,
resourceUri: `/publications/${publicationId}/automations`,
query: queryParams,
});
return response;
}
const response = await beehiivApiCall<{ data: Record<string, any>[] }>({
apiKey: context.auth.secret_text,
method: HttpMethod.GET,
resourceUri: `/publications/${publicationId}/automations`,
query: {
page,
limit,
...queryParams,
},
});
return response.data;
},
});

View File

@@ -0,0 +1,82 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { customFields, publicationId, subscriptionId } from '../common/props';
import { beehiivAuth } from '../common/auth';
import { beehiivApiCall } from '../common/client';
export const updateSubscriptionAction = createAction({
auth: beehiivAuth,
name: 'update_subscription',
displayName: 'Update Subscription',
description: 'Update an existing subscription.',
props: {
publicationId: publicationId,
subscriptionId: subscriptionId(true),
tier: Property.StaticDropdown({
displayName: 'Subscription Tier',
description: 'Set the tier for this subscription.',
required: false,
options: {
options: [
{ label: 'Free', value: 'free' },
{ label: 'Premium', value: 'premium' },
],
},
}),
stripe_customer_id: Property.ShortText({
displayName: 'Stripe Customer ID',
description: 'The Stripe Customer ID of the subscription.',
required: false,
}),
unsubscribe: Property.Checkbox({
displayName: 'Unsubscribe',
description: 'Whether to unsubscribe this subscription from the publication.',
required: false,
}),
custom_fields: customFields,
},
async run(context) {
const { publicationId, subscriptionId, tier, stripe_customer_id, unsubscribe } =
context.propsValue;
const custom_fields = context.propsValue.custom_fields ?? {};
const body: Record<string, unknown> = {};
if (tier !== undefined) {
body['tier'] = tier;
}
if (stripe_customer_id !== undefined) {
body['stripe_customer_id'] = stripe_customer_id;
}
if (unsubscribe !== undefined) {
body['unsubscribe'] = unsubscribe;
}
const transformedCustomFields = Object.entries(custom_fields)
.filter(([_, value]) => {
if (Array.isArray(value)) {
return value.length > 0;
}
return value !== undefined && value !== null && value !== '';
})
.map(([key, value]) => ({
name: key,
value: value,
}));
if (transformedCustomFields.length > 0) {
body['custom_fields'] = transformedCustomFields;
}
console.log(JSON.stringify(body));
const response = await beehiivApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.PUT,
resourceUri: `/publications/${publicationId}/subscriptions/${subscriptionId}`,
body,
});
return response;
},
});

View File

@@ -0,0 +1,27 @@
import { PieceAuth } from '@activepieces/pieces-framework';
import { beehiivApiCall } from './client';
import { HttpMethod } from '@activepieces/pieces-common';
export const beehiivAuth = PieceAuth.SecretText({
displayName: 'API Key',
description: `Your can obtain API key by naviating to **Settings->Workspace Settings-> API**.`,
required: true,
validate: async ({ auth }) => {
try {
await beehiivApiCall({
apiKey: auth as string,
method: HttpMethod.GET,
resourceUri: '/publications',
});
return {
valid: true,
};
} catch {
return {
valid: false,
error: 'Invalid API key.',
};
}
},
});

View File

@@ -0,0 +1,99 @@
import {
AuthenticationType,
httpClient,
HttpMessageBody,
HttpMethod,
HttpRequest,
QueryParams,
} from '@activepieces/pieces-common';
export const BEEHIIV_API_URL = 'https://api.beehiiv.com/v2';
export type BeehiivApiCallParams = {
apiKey: string;
method: HttpMethod;
resourceUri: string;
query?: Record<string, string | number | string[] | undefined>;
body?: any;
};
export async function beehiivApiCall<T extends HttpMessageBody>({
apiKey,
method,
resourceUri,
query,
body,
}: BeehiivApiCallParams): Promise<T> {
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: BEEHIIV_API_URL + resourceUri,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: apiKey,
},
queryParams: qs,
body,
};
const response = await httpClient.sendRequest<T>(request);
return response.body;
}
export async function BeehiivPaginatedApiCall<T extends HttpMessageBody>({
apiKey,
method,
resourceUri,
query,
body,
}: BeehiivApiCallParams): Promise<T[]> {
const resultData: T[] = [];
const limit = 100;
let page = 1;
let totalPages = 1;
do {
const response = await beehiivApiCall<{
data: T[];
page: number;
limit: number;
total_results: number;
total_pages: number;
}>({
apiKey,
method,
resourceUri,
query: {
...query,
limit,
page,
},
body,
});
const { data, total_pages } = response;
if (!data || data.length === 0) break;
resultData.push(...data);
totalPages = total_pages;
page += 1;
} while (page <= totalPages);
return resultData;
}
export interface WebhookPayload {
data: Record<string, any>;
event_timestamp: number;
event_type: string;
uid: string;
}

View File

@@ -0,0 +1,169 @@
import { DynamicPropsValue, Property } from '@activepieces/pieces-framework';
import { BeehiivPaginatedApiCall } from './client';
import { HttpMethod } from '@activepieces/pieces-common';
import { beehiivAuth } from './auth';
export const publicationId = Property.Dropdown({
auth: beehiivAuth,
displayName: 'Publication',
refreshers: [],
required: true,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first.',
};
}
const response = await BeehiivPaginatedApiCall<{ id: string; name: string }>({
apiKey: auth.secret_text,
method: HttpMethod.GET,
resourceUri: '/publications',
});
return {
disabled: false,
options: response.map((publication) => {
return {
label: publication.name,
value: publication.id,
};
}),
};
},
});
export const subscriptionId =(isRequired=false)=> Property.Dropdown({
auth: beehiivAuth,
displayName: 'Subscription ID',
refreshers: ['publicationId'],
required: isRequired,
options: async ({ auth, publicationId }) => {
if (!auth || !publicationId) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first.',
};
}
const response = await BeehiivPaginatedApiCall<{ id: string; email: string }>({
apiKey: auth.secret_text,
method: HttpMethod.GET,
resourceUri: `/publications/${publicationId}/subscriptions`,
});
return {
disabled: false,
options: response.map((subscription) => {
return {
label: subscription.email,
value: subscription.id,
};
}),
};
},
});
export const automationId = (
displayName: string,
desc: string,
isRequired = false,
isSingleSelect = true,
) => {
const fieldType = isSingleSelect ? Property.Dropdown<string, boolean, typeof beehiivAuth> : Property.MultiSelectDropdown<string, boolean, typeof beehiivAuth>;
return fieldType({
auth: beehiivAuth,
displayName,
description: desc,
refreshers: ['publicationId'],
required: isRequired,
options: async ({ auth, publicationId }) => {
if (!auth || !publicationId) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first.',
};
}
const response = await BeehiivPaginatedApiCall<{ id: string; name: string; status: string }>({
apiKey: auth.secret_text,
method: HttpMethod.GET,
resourceUri: `/publications/${publicationId}/automations`,
});
return {
disabled: false,
options: response
.filter((automation) => automation.status !== 'inactive')
.map((automation) => {
return {
label: automation.name,
value: automation.id,
};
}),
};
},
});
};
export const customFields = Property.DynamicProperties({
auth: beehiivAuth,
displayName: 'Custom Fields',
refreshers: ['publicationId'],
required: false,
props: async ({ auth, publicationId }) => {
if (!auth || !publicationId) return {};
const fields: DynamicPropsValue = {};
const response = await BeehiivPaginatedApiCall<{ id: string; kind: string; display: string }>({
apiKey: auth as unknown as string,
method: HttpMethod.GET,
resourceUri: `/publications/${publicationId}/custom_fields`,
});
for (const field of response) {
switch (field.kind) {
case 'string':
fields[field.display] = Property.ShortText({
displayName: field.display,
required: false,
});
break;
case 'integer':
fields[field.display] = Property.Number({
displayName: field.display,
required: false,
});
break;
case 'boolean':
fields[field.display] = Property.Checkbox({
displayName: field.display,
required: false,
});
break;
case 'date':
case 'datetime':
fields[field.display] = Property.DateTime({
displayName: field.display,
required: false,
});
break;
case 'list':
fields[field.display] = Property.Array({
displayName: field.display,
required: false,
});
break;
default:
break;
}
}
return fields;
},
});

View File

@@ -0,0 +1,66 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { publicationId } from '../common/props';
import { beehiivAuth } from '../common/auth';
import { beehiivApiCall, WebhookPayload } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { isNil } from '@activepieces/shared';
const TRIGGER_KEY = 'new-post-sent-trigger';
export const newPostSentTrigger = createTrigger({
auth: beehiivAuth,
name: 'beehiiv_new_post_sent',
displayName: 'New Post Sent',
description: 'Triggers when a new post is sent.',
props: {
publicationId: publicationId,
},
type: TriggerStrategy.WEBHOOK,
async onEnable(context) {
const { publicationId } = context.propsValue;
const response = await beehiivApiCall<{ data: { id: string } }>({
apiKey: context.auth.secret_text,
method: HttpMethod.POST,
resourceUri: `/publications/${publicationId}/webhooks`,
body: {
url: context.webhookUrl,
event_types: ['post.sent'],
},
});
await context.store.put<string>(TRIGGER_KEY, response.data.id);
},
async onDisable(context) {
const { publicationId } = context.propsValue;
const webhookId = await context.store.get<string>(TRIGGER_KEY);
if (!isNil(webhookId)) {
await beehiivApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.DELETE,
resourceUri: `/publications/${publicationId}/webhooks/${webhookId}`,
});
}
},
async run(context) {
const payload = context.payload.body as WebhookPayload;
return [payload.data];
},
sampleData: {
audience: 'free',
authors: ['Clark Kent'],
content_tags: ['news'],
created: 1666800076,
id: 'post_00000000-0000-0000-0000-000000000000',
preview_text: 'More news on the horizon',
slug: 'more_news',
split_tested: true,
status: 'confirmed',
subject_line: 'Check this out',
subtitle: 'New post subtitle',
thumbnail_url: 'https://example.com/pictures/thumbnail.png',
title: 'New Post Title',
displayed_date: 1666800076,
web_url: 'https://example.com/more_news',
},
});

View File

@@ -0,0 +1,85 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { publicationId } from '../common/props';
import { beehiivAuth } from '../common/auth';
import { HttpMethod } from '@activepieces/pieces-common';
import { beehiivApiCall, WebhookPayload } from '../common/client';
import { isNil } from '@activepieces/shared';
const TRIGGER_KEY = 'new-subscription-confirmed-trigger';
export const newSubscriptionConfirmedTrigger = createTrigger({
auth: beehiivAuth,
name: 'beehiiv_new_subscription_confirmed',
displayName: 'New Subscription Confirmation',
description: 'Triggers when a new subscriber confirms their subscription.',
props: {
publicationId: publicationId,
},
type: TriggerStrategy.WEBHOOK,
async onEnable(context) {
const { publicationId } = context.propsValue;
const response = await beehiivApiCall<{ data: { id: string } }>({
apiKey: context.auth.secret_text,
method: HttpMethod.POST,
resourceUri: `/publications/${publicationId}/webhooks`,
body: {
url: context.webhookUrl,
event_types: ['subscription.confirmed'],
},
});
await context.store.put<string>(TRIGGER_KEY, response.data.id);
},
async onDisable(context) {
const { publicationId } = context.propsValue;
const webhookId = await context.store.get<string>(TRIGGER_KEY);
if (!isNil(webhookId)) {
await beehiivApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.DELETE,
resourceUri: `/publications/${publicationId}/webhooks/${webhookId}`,
});
}
},
async test(context) {
const { publicationId } = context.propsValue;
const response = await beehiivApiCall<{ data: Record<string, any>[] }>({
apiKey: context.auth.secret_text,
method: HttpMethod.GET,
resourceUri: `/publications/${publicationId}/subscriptions`,
query: {
status: 'active',
limit: 5,
page: 1,
order_by: 'created',
direction: 'desc',
},
});
if (isNil(response.data) || response.data.length == 0) return [];
return response.data;
},
async run(context) {
const payload = context.payload.body as WebhookPayload;
return [payload.data];
},
sampleData: {
created: 1666800076,
email: 'example@example.com',
id: 'sub_00000000-0000-0000-0000-000000000000',
referral_code: 'ABC123',
referring_site: 'https://www.blog.com',
status: 'active',
subscription_tier: 'premium',
subscription_premium_tier_names: ['Premium', 'Pro'],
stripe_customer_id: 'cus_00000000000000',
utm_campaign: 'Q1 Campaign',
utm_channel: 'website',
utm_medium: 'organic',
utm_source: 'Twitter',
},
});

View File

@@ -0,0 +1,65 @@
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
import { publicationId } from '../common/props';
import { beehiivAuth } from '../common/auth';
import { beehiivApiCall, WebhookPayload } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
import { isNil } from '@activepieces/shared';
const TRIGGER_KEY = 'user-unsubscribes-trigger';
export const userUnsubscribesTrigger = createTrigger({
auth: beehiivAuth,
name: 'beehiiv_user_unsubscribes',
displayName: 'User Unsubscribes',
description: 'Triggers when a user unsubscribes.',
props: {
publicationId: publicationId,
},
type: TriggerStrategy.WEBHOOK,
async onEnable(context) {
const { publicationId } = context.propsValue;
const response = await beehiivApiCall<{ data: { id: string } }>({
apiKey: context.auth.secret_text,
method: HttpMethod.POST,
resourceUri: `/publications/${publicationId}/webhooks`,
body: {
url: context.webhookUrl,
event_types: ['subscription.deleted'],
},
});
await context.store.put<string>(TRIGGER_KEY, response.data.id);
},
async onDisable(context) {
const { publicationId } = context.propsValue;
const webhookId = await context.store.get<string>(TRIGGER_KEY);
if (!isNil(webhookId)) {
await beehiivApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.DELETE,
resourceUri: `/publications/${publicationId}/webhooks/${webhookId}`,
});
}
},
async run(context) {
const payload = context.payload.body as WebhookPayload;
return [payload.data];
},
sampleData: {
created: 1666800076,
email: 'example@example.com',
id: 'sub_00000000-0000-0000-0000-000000000000',
referral_code: 'ABC123',
referring_site: 'https://www.blog.com',
status: 'active',
subscription_tier: 'premium',
subscription_premium_tier_names: ['Premium', 'Pro'],
stripe_customer_id: 'cus_00000000000000',
utm_campaign: 'Q1 Campaign',
utm_channel: 'website',
utm_medium: 'organic',
utm_source: 'Twitter',
},
});