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,33 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

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

View File

@@ -0,0 +1,10 @@
{
"name": "@activepieces/piece-bumpups",
"version": "0.0.2",
"type": "commonjs",
"main": "./src/index.js",
"types": "./src/index.d.ts",
"dependencies": {
"tslib": "^2.3.0"
}
}

View File

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

View File

@@ -0,0 +1,60 @@
{
"**Enter your Bumpups API Key.**\n---\n### How to obtain your API key\n1. Sign up or log in at [bumpups.com](https://bumpups.com).\n2. Go to **Settings** → **API**.\n3. Enable API access and generate a key.\n4. Copy and paste it here.\n": "**Gib deinen Bumpups API Schlüssel ein.**\n---\n### Wie du deinen API-Schlüssel\nerhältst. Melden Sie sich an oder melden Sie sich bei [bumpups.com]an (https://bumpups.com).\n2. Gehe zu **Einstellungen** → **API**.\n3. Aktiviere API-Zugriff und generiere einen Schlüssel.\n4. Kopiere und füge ihn hier ein.\n",
"Generate Creator Description": "Ersteller-Beschreibung generieren",
"Generate Creator Hashtags": "Ersteller Hashtags generieren",
"Generate Creator Takeaways": "Ersteller Takeaways generieren",
"Generate Creator Titles": "Ersteller Titel generieren",
"Generate Timestamps": "Zeitstempel generieren",
"Send Chat": "Chat senden",
"Custom API Call": "Eigener API-Aufruf",
"Generates a compelling description for a YouTube video based on its content.": "Erzeugt eine überzeugende Beschreibung für ein YouTube-Video basierend auf seinem Inhalt.",
"Generates relevant hashtags for a YouTube video based on its content.": "Erzeugt relevante Hashtags für ein YouTube-Video basierend auf dessen Inhalt.",
"Generates key takeaways for a YouTube video based on its content.": "Erzeugt Schlüsselübernahmen für ein YouTube-Video basierend auf dessen Inhalt.",
"Generates engaging titles for a YouTube video based on its content.": "Erzeugt interessante Titel für ein YouTube-Video basierend auf dessen Inhalt.",
"Generates detailed timestamps for a YouTube video based on its content.": "Erzeugt detaillierte Zeitstempel für ein YouTube-Video basierend auf seinem Inhalt.",
"Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.": "Erstellt eine interaktive Chat-Antwort für ein bestimmtes YouTube-Video mit dem Bump-1.0-Modell. Geben Sie die Video-URL und eine optionale Eingabeaufforderung.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Video URL": "Video-URL",
"Model": "Modell",
"Language": "Sprache",
"Output Format": "Ausgabeformat",
"Include Emojis": "Emojis einbeziehen",
"Timestamps Style": "Zeitstempel Stil",
"Prompt": "Prompt",
"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 YouTube video URL.": "Die YouTube-Video-URL.",
"Whether to include emojis in the generated takeaways.": "Ob Emojis in die erzeugten Übergriffe einbezogen werden sollen.",
"Preferred length of each timestamp.": "Bevorzugte Länge jedes Zeitstempels.",
"Message or query about the video (max 500 chars). If empty, defaults to \"summary\".": "Nachricht oder Abfrage über das Video (max. 500 Zeichen). Wenn leer, Standardwert ist \"Zusammenfassen\".",
"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..",
"bump-1.0": "bump-1,0",
"English (en)": "Englisch (de)",
"Hindi (hi)": "Hindi (hi)",
"Spanish (es)": "Spanisch (es)",
"Portuguese (pt)": "Portugiesisch (pt)",
"Russian (ru)": "Russisch (ru)",
"German (de)": "Deutsch (de)",
"French (fr)": "Französisch (fr)",
"Japanese (ja)": "Japanese (ja)",
"Korean (ko)": "Koreanisch (ko)",
"Arabic (ar)": "Arabic (ar)",
"Hashtags": "Hashtags",
"Keywords": "Stichwörter",
"Long": "Lang",
"Short": "Kurze",
"Text": "Text",
"Markdown": "Markdown",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,60 @@
{
"**Enter your Bumpups API Key.**\n---\n### How to obtain your API key\n1. Sign up or log in at [bumpups.com](https://bumpups.com).\n2. Go to **Settings** → **API**.\n3. Enable API access and generate a key.\n4. Copy and paste it here.\n": "**Introduce tu clave API de Bumpups.**\n---\n### Cómo obtener tu clave API\n1. Regístrate o inicia sesión en [bumpups.com](https://bumpups.com).\n2. Ve a **Configuración** → **API**.\n3. Activa el acceso a la API y genera una clave.\n4. Copia y pégala aquí.\n",
"Generate Creator Description": "Generar descripción del creador",
"Generate Creator Hashtags": "Generar etiquetas de creador",
"Generate Creator Takeaways": "Generar Takeaways de Creador",
"Generate Creator Titles": "Generar títulos de creador",
"Generate Timestamps": "Generar Timestamps",
"Send Chat": "Enviar chat",
"Custom API Call": "Llamada API personalizada",
"Generates a compelling description for a YouTube video based on its content.": "Genera una descripción convincente de un vídeo de YouTube basada en su contenido.",
"Generates relevant hashtags for a YouTube video based on its content.": "Genera hashtags relevantes para un vídeo de YouTube basado en su contenido.",
"Generates key takeaways for a YouTube video based on its content.": "Genera despegues clave para un vídeo de YouTube basado en su contenido.",
"Generates engaging titles for a YouTube video based on its content.": "Genera títulos atractivos para un vídeo de YouTube basado en su contenido.",
"Generates detailed timestamps for a YouTube video based on its content.": "Genera marcas de tiempo detalladas para un vídeo de YouTube basado en su contenido.",
"Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.": "Crea una respuesta interactiva de chat para un determinado vídeo de YouTube usando el modelo bump-1.0. Proporciona la URL del video y una indicación opcional.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Video URL": "URL del vídeo",
"Model": "Modelo",
"Language": "Idioma",
"Output Format": "Formato de salida",
"Include Emojis": "Incluye Emojis",
"Timestamps Style": "Estilo de timestamps",
"Prompt": "Petición",
"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 YouTube video URL.": "La URL de vídeo de YouTube.",
"Whether to include emojis in the generated takeaways.": "Si incluir emojis en los despegues generados.",
"Preferred length of each timestamp.": "Duración preferida de cada marca de tiempo.",
"Message or query about the video (max 500 chars). If empty, defaults to \"summary\".": "Mensaje o consulta sobre el video (máximo 500 caracteres). Si está vacío, el valor predeterminado es \"Resumen\".",
"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.",
"bump-1.0": "bump-1.0",
"English (en)": "Inglés (es)",
"Hindi (hi)": "Hindi (hola)",
"Spanish (es)": "Español (es)",
"Portuguese (pt)": "Portugués (pt)",
"Russian (ru)": "Ruso (ru)",
"German (de)": "Alemán (de)",
"French (fr)": "Francés (fr)",
"Japanese (ja)": "Japanese (ja)",
"Korean (ko)": "Coreano (ko)",
"Arabic (ar)": "Arabic (ar)",
"Hashtags": "Etiquetas",
"Keywords": "Palabras clave",
"Long": "Largo",
"Short": "Corto",
"Text": "Texto",
"Markdown": "Markdown",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO"
}

View File

@@ -0,0 +1,60 @@
{
"**Enter your Bumpups API Key.**\n---\n### How to obtain your API key\n1. Sign up or log in at [bumpups.com](https://bumpups.com).\n2. Go to **Settings** → **API**.\n3. Enable API access and generate a key.\n4. Copy and paste it here.\n": "**Entrez votre clé API Bumpups.**\n---\n### Comment obtenir votre clé API\n1. Inscrivez-vous ou connectez-vous à [bumpups.com](https://bumpups.com).\n2. Allez dans **Paramètres** → **API**.\n3. Activez l'accès à l'API et générez une clé.\n4. Copiez et collez ici.\n",
"Generate Creator Description": "Générer une description du créateur",
"Generate Creator Hashtags": "Générer des hashtags Créateur",
"Generate Creator Takeaways": "Générer des Prêts de Créateur",
"Generate Creator Titles": "Générer des titres de créateur",
"Generate Timestamps": "Générer des horodatages",
"Send Chat": "Envoyer un chat",
"Custom API Call": "Appel d'API personnalisé",
"Generates a compelling description for a YouTube video based on its content.": "Génère une description convaincante pour une vidéo YouTube basée sur son contenu.",
"Generates relevant hashtags for a YouTube video based on its content.": "Génère des hashtags pertinents pour une vidéo YouTube basée sur son contenu.",
"Generates key takeaways for a YouTube video based on its content.": "Générer des prises de vue clés pour une vidéo YouTube basée sur son contenu.",
"Generates engaging titles for a YouTube video based on its content.": "Génère des titres engageants pour une vidéo YouTube basée sur son contenu.",
"Generates detailed timestamps for a YouTube video based on its content.": "Génère des horodatages détaillés pour une vidéo YouTube basée sur son contenu.",
"Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.": "Crée une réponse interactive de chat pour une vidéo YouTube donnée en utilisant le modèle bump-1.0. Fournissez l'URL de la vidéo et une invite facultative.",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"Video URL": "URL de la vidéo",
"Model": "Modélisation",
"Language": "Langue",
"Output Format": "Format de sortie",
"Include Emojis": "Inclure les émoticônes",
"Timestamps Style": "Style d'horodatage",
"Prompt": "Prompt",
"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 YouTube video URL.": "URL de la vidéo YouTube.",
"Whether to include emojis in the generated takeaways.": "Si l'on doit inclure des émoticônes dans les takeaways générés.",
"Preferred length of each timestamp.": "Longueur préférée de chaque horodatage.",
"Message or query about the video (max 500 chars). If empty, defaults to \"summary\".": "Message ou requête à propos de la vidéo (max 500 caractères). Si vide, la valeur par défaut est \"résumé\".",
"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.",
"bump-1.0": "bump-1.0",
"English (en)": "Français (fr)",
"Hindi (hi)": "Hindi (Bonjour)",
"Spanish (es)": "Espagnol (es)",
"Portuguese (pt)": "Portugais (pt)",
"Russian (ru)": "Russe (ru)",
"German (de)": "Allemand (de)",
"French (fr)": "Français (fr)",
"Japanese (ja)": "Japanese (ja)",
"Korean (ko)": "Coréen (ko)",
"Arabic (ar)": "Arabic (ar)",
"Hashtags": "Hashtags",
"Keywords": "Mots clés",
"Long": "Longue",
"Short": "Courte",
"Text": "Texte du texte",
"Markdown": "Markdown",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,60 @@
{
"**Enter your Bumpups API Key.**\n---\n### How to obtain your API key\n1. Sign up or log in at [bumpups.com](https://bumpups.com).\n2. Go to **Settings** → **API**.\n3. Enable API access and generate a key.\n4. Copy and paste it here.\n": "**Enter your Bumpups API Key.**\n---\n### How to obtain your API key\n1. Sign up or log in at [bumpups.com](https://bumpups.com).\n2. Go to **Settings** → **API**.\n3. Enable API access and generate a key.\n4. Copy and paste it here.\n",
"Generate Creator Description": "作成者の説明を生成する",
"Generate Creator Hashtags": "作成者のハッシュタグを生成",
"Generate Creator Takeaways": "クリエイターの武器を生成",
"Generate Creator Titles": "作成者のタイトルを生成",
"Generate Timestamps": "タイムスタンプの生成",
"Send Chat": "チャットを送信",
"Custom API Call": "カスタムAPI通話",
"Generates a compelling description for a YouTube video based on its content.": "YouTube動画のコンテンツに基づいて説得力のある説明を生成します。",
"Generates relevant hashtags for a YouTube video based on its content.": "YouTube動画のコンテンツに基づいて関連するハッシュタグを生成します。",
"Generates key takeaways for a YouTube video based on its content.": "YouTube動画のコンテンツに基づいて主要なテイクウェイを生成します。",
"Generates engaging titles for a YouTube video based on its content.": "YouTube動画のタイトルをコンテンツに基づいて生成します。",
"Generates detailed timestamps for a YouTube video based on its content.": "YouTube動画のコンテンツに基づいて詳細なタイムスタンプを生成します。",
"Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.": "Bump-1.0モデルを使用して、特定のYouTubeビデオに対する対話的なチャット応答を作成します。ビデオURLとオプションのプロンプトを提供します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Video URL": "動画の URL",
"Model": "モデル",
"Language": "言語",
"Output Format": "出力形式",
"Include Emojis": "絵文字を含める",
"Timestamps Style": "タイムスタンプスタイル",
"Prompt": "Prompt",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The YouTube video URL.": "YouTube動画のURL。",
"Whether to include emojis in the generated takeaways.": "生成された持ち帰りに絵文字を含めるかどうかを設定します。",
"Preferred length of each timestamp.": "各タイムスタンプの優先される長さ。",
"Message or query about the video (max 500 chars). If empty, defaults to \"summary\".": "ビデオについてのメッセージまたは問い合わせ(最大 500 文字)。空の場合、デフォルトは \"summary\" です。",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"bump-1.0": "bump-1.0",
"English (en)": "英語 (en)",
"Hindi (hi)": "ヒンディー語(ひ)",
"Spanish (es)": "スペイン語 (es)",
"Portuguese (pt)": "ポルトガル語 (pt)",
"Russian (ru)": "ロシア語(ル)",
"German (de)": "ドイツ語 (de)",
"French (fr)": "フランス語 (fr)",
"Japanese (ja)": "Japanese (ja)",
"Korean (ko)": "韓国語ko",
"Arabic (ar)": "Arabic (ar)",
"Hashtags": "ハッシュタグ",
"Keywords": "キーワード",
"Long": "長い順",
"Short": "Short",
"Text": "テキスト",
"Markdown": "Markdown",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭"
}

View File

@@ -0,0 +1,60 @@
{
"**Enter your Bumpups API Key.**\n---\n### How to obtain your API key\n1. Sign up or log in at [bumpups.com](https://bumpups.com).\n2. Go to **Settings** → **API**.\n3. Enable API access and generate a key.\n4. Copy and paste it here.\n": "**Geef je Bumpups API Key.**\n---\n### Hoe je je API key\n1 kunt bemachtigen. Registreer of log in bij [bumpups.com](https://bumpups.com).\n2. Ga naar **Instellingen** → **API**.\n3. Schakel API toegang in en genereer een sleutel.\n4. Kopieer en plak het hier.\n",
"Generate Creator Description": "Aanmaker beschrijving genereren",
"Generate Creator Hashtags": "Genereer maker Hashtags",
"Generate Creator Takeaways": "Genereer maker Takeaways",
"Generate Creator Titles": "Genereer koppen maker",
"Generate Timestamps": "Tijdstempels genereren",
"Send Chat": "Chat verzenden",
"Custom API Call": "Custom API Call",
"Generates a compelling description for a YouTube video based on its content.": "Genereert een indrukwekkende beschrijving voor een YouTube video gebaseerd op de inhoud.",
"Generates relevant hashtags for a YouTube video based on its content.": "Genereert relevante hashtags voor een YouTube video gebaseerd op de inhoud.",
"Generates key takeaways for a YouTube video based on its content.": "Genereert belangrijke takeaways voor een YouTube video gebaseerd op de inhoud.",
"Generates engaging titles for a YouTube video based on its content.": "Genereert aantrekkelijke titels voor een YouTube video gebaseerd op de inhoud.",
"Generates detailed timestamps for a YouTube video based on its content.": "Genereert gedetailleerde tijdstempels voor een YouTube video gebaseerd op de inhoud.",
"Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.": "Maakt een interactief chatantwoord voor een bepaalde YouTube-video met behulp van het bump-1.0-model. Geef de video-URL en een optionele prompt.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Video URL": "Video URL",
"Model": "Model",
"Language": "Taal",
"Output Format": "Uitvoer formaat",
"Include Emojis": "Inclusief Emojis",
"Timestamps Style": "Tijdstempels Stijl",
"Prompt": "Prompt",
"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 YouTube video URL.": "De YouTube video URL.",
"Whether to include emojis in the generated takeaways.": "Of emojis moeten worden opgenomen in het gegenereerde aftrek.",
"Preferred length of each timestamp.": "Voorkeur lengte van elke tijdstempel.",
"Message or query about the video (max 500 chars). If empty, defaults to \"summary\".": "Bericht of query over de video (max 500 tekens). Indien leeg, standaard \"samenvatting\".",
"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..",
"bump-1.0": "bump-1.0",
"English (en)": "Engels (en)",
"Hindi (hi)": "Hindi (hoog)",
"Spanish (es)": "Spaans (es)",
"Portuguese (pt)": "Portugees (pt)",
"Russian (ru)": "Russisch (ru)",
"German (de)": "Duits (de)",
"French (fr)": "Frans (fr)",
"Japanese (ja)": "Japanese (ja)",
"Korean (ko)": "Koreaans (ko)",
"Arabic (ar)": "Arabic (ar)",
"Hashtags": "Hashtags",
"Keywords": "Sleutelwoorden",
"Long": "Lang",
"Short": "Kort",
"Text": "Tekstveld",
"Markdown": "Markdown",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD"
}

View File

@@ -0,0 +1,60 @@
{
"**Enter your Bumpups API Key.**\n---\n### How to obtain your API key\n1. Sign up or log in at [bumpups.com](https://bumpups.com).\n2. Go to **Settings** → **API**.\n3. Enable API access and generate a key.\n4. Copy and paste it here.\n": "**Digite sua chave de API do Bumpup.**\n---\n### Como obter a sua chave de API\n1. Registre-se ou faça login no [bumpups.com](https://bumpups.com).\n2. Vá para **Configurações** → **API**.\n3. Habilite o acesso à API e gere uma chave.\n4. Copie e cole aqui.\n",
"Generate Creator Description": "Gerar Descrição do Criador",
"Generate Creator Hashtags": "Gerar Hashtags do Criador",
"Generate Creator Takeaways": "Gerar criador de Takeaways",
"Generate Creator Titles": "Gerar Títulos do Criador",
"Generate Timestamps": "Gerar Timestamps",
"Send Chat": "Enviar Chat",
"Custom API Call": "Chamada de API personalizada",
"Generates a compelling description for a YouTube video based on its content.": "Gera uma descrição convincente para um vídeo do YouTube com base em seu conteúdo.",
"Generates relevant hashtags for a YouTube video based on its content.": "Gera hashtags relevantes para um vídeo do YouTube com base em seu conteúdo.",
"Generates key takeaways for a YouTube video based on its content.": "Gera tomadas de importantes para um vídeo do YouTube com base em seu conteúdo.",
"Generates engaging titles for a YouTube video based on its content.": "Gera títulos engajantes para um vídeo do YouTube com base em seu conteúdo.",
"Generates detailed timestamps for a YouTube video based on its content.": "Gera timestamps detalhados para um vídeo do YouTube com base em seu conteúdo.",
"Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.": "Cria uma resposta interativa de chat para um determinado vídeo do YouTube usando o modelo bump-1.0. Fornece a URL do vídeo e um prompt opcional.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Video URL": "URL do vídeo",
"Model": "Modelo",
"Language": "IDIOMA",
"Output Format": "Formato de saída",
"Include Emojis": "Incluir Emojis",
"Timestamps Style": "Estilo da Data",
"Prompt": "Aviso",
"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 YouTube video URL.": "A URL do vídeo do YouTube.",
"Whether to include emojis in the generated takeaways.": "Se deve incluir emojis nas takeaways geradas.",
"Preferred length of each timestamp.": "Duração preferida de cada timestamp.",
"Message or query about the video (max 500 chars). If empty, defaults to \"summary\".": "Mensagem ou consulta sobre o vídeo (máx. 500 caracteres). Se vazio, o padrão é \"resumo\".",
"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..",
"bump-1.0": "bump-1.0",
"English (en)": "Português Brasileiro (pt-BR)",
"Hindi (hi)": "Hindi (oi)",
"Spanish (es)": "Espanhol (s)",
"Portuguese (pt)": "Português (pt)",
"Russian (ru)": "Russo (ru)",
"German (de)": "Alemão (de)",
"French (fr)": "Francês (fr)",
"Japanese (ja)": "Japanese (ja)",
"Korean (ko)": "Coreano (ko)",
"Arabic (ar)": "Arabic (ar)",
"Hashtags": "Palavras-chave",
"Keywords": "Palavras-chave",
"Long": "Longas",
"Short": "Curto",
"Text": "texto",
"Markdown": "Markdown",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA"
}

View File

@@ -0,0 +1,60 @@
{
"**Enter your Bumpups API Key.**\n---\n### How to obtain your API key\n1. Sign up or log in at [bumpups.com](https://bumpups.com).\n2. Go to **Settings** → **API**.\n3. Enable API access and generate a key.\n4. Copy and paste it here.\n": "**Enter your Bumpups API Key.**\n---\n### How to obtain your API key\n1. Sign up or log in at [bumpups.com](https://bumpups.com).\n2. Go to **Settings** → **API**.\n3. Enable API access and generate a key.\n4. Copy and paste it here.\n",
"Generate Creator Description": "Generate Creator Description",
"Generate Creator Hashtags": "Generate Creator Hashtags",
"Generate Creator Takeaways": "Generate Creator Takeaways",
"Generate Creator Titles": "Generate Creator Titles",
"Generate Timestamps": "Generate Timestamps",
"Send Chat": "Send Chat",
"Custom API Call": "Custom API Call",
"Generates a compelling description for a YouTube video based on its content.": "Generates a compelling description for a YouTube video based on its content.",
"Generates relevant hashtags for a YouTube video based on its content.": "Generates relevant hashtags for a YouTube video based on its content.",
"Generates key takeaways for a YouTube video based on its content.": "Generates key takeaways for a YouTube video based on its content.",
"Generates engaging titles for a YouTube video based on its content.": "Generates engaging titles for a YouTube video based on its content.",
"Generates detailed timestamps for a YouTube video based on its content.": "Generates detailed timestamps for a YouTube video based on its content.",
"Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.": "Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Video URL": "Video URL",
"Model": "Model",
"Language": "Language",
"Output Format": "Output Format",
"Include Emojis": "Include Emojis",
"Timestamps Style": "Timestamps Style",
"Prompt": "Prompt",
"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 YouTube video URL.": "The YouTube video URL.",
"Whether to include emojis in the generated takeaways.": "Whether to include emojis in the generated takeaways.",
"Preferred length of each timestamp.": "Preferred length of each timestamp.",
"Message or query about the video (max 500 chars). If empty, defaults to \"summary\".": "Message or query about the video (max 500 chars). If empty, defaults to \"summary\".",
"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..",
"bump-1.0": "bump-1.0",
"English (en)": "English (en)",
"Hindi (hi)": "Hindi (hi)",
"Spanish (es)": "Spanish (es)",
"Portuguese (pt)": "Portuguese (pt)",
"Russian (ru)": "Russian (ru)",
"German (de)": "German (de)",
"French (fr)": "French (fr)",
"Japanese (ja)": "Japanese (ja)",
"Korean (ko)": "Korean (ko)",
"Arabic (ar)": "Arabic (ar)",
"Hashtags": "Hashtags",
"Keywords": "Keywords",
"Long": "Long",
"Short": "Short",
"Text": "Text",
"Markdown": "Markdown",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,60 @@
{
"**Enter your Bumpups API Key.**\n---\n### How to obtain your API key\n1. Sign up or log in at [bumpups.com](https://bumpups.com).\n2. Go to **Settings** → **API**.\n3. Enable API access and generate a key.\n4. Copy and paste it here.\n": "**Enter your Bumpups API Key.**\n---\n### How to obtain your API key\n1. Sign up or log in at [bumpups.com](https://bumpups.com).\n2. Go to **Settings** → **API**.\n3. Enable API access and generate a key.\n4. Copy and paste it here.\n",
"Generate Creator Description": "Generate Creator Description",
"Generate Creator Hashtags": "Generate Creator Hashtags",
"Generate Creator Takeaways": "Generate Creator Takeaways",
"Generate Creator Titles": "Generate Creator Titles",
"Generate Timestamps": "Generate Timestamps",
"Send Chat": "Send Chat",
"Custom API Call": "自定义 API 呼叫",
"Generates a compelling description for a YouTube video based on its content.": "Generates a compelling description for a YouTube video based on its content.",
"Generates relevant hashtags for a YouTube video based on its content.": "Generates relevant hashtags for a YouTube video based on its content.",
"Generates key takeaways for a YouTube video based on its content.": "Generates key takeaways for a YouTube video based on its content.",
"Generates engaging titles for a YouTube video based on its content.": "Generates engaging titles for a YouTube video based on its content.",
"Generates detailed timestamps for a YouTube video based on its content.": "Generates detailed timestamps for a YouTube video based on its content.",
"Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.": "Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Video URL": "Video URL",
"Model": "Model",
"Language": "Language",
"Output Format": "Output Format",
"Include Emojis": "Include Emojis",
"Timestamps Style": "Timestamps Style",
"Prompt": "Prompt",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The YouTube video URL.": "The YouTube video URL.",
"Whether to include emojis in the generated takeaways.": "Whether to include emojis in the generated takeaways.",
"Preferred length of each timestamp.": "Preferred length of each timestamp.",
"Message or query about the video (max 500 chars). If empty, defaults to \"summary\".": "Message or query about the video (max 500 chars). If empty, defaults to \"summary\".",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"bump-1.0": "bump-1.0",
"English (en)": "English (en)",
"Hindi (hi)": "Hindi (hi)",
"Spanish (es)": "Spanish (es)",
"Portuguese (pt)": "Portuguese (pt)",
"Russian (ru)": "Russian (ru)",
"German (de)": "German (de)",
"French (fr)": "French (fr)",
"Japanese (ja)": "Japanese (ja)",
"Korean (ko)": "Korean (ko)",
"Arabic (ar)": "Arabic (ar)",
"Hashtags": "Hashtags",
"Keywords": "Keywords",
"Long": "Long",
"Short": "Short",
"Text": "文本",
"Markdown": "Markdown",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色"
}

View File

@@ -0,0 +1,35 @@
import { createPiece, PieceAuth } from "@activepieces/pieces-framework";
import { BumpupsAuth } from "./lib/common/auth";
import { generateCreatorDescription } from "./lib/actions/generate-creator-description";
import { generateCreatorHashtags } from "./lib/actions/generate-creator-hashtags";
import { sendChat } from "./lib/actions/send-chat";
import { generateCreatorTakeaways } from "./lib/actions/generate-creator-takeaways";
import { generateCreatorTitles } from "./lib/actions/generate-creator-titles";
import { generateTimestamps } from "./lib/actions/generate-timestamps";
import { createCustomApiCallAction } from "@activepieces/pieces-common";
import { BASE_URL } from "./lib/common/client";
export const bumpups = createPiece({
displayName: 'Bumpups',
auth: BumpupsAuth,
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/bumpups.png',
authors: ['Niket2035','sanket-a11y'],
actions: [
generateCreatorDescription,
generateCreatorHashtags,
generateCreatorTakeaways,
generateCreatorTitles,
generateTimestamps,
sendChat,
createCustomApiCallAction({
auth: BumpupsAuth,
baseUrl: () => BASE_URL,
authMapping: async (auth) => ({
'X-Api-Key': `${auth}`,
}),
}),
],
triggers: [],
});

View File

@@ -0,0 +1,63 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { BumpupsAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const generateCreatorDescription = createAction({
auth: BumpupsAuth,
name: 'generateCreatorDescription',
displayName: 'Generate Creator Description',
description: 'Generates a compelling description for a YouTube video based on its content.',
props: {
videoUrl: Property.ShortText({
displayName: 'Video URL',
description: 'The YouTube video URL.',
required: true,
}),
model: Property.StaticDropdown({
displayName: 'Model',
required: true,
defaultValue: 'bump-1.0',
options: {
disabled: false,
options: [
{ label: 'bump-1.0', value: 'bump-1.0' },
],
},
}),
language: Property.StaticDropdown({
displayName: 'Language',
required: false,
defaultValue: 'en',
options: {
disabled: false,
options: [
{ label: 'English (en)', value: 'en' },
{ label: 'Hindi (hi)', value: 'hi' },
{ label: 'Spanish (es)', value: 'es' },
{ label: 'Portuguese (pt)', value: 'pt' },
{ label: 'Russian (ru)', value: 'ru' },
{ label: 'German (de)', value: 'de' },
{ label: 'French (fr)', value: 'fr' },
{ label: 'Japanese (ja)', value: 'ja' },
{ label: 'Korean (ko)', value: 'ko' },
{ label: 'Arabic (ar)', value: 'ar' },
],
},
}),
},
async run({auth, propsValue}) {
const body = {
url: propsValue.videoUrl,
model: propsValue.model,
languaege: propsValue.language || 'en',
};
const response = await makeRequest(
auth.secret_text,
HttpMethod.POST,
'/creator/description',
body
);
return response;
},
});

View File

@@ -0,0 +1,77 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { BumpupsAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const generateCreatorHashtags = createAction({
auth: BumpupsAuth,
name: 'generateCreatorHashtags',
displayName: 'Generate Creator Hashtags',
description:
'Generates relevant hashtags for a YouTube video based on its content.',
props: {
videoUrl: Property.ShortText({
displayName: 'Video URL',
description: 'The YouTube video URL.',
required: true,
}),
model: Property.StaticDropdown({
displayName: 'Model',
required: true,
defaultValue: 'bump-1.0',
options: {
disabled: false,
options: [{ label: 'bump-1.0', value: 'bump-1.0' }],
},
}),
language: Property.StaticDropdown({
displayName: 'Language',
required: false,
defaultValue: 'en',
options: {
disabled: false,
options: [
{ label: 'English (en)', value: 'en' },
{ label: 'Hindi (hi)', value: 'hi' },
{ label: 'Spanish (es)', value: 'es' },
{ label: 'Portuguese (pt)', value: 'pt' },
{ label: 'Russian (ru)', value: 'ru' },
{ label: 'German (de)', value: 'de' },
{ label: 'French (fr)', value: 'fr' },
{ label: 'Japanese (ja)', value: 'ja' },
{ label: 'Korean (ko)', value: 'ko' },
{ label: 'Arabic (ar)', value: 'ar' },
],
},
}),
output_format: Property.StaticDropdown({
displayName: 'Output Format',
required: false,
defaultValue: 'text',
options: {
disabled: false,
options: [
{ label: 'Hashtags', value: 'hashtags' },
{ label: 'Keywords', value: 'keywords' },
],
},
}),
},
async run({ auth, propsValue }) {
const body = {
url: propsValue.videoUrl,
model: propsValue.model,
language: propsValue.language || 'en',
output_format: propsValue.output_format || 'hashtags',
};
const response = await makeRequest(
auth.secret_text,
HttpMethod.POST,
'/creator/hashtags',
body
);
return response;
},
});

View File

@@ -0,0 +1,70 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { BumpupsAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const generateCreatorTakeaways = createAction({
auth: BumpupsAuth,
name: 'generateCreatorTakeaways',
displayName: 'Generate Creator Takeaways',
description:
'Generates key takeaways for a YouTube video based on its content.',
props: {
videoUrl: Property.ShortText({
displayName: 'Video URL',
description: 'The YouTube video URL.',
required: true,
}),
model: Property.StaticDropdown({
displayName: 'Model',
required: true,
defaultValue: 'bump-1.0',
options: {
disabled: false,
options: [{ label: 'bump-1.0', value: 'bump-1.0' }],
},
}),
language: Property.StaticDropdown({
displayName: 'Language',
required: false,
defaultValue: 'en',
options: {
disabled: false,
options: [
{ label: 'English (en)', value: 'en' },
{ label: 'Hindi (hi)', value: 'hi' },
{ label: 'Spanish (es)', value: 'es' },
{ label: 'Portuguese (pt)', value: 'pt' },
{ label: 'Russian (ru)', value: 'ru' },
{ label: 'German (de)', value: 'de' },
{ label: 'French (fr)', value: 'fr' },
{ label: 'Japanese (ja)', value: 'ja' },
{ label: 'Korean (ko)', value: 'ko' },
{ label: 'Arabic (ar)', value: 'ar' },
],
},
}),
emojis_enabled: Property.Checkbox({
displayName: 'Include Emojis',
description: 'Whether to include emojis in the generated takeaways.',
required: false,
defaultValue: false,
}),
},
async run({ auth, propsValue }) {
const body: any = {
url: propsValue.videoUrl,
model: propsValue.model,
language: propsValue.language || 'en',
emojis_enabled: propsValue.emojis_enabled || false,
};
const response = await makeRequest(
auth.secret_text,
HttpMethod.POST,
'/creator/takeaways',
body
);
return response;
},
});

View File

@@ -0,0 +1,65 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { BumpupsAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const generateCreatorTitles = createAction({
auth: BumpupsAuth,
name: 'generateCreatorTitles',
displayName: 'Generate Creator Titles',
description: 'Generates engaging titles for a YouTube video based on its content.',
props: {
videoUrl: Property.ShortText({
displayName: 'Video URL',
description: 'The YouTube video URL.',
required: true,
}),
model: Property.StaticDropdown({
displayName: 'Model',
required: true,
defaultValue: 'bump-1.0',
options: {
disabled: false,
options: [
{ label: 'bump-1.0', value: 'bump-1.0' },
],
},
}),
language: Property.StaticDropdown({
displayName: 'Language',
required: false,
defaultValue: 'en',
options: {
disabled: false,
options: [
{ label: 'English (en)', value: 'en' },
{ label: 'Hindi (hi)', value: 'hi' },
{ label: 'Spanish (es)', value: 'es' },
{ label: 'Portuguese (pt)', value: 'pt' },
{ label: 'Russian (ru)', value: 'ru' },
{ label: 'German (de)', value: 'de' },
{ label: 'French (fr)', value: 'fr' },
{ label: 'Japanese (ja)', value: 'ja' },
{ label: 'Korean (ko)', value: 'ko' },
{ label: 'Arabic (ar)', value: 'ar' },
],
},
}),
},
async run({ auth, propsValue }) {
const body = {
url: propsValue.videoUrl,
model: propsValue.model,
language: propsValue.language || 'en',
};
const response = await makeRequest(
auth.secret_text,
HttpMethod.POST,
'/creator/titles',
body
);
return response;
},
});

View File

@@ -0,0 +1,79 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { BumpupsAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const generateTimestamps = createAction({
auth: BumpupsAuth,
name: 'generateTimestamps',
displayName: 'Generate Timestamps',
description: 'Generates detailed timestamps for a YouTube video based on its content.',
props: {
videoUrl: Property.ShortText({
displayName: 'Video URL',
description: 'The YouTube video URL.',
required: true,
}),
model: Property.StaticDropdown({
displayName: 'Model',
required: true,
defaultValue: 'bump-1.0',
options: {
disabled: false,
options: [
{ label: 'bump-1.0', value: 'bump-1.0' },
],
},
}),
language: Property.StaticDropdown({
displayName: 'Language',
required: false,
defaultValue: 'en',
options: {
disabled: false,
options: [
{ label: 'English (en)', value: 'en' },
{ label: 'Hindi (hi)', value: 'hi' },
{ label: 'Spanish (es)', value: 'es' },
{ label: 'Portuguese (pt)', value: 'pt' },
{ label: 'Russian (ru)', value: 'ru' },
{ label: 'German (de)', value: 'de' },
{ label: 'French (fr)', value: 'fr' },
{ label: 'Japanese (ja)', value: 'ja' },
{ label: 'Korean (ko)', value: 'ko' },
{ label: 'Arabic (ar)', value: 'ar' },
],
},
}),
timestamps_style: Property.StaticDropdown({
displayName: 'Timestamps Style',
description: 'Preferred length of each timestamp.',
required: false,
defaultValue: 'long',
options: {
disabled: false,
options: [
{ label: 'Long', value: 'long' },
{ label: 'Short', value: 'short' },
],
},
}),
},
async run({ auth, propsValue }) {
const body = {
url: propsValue.videoUrl,
model: propsValue.model,
language: propsValue.language || 'en',
timestamps_style: propsValue.timestamps_style || 'long',
};
const response = await makeRequest(
auth.secret_text,
HttpMethod.POST,
'/general/timestamps',
body
);
return response;
},
});

View File

@@ -0,0 +1,86 @@
import { createAction, Property } from "@activepieces/pieces-framework";
import { BumpupsAuth } from "../common/auth";
import { makeRequest } from "../common/client";
import { HttpMethod } from "@activepieces/pieces-common";
export const sendChat = createAction({
name: 'send_chat',
displayName: 'Send Chat',
description:
'Creates an interactive chat response for a given YouTube video using the bump-1.0 model. Provide the video URL and an optional prompt.',
auth: BumpupsAuth,
props: {
videoUrl: Property.ShortText({
displayName: 'Video URL',
description: 'The YouTube video URL.',
required: true,
}),
model: Property.StaticDropdown({
displayName: 'Model',
required: true,
defaultValue: 'bump-1.0',
options: {
disabled: false,
options: [
{ label: 'bump-1.0', value: 'bump-1.0' },
],
},
}),
prompt: Property.LongText({
displayName: 'Prompt',
description:
'Message or query about the video (max 500 chars). If empty, defaults to "summary".',
required: false,
}),
language: Property.StaticDropdown({
displayName: 'Language',
required: false,
defaultValue: 'en',
options: {
disabled: false,
options: [
{ label: 'English (en)', value: 'en' },
{ label: 'Hindi (hi)', value: 'hi' },
{ label: 'Spanish (es)', value: 'es' },
{ label: 'Portuguese (pt)', value: 'pt' },
{ label: 'Russian (ru)', value: 'ru' },
{ label: 'German (de)', value: 'de' },
{ label: 'French (fr)', value: 'fr' },
{ label: 'Japanese (ja)', value: 'ja' },
{ label: 'Korean (ko)', value: 'ko' },
{ label: 'Arabic (ar)', value: 'ar' },
],
},
}),
output_format: Property.StaticDropdown({
displayName: 'Output Format',
required: false,
defaultValue: 'text',
options: {
disabled: false,
options: [
{ label: 'Text', value: 'text' },
{ label: 'Markdown', value: 'markdown' },
],
},
}),
},
async run({ auth, propsValue }) {
const body = {
url: propsValue.videoUrl,
model: propsValue.model,
prompt: propsValue.prompt || 'summary',
language: propsValue.language || 'en',
output_format: propsValue.output_format || 'text',
};
const response = await makeRequest(
auth.secret_text,
HttpMethod.POST,
'/chat',
body
);
return response;
},
});

View File

@@ -0,0 +1,17 @@
import { PieceAuth } from "@activepieces/pieces-framework";
import { makeRequest } from "./client";
import { HttpMethod } from "@activepieces/pieces-common";
export const BumpupsAuth = PieceAuth.SecretText({
displayName: 'Bumpups API Key',
description: `**Enter your Bumpups API Key.**
---
### How to obtain your API key
1. Sign up or log in at [bumpups.com](https://bumpups.com).
2. Go to **Settings** → **API**.
3. Enable API access and generate a key.
4. Copy and paste it here.
`,
required: true,
});

View File

@@ -0,0 +1,25 @@
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
export const BASE_URL = `https://api.bumpups.com`;
export async function makeRequest(
apiKey: string,
method: HttpMethod,
path: string,
body?: unknown
) {
try {
const response = await httpClient.sendRequest({
method,
url: `${BASE_URL}${path}`,
headers: {
'X-Api-Key': apiKey,
'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,20 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"importHelpers": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noPropertyAccessFromIndexSignature": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"include": ["src/**/*.ts"]
}