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,82 @@
{
"Business intelligence and performance management suite for data analysis and reporting": "Business-Intelligenz- und Performance-Management-Suite zur Datenanalyse und -Berichterstattung",
"Base URL": "Basis-URL",
"CAM Namespace": "CAM-Namensraum",
"Username": "Benutzername",
"Password": "Kennwort",
"Cognos server URL (e.g., https://your-cognos-server.com)": "Cognos Server URL (z.B. https://your-cognos-server.com)",
"CAM namespace for authentication (e.g., LDAP)": "CAM-Namensraum für Authentifizierung (z. B. LDAP)",
"Cognos username": "Cognos Benutzername",
"Cognos password": "Cognos Passwort",
"\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics credentials:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ": "\n## IBM Cognos Analytics Authentifizierung\n\nGeben Sie Ihre Cognos Analytics Zugangsdaten ein:\n- **Benutzername**: Ihr Cognos Benutzername\n- **Passwort**: Ihr Cognos Passwort\n ",
"Create Data Source": "Datenquelle erstellen",
"Get Data Source": "Datenquelle abrufen",
"Update Data Source": "Datenquelle aktualisieren",
"Delete Data Source": "Datenquelle löschen",
"Get Content Object": "Get Content Object",
"Update Content Object": "Inhaltsobjekt aktualisieren",
"Move Content Object": "Inhaltsobjekt verschieben",
"Copy Content Object": "Inhaltsobjekt kopieren",
"Custom API Call": "Eigener API-Aufruf",
"Create a new data source": "Neue Datenquelle erstellen",
"Retrieve data source details": "Datenquellen-Details abrufen",
"Update an existing data source": "Aktualisiere eine vorhandene Datenquelle",
"Delete a data source": "Datenquelle löschen",
"Get content object details": "Details zum Inhaltsobjekt abrufen",
"Update an existing content object": "Aktualisiere ein vorhandenes Inhaltsobjekt",
"Move an object with all its descendants": "Verschiebe ein Objekt mit all seinen Nachkommen",
"Copy an object optionally with all its descendants": "Objekt optional mit all seinen Nachkommen kopieren",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Data Source Name": "Name der Datenquelle",
"Connection String": "Verbindungszeichenkette",
"Driver Name": "Treibername",
"Database Username": "Datenbank-Benutzername",
"Database Password": "Datenbank-Passwort",
"Signon Name": "Anmeldename",
"Data Source": "Datenquelle",
"Extra Fields": "Zusätzliche Felder",
"Disabled": "Deaktiviert",
"Hidden": "Hidden",
"Content Object": "Inhaltsobjekt",
"Type": "Typ",
"Name": "Name",
"Description": "Beschreibung",
"Version": "Version",
"Destination Container": "Ziel-Container",
"Recursive Copy": "Rekursive Kopie",
"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)",
"Name for the new data source": "Name für die neue Datenquelle",
"JDBC URL or database connection string": "JDBC-URL oder Datenbankverbindungsstring",
"Database driver class name": "Klassenname des Datenbanktreibers",
"Username for database connection": "Benutzername für Datenbankverbindung",
"Password for database connection": "Passwort für Datenbankverbindung",
"Name for the database credentials": "Name für die Datenbank-Anmeldeinformationen",
"Select a data source": "Datenquelle auswählen",
"Comma-separated list of extra fields (e.g., connections,signons)": "Kommaseparierte Liste von zusätzlichen Feldern (z. B. Verbindungen, Signaturen)",
"New name for the data source": "Neuer Name für die Datenquelle",
"Disable the data source": "Datenquelle deaktivieren",
"Hide the data source": "Datenquelle ausblenden",
"Select a content object": "Inhaltsobjekt auswählen",
"Comma-separated list of extra fields (e.g., owner,permissions,children)": "Kommaseparierte Liste von zusätzlichen Feldern (z.B. Eigentümer, Berechtigungen,Kind)",
"Object type (e.g., report, dashboard, folder)": "Objekttyp (z.B. Bericht, Dashboard, Ordner)",
"New name for the object": "Neuer Name für das Objekt",
"New description for the object": "Neue Beschreibung für das Objekt",
"Current version for optimistic concurrency": "Aktuelle Version für optimistische Concurrency",
"Destination container where the object will be moved": "Ziel-Container, in dem das Objekt verschoben wird",
"Destination container where the object will be copied": "Zielbehälter, in den das Objekt kopiert wird",
"Copy all descendants (child objects)": "Kopiere alle Nachkommen (untergeordnete Objekte)",
"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..",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,82 @@
{
"Business intelligence and performance management suite for data analysis and reporting": "Business intelligence and performance management suite for data analysis and reporting",
"Base URL": "URL base",
"CAM Namespace": "Espacio de nombres CAM",
"Username": "Usuario",
"Password": "Contraseña",
"Cognos server URL (e.g., https://your-cognos-server.com)": "URL del servidor Cognos (e.g., https://your-cognos-server.com)",
"CAM namespace for authentication (e.g., LDAP)": "Espacio de nombres CAM para autenticación (por ejemplo, LDAP)",
"Cognos username": "Nombre de usuario Cognos",
"Cognos password": "Contraseña Cognos",
"\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics credentials:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ": "\n## IBM Cognos Analytics Authentication\n\nIntroduzca sus credenciales de Cognos Analytics:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ",
"Create Data Source": "Crear fuente de datos",
"Get Data Source": "Obtener fuente de datos",
"Update Data Source": "Actualizar fuente de datos",
"Delete Data Source": "Borrar fuente de datos",
"Get Content Object": "Get Content Object",
"Update Content Object": "Actualizar objeto de contenido",
"Move Content Object": "Mover objeto contenido",
"Copy Content Object": "Copiar objeto contenido",
"Custom API Call": "Llamada API personalizada",
"Create a new data source": "Crear una nueva fuente de datos",
"Retrieve data source details": "Recuperar los detalles de la fuente de datos",
"Update an existing data source": "Actualizar una fuente de datos existente",
"Delete a data source": "Borrar una fuente de datos",
"Get content object details": "Obtener detalles del objeto de contenido",
"Update an existing content object": "Actualizar un objeto de contenido existente",
"Move an object with all its descendants": "Mueve un objeto con todos sus descendientes",
"Copy an object optionally with all its descendants": "Copia un objeto opcionalmente con todos sus descendientes",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Data Source Name": "Nombre fuente de datos",
"Connection String": "Cadena de conexión",
"Driver Name": "Nombre del conductor",
"Database Username": "Usuario de la base de datos",
"Database Password": "Contraseña de la base de datos",
"Signon Name": "Nombre de Firma",
"Data Source": "Fuente de datos",
"Extra Fields": "Campos extra",
"Disabled": "Deshabilitado",
"Hidden": "Hidden",
"Content Object": "Objeto de contenido",
"Type": "Tipo",
"Name": "Nombre",
"Description": "Descripción",
"Version": "Versión",
"Destination Container": "Contenedor de destino",
"Recursive Copy": "Copia recursiva",
"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)",
"Name for the new data source": "Nombre para la nueva fuente de datos",
"JDBC URL or database connection string": "URL de JDBC o cadena de conexión de base de datos",
"Database driver class name": "Nombre de la clase del controlador de base de datos",
"Username for database connection": "Nombre de usuario para conexión a la base de datos",
"Password for database connection": "Contraseña para conexión a la base de datos",
"Name for the database credentials": "Nombre para las credenciales de la base de datos",
"Select a data source": "Seleccione una fuente de datos",
"Comma-separated list of extra fields (e.g., connections,signons)": "Lista separada por comas de campos extra (por ejemplo, conexiones, signons)",
"New name for the data source": "Nuevo nombre para la fuente de datos",
"Disable the data source": "Desactivar la fuente de datos",
"Hide the data source": "Ocultar la fuente de datos",
"Select a content object": "Seleccione un objeto de contenido",
"Comma-separated list of extra fields (e.g., owner,permissions,children)": "Lista separada por comas de campos extra (por ejemplo, propietario, permisos, hijos)",
"Object type (e.g., report, dashboard, folder)": "Tipo de objeto (por ejemplo, informe, tablero, carpeta)",
"New name for the object": "Nuevo nombre para el objeto",
"New description for the object": "Nueva descripción para el objeto",
"Current version for optimistic concurrency": "Versión actual para la concurrencia optimista",
"Destination container where the object will be moved": "Contenedor de destino donde se moverá el objeto",
"Destination container where the object will be copied": "Contenedor de destino donde se copiará el objeto",
"Copy all descendants (child objects)": "Copiar todos los descendientes (objetos secundarios)",
"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.",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO"
}

View File

@@ -0,0 +1,82 @@
{
"Business intelligence and performance management suite for data analysis and reporting": "Suite d'intelligence d'affaires et de gestion de la performance pour l'analyse et le reporting de données",
"Base URL": "URL de base",
"CAM Namespace": "Espace de noms CAM",
"Username": "Nom d'utilisateur",
"Password": "Password",
"Cognos server URL (e.g., https://your-cognos-server.com)": "URL du serveur Cognos (par exemple, https://votre-serveur-cognos-server.com)",
"CAM namespace for authentication (e.g., LDAP)": "Espace de noms CAM pour l'authentification (par exemple, LDAP)",
"Cognos username": "Nom d'utilisateur Cognos",
"Cognos password": "Mot de passe Cognos",
"\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics credentials:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ": "\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics credentials:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ",
"Create Data Source": "Créer une source de données",
"Get Data Source": "Obtenir la source de données",
"Update Data Source": "Mettre à jour la source de données",
"Delete Data Source": "Supprimer la source de données",
"Get Content Object": "Get Content Object",
"Update Content Object": "Mettre à jour l'objet de contenu",
"Move Content Object": "Déplacer l'objet de contenu",
"Copy Content Object": "Copier l'objet contenu",
"Custom API Call": "Appel d'API personnalisé",
"Create a new data source": "Créer une nouvelle source de données",
"Retrieve data source details": "Récupérer les détails de la source de données",
"Update an existing data source": "Mettre à jour une source de données existante",
"Delete a data source": "Supprimer une source de données",
"Get content object details": "Obtenir les détails de l'objet de contenu",
"Update an existing content object": "Mettre à jour un objet de contenu existant",
"Move an object with all its descendants": "Déplacer un objet avec tous ses descendants",
"Copy an object optionally with all its descendants": "Copier un objet optionnellement avec tous ses descendants",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"Data Source Name": "Nom de la source de données",
"Connection String": "Chaîne de connexion",
"Driver Name": "Nom du chauffeur",
"Database Username": "Nom d'utilisateur de la base de données",
"Database Password": "Mot de passe de la base de données",
"Signon Name": "Nom du Signon",
"Data Source": "Source de données",
"Extra Fields": "Champs supplémentaires",
"Disabled": "Désactivé",
"Hidden": "Hidden",
"Content Object": "Objet de contenu",
"Type": "Type de texte",
"Name": "Nom",
"Description": "Libellé",
"Version": "Version",
"Destination Container": "Conteneur de destination",
"Recursive Copy": "Copie récursive",
"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)",
"Name for the new data source": "Nom de la nouvelle source de données",
"JDBC URL or database connection string": "URL JDBC ou chaîne de connexion à la base de données",
"Database driver class name": "Nom de la classe du pilote de la base de données",
"Username for database connection": "Nom d'utilisateur pour la connexion à la base de données",
"Password for database connection": "Mot de passe pour la connexion à la base de données",
"Name for the database credentials": "Nom des informations d'identification de la base de données",
"Select a data source": "Sélectionnez une source de données",
"Comma-separated list of extra fields (e.g., connections,signons)": "Liste de champs supplémentaires séparés par des virgules (par exemple, connexions, signons)",
"New name for the data source": "Nouveau nom pour la source de données",
"Disable the data source": "Désactiver la source de données",
"Hide the data source": "Masquer la source de données",
"Select a content object": "Sélectionnez un objet de contenu",
"Comma-separated list of extra fields (e.g., owner,permissions,children)": "Liste de champs supplémentaires séparés par des virgules (ex. : propriétaires, permissions, enfants)",
"Object type (e.g., report, dashboard, folder)": "Type d'objet (par exemple, rapport, tableau de bord, dossier)",
"New name for the object": "Nouveau nom pour l'objet",
"New description for the object": "Nouvelle description de l'objet",
"Current version for optimistic concurrency": "Version actuelle pour la concurrence optimiste",
"Destination container where the object will be moved": "Conteneur de destination où l'objet sera déplacé",
"Destination container where the object will be copied": "Conteneur de destination où l'objet sera copié",
"Copy all descendants (child objects)": "Copier tous les descendants (objets enfants)",
"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.",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,82 @@
{
"Business intelligence and performance management suite for data analysis and reporting": "データの分析と報告のためのビジネスインテリジェンスとパフォーマンス管理スイート",
"Base URL": "ベースURL",
"CAM Namespace": "CAMの名前空間",
"Username": "ユーザー名",
"Password": "Password",
"Cognos server URL (e.g., https://your-cognos-server.com)": "Cognos サーバー URL (例: https://your-cognos-server.com)",
"CAM namespace for authentication (e.g., LDAP)": "認証用CAM名前空間LDAP",
"Cognos username": "Cognos ユーザー名",
"Cognos password": "Cognos パスワード",
"\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics credentials:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ": "\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics 資格情報:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ",
"Create Data Source": "データソースの作成",
"Get Data Source": "データソースの取得",
"Update Data Source": "データソースの更新",
"Delete Data Source": "データソースの削除",
"Get Content Object": "Get Content Object",
"Update Content Object": "コンテンツオブジェクトを更新",
"Move Content Object": "コンテンツオブジェクトの移動",
"Copy Content Object": "コンテンツオブジェクトをコピー",
"Custom API Call": "カスタムAPI通話",
"Create a new data source": "新しいデータソースを作成",
"Retrieve data source details": "データソースの詳細を取得",
"Update an existing data source": "既存のデータソースを更新",
"Delete a data source": "データソースを削除",
"Get content object details": "コンテンツオブジェクトの詳細を取得する",
"Update an existing content object": "既存のコンテンツオブジェクトを更新",
"Move an object with all its descendants": "すべての子孫を持つオブジェクトを移動します",
"Copy an object optionally with all its descendants": "必要に応じてすべての子孫を持つオブジェクトをコピーします",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Data Source Name": "データソース名",
"Connection String": "接続文字列",
"Driver Name": "ドライバー名",
"Database Username": "データベースのユーザー名",
"Database Password": "データベースのパスワード",
"Signon Name": "サインオン名",
"Data Source": "データソース",
"Extra Fields": "追加フィールド",
"Disabled": "無効",
"Hidden": "Hidden",
"Content Object": "コンテンツオブジェクト",
"Type": "タイプ",
"Name": "Name",
"Description": "説明",
"Version": "バージョン",
"Destination Container": "宛先コンテナ",
"Recursive Copy": "再帰コピー",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"Name for the new data source": "新しいデータソースの名前",
"JDBC URL or database connection string": "JDBC URL またはデータベース接続文字列",
"Database driver class name": "データベースドライバークラス名",
"Username for database connection": "データベース接続のユーザー名",
"Password for database connection": "データベース接続のパスワード",
"Name for the database credentials": "データベースの資格情報の名前",
"Select a data source": "データソースを選択",
"Comma-separated list of extra fields (e.g., connections,signons)": "カンマ区切りの追加フィールドのリスト (接続、署名など)",
"New name for the data source": "データソースの新しい名前",
"Disable the data source": "データソースを無効にする",
"Hide the data source": "データソースを隠す",
"Select a content object": "コンテンツオブジェクトを選択",
"Comma-separated list of extra fields (e.g., owner,permissions,children)": "カンマで区切られた追加フィールドのリスト (例: owner,permission,children)",
"Object type (e.g., report, dashboard, folder)": "オブジェクトのタイプ (例: レポート、ダッシュボード、フォルダ)",
"New name for the object": "オブジェクトの新しい名前",
"New description for the object": "オブジェクトの新しい説明",
"Current version for optimistic concurrency": "楽観的な並行性のための現在のバージョン",
"Destination container where the object will be moved": "オブジェクトが移動される宛先コンテナ",
"Destination container where the object will be copied": "オブジェクトがコピーされる宛先コンテナ",
"Copy all descendants (child objects)": "すべての子孫(子オブジェクト)をコピー",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭"
}

View File

@@ -0,0 +1,82 @@
{
"Business intelligence and performance management suite for data analysis and reporting": "Zakelijke intelligentie en prestatiebeheer suite voor gegevensanalyse en rapportage",
"Base URL": "Basis URL",
"CAM Namespace": "CAM Namespace",
"Username": "Gebruikersnaam",
"Password": "Wachtwoord",
"Cognos server URL (e.g., https://your-cognos-server.com)": "Cognos server-URL (bijv. https://your-cognos-server.com)",
"CAM namespace for authentication (e.g., LDAP)": "CAM namespace voor authenticatie (bijv. LDAP)",
"Cognos username": "Cognos gebruikersnaam",
"Cognos password": "Cognos wachtwoord",
"\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics credentials:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ": "\n## IBM Cognos Analytics Authentication\n\nVoer je Cognos Analytics inloggegevens in:\n- **Gebruikersnaam**: Jouw Cognos username\n- **Wachtwoord**: Jouw Cognos password\n ",
"Create Data Source": "Gegevensbron aanmaken",
"Get Data Source": "Gegevensbron ophalen",
"Update Data Source": "Gegevensbron bijwerken",
"Delete Data Source": "Gegevensbron verwijderen",
"Get Content Object": "Get Content Object",
"Update Content Object": "Inhoudsobject bijwerken",
"Move Content Object": "Verplaats inhoudsobject",
"Copy Content Object": "Kopieer inhoudsobject",
"Custom API Call": "Custom API Call",
"Create a new data source": "Maak een nieuwe gegevensbron aan",
"Retrieve data source details": "Haal gegevensbron details op",
"Update an existing data source": "Een bestaande gegevensbron bijwerken",
"Delete a data source": "Gegevensbron verwijderen",
"Get content object details": "Krijg details van inhoudsobject",
"Update an existing content object": "Een bestaand inhoudsobject bijwerken",
"Move an object with all its descendants": "Verplaats een object met al zijn afstammelingen",
"Copy an object optionally with all its descendants": "Kopieer een object optioneel met al zijn afstammelingen",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Data Source Name": "Bron naam van data",
"Connection String": "Connectie String",
"Driver Name": "Naam chauffeur",
"Database Username": "Database Gebruikersnaam",
"Database Password": "Database wachtwoord",
"Signon Name": "Signon Naam",
"Data Source": "Bron van gegevens",
"Extra Fields": "Extra velden",
"Disabled": "Uitgeschakeld",
"Hidden": "Hidden",
"Content Object": "Object inhoud",
"Type": "Type",
"Name": "Naam",
"Description": "Beschrijving",
"Version": "Versie",
"Destination Container": "Bestemming container",
"Recursive Copy": "Recursief Kopiëren",
"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)",
"Name for the new data source": "Naam voor de nieuwe gegevensbron",
"JDBC URL or database connection string": "JDBC URL of database connectie string",
"Database driver class name": "Database stuurprogramma klasse naam",
"Username for database connection": "Gebruikersnaam voor databaseverbinding",
"Password for database connection": "Wachtwoord voor databaseverbinding",
"Name for the database credentials": "Naam voor de database inloggegevens",
"Select a data source": "Selecteer een gegevensbron",
"Comma-separated list of extra fields (e.g., connections,signons)": "Kommagescheiden lijst van extra velden (bijv. verbindingen, signons)",
"New name for the data source": "Nieuwe naam voor de gegevensbron",
"Disable the data source": "Gegevensbron uitschakelen",
"Hide the data source": "Verberg de gegevensbron",
"Select a content object": "Selecteer een inhoudsobject",
"Comma-separated list of extra fields (e.g., owner,permissions,children)": "Kommagescheiden lijst van extra velden (bijv. eigenaar,machtigingen,subs)",
"Object type (e.g., report, dashboard, folder)": "Type object (bijv. rapport, dashboard, map)",
"New name for the object": "Nieuwe naam voor het object",
"New description for the object": "Nieuwe beschrijving van het object",
"Current version for optimistic concurrency": "Huidige versie voor optimistische concurrency",
"Destination container where the object will be moved": "Bestemmingscontainer waar het object wordt verplaatst",
"Destination container where the object will be copied": "Bestemmingscontainer waar het object wordt gekopieerd",
"Copy all descendants (child objects)": "Kopieer alle afstammelingen (onderliggende objecten)",
"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..",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD"
}

View File

@@ -0,0 +1,82 @@
{
"Business intelligence and performance management suite for data analysis and reporting": "Conjunto de gestão de inteligência e desempenho de negócios para análise de dados e relatório",
"Base URL": "URL Base",
"CAM Namespace": "Namespace CAM",
"Username": "Usuário:",
"Password": "Senha",
"Cognos server URL (e.g., https://your-cognos-server.com)": "URL do servidor Cognos (ex.: https://your-cognos-server.com)",
"CAM namespace for authentication (e.g., LDAP)": "CAM namespace para autenticação (por exemplo, LDAP)",
"Cognos username": "Nome de usuário Cognos",
"Cognos password": "Senha Cognos",
"\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics credentials:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ": "\n## IBM Cognos Analytics Autenticação\n\nInsira suas credenciais do Cognos Analytics:\n- **Nome de usuário**: Seu nome de usuário Cognos\n- **Senha**: Sua senha Cognos\n ",
"Create Data Source": "Criar fonte de dados",
"Get Data Source": "Obter fonte de dados",
"Update Data Source": "Atualizar Fonte de Dados",
"Delete Data Source": "Excluir Fonte de Dados",
"Get Content Object": "Get Content Object",
"Update Content Object": "Atualizar Objeto de Conteúdo",
"Move Content Object": "Mover objeto de conteúdo",
"Copy Content Object": "Copiar objeto de conteúdo",
"Custom API Call": "Chamada de API personalizada",
"Create a new data source": "Criar uma nova fonte de dados",
"Retrieve data source details": "Recuperar detalhes da fonte de dados",
"Update an existing data source": "Atualizar uma fonte de dados existente",
"Delete a data source": "Apagar uma fonte de dados",
"Get content object details": "Obter detalhes do objeto de conteúdo",
"Update an existing content object": "Atualizar um objeto de conteúdo existente",
"Move an object with all its descendants": "Mova um objeto com todos os seus descendentes",
"Copy an object optionally with all its descendants": "Copie um objeto opcionalmente com todos os seus descendentes",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Data Source Name": "Nome da fonte de dados",
"Connection String": "String de conexão",
"Driver Name": "Nome do motorista",
"Database Username": "Usuário do Banco",
"Database Password": "Senha do banco",
"Signon Name": "Nome de entrada",
"Data Source": "Fonte de Dados",
"Extra Fields": "Campos extras",
"Disabled": "Desabilitado",
"Hidden": "Hidden",
"Content Object": "Objeto de Conteúdo",
"Type": "tipo",
"Name": "Nome",
"Description": "Descrição",
"Version": "Versão",
"Destination Container": "Contêiner de destino",
"Recursive Copy": "Cópia Recursiva",
"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)",
"Name for the new data source": "Nome para a nova fonte de dados",
"JDBC URL or database connection string": "URL do JDBC ou string de conexão do banco de dados",
"Database driver class name": "Nome da classe de driver",
"Username for database connection": "Nome de usuário para conexão com a base de dados",
"Password for database connection": "Senha para conexão com banco de dados",
"Name for the database credentials": "Nome para credenciais do banco de dados",
"Select a data source": "Selecione uma fonte de dados",
"Comma-separated list of extra fields (e.g., connections,signons)": "Lista separada por vírgulas de campos extras (por exemplo, conexões, cadastro)",
"New name for the data source": "Novo nome para a fonte de dados",
"Disable the data source": "Desabilitar fonte de dados",
"Hide the data source": "Ocultar a fonte de dados",
"Select a content object": "Selecione um objeto de conteúdo",
"Comma-separated list of extra fields (e.g., owner,permissions,children)": "Lista de campos extras separados por vírgula (por exemplo, proprietário, permissões, filhos)",
"Object type (e.g., report, dashboard, folder)": "Tipo de objeto (ex.: relatório, painel, pasta)",
"New name for the object": "Novo nome para o objeto",
"New description for the object": "Nova descrição do objeto",
"Current version for optimistic concurrency": "Versão atual para concorrência otimista",
"Destination container where the object will be moved": "Recipiente de destino onde o objeto será movido",
"Destination container where the object will be copied": "Recipiente de destino onde o objeto será copiado",
"Copy all descendants (child objects)": "Copiar todos os descendentes (objetos filhos)",
"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..",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA"
}

View File

@@ -0,0 +1,82 @@
{
"Business intelligence and performance management suite for data analysis and reporting": "Business intelligence and performance management suite for data analysis and reporting",
"Base URL": "Base URL",
"CAM Namespace": "CAM Namespace",
"Username": "Username",
"Password": "Password",
"Cognos server URL (e.g., https://your-cognos-server.com)": "Cognos server URL (e.g., https://your-cognos-server.com)",
"CAM namespace for authentication (e.g., LDAP)": "CAM namespace for authentication (e.g., LDAP)",
"Cognos username": "Cognos username",
"Cognos password": "Cognos password",
"\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics credentials:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ": "\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics credentials:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ",
"Create Data Source": "Create Data Source",
"Get Data Source": "Get Data Source",
"Update Data Source": "Update Data Source",
"Delete Data Source": "Delete Data Source",
"Get Content Object": "Get Content Object",
"Update Content Object": "Update Content Object",
"Move Content Object": "Move Content Object",
"Copy Content Object": "Copy Content Object",
"Custom API Call": "Custom API Call",
"Create a new data source": "Create a new data source",
"Retrieve data source details": "Retrieve data source details",
"Update an existing data source": "Update an existing data source",
"Delete a data source": "Delete a data source",
"Get content object details": "Get content object details",
"Update an existing content object": "Update an existing content object",
"Move an object with all its descendants": "Move an object with all its descendants",
"Copy an object optionally with all its descendants": "Copy an object optionally with all its descendants",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Data Source Name": "Data Source Name",
"Connection String": "Connection String",
"Driver Name": "Driver Name",
"Database Username": "Database Username",
"Database Password": "Database Password",
"Signon Name": "Signon Name",
"Data Source": "Data Source",
"Extra Fields": "Extra Fields",
"Disabled": "Disabled",
"Hidden": "Hidden",
"Content Object": "Content Object",
"Type": "Type",
"Name": "Name",
"Description": "Description",
"Version": "Version",
"Destination Container": "Destination Container",
"Recursive Copy": "Recursive Copy",
"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)",
"Name for the new data source": "Name for the new data source",
"JDBC URL or database connection string": "JDBC URL or database connection string",
"Database driver class name": "Database driver class name",
"Username for database connection": "Username for database connection",
"Password for database connection": "Password for database connection",
"Name for the database credentials": "Name for the database credentials",
"Select a data source": "Select a data source",
"Comma-separated list of extra fields (e.g., connections,signons)": "Comma-separated list of extra fields (e.g., connections,signons)",
"New name for the data source": "New name for the data source",
"Disable the data source": "Disable the data source",
"Hide the data source": "Hide the data source",
"Select a content object": "Select a content object",
"Comma-separated list of extra fields (e.g., owner,permissions,children)": "Comma-separated list of extra fields (e.g., owner,permissions,children)",
"Object type (e.g., report, dashboard, folder)": "Object type (e.g., report, dashboard, folder)",
"New name for the object": "New name for the object",
"New description for the object": "New description for the object",
"Current version for optimistic concurrency": "Current version for optimistic concurrency",
"Destination container where the object will be moved": "Destination container where the object will be moved",
"Destination container where the object will be copied": "Destination container where the object will be copied",
"Copy all descendants (child objects)": "Copy all descendants (child objects)",
"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..",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,82 @@
{
"Business intelligence and performance management suite for data analysis and reporting": "Business intelligence and performance management suite for data analysis and reporting",
"Base URL": "基本网址",
"CAM Namespace": "CAM Namespace",
"Username": "用户名",
"Password": "密码",
"Cognos server URL (e.g., https://your-cognos-server.com)": "Cognos server URL (e.g., https://your-cognos-server.com)",
"CAM namespace for authentication (e.g., LDAP)": "CAM namespace for authentication (e.g., LDAP)",
"Cognos username": "Cognos username",
"Cognos password": "Cognos password",
"\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics credentials:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ": "\n## IBM Cognos Analytics Authentication\n\nEnter your Cognos Analytics credentials:\n- **Username**: Your Cognos username\n- **Password**: Your Cognos password\n ",
"Create Data Source": "Create Data Source",
"Get Data Source": "Get Data Source",
"Update Data Source": "Update Data Source",
"Delete Data Source": "Delete Data Source",
"Get Content Object": "Get Content Object",
"Update Content Object": "Update Content Object",
"Move Content Object": "Move Content Object",
"Copy Content Object": "Copy Content Object",
"Custom API Call": "自定义 API 呼叫",
"Create a new data source": "Create a new data source",
"Retrieve data source details": "Retrieve data source details",
"Update an existing data source": "Update an existing data source",
"Delete a data source": "Delete a data source",
"Get content object details": "Get content object details",
"Update an existing content object": "Update an existing content object",
"Move an object with all its descendants": "Move an object with all its descendants",
"Copy an object optionally with all its descendants": "Copy an object optionally with all its descendants",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Data Source Name": "Data Source Name",
"Connection String": "Connection String",
"Driver Name": "Driver Name",
"Database Username": "Database Username",
"Database Password": "Database Password",
"Signon Name": "Signon Name",
"Data Source": "Data Source",
"Extra Fields": "Extra Fields",
"Disabled": "已禁用",
"Hidden": "Hidden",
"Content Object": "Content Object",
"Type": "类型",
"Name": "名称",
"Description": "描述",
"Version": "Version",
"Destination Container": "Destination Container",
"Recursive Copy": "Recursive Copy",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"Name for the new data source": "Name for the new data source",
"JDBC URL or database connection string": "JDBC URL or database connection string",
"Database driver class name": "Database driver class name",
"Username for database connection": "Username for database connection",
"Password for database connection": "Password for database connection",
"Name for the database credentials": "Name for the database credentials",
"Select a data source": "Select a data source",
"Comma-separated list of extra fields (e.g., connections,signons)": "Comma-separated list of extra fields (e.g., connections,signons)",
"New name for the data source": "New name for the data source",
"Disable the data source": "Disable the data source",
"Hide the data source": "Hide the data source",
"Select a content object": "Select a content object",
"Comma-separated list of extra fields (e.g., owner,permissions,children)": "Comma-separated list of extra fields (e.g., owner,permissions,children)",
"Object type (e.g., report, dashboard, folder)": "Object type (e.g., report, dashboard, folder)",
"New name for the object": "New name for the object",
"New description for the object": "New description for the object",
"Current version for optimistic concurrency": "Current version for optimistic concurrency",
"Destination container where the object will be moved": "Destination container where the object will be moved",
"Destination container where the object will be copied": "Destination container where the object will be copied",
"Copy all descendants (child objects)": "Copy all descendants (child objects)",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色"
}

View File

@@ -0,0 +1,120 @@
import {
createPiece,
PieceAuth,
Property
} from '@activepieces/pieces-framework';
import {
HttpMethod,
httpClient,
createCustomApiCallAction
} from '@activepieces/pieces-common';
import { PieceCategory } from '@activepieces/shared';
import { CognosClient } from './lib/common/cognos-client';
import { createDataSourceAction } from './lib/actions/create-data-source';
import { updateDataSourceAction } from './lib/actions/update-data-source';
import { deleteDataSourceAction } from './lib/actions/delete-data-source';
import { getDataSourceAction } from './lib/actions/get-data-source';
import { updateContentObjectAction } from './lib/actions/update-content-object';
import { getContentObjectAction } from './lib/actions/get-content-object';
import { moveContentObjectAction } from './lib/actions/move-content-object';
import { copyContentObjectAction } from './lib/actions/copy-content-object';
export const ibmCognoseAuth = PieceAuth.CustomAuth({
required: true,
description: `
## IBM Cognos Analytics Authentication
Enter your Cognos Analytics credentials:
- **Username**: Your Cognos username
- **Password**: Your Cognos password
`,
props: {
baseurl: Property.ShortText({
displayName: 'Base URL',
description: 'Cognos server URL (e.g., https://your-cognos-server.com)',
required: true
}),
CAMNamespace: Property.ShortText({
displayName: 'CAM Namespace',
description: 'CAM namespace for authentication (e.g., LDAP)',
required: true
}),
username: Property.ShortText({
displayName: 'Username',
description: 'Cognos username',
required: true
}),
password: PieceAuth.SecretText({
displayName: 'Password',
description: 'Cognos password',
required: true
})
},
validate: async ({ auth }) => {
const { username, password, CAMNamespace, baseurl } = auth;
if (!username || !password || !CAMNamespace || !baseurl) {
return {
valid: false,
error: 'All fields are required'
};
}
try {
const client = new CognosClient(auth);
await client.createSession();
return {
valid: true
};
} catch (error) {
return {
valid: false,
error: `Authentication failed: ${error instanceof Error ? error.message : 'Unknown error'}`
};
}
}
});
export const ibmCognose = createPiece({
displayName: 'IBM Cognos Analytics',
description:
'Business intelligence and performance management suite for data analysis and reporting',
auth: ibmCognoseAuth,
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/ibm-cognose.png',
categories: [PieceCategory.BUSINESS_INTELLIGENCE],
authors: ['fortunamide', 'onyedikachi-david'],
actions: [
createDataSourceAction,
getDataSourceAction,
updateDataSourceAction,
deleteDataSourceAction,
getContentObjectAction,
updateContentObjectAction,
moveContentObjectAction,
copyContentObjectAction,
createCustomApiCallAction({
baseUrl: (auth) => `${(auth as any).baseurl}/api/v1`,
auth: ibmCognoseAuth,
authMapping: async (auth: any) => {
try {
const client = new CognosClient(auth.props);
await client.createSession();
if (client['sessionCookies']) {
return {
Cookie: client['sessionCookies']
};
}
return {};
} catch (error) {
throw new Error(
`Failed to authenticate: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
}
})
],
triggers: []
});

View File

@@ -0,0 +1,71 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { ibmCognoseAuth } from '../../index';
import { CognosClient } from '../common/cognos-client';
import { contentObjectDropdown } from '../common/content-object-dropdown';
export const copyContentObjectAction = createAction({
auth: ibmCognoseAuth,
name: 'copy_content_object',
displayName: 'Copy Content Object',
description: 'Copy an object optionally with all its descendants',
props: {
sourceId: contentObjectDropdown,
destinationId: {
...contentObjectDropdown,
displayName: 'Destination Container',
description: 'Destination container where the object will be copied',
},
recursive: Property.Checkbox({
displayName: 'Recursive Copy',
description: 'Copy all descendants (child objects)',
required: false,
defaultValue: true,
}),
},
async run({ auth, propsValue }) {
const { sourceId, destinationId, recursive } = propsValue;
if (sourceId === destinationId) {
throw new Error('Source and destination cannot be the same object');
}
try {
const client = new CognosClient(auth.props);
const copyRequest = {
source_id: sourceId,
destination_id: destinationId,
recursive: recursive !== undefined ? recursive : true,
};
const response = await client.makeAuthenticatedRequest(
'/content/copy',
HttpMethod.POST,
copyRequest
);
if (response.status === 201) {
return {
success: true,
message: `Content object copied successfully${recursive ? ' (including descendants)' : ''}`,
copiedObject: response.body,
};
} else if (response.status === 400) {
throw new Error(`Bad request: ${response.body?.message || 'Invalid copy operation'}`);
} else if (response.status === 401) {
throw new Error('Authentication failed. Check your credentials.');
} else if (response.status === 403) {
throw new Error('Permission denied. Insufficient permissions to copy this object.');
} else if (response.status === 404) {
throw new Error('Object or parent object not found.');
} else {
throw new Error(`Failed to copy: ${response.status} ${response.body}`);
}
} catch (error) {
throw new Error(
`Failed to copy content object: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
},
});

View File

@@ -0,0 +1,98 @@
import { createAction, Property, PieceAuth } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { ibmCognoseAuth } from '../../index';
import { CognosClient } from '../common/cognos-client';
export const createDataSourceAction = createAction({
auth: ibmCognoseAuth,
name: 'create_data_source',
displayName: 'Create Data Source',
description: 'Create a new data source',
props: {
defaultName: Property.ShortText({
displayName: 'Data Source Name',
description: 'Name for the new data source',
required: true,
}),
connectionString: Property.LongText({
displayName: 'Connection String',
description: 'JDBC URL or database connection string',
required: true,
defaultValue: 'jdbc:db2://localhost:50000/SAMPLE',
}),
driverName: Property.ShortText({
displayName: 'Driver Name',
description: 'Database driver class name',
required: false,
defaultValue: 'com.ibm.db2.jcc.DB2Driver',
}),
username: Property.ShortText({
displayName: 'Database Username',
description: 'Username for database connection',
required: false,
}),
password: Property.ShortText({
displayName: 'Database Password',
description: 'Password for database connection',
required: false,
}),
signonDefaultName: Property.ShortText({
displayName: 'Signon Name',
description: 'Name for the database credentials',
required: false,
}),
},
async run({ auth, propsValue }) {
const { defaultName, connectionString, driverName, username, password, signonDefaultName } = propsValue;
try {
const client = new CognosClient(auth.props);
const dataSourceDefinition: any = {
defaultName,
connections: [
{
connectionString,
defaultName: defaultName + '_connection',
}
]
};
if (driverName) {
dataSourceDefinition.connections[0].connectionString += `;DRIVER_NAME=${driverName}`;
}
if (username && password) {
dataSourceDefinition.connections[0].signons = [
{
defaultName: signonDefaultName || defaultName + '_signon',
credentialsEx: {
username,
password
}
}
];
}
const response = await client.makeAuthenticatedRequest('/dataSources', HttpMethod.POST, dataSourceDefinition);
if (response.status === 201) {
return {
success: true,
message: `Data source '${defaultName}' created successfully`,
dataSource: response.body,
};
} else if (response.status === 400) {
throw new Error(`Data source '${defaultName}' already exists or invalid parameters`);
} else if (response.status === 401) {
throw new Error('Authentication failed. Check your credentials.');
} else {
throw new Error(`Failed to create data source: ${response.status} ${response.body}`);
}
} catch (error) {
throw new Error(
`Failed to create data source: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
},
});

View File

@@ -0,0 +1,44 @@
import { createAction } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { ibmCognoseAuth } from '../../index';
import { CognosClient } from '../common/cognos-client';
import { dataSourceDropdown } from '../common/data-source-dropdown';
export const deleteDataSourceAction = createAction({
auth: ibmCognoseAuth,
name: 'delete_data_source',
displayName: 'Delete Data Source',
description: 'Delete a data source',
props: {
datasourceId: dataSourceDropdown,
},
async run({ auth, propsValue }) {
const { datasourceId } = propsValue;
try {
const client = new CognosClient(auth.props);
const response = await client.makeAuthenticatedRequest(
`/dataSources/${datasourceId}`,
HttpMethod.DELETE
);
if (response.status === 204) {
return {
success: true,
message: `Data source deleted successfully`,
};
} else if (response.status === 401) {
throw new Error('Authentication failed. Check your credentials.');
} else if (response.status === 404) {
throw new Error(`Data source not found`);
} else {
throw new Error(`Failed to delete: ${response.status} ${response.body}`);
}
} catch (error) {
throw new Error(
`Failed to delete data source: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
},
});

View File

@@ -0,0 +1,53 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { ibmCognoseAuth } from '../../index';
import { CognosClient } from '../common/cognos-client';
import { contentObjectDropdown } from '../common/content-object-dropdown';
export const getContentObjectAction = createAction({
auth: ibmCognoseAuth,
name: 'get_content_object',
displayName: 'Get Content Object',
description: 'Get content object details',
props: {
objectId: contentObjectDropdown,
fields: Property.ShortText({
displayName: 'Extra Fields',
description: 'Comma-separated list of extra fields (e.g., owner,permissions,children)',
required: false,
}),
},
async run({ auth, propsValue }) {
const { objectId, fields } = propsValue;
try {
const client = new CognosClient(auth.props);
const queryParams = [];
if (fields && fields.trim()) {
queryParams.push(`fields=${encodeURIComponent(fields.trim())}`);
}
const queryString = queryParams.length > 0 ? `?${queryParams.join('&')}` : '';
const response = await client.makeAuthenticatedRequest(
`/content/${objectId}${queryString}`,
HttpMethod.GET
);
if (response.status === 200) {
return response.body;
} else if (response.status === 401) {
throw new Error('Authentication failed. Check your credentials.');
} else if (response.status === 404) {
throw new Error(`Content object not found`);
} else {
throw new Error(`Failed to retrieve: ${response.status} ${response.body}`);
}
} catch (error) {
throw new Error(
`Failed to retrieve content object: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
},
});

View File

@@ -0,0 +1,53 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { ibmCognoseAuth } from '../../index';
import { CognosClient } from '../common/cognos-client';
import { dataSourceDropdown } from '../common/data-source-dropdown';
export const getDataSourceAction = createAction({
auth: ibmCognoseAuth,
name: 'get_data_source',
displayName: 'Get Data Source',
description: 'Retrieve data source details',
props: {
datasourceId: dataSourceDropdown,
fields: Property.ShortText({
displayName: 'Extra Fields',
description: 'Comma-separated list of extra fields (e.g., connections,signons)',
required: false,
}),
},
async run({ auth, propsValue }) {
const { datasourceId, fields } = propsValue;
try {
const client = new CognosClient(auth.props);
const queryParams = [];
if (fields && fields.trim()) {
queryParams.push(`fields=${encodeURIComponent(fields.trim())}`);
}
const queryString = queryParams.length > 0 ? `?${queryParams.join('&')}` : '';
const response = await client.makeAuthenticatedRequest(
`/dataSources/${datasourceId}${queryString}`,
HttpMethod.GET
);
if (response.status === 200) {
return response.body;
} else if (response.status === 401) {
throw new Error('Authentication failed. Check your credentials.');
} else if (response.status === 404) {
throw new Error(`Data source not found`);
} else {
throw new Error(`Failed to retrieve: ${response.status} ${response.body}`);
}
} catch (error) {
throw new Error(
`Failed to retrieve data source: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
},
});

View File

@@ -0,0 +1,63 @@
import { createAction } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { ibmCognoseAuth } from '../../index';
import { CognosClient } from '../common/cognos-client';
import { contentObjectDropdown } from '../common/content-object-dropdown';
export const moveContentObjectAction = createAction({
auth: ibmCognoseAuth,
name: 'move_content_object',
displayName: 'Move Content Object',
description: 'Move an object with all its descendants',
props: {
sourceId: contentObjectDropdown,
destinationId: {
...contentObjectDropdown,
displayName: 'Destination Container',
description: 'Destination container where the object will be moved',
},
},
async run({ auth, propsValue }) {
const { sourceId, destinationId } = propsValue;
if (sourceId === destinationId) {
throw new Error('Source and destination cannot be the same object');
}
try {
const client = new CognosClient(auth.props);
const moveRequest = {
source_id: sourceId,
destination_id: destinationId,
};
const response = await client.makeAuthenticatedRequest(
'/content/move',
HttpMethod.PUT,
moveRequest
);
if (response.status === 204) {
return {
success: true,
message: `Content object moved successfully`,
};
} else if (response.status === 400) {
throw new Error(`Bad request: ${response.body?.message || 'Invalid move operation'}`);
} else if (response.status === 401) {
throw new Error('Authentication failed. Check your credentials.');
} else if (response.status === 403) {
throw new Error('Permission denied. Insufficient permissions to move this object.');
} else if (response.status === 404) {
throw new Error('Object or parent object not found.');
} else {
throw new Error(`Failed to move: ${response.status} ${response.body}`);
}
} catch (error) {
throw new Error(
`Failed to move content object: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
},
});

View File

@@ -0,0 +1,81 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { ibmCognoseAuth } from '../../index';
import { CognosClient } from '../common/cognos-client';
import { contentObjectDropdown } from '../common/content-object-dropdown';
export const updateContentObjectAction = createAction({
auth: ibmCognoseAuth,
name: 'update_content_object',
displayName: 'Update Content Object',
description: 'Update an existing content object',
props: {
objectId: contentObjectDropdown,
type: Property.ShortText({
displayName: 'Type',
description: 'Object type (e.g., report, dashboard, folder)',
required: true,
}),
defaultName: Property.ShortText({
displayName: 'Name',
description: 'New name for the object',
required: false,
}),
defaultDescriptions: Property.LongText({
displayName: 'Description',
description: 'New description for the object',
required: false,
}),
version: Property.Number({
displayName: 'Version',
description: 'Current version for optimistic concurrency',
required: false,
}),
},
async run({ auth, propsValue }) {
const { objectId, defaultName, defaultDescriptions, type, version } = propsValue;
try {
const client = new CognosClient(auth.props);
const updateDefinition: any = { type };
if (defaultName) {
updateDefinition.defaultName = defaultName;
}
if (defaultDescriptions) {
updateDefinition.defaultDescriptions = defaultDescriptions;
}
if (version !== undefined && version !== null) {
updateDefinition.version = version;
}
const response = await client.makeAuthenticatedRequest(
`/content/${objectId}`,
HttpMethod.PUT,
updateDefinition
);
if (response.status === 204 || response.status === 200) {
return {
success: true,
message: `Content object updated successfully`,
};
} else if (response.status === 401) {
throw new Error('Authentication failed. Check your credentials.');
} else if (response.status === 404) {
throw new Error(`Content object not found`);
} else if (response.status === 409) {
throw new Error('Object has changed since you fetched it. Refresh and try again.');
} else {
throw new Error(`Failed to update: ${response.status} ${response.body}`);
}
} catch (error) {
throw new Error(
`Failed to update content object: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
},
});

View File

@@ -0,0 +1,81 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { ibmCognoseAuth } from '../../index';
import { CognosClient } from '../common/cognos-client';
import { dataSourceDropdown } from '../common/data-source-dropdown';
export const updateDataSourceAction = createAction({
auth: ibmCognoseAuth,
name: 'update_data_source',
displayName: 'Update Data Source',
description: 'Update an existing data source',
props: {
datasourceId: dataSourceDropdown,
defaultName: Property.ShortText({
displayName: 'Data Source Name',
description: 'New name for the data source',
required: false,
}),
disabled: Property.Checkbox({
displayName: 'Disabled',
description: 'Disable the data source',
required: false,
defaultValue: false,
}),
hidden: Property.Checkbox({
displayName: 'Hidden',
description: 'Hide the data source',
required: false,
defaultValue: false,
}),
},
async run({ auth, propsValue }) {
const { datasourceId, defaultName, disabled, hidden } = propsValue;
try {
const client = new CognosClient(auth.props);
const updateDefinition: any = {};
if (defaultName) {
updateDefinition.defaultName = defaultName;
}
if (disabled !== undefined) {
updateDefinition.disabled = disabled;
}
if (hidden !== undefined) {
updateDefinition.hidden = hidden;
}
if (Object.keys(updateDefinition).length === 0) {
throw new Error('At least one field must be provided to update');
}
const response = await client.makeAuthenticatedRequest(
`/dataSources/${datasourceId}`,
HttpMethod.PUT,
updateDefinition
);
if (response.status === 204 || response.status === 200) {
return {
success: true,
message: `Data source updated successfully`,
updatedFields: updateDefinition,
};
} else if (response.status === 401) {
throw new Error('Authentication failed. Check your credentials.');
} else if (response.status === 404) {
throw new Error(`Data source not found`);
} else {
throw new Error(`Failed to update: ${response.status} ${response.body}`);
}
} catch (error) {
throw new Error(
`Failed to update data source: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
},
});

View File

@@ -0,0 +1,84 @@
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
export interface CognosAuth {
baseurl: string;
CAMNamespace: string;
username: string;
password: string;
}
export class CognosClient {
private auth: CognosAuth;
private sessionCookies?: string;
constructor(auth: CognosAuth) {
this.auth = auth;
}
async createSession(): Promise<string> {
const parameters = [
{ name: 'CAMNamespace', value: this.auth.CAMNamespace },
{ name: 'CAMUsername', value: this.auth.username },
{ name: 'CAMPassword', value: this.auth.password },
];
try {
const response = await httpClient.sendRequest({
method: HttpMethod.PUT,
url: `${this.auth.baseurl}/api/v1/session`,
headers: {
'Content-Type': 'application/json',
},
body: {
parameters,
},
});
if (response.status >= 200 && response.status < 300) {
const cookies = response.headers?.['set-cookie'];
this.sessionCookies = cookies
? Array.isArray(cookies)
? cookies.join('; ')
: cookies
: '';
return this.sessionCookies;
} else {
throw new Error(
`Authentication failed: ${response.status} ${response.body}`
);
}
} catch (error) {
throw new Error(
`Failed to create session: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
}
async makeAuthenticatedRequest(
endpoint: string,
method: HttpMethod = HttpMethod.GET,
body?: any
) {
try {
if (!this.sessionCookies) {
await this.createSession();
}
const response = await httpClient.sendRequest({
method,
url: `${this.auth.baseurl}/api/v1${endpoint}`,
headers: {
'Content-Type': 'application/json',
Cookie: this.sessionCookies || '',
},
body,
});
return response;
} catch (error) {
throw new Error(
`Request failed: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
}
}

View File

@@ -0,0 +1,59 @@
import { Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { CognosClient } from './cognos-client';
import { ibmCognoseAuth } from '../..';
export const contentObjectDropdown = Property.Dropdown({
auth: ibmCognoseAuth,
displayName: 'Content Object',
description: 'Select a content object',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Connect your account first'
};
}
try {
const client = new CognosClient(auth.props);
const response = await client.makeAuthenticatedRequest('/content', HttpMethod.GET);
if (response.status === 200) {
const data = response.body;
const contentObjects = data.content || [];
if (contentObjects.length === 0) {
return {
disabled: true,
options: [],
placeholder: 'No content objects found'
};
}
return {
disabled: false,
options: contentObjects.map((obj: any) => ({
label: `${obj.defaultName || 'Unnamed'} (${obj.type || 'Unknown'})`,
value: obj.id
}))
};
} else {
return {
disabled: true,
options: [],
placeholder: 'Failed to load content objects'
};
}
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading content objects'
};
}
}
});

View File

@@ -0,0 +1,59 @@
import { Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { CognosClient } from './cognos-client';
import { ibmCognoseAuth } from '../..';
export const dataSourceDropdown = Property.Dropdown({
auth: ibmCognoseAuth,
displayName: 'Data Source',
description: 'Select a data source',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Connect your account first'
};
}
try {
const client = new CognosClient(auth.props);
const response = await client.makeAuthenticatedRequest('/dataSources', HttpMethod.GET);
if (response.status === 200) {
const data = response.body;
const dataSources = data.dataSources || [];
if (dataSources.length === 0) {
return {
disabled: true,
options: [],
placeholder: 'No data sources found'
};
}
return {
disabled: false,
options: dataSources.map((ds: any) => ({
label: ds.defaultName || ds.id,
value: ds.id
}))
};
} else {
return {
disabled: true,
options: [],
placeholder: 'Failed to load data sources'
};
}
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading data sources'
};
}
}
});