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 @@
{
"Generate AI-powered presentations using Presenton (https://presenton.ai). Supports templates, themes, images, synchronous and asynchronous generation, status polling, and export to PPTX/PDF.": "Erstelle AI-basierte Präsentationen mit Presenton (https://presenton.ai). Unterstützt Templates, Themes, Bilder, synchrone und asynchrone Generation, Statusabfragen und Export in PPTX/PDF.",
"\n": "\n",
"Generate Presentations (async)": "Präsentationen erzeugen (async)",
"Custom API Call": "Eigener API-Aufruf",
"Create an asynchronous presentation generation task at Presenton and return the created task.": "Erstellen Sie einen asynchronen Präsentationsauftrag bei Presenton und geben Sie die erstellte Aufgabe zurück.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Content": "Inhalt",
"Instructions": "Anleitungen",
"Tone": "Ton",
"Verbosity": "Ausführlichkeit",
"Slides markdown": "Slides markdown",
"Markdown emphasis": "Markdown Betonung",
"Enable web search": "Websuche aktivieren",
"Image type": "Bildtyp",
"Theme": "Thema",
"Number of slides": "Anzahl der Folien",
"Language": "Sprache",
"Template": "Vorlage",
"Include table of contents": "Inhaltsverzeichnis einbeziehen",
"Include title slide": "Titelfolie einbeziehen",
"Allow access to user's info": "Zugriff auf Benutzerinformationen erlauben",
"Files": "Dateien",
"Export as": "Exportieren als",
"Trigger webhook": "Webhook auslösen",
"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 content for generating the presentation": "Der Inhalt für die Erstellung der Präsentation",
"Instruction for generating the presentation (optional).": "Anleitung zur Erstellung der Präsentation (optional).",
"Tone to use for the text": "Klang für den Text",
"How verbose the text should be": "Wie detailliert der Text sein soll",
"An array of markdown strings for each slide (optional).": "Ein Array mit Markdown Zeichenketten für jede Folie (optional).",
"Whether to emphasize the markdown": "Ob das Markdown betont werden soll",
"Whether to enable web search": "Ob Websuche aktiviert werden soll",
"Type of image to generate": "Art des zu generierenden Bildes",
"Theme to use for the presentation (e.g. edge-yellow, light-rose)": "Thema für die Präsentation (z.B. kantengelb, hellrose)",
"Number of slides to generate": "Anzahl der zu erstellenden Folien",
"Language for the presentation": "Sprache für die Präsentation",
"Template to use for the presentation": "Vorlage für die Präsentation",
"Whether to include a table of contents": "Gibt an, ob ein Inhaltsverzeichnis enthalten soll",
"Whether to include a title slide": "Gibt an, ob eine Titelfolie enthalten soll",
"Whether to allow access to user's info": "Gibt an, ob der Zugriff auf Benutzerinformationen erlaubt ist",
"Array of file identifiers uploaded via Presenton files API (optional).": "Array der Datei-Identifikatoren hochgeladen über Presenton-Dateien API (optional).",
"Export format": "Exportformat",
"Whether to trigger subscribed webhooks": "Gibt an, ob abonnierte Webhooks ausgelöst werden sollen",
"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..",
"Default": "Standard",
"Casual": "Gelassene",
"Professional": "Profi",
"Funny": "Lustig",
"Educational": "Erziehung",
"Sales pitch": "Verkaufsstandort",
"Concise": "Konkret",
"Standard": "Standard",
"Text-heavy": "Text-schwer",
"Stock": "Bestand",
"AI generated": "KI generiert",
"General": "Allgemein",
"Modern": "Modern",
"Swift": "Swift",
"PPTX": "PPTX",
"PDF": "PDF",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD",
"New Presentation": "Neue Präsentation",
"Triggers when a new presentation is created in Presenton.": "Wird ausgelöst, wenn eine neue Präsentation in Presenton erstellt wird."
}

View File

@@ -0,0 +1,77 @@
{
"Generate AI-powered presentations using Presenton (https://presenton.ai). Supports templates, themes, images, synchronous and asynchronous generation, status polling, and export to PPTX/PDF.": "Generar presentaciones alimentadas por AIs usando Presenton (https://presenton.ai). Soporta plantillas, temas, imágenes, generación sincrónica y asincrónica, encuestas de estado y exporta a PPTX/PDF.",
"\n": "\n",
"Generate Presentations (async)": "Generar presentaciones (asíncronas)",
"Custom API Call": "Llamada API personalizada",
"Create an asynchronous presentation generation task at Presenton and return the created task.": "Crear una tarea asíncrona de generación de presentaciones en Presenton y devolver la tarea creada.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Content": "Contenido",
"Instructions": "Instrucciones",
"Tone": "Tono",
"Verbosity": "Verbosidad",
"Slides markdown": "Slides markdown",
"Markdown emphasis": "Enfoque Markdown",
"Enable web search": "Activar búsqueda web",
"Image type": "Tipo de imagen",
"Theme": "Tema",
"Number of slides": "Número de diapositivas",
"Language": "Idioma",
"Template": "Plantilla",
"Include table of contents": "Incluye la tabla de contenidos",
"Include title slide": "Incluye diapositiva de título",
"Allow access to user's info": "Permitir el acceso a la información del usuario",
"Files": "Archivos",
"Export as": "Exportar como",
"Trigger webhook": "Desencender webhook",
"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 content for generating the presentation": "El contenido para generar la presentación",
"Instruction for generating the presentation (optional).": "Instrucción para generar la presentación (opcional).",
"Tone to use for the text": "Tono a usar para el texto",
"How verbose the text should be": "Qué tan detallado debe ser el texto",
"An array of markdown strings for each slide (optional).": "Arreglo de cadenas de markdown para cada diapositiva (opcional).",
"Whether to emphasize the markdown": "Si enfatizar el markdown",
"Whether to enable web search": "Activar la búsqueda web",
"Type of image to generate": "Tipo de imagen a generar",
"Theme to use for the presentation (e.g. edge-yellow, light-rose)": "Tema a usar para la presentación (ej: arista-amarillo, rosa-clara)",
"Number of slides to generate": "Número de diapositivas a generar",
"Language for the presentation": "Idioma de la presentación",
"Template to use for the presentation": "Plantilla a utilizar para la presentación",
"Whether to include a table of contents": "Si incluir o no una tabla de contenidos",
"Whether to include a title slide": "Si incluir o no una diapositiva de título",
"Whether to allow access to user's info": "Permitir el acceso a la información del usuario",
"Array of file identifiers uploaded via Presenton files API (optional).": "Array de identificadores de archivo subidos a través de la API de archivos Presenton (opcional).",
"Export format": "Formato de exportación",
"Whether to trigger subscribed webhooks": "Si desencadenar webhooks suscritos",
"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 PDF, imágenes, etc.",
"Default": "Por defecto",
"Casual": "Casual",
"Professional": "Profesional",
"Funny": "Divertido",
"Educational": "Educativo",
"Sales pitch": "Pitch de ventas",
"Concise": "Conciso",
"Standard": "Estándar",
"Text-heavy": "Texto-pesado",
"Stock": "Stock",
"AI generated": "IA generada",
"General": "General",
"Modern": "Moderna",
"Swift": "Rápido",
"PPTX": "PPTX",
"PDF": "DF",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO",
"New Presentation": "Nueva presentación",
"Triggers when a new presentation is created in Presenton.": "Se activa cuando se crea una nueva presentación en Presenton."
}

View File

@@ -0,0 +1,77 @@
{
"Generate AI-powered presentations using Presenton (https://presenton.ai). Supports templates, themes, images, synchronous and asynchronous generation, status polling, and export to PPTX/PDF.": "Générer des présentations basées sur les AI à l'aide de Presenton (https://presenton.ai). Supporte des modèles, des thèmes, des images, des générations synchrones et asynchrones, des sondages de statut et des exportations vers PPTX/PDF.",
"\n": "\n",
"Generate Presentations (async)": "Générer des présentations (async)",
"Custom API Call": "Appel d'API personnalisé",
"Create an asynchronous presentation generation task at Presenton and return the created task.": "Créez une tâche de génération de présentation asynchrone sur Presenton et renvoyez la tâche créée.",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"Content": "Contenus",
"Instructions": "Instructions",
"Tone": "Tonalité",
"Verbosity": "Verbosité",
"Slides markdown": "Slides markdown",
"Markdown emphasis": "Mise en valeur de Markdown",
"Enable web search": "Activer la recherche web",
"Image type": "Type d'image",
"Theme": "Thème",
"Number of slides": "Nombre de diapositives",
"Language": "Langue",
"Template": "Gabarit",
"Include table of contents": "Inclure la table des matières",
"Include title slide": "Inclure la diapositive titre",
"Allow access to user's info": "Autoriser l'accès aux informations de l'utilisateur",
"Files": "Fichiers",
"Export as": "Exporter en tant que",
"Trigger webhook": "Déclenchement du webhook",
"Method": "Méthode",
"Headers": "Headers",
"Query Parameters": "Paramètres de requête",
"Body": "Body",
"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 content for generating the presentation": "Le contenu pour générer la présentation",
"Instruction for generating the presentation (optional).": "Instruction pour générer la présentation (facultatif).",
"Tone to use for the text": "Tonalité à utiliser pour le texte",
"How verbose the text should be": "À quel point le texte doit être détaillé",
"An array of markdown strings for each slide (optional).": "Un tableau de chaînes de caractères markdown pour chaque diapositive (optionnel).",
"Whether to emphasize the markdown": "S'il faut mettre l'accent sur le markdown",
"Whether to enable web search": "Activer ou non la recherche web",
"Type of image to generate": "Type d'image à générer",
"Theme to use for the presentation (e.g. edge-yellow, light-rose)": "Thème à utiliser pour la présentation (ex: jaune-bord, rose clair)",
"Number of slides to generate": "Nombre de diapositives à générer",
"Language for the presentation": "Langue de la présentation",
"Template to use for the presentation": "Modèle à utiliser pour la présentation",
"Whether to include a table of contents": "Inclure ou non une table des matières",
"Whether to include a title slide": "Inclure ou non une diapositive titre",
"Whether to allow access to user's info": "Autoriser ou non l'accès aux informations de l'utilisateur",
"Array of file identifiers uploaded via Presenton files API (optional).": "Tableau des identifiants de fichiers téléchargés via l'API des fichiers Presenton (optionnel).",
"Export format": "Format d'exportation",
"Whether to trigger subscribed webhooks": "Activer ou non les webhooks abonnés",
"Authorization headers are injected automatically from your connection.": "Les Headers 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.",
"Default": "Par défaut",
"Casual": "Décontracté",
"Professional": "Professionnel",
"Funny": "drôle",
"Educational": "Éducatif",
"Sales pitch": "Pas de vente",
"Concise": "Concise",
"Standard": "Standard",
"Text-heavy": "Texte lourd",
"Stock": "Stock",
"AI generated": "IA générée",
"General": "Général",
"Modern": "Moderne",
"Swift": "Rapide",
"PPTX": "PPTX",
"PDF": "PDF",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Presentation": "Nouvelle présentation",
"Triggers when a new presentation is created in Presenton.": "Déclenche quand une nouvelle présentation est créée dans Presenton."
}

View File

@@ -0,0 +1,77 @@
{
"Generate AI-powered presentations using Presenton (https://presenton.ai). Supports templates, themes, images, synchronous and asynchronous generation, status polling, and export to PPTX/PDF.": "Presenton (https://presenton.ai)を使用してAIで動作するプレゼンテーションを生成します。テンプレート、テーマ、画像、同期および非同期生成、ステータスポーリング、PPTX/PDFへのエクスポートに対応しています。",
"\n": "\n",
"Generate Presentations (async)": "プレゼンテーションの生成 (非同期)",
"Custom API Call": "カスタムAPI通話",
"Create an asynchronous presentation generation task at Presenton and return the created task.": "Presentonで非同期プレゼンテーション生成タスクを作成し、作成したタスクを返します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Content": "コンテンツ",
"Instructions": "説明",
"Tone": "Tone",
"Verbosity": "詳細度",
"Slides markdown": "Slides markdown",
"Markdown emphasis": "マークダウンの強調表示",
"Enable web search": "Web 検索を有効にする",
"Image type": "画像の種類",
"Theme": "テーマ",
"Number of slides": "スライドの数",
"Language": "言語",
"Template": "テンプレート",
"Include table of contents": "目次を含める",
"Include title slide": "タイトルスライドを含める",
"Allow access to user's info": "ユーザー情報へのアクセスを許可する",
"Files": "ファイル",
"Export as": "としてエクスポート",
"Trigger webhook": "Webhookのトリガー",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The content for generating the presentation": "プレゼンテーションを生成するためのコンテンツ",
"Instruction for generating the presentation (optional).": "プレゼンテーションを生成するための手順(任意)。",
"Tone to use for the text": "テキストに使用する音",
"How verbose the text should be": "テキストの詳細表示方法",
"An array of markdown strings for each slide (optional).": "各スライドのマークダウン文字列の配列 (オプション)",
"Whether to emphasize the markdown": "マークダウンを強調するかどうか",
"Whether to enable web search": "ウェブ検索を有効にする",
"Type of image to generate": "生成する画像の種類",
"Theme to use for the presentation (e.g. edge-yellow, light-rose)": "プレゼンテーションに使用するテーマ(例:エッジ黄色、ライトローズ)",
"Number of slides to generate": "生成するスライドの数",
"Language for the presentation": "プレゼンテーションの言語",
"Template to use for the presentation": "プレゼンテーションに使用するテンプレート",
"Whether to include a table of contents": "目次を含めるかどうか",
"Whether to include a title slide": "タイトルスライドを含めるかどうか",
"Whether to allow access to user's info": "ユーザー情報へのアクセスを許可する",
"Array of file identifiers uploaded via Presenton files API (optional).": "PresentonファイルAPI(オプション)を介してアップロードされたファイル識別子の配列。",
"Export format": "エクスポートフォーマット",
"Whether to trigger subscribed webhooks": "購読しているWebhookをトリガーするかどうか",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"Default": "デフォルト",
"Casual": "カジュアルな",
"Professional": "プロフェッショナル",
"Funny": "面白いです",
"Educational": "教育",
"Sales pitch": "売り上げのピッチ数",
"Concise": "Concise",
"Standard": "標準",
"Text-heavy": "Text-heavy",
"Stock": "在庫数",
"AI generated": "AIが生成されました",
"General": "全般",
"Modern": "モダンな",
"Swift": "Swift",
"PPTX": "PPTX",
"PDF": "PDF",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭",
"New Presentation": "新しいプレゼンテーション",
"Triggers when a new presentation is created in Presenton.": "Presenton で新しいプレゼンテーションを作成したときにトリガーします。"
}

View File

@@ -0,0 +1,77 @@
{
"Generate AI-powered presentations using Presenton (https://presenton.ai). Supports templates, themes, images, synchronous and asynchronous generation, status polling, and export to PPTX/PDF.": "Genereer AI-aangedreven presentaties met behulp van Presenton (https://presenton.ai). Ondersteunt templates, thema's, afbeeldingen, synchrone en asynchrone generatie, status polling, en exporteer naar PPTX/PDF.",
"\n": "\n",
"Generate Presentations (async)": "Presentaties genereren (async)",
"Custom API Call": "Custom API Call",
"Create an asynchronous presentation generation task at Presenton and return the created task.": "Maak een asynchrone presentatietaak aan bij Presenton en retourneer de gemaakte taak.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Content": "Inhoud",
"Instructions": "Instructies",
"Tone": "Toon",
"Verbosity": "Verbossing",
"Slides markdown": "Slides markdown",
"Markdown emphasis": "Markdown nadruk",
"Enable web search": "Web zoeken inschakelen",
"Image type": "Afbeelding type",
"Theme": "Thema",
"Number of slides": "Aantal dia's",
"Language": "Taal",
"Template": "Sjabloon",
"Include table of contents": "Inclusief inhoudsopgave",
"Include title slide": "Titel slide opnemen",
"Allow access to user's info": "Toegang tot informatie van gebruiker toestaan",
"Files": "Bestanden",
"Export as": "Exporteren als",
"Trigger webhook": "Trigger webhook",
"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 content for generating the presentation": "De inhoud voor het genereren van de presentatie",
"Instruction for generating the presentation (optional).": "Instructie voor het genereren van de presentatie (optioneel).",
"Tone to use for the text": "Toon om te gebruiken voor de tekst",
"How verbose the text should be": "Hoe uitgebreid de tekst moet zijn",
"An array of markdown strings for each slide (optional).": "Een reeks markdown tekenreeksen voor elke slide (optioneel).",
"Whether to emphasize the markdown": "Of de markdown moet worden benadrukt",
"Whether to enable web search": "Zoeken via web inschakelen",
"Type of image to generate": "Type afbeelding om te genereren",
"Theme to use for the presentation (e.g. edge-yellow, light-rose)": "Te gebruiken thema voor de presentatie (bijv. rand-geel, licht-roos)",
"Number of slides to generate": "Aantal slides om te genereren",
"Language for the presentation": "Taal voor de presentatie",
"Template to use for the presentation": "Te gebruiken template voor de presentatie",
"Whether to include a table of contents": "Of een inhoudsopgave moet worden toegevoegd",
"Whether to include a title slide": "Of een titeldia moet worden toegevoegd",
"Whether to allow access to user's info": "Geeft toegang tot de informatie van de gebruiker",
"Array of file identifiers uploaded via Presenton files API (optional).": "Array van bestand-id's geüpload via Presenton-bestanden API (optioneel).",
"Export format": "Export formaat",
"Whether to trigger subscribed webhooks": "Of geabonneerde webhooks moeten worden geactiveerd",
"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..",
"Default": "Standaard",
"Casual": "Vrijblijvend",
"Professional": "Professioneel",
"Funny": "Grappig",
"Educational": "Educatief",
"Sales pitch": "Teller verkoop",
"Concise": "Concise",
"Standard": "Standaard",
"Text-heavy": "Tekstzwaar",
"Stock": "Standaard",
"AI generated": "AI gegenereerd",
"General": "Algemeen",
"Modern": "Vernieuwend",
"Swift": "Snel",
"PPTX": "PPTX",
"PDF": "PDF-bestand",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD",
"New Presentation": "Nieuwe presentatie",
"Triggers when a new presentation is created in Presenton.": "Triggert wanneer een nieuwe presentatie wordt gemaakt in Presenton."
}

View File

@@ -0,0 +1,77 @@
{
"Generate AI-powered presentations using Presenton (https://presenton.ai). Supports templates, themes, images, synchronous and asynchronous generation, status polling, and export to PPTX/PDF.": "Gerar apresentações com energia de AR usando o Presenton (https://presenton.ai). Suporta modelos, temas, imagens, geração síncrona e assíncrona, votação de status e exportação para PPTX/PDF.",
"\n": "\n",
"Generate Presentations (async)": "Gerar Apresentações (async)",
"Custom API Call": "Chamada de API personalizada",
"Create an asynchronous presentation generation task at Presenton and return the created task.": "Crie uma tarefa assíncrona de geração de apresentação em Apresententon e retorne a tarefa criada.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Content": "Conteúdo",
"Instructions": "Instruções",
"Tone": "Tom",
"Verbosity": "Verbossidade",
"Slides markdown": "Slides markdown",
"Markdown emphasis": "Colocação de Markdown",
"Enable web search": "Ativar pesquisa na web",
"Image type": "Tipo de imagem",
"Theme": "Tema",
"Number of slides": "Número de slides",
"Language": "IDIOMA",
"Template": "Modelo",
"Include table of contents": "Incluir tabela de conteúdos",
"Include title slide": "Incluir slide de título",
"Allow access to user's info": "Permitir acesso às informações do usuário",
"Files": "arquivos",
"Export as": "Exportar como",
"Trigger webhook": "Ativar webhook",
"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 content for generating the presentation": "O conteúdo para gerar a apresentação",
"Instruction for generating the presentation (optional).": "Instrução para gerar a apresentação (opcional).",
"Tone to use for the text": "Tom a ser usado no texto",
"How verbose the text should be": "Quão detalhado o texto deve ser",
"An array of markdown strings for each slide (optional).": "Uma matriz de strings markdown para cada slide (opcional).",
"Whether to emphasize the markdown": "Sublinhar o markdown",
"Whether to enable web search": "Se deseja habilitar a pesquisa na web",
"Type of image to generate": "Tipo de imagem a gerar",
"Theme to use for the presentation (e.g. edge-yellow, light-rose)": "Tema a ser usado para a apresentação (por exemplo, areia amarela e luminosa)",
"Number of slides to generate": "Número de slides para gerar",
"Language for the presentation": "Idioma para a apresentação",
"Template to use for the presentation": "Modelo a ser usado para a apresentação",
"Whether to include a table of contents": "Se deve incluir uma tabela de conteúdos",
"Whether to include a title slide": "Se deve incluir um slide de título",
"Whether to allow access to user's info": "Permitir acesso às informações do usuário",
"Array of file identifiers uploaded via Presenton files API (optional).": "Array de identificadores de arquivos enviados via API de arquivos do Presenton (opcional).",
"Export format": "Formato de exportação",
"Whether to trigger subscribed webhooks": "Se acionar webhooks subscritos",
"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..",
"Default": "Padrão",
"Casual": "Casual",
"Professional": "Profissional",
"Funny": "Engraçado",
"Educational": "Educacional",
"Sales pitch": "Tom de vendas",
"Concise": "Conciso",
"Standard": "Padrão",
"Text-heavy": "Texto-pesado",
"Stock": "Inventário",
"AI generated": "Gerado pela IA",
"General": "Geral",
"Modern": "Moderno",
"Swift": "Rapidez",
"PPTX": "PPTX",
"PDF": "Pdf",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA",
"New Presentation": "Nova apresentação",
"Triggers when a new presentation is created in Presenton.": "Aciona quando uma nova apresentação é criada no Apresentador."
}

View File

@@ -0,0 +1,77 @@
{
"Generate AI-powered presentations using Presenton (https://presenton.ai). Supports templates, themes, images, synchronous and asynchronous generation, status polling, and export to PPTX/PDF.": "Generate AI-powered presentations using Presenton (https://presenton.ai). Supports templates, themes, images, synchronous and asynchronous generation, status polling, and export to PPTX/PDF.",
"\n": "\n",
"Generate Presentations (async)": "Generate Presentations (async)",
"Custom API Call": "Custom API Call",
"Create an asynchronous presentation generation task at Presenton and return the created task.": "Create an asynchronous presentation generation task at Presenton and return the created task.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Content": "Content",
"Instructions": "Instructions",
"Tone": "Tone",
"Verbosity": "Verbosity",
"Slides markdown": "Slides markdown",
"Markdown emphasis": "Markdown emphasis",
"Enable web search": "Enable web search",
"Image type": "Image type",
"Theme": "Theme",
"Number of slides": "Number of slides",
"Language": "Language",
"Template": "Template",
"Include table of contents": "Include table of contents",
"Include title slide": "Include title slide",
"Allow access to user's info": "Allow access to user's info",
"Files": "Files",
"Export as": "Export as",
"Trigger webhook": "Trigger webhook",
"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 content for generating the presentation": "The content for generating the presentation",
"Instruction for generating the presentation (optional).": "Instruction for generating the presentation (optional).",
"Tone to use for the text": "Tone to use for the text",
"How verbose the text should be": "How verbose the text should be",
"An array of markdown strings for each slide (optional).": "An array of markdown strings for each slide (optional).",
"Whether to emphasize the markdown": "Whether to emphasize the markdown",
"Whether to enable web search": "Whether to enable web search",
"Type of image to generate": "Type of image to generate",
"Theme to use for the presentation (e.g. edge-yellow, light-rose)": "Theme to use for the presentation (e.g. edge-yellow, light-rose)",
"Number of slides to generate": "Number of slides to generate",
"Language for the presentation": "Language for the presentation",
"Template to use for the presentation": "Template to use for the presentation",
"Whether to include a table of contents": "Whether to include a table of contents",
"Whether to include a title slide": "Whether to include a title slide",
"Whether to allow access to user's info": "Whether to allow access to user's info",
"Array of file identifiers uploaded via Presenton files API (optional).": "Array of file identifiers uploaded via Presenton files API (optional).",
"Export format": "Export format",
"Whether to trigger subscribed webhooks": "Whether to trigger subscribed webhooks",
"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..",
"Default": "Default",
"Casual": "Casual",
"Professional": "Professional",
"Funny": "Funny",
"Educational": "Educational",
"Sales pitch": "Sales pitch",
"Concise": "Concise",
"Standard": "Standard",
"Text-heavy": "Text-heavy",
"Stock": "Stock",
"AI generated": "AI generated",
"General": "General",
"Modern": "Modern",
"Swift": "Swift",
"PPTX": "PPTX",
"PDF": "PDF",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Presentation": "New Presentation",
"Triggers when a new presentation is created in Presenton.": "Triggers when a new presentation is created in Presenton."
}

View File

@@ -0,0 +1,77 @@
{
"Generate AI-powered presentations using Presenton (https://presenton.ai). Supports templates, themes, images, synchronous and asynchronous generation, status polling, and export to PPTX/PDF.": "Generate AI-powered presentations using Presenton (https://presenton.ai). Supports templates, themes, images, synchronous and asynchronous generation, status polling, and export to PPTX/PDF.",
"\n": "\n",
"Generate Presentations (async)": "Generate Presentations (async)",
"Custom API Call": "自定义 API 呼叫",
"Create an asynchronous presentation generation task at Presenton and return the created task.": "Create an asynchronous presentation generation task at Presenton and return the created task.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Content": "Content",
"Instructions": "Instructions",
"Tone": "Tone",
"Verbosity": "Verbosity",
"Slides markdown": "Slides markdown",
"Markdown emphasis": "Markdown emphasis",
"Enable web search": "Enable web search",
"Image type": "Image type",
"Theme": "Theme",
"Number of slides": "Number of slides",
"Language": "Language",
"Template": "模板",
"Include table of contents": "Include table of contents",
"Include title slide": "Include title slide",
"Allow access to user's info": "Allow access to user's info",
"Files": "Files",
"Export as": "Export as",
"Trigger webhook": "Trigger webhook",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The content for generating the presentation": "The content for generating the presentation",
"Instruction for generating the presentation (optional).": "Instruction for generating the presentation (optional).",
"Tone to use for the text": "Tone to use for the text",
"How verbose the text should be": "How verbose the text should be",
"An array of markdown strings for each slide (optional).": "An array of markdown strings for each slide (optional).",
"Whether to emphasize the markdown": "Whether to emphasize the markdown",
"Whether to enable web search": "Whether to enable web search",
"Type of image to generate": "Type of image to generate",
"Theme to use for the presentation (e.g. edge-yellow, light-rose)": "Theme to use for the presentation (e.g. edge-yellow, light-rose)",
"Number of slides to generate": "Number of slides to generate",
"Language for the presentation": "Language for the presentation",
"Template to use for the presentation": "Template to use for the presentation",
"Whether to include a table of contents": "Whether to include a table of contents",
"Whether to include a title slide": "Whether to include a title slide",
"Whether to allow access to user's info": "Whether to allow access to user's info",
"Array of file identifiers uploaded via Presenton files API (optional).": "Array of file identifiers uploaded via Presenton files API (optional).",
"Export format": "Export format",
"Whether to trigger subscribed webhooks": "Whether to trigger subscribed webhooks",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"Default": "Default",
"Casual": "Casual",
"Professional": "Professional",
"Funny": "Funny",
"Educational": "Educational",
"Sales pitch": "Sales pitch",
"Concise": "Concise",
"Standard": "Standard",
"Text-heavy": "Text-heavy",
"Stock": "Stock",
"AI generated": "AI generated",
"General": "A. 概况",
"Modern": "Modern",
"Swift": "Swift",
"PPTX": "PPTX",
"PDF": "PDF",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色",
"New Presentation": "New Presentation",
"Triggers when a new presentation is created in Presenton.": "Triggers when a new presentation is created in Presenton."
}

View File

@@ -0,0 +1,34 @@
import { createPiece } from '@activepieces/pieces-framework';
import { generatePresentations } from './lib/actions/generate-presentations';
import { presentonAuth } from './lib/common/auth';
import { PieceCategory } from '@activepieces/shared';
import { newPresentation } from './lib/triggers/new-presentation';
import { createCustomApiCallAction } from '@activepieces/pieces-common';
export const presentation = createPiece({
displayName: 'Presenton',
description:
'Generate AI-powered presentations using Presenton (https://presenton.ai). Supports templates, themes, images, synchronous and asynchronous generation, status polling, and export to PPTX/PDF.',
auth: presentonAuth,
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/presenton.png',
categories: [
PieceCategory.ARTIFICIAL_INTELLIGENCE,
PieceCategory.CONTENT_AND_FILES,
],
authors: ['sanket-a11y'],
actions: [
generatePresentations,
createCustomApiCallAction({
auth: presentonAuth,
baseUrl: () => 'https://api.presenton.ai/api/v1',
authMapping: async (auth) => {
return {
Authorization: `Bearer ${auth.secret_text}`,
};
},
}),
],
triggers: [newPresentation],
});

View File

@@ -0,0 +1,253 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { presentonAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const generatePresentations = createAction({
auth: presentonAuth,
name: 'generate_presentations',
displayName: 'Generate Presentations (async)',
description:
'Create an asynchronous presentation generation task at Presenton and return the created task.',
props: {
content: Property.LongText({
displayName: 'Content',
description: 'The content for generating the presentation',
required: false,
}),
instructions: Property.LongText({
displayName: 'Instructions',
description: 'Instruction for generating the presentation (optional).',
required: false,
}),
tone: Property.StaticDropdown({
displayName: 'Tone',
description: 'Tone to use for the text',
required: false,
defaultValue: 'default',
options: {
options: [
{ value: 'default', label: 'Default' },
{ value: 'casual', label: 'Casual' },
{ value: 'professional', label: 'Professional' },
{ value: 'funny', label: 'Funny' },
{ value: 'educational', label: 'Educational' },
{ value: 'sales_pitch', label: 'Sales pitch' },
],
},
}),
verbosity: Property.StaticDropdown({
displayName: 'Verbosity',
description: 'How verbose the text should be',
required: false,
defaultValue: 'standard',
options: {
options: [
{ value: 'concise', label: 'Concise' },
{ value: 'standard', label: 'Standard' },
{ value: 'text-heavy', label: 'Text-heavy' },
],
},
}),
slides_markdown: Property.Array({
displayName: 'Slides markdown',
description: 'An array of markdown strings for each slide (optional).',
required: false,
defaultValue: [],
}),
markdown_emphasis: Property.Checkbox({
displayName: 'Markdown emphasis',
description: 'Whether to emphasize the markdown',
required: false,
defaultValue: true,
}),
web_search: Property.Checkbox({
displayName: 'Enable web search',
description: 'Whether to enable web search',
required: false,
defaultValue: false,
}),
image_type: Property.StaticDropdown({
displayName: 'Image type',
description: 'Type of image to generate',
required: false,
defaultValue: 'stock',
options: {
options: [
{ value: 'stock', label: 'Stock' },
{ value: 'ai-generated', label: 'AI generated' },
],
},
}),
theme: Property.ShortText({
displayName: 'Theme',
description:
'Theme to use for the presentation (e.g. edge-yellow, light-rose)',
required: false,
}),
n_slides: Property.Number({
displayName: 'Number of slides',
description: 'Number of slides to generate',
required: false,
defaultValue: 8,
}),
language: Property.ShortText({
displayName: 'Language',
description: 'Language for the presentation',
required: false,
defaultValue: 'English',
}),
template: Property.StaticDropdown({
displayName: 'Template',
description: 'Template to use for the presentation',
required: false,
defaultValue: 'general',
options: {
options: [
{ value: 'general', label: 'General' },
{ value: 'modern', label: 'Modern' },
{ value: 'standard', label: 'Standard' },
{ value: 'swift', label: 'Swift' },
],
},
}),
include_table_of_contents: Property.Checkbox({
displayName: 'Include table of contents',
description: 'Whether to include a table of contents',
required: false,
defaultValue: false,
}),
include_title_slide: Property.Checkbox({
displayName: 'Include title slide',
description: 'Whether to include a title slide',
required: false,
defaultValue: true,
}),
allow_access_to_user_info: Property.Checkbox({
displayName: "Allow access to user's info",
description: "Whether to allow access to user's info",
required: false,
defaultValue: true,
}),
files: Property.Array({
displayName: 'Files',
description:
'Array of file identifiers uploaded via Presenton files API (optional).',
required: false,
defaultValue: [],
}),
export_as: Property.StaticDropdown({
displayName: 'Export as',
description: 'Export format',
required: false,
defaultValue: 'pptx',
options: {
options: [
{ value: 'pptx', label: 'PPTX' },
{ value: 'pdf', label: 'PDF' },
],
},
}),
trigger_webhook: Property.Checkbox({
displayName: 'Trigger webhook',
description: 'Whether to trigger subscribed webhooks',
required: false,
defaultValue: false,
}),
},
async run({ auth, propsValue }) {
const apiKey = auth.secret_text;
const {
content,
slides_markdown,
instructions,
tone,
verbosity,
markdown_emphasis,
web_search,
image_type,
theme,
n_slides,
language,
template,
include_table_of_contents,
include_title_slide,
allow_access_to_user_info,
files,
export_as,
trigger_webhook,
} = propsValue;
const body: any = {};
if (content) body['content'] = content;
if (slides_markdown)
body['slides_markdown'] = slides_markdown as unknown as string[];
if (instructions) body['instructions'] = instructions;
if (tone) body['tone'] = tone;
if (verbosity) body['verbosity'] = verbosity;
body['markdown_emphasis'] = markdown_emphasis ?? true;
body['web_search'] = web_search ?? false;
if (image_type) body['image_type'] = image_type;
if (theme) body['theme'] = theme;
body['n_slides'] = Number(n_slides ?? 8);
body['language'] = language ?? 'English';
body['template'] = template ?? 'general';
body['include_table_of_contents'] = include_table_of_contents ?? false;
body['include_title_slide'] = include_title_slide ?? true;
body['allow_access_to_user_info'] = allow_access_to_user_info ?? true;
if (files) body['files'] = files as unknown as string[];
body['export_as'] = export_as ?? 'pptx';
body['trigger_webhook'] = trigger_webhook ?? false;
try {
const response = await makeRequest(
apiKey,
HttpMethod.POST,
'/ppt/presentation/generate/async',
body
);
const pollIntervalSeconds = 5;
const taskId = response.id;
if (!taskId) {
throw new Error(
`Presenton did not return a task id: ${JSON.stringify(response)}`
);
}
const start = Date.now();
const timeoutMs = 120 * 1000;
const sleep = (ms: number) => new Promise((res) => setTimeout(res, ms));
while (Date.now() - start < timeoutMs) {
const statusResp = await makeRequest(
apiKey,
HttpMethod.GET,
`/ppt/presentation/status/${taskId}`
);
if (statusResp.status === 'completed') {
return statusResp;
}
if (statusResp.status === 'failed') {
throw new Error(
`Presentation generation failed: ${JSON.stringify(statusResp)}`
);
}
await sleep(pollIntervalSeconds * 1000);
}
throw new Error(
`Timed out waiting for presentation generation after 120 seconds`
);
} catch (err) {
throw new Error(`Presenton API error: ${err}`);
}
},
});

View File

@@ -0,0 +1,34 @@
import { PieceAuth } from '@activepieces/pieces-framework';
import { makeRequest } from './client';
import { HttpMethod } from '@activepieces/pieces-common';
export const presentonAuth = PieceAuth.SecretText({
displayName: 'Presenton API Key',
description: `
`,
required: true,
validate: async ({ auth }) => {
if (auth) {
try {
await makeRequest(
auth as string,
HttpMethod.GET,
'/ppt/presentation/all',
{}
);
return {
valid: true,
};
} catch (error) {
return {
valid: false,
error: 'Invalid Api Key',
};
}
}
return {
valid: false,
error: 'Invalid Api Key',
};
},
});

View File

@@ -0,0 +1,25 @@
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
export const BASE_URL = `https://api.presenton.ai/api/v1`;
export async function makeRequest(
api_key: string,
method: HttpMethod,
path: string,
body?: unknown
) {
try {
const response = await httpClient.sendRequest({
method,
url: `${BASE_URL}${path}`,
headers: {
Authorization: `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body,
});
return response.body;
} catch (error: any) {
throw new Error(`Unexpected error: ${error.message || String(error)}`);
}
}

View File

@@ -0,0 +1,100 @@
import {
createTrigger,
TriggerStrategy,
PiecePropValueSchema,
AppConnectionValueForAuthProperty,
} from '@activepieces/pieces-framework';
import {
DedupeStrategy,
Polling,
pollingHelper,
} from '@activepieces/pieces-common';
import dayjs from 'dayjs';
import { presentonAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
const polling: Polling<
AppConnectionValueForAuthProperty<typeof presentonAuth>,
Record<string, never>
> = {
strategy: DedupeStrategy.TIMEBASED,
items: async ({ auth, propsValue, lastFetchEpochMS }) => {
const apiKey = auth.secret_text;
const response: any = await makeRequest(
apiKey,
HttpMethod.GET,
'/ppt/presentation/all'
);
const itemsArray = response.results;
return itemsArray.map((item: any) => ({
epochMilliSeconds: dayjs(item.created_at).valueOf(),
data: item,
}));
},
};
export const newPresentation = createTrigger({
auth: presentonAuth,
name: 'newPresentation',
displayName: 'New Presentation',
description: 'Triggers when a new presentation is created in Presenton.',
props: {},
sampleData: {
id: '93d4092b-2a20-4637-bbe7-2addb6273761',
user: 'fa86a74f-53b9-46fa-9ac9-e3a526d125ca',
content: 'Indian society ',
n_slides: 1,
language: 'English',
title: ' AI **Presented by:** Jon deo -',
created_at: '2025-11-11T11:33:55.269027Z',
updated_at: '2025-11-11T11:34:12.978847Z',
tone: 'default',
verbosity: 'standard',
theme: null,
slides: [
{
presentation: '93d4092b-2a20-4637-bbe7-2addb6273761',
layout: 'general:general-intro-slide',
index: 0,
layout_group: 'general',
speaker_note: '',
id: '38ca1626-83ef-451f-8529-8b10725bcb3f',
content: {
title: 'AI Presentation',
description: '',
presenterName: 'Jon Deo',
presentationDate: '2025-11-11',
image: {
__image_prompt__: 'r',
__image_url__:
'https://images.pexels.com/photos/17898879/pexels-photo-17898879.jpeg?auto=compress&cs=tinysrgb&h=650&w=940',
},
__speaker_note__: '',
},
html_content: null,
properties: null,
},
],
},
type: TriggerStrategy.POLLING,
async test(context) {
return await pollingHelper.test(polling, context);
},
async onEnable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onEnable(polling, { store, auth, propsValue });
},
async onDisable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onDisable(polling, { store, auth, propsValue });
},
async run(context) {
return await pollingHelper.poll(polling, context);
},
});