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:
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"Intuitive online task manager for teams, personal productivity, and everything in between.": "Intuitiver Online-Task-Manager für Teams, persönliche Produktivität und alles dazwischen.",
|
||||
"Authentication for MeisterTask (uses MindMeister OAuth2)": "Authentifizierung für MeisterTask (verwendet MindMeister OAuth2)",
|
||||
"Create Label": "Label erstellen",
|
||||
"Create Task Label": "Aufgabenbezeichnung erstellen",
|
||||
"Create Attachment": "Anhang erstellen",
|
||||
"Create Task": "Aufgabe erstellen",
|
||||
"Update Task": "Aufgabe aktualisieren",
|
||||
"Find Attachment": "Anhang finden",
|
||||
"Find Label": "Label suchen",
|
||||
"Find Person": "Person finden",
|
||||
"Find Task": "Aufgabe finden",
|
||||
"Find or Create Attachment": "Anhang finden oder erstellen",
|
||||
"Find or Create Task": "Aufgabe suchen oder erstellen",
|
||||
"Find or Create Label": "Label suchen oder erstellen",
|
||||
"Custom API Call": "Eigener API-Aufruf",
|
||||
"Creates a new label": "Erstellt ein neues Label",
|
||||
"Creates a new task label": "Erstellt eine neue Aufgabenbezeichnung",
|
||||
"Creates a new attachment": "Erstellt einen neuen Anhang",
|
||||
"Creates a new task": "Erstellt eine neue Aufgabe",
|
||||
"Updates an existing task": "Aktualisiert eine existierende Aufgabe",
|
||||
"Finds an attachment by searching": "Sucht einen Anhang durch Suche",
|
||||
"Finds a label by searching": "Findet eine Beschriftung durch Suche",
|
||||
"Finds a person based on person_id": "Findet eine Person basierend auf person_id",
|
||||
"Finds a task by searching": "Findet eine Aufgabe durch Suche",
|
||||
"Finds an attachment by searching, or creates one if it doesn't exist": "Findet einen Anhang durch Suche oder erstellt einen wenn er nicht existiert",
|
||||
"Finds a task by searching, or creates one if it doesn't exist": "Findet eine Aufgabe durch Suche oder erstellt eine, falls sie nicht existiert",
|
||||
"Finds a label by searching, or creates one if it doesn't exist": "Findet eine Beschriftung durch Suche oder erstellt eine, wenn sie nicht existiert",
|
||||
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
|
||||
"Project": "Projekt",
|
||||
"Label Name": "Labelname",
|
||||
"Color": "Farbe",
|
||||
"Task": "Aufgabe",
|
||||
"Label": "Label",
|
||||
"File URL": "Datei-URL",
|
||||
"Attachment Name": "Anhangname",
|
||||
"Section": "Abschnitt",
|
||||
"Task Name": "Aufgabenname",
|
||||
"Notes": "Notizen",
|
||||
"Person": "Person",
|
||||
"Due Date": "Fälligkeitsdatum",
|
||||
"Status": "Status",
|
||||
"Person ID": "Person-ID",
|
||||
"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)",
|
||||
"Hex color code (e.g., #FF0000)": "Hex-Farbcode (z. B. #FF000000)",
|
||||
"URL of the file to attach": "URL der anzuhängenden Datei",
|
||||
"URL of the file to attach (used if creating)": "URL der anzuhängenden Datei (bei Erstellung verwendet)",
|
||||
"Notes for the task (used if creating)": "Notizen für die Aufgabe (bei der Erstellung verwendet)",
|
||||
"Due date for the task (used if creating)": "Enddatum der Aufgabe (bei Erstellung verwendet)",
|
||||
"Hex color code (e.g., #FF0000) - used if creating": "Hex-Farbcode (z. B. #FF0000) - Wird bei der Erstellung verwendet",
|
||||
"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..",
|
||||
"Open": "Öffnen",
|
||||
"Completed": "Abgeschlossen",
|
||||
"Trashed": "Papierkorb",
|
||||
"GET": "ERHALTEN",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "LÖSCHEN",
|
||||
"HEAD": "HEAD",
|
||||
"New Attachment": "Neuer Anhang",
|
||||
"New Person": "Neue Person",
|
||||
"New Section": "Neuer Abschnitt",
|
||||
"New Comment": "Neuer Kommentar",
|
||||
"New Task Label": "Neue Aufgabenbezeichnung",
|
||||
"New Checklist Item": "Neues Checklisten-Element",
|
||||
"New Project": "Neues Projekt",
|
||||
"New Label": "Neue Bezeichnung",
|
||||
"New Task": "Neue Aufgabe",
|
||||
"Triggers when an attachment is created.": "Wird ausgelöst, wenn ein Anhang erstellt wird.",
|
||||
"Triggers when a new person is added to a project.": "Wird ausgelöst, wenn eine neue Person einem Projekt hinzugefügt wird.",
|
||||
"Triggers when a new section is created.": "Wird ausgelöst, wenn ein neuer Abschnitt erstellt wird.",
|
||||
"Triggers when a new comment is created on a task.": "Wird ausgelöst, wenn ein neuer Kommentar zu einer Aufgabe erstellt wird.",
|
||||
"Triggers when a task label is created.": "Wird ausgelöst, wenn ein Aufgaben-Label erstellt wird.",
|
||||
"Triggers when a new checklist item is added to a task.": "Wird ausgelöst, wenn ein neues Element der Checkliste einer Aufgabe hinzugefügt wird.",
|
||||
"Triggers when a new project is created.": "Wird ausgelöst, wenn ein neues Projekt erstellt wird.",
|
||||
"Triggers when a label is created.": "Wird ausgelöst, wenn ein Label erstellt wird.",
|
||||
"Triggers when a task is created or changed.": "Wird ausgelöst, wenn eine Aufgabe erstellt oder geändert wird."
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"Intuitive online task manager for teams, personal productivity, and everything in between.": "Gestor de tareas intuitivo en línea para equipos, productividad personal y todo lo intermedio.",
|
||||
"Authentication for MeisterTask (uses MindMeister OAuth2)": "Autenticación para MeisterTask (utiliza MindMeister OAuth2)",
|
||||
"Create Label": "Crear etiqueta",
|
||||
"Create Task Label": "Crear etiqueta de tarea",
|
||||
"Create Attachment": "Crear archivo adjunto",
|
||||
"Create Task": "Crear tarea",
|
||||
"Update Task": "Actualizar tarea",
|
||||
"Find Attachment": "Buscar adjunto",
|
||||
"Find Label": "Buscar etiqueta",
|
||||
"Find Person": "Buscar Persona",
|
||||
"Find Task": "Buscar tarea",
|
||||
"Find or Create Attachment": "Buscar o crear archivo adjunto",
|
||||
"Find or Create Task": "Buscar o crear tarea",
|
||||
"Find or Create Label": "Buscar o crear etiqueta",
|
||||
"Custom API Call": "Llamada API personalizada",
|
||||
"Creates a new label": "Crea una nueva etiqueta",
|
||||
"Creates a new task label": "Crea una nueva etiqueta de tarea",
|
||||
"Creates a new attachment": "Crea un nuevo archivo adjunto",
|
||||
"Creates a new task": "Crea una nueva tarea",
|
||||
"Updates an existing task": "Actualiza una tarea existente",
|
||||
"Finds an attachment by searching": "Encuentra un archivo adjunto buscando",
|
||||
"Finds a label by searching": "Encuentra una etiqueta buscando",
|
||||
"Finds a person based on person_id": "Encuentra una persona basada en person_id",
|
||||
"Finds a task by searching": "Encuentra una tarea buscando",
|
||||
"Finds an attachment by searching, or creates one if it doesn't exist": "Encuentra un archivo adjunto buscando, o crea uno si no existe",
|
||||
"Finds a task by searching, or creates one if it doesn't exist": "Encuentra una tarea buscando, o crea una si no existe",
|
||||
"Finds a label by searching, or creates one if it doesn't exist": "Encuentra una etiqueta buscando, o crea una si no existe",
|
||||
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
|
||||
"Project": "Projekt",
|
||||
"Label Name": "Nombre de etiqueta",
|
||||
"Color": "Color",
|
||||
"Task": "Tarea",
|
||||
"Label": "Etiqueta",
|
||||
"File URL": "URL del archivo",
|
||||
"Attachment Name": "Nombre del archivo adjunto",
|
||||
"Section": "Sección",
|
||||
"Task Name": "Nombre de tarea",
|
||||
"Notes": "Notas",
|
||||
"Person": "Persona",
|
||||
"Due Date": "Fecha de fin",
|
||||
"Status": "Estado",
|
||||
"Person ID": "ID de la persona",
|
||||
"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)",
|
||||
"Hex color code (e.g., #FF0000)": "Código de color hexadecimal (por ej., #FF0000)",
|
||||
"URL of the file to attach": "URL del archivo a adjuntar",
|
||||
"URL of the file to attach (used if creating)": "URL del archivo a adjuntar (usado si se crea)",
|
||||
"Notes for the task (used if creating)": "Notas para la tarea (usado si se crea)",
|
||||
"Due date for the task (used if creating)": "Fecha límite para la tarea (usado si se crea)",
|
||||
"Hex color code (e.g., #FF0000) - used if creating": "Código de color hexadecimal (por ejemplo, #FF0000) - usado si se crea",
|
||||
"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.",
|
||||
"Open": "Abrir",
|
||||
"Completed": "Completado",
|
||||
"Trashed": "Basura",
|
||||
"GET": "RECOGER",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "BORRAR",
|
||||
"HEAD": "LIMPIO",
|
||||
"New Attachment": "Nuevo adjunto",
|
||||
"New Person": "Nueva persona",
|
||||
"New Section": "Nueva sección",
|
||||
"New Comment": "Nuevo comentario",
|
||||
"New Task Label": "Nueva etiqueta de tarea",
|
||||
"New Checklist Item": "Nuevo elemento de lista de control",
|
||||
"New Project": "Nuevo proyecto",
|
||||
"New Label": "Nueva etiqueta",
|
||||
"New Task": "Nueva tarea",
|
||||
"Triggers when an attachment is created.": "Dispara cuando se crea un archivo adjunto.",
|
||||
"Triggers when a new person is added to a project.": "Desencadena cuando una nueva persona es añadida a un proyecto.",
|
||||
"Triggers when a new section is created.": "Dispara cuando se crea una nueva sección.",
|
||||
"Triggers when a new comment is created on a task.": "Dispara cuando se crea un nuevo comentario en una tarea.",
|
||||
"Triggers when a task label is created.": "Dispara cuando se crea una etiqueta de tarea.",
|
||||
"Triggers when a new checklist item is added to a task.": "Se activa cuando se añade un nuevo elemento de lista de verificación a una tarea.",
|
||||
"Triggers when a new project is created.": "Se activa cuando se crea un nuevo proyecto.",
|
||||
"Triggers when a label is created.": "Dispara cuando se crea una etiqueta.",
|
||||
"Triggers when a task is created or changed.": "Se activa cuando se crea o cambia una tarea."
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"Intuitive online task manager for teams, personal productivity, and everything in between.": "Gestionnaire de tâches en ligne intuitif pour les équipes, la productivité personnelle et tout ce qui se passe entre les deux.",
|
||||
"Authentication for MeisterTask (uses MindMeister OAuth2)": "Authentification pour MeisterTask (utilise MindMeister OAuth2)",
|
||||
"Create Label": "Créer une étiquette",
|
||||
"Create Task Label": "Créer une étiquette de tâche",
|
||||
"Create Attachment": "Créer une pièce jointe",
|
||||
"Create Task": "Créer une tâche",
|
||||
"Update Task": "Tâche de mise à jour",
|
||||
"Find Attachment": "Trouver une pièce jointe",
|
||||
"Find Label": "Rechercher une étiquette",
|
||||
"Find Person": "Trouver une personne",
|
||||
"Find Task": "Trouver une tâche",
|
||||
"Find or Create Attachment": "Trouver ou créer une pièce jointe",
|
||||
"Find or Create Task": "Trouver ou créer une tâche",
|
||||
"Find or Create Label": "Trouver ou créer une étiquette",
|
||||
"Custom API Call": "Appel d'API personnalisé",
|
||||
"Creates a new label": "Crée une nouvelle étiquette",
|
||||
"Creates a new task label": "Crée une nouvelle étiquette de tâche",
|
||||
"Creates a new attachment": "Crée une nouvelle pièce jointe",
|
||||
"Creates a new task": "Crée une nouvelle tâche",
|
||||
"Updates an existing task": "Met à jour une tâche existante",
|
||||
"Finds an attachment by searching": "Trouve une pièce jointe en recherchant",
|
||||
"Finds a label by searching": "Trouve un libellé par recherche",
|
||||
"Finds a person based on person_id": "Trouve une personne basée sur person_id",
|
||||
"Finds a task by searching": "Trouve une tâche en recherchant",
|
||||
"Finds an attachment by searching, or creates one if it doesn't exist": "Trouve une pièce jointe par recherche, ou en crée une si elle n'existe pas",
|
||||
"Finds a task by searching, or creates one if it doesn't exist": "Trouve une tâche en recherchant ou en en créant une si elle n'existe pas",
|
||||
"Finds a label by searching, or creates one if it doesn't exist": "Trouve un libellé par recherche, ou en crée un s'il n'existe pas",
|
||||
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
|
||||
"Project": "Votre compte",
|
||||
"Label Name": "Nom de l'étiquette",
|
||||
"Color": "Couleur",
|
||||
"Task": "Tâche",
|
||||
"Label": "Étiquette",
|
||||
"File URL": "URL du fichier",
|
||||
"Attachment Name": "Nom de la pièce jointe",
|
||||
"Section": "Section",
|
||||
"Task Name": "Nom de la tâche",
|
||||
"Notes": "Notes",
|
||||
"Person": "Personne",
|
||||
"Due Date": "Date de fin",
|
||||
"Status": "Statut",
|
||||
"Person ID": "ID de la personne",
|
||||
"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)",
|
||||
"Hex color code (e.g., #FF0000)": "Code couleur hexadécimal (par exemple, #FF0000)",
|
||||
"URL of the file to attach": "URL du fichier à joindre",
|
||||
"URL of the file to attach (used if creating)": "URL du fichier à joindre (utilisé lors de la création)",
|
||||
"Notes for the task (used if creating)": "Notes pour la tâche (utilisées lors de la création)",
|
||||
"Due date for the task (used if creating)": "Date d'échéance pour la tâche (utilisée lors de la création)",
|
||||
"Hex color code (e.g., #FF0000) - used if creating": "Code couleur hexadécimal (par exemple, #FF0000) - utilisé lors de la création",
|
||||
"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.",
|
||||
"Open": "Ouvert",
|
||||
"Completed": "Terminé",
|
||||
"Trashed": "Corbeille",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New Attachment": "Nouvelle pièce jointe",
|
||||
"New Person": "Nouvelle Personne",
|
||||
"New Section": "Nouvelle section",
|
||||
"New Comment": "Nouveau commentaire",
|
||||
"New Task Label": "Étiquette de nouvelle tâche",
|
||||
"New Checklist Item": "Nouvel élément de la liste de contrôle",
|
||||
"New Project": "Nouveau projet",
|
||||
"New Label": "Nouveau libellé",
|
||||
"New Task": "Nouvelle tâche",
|
||||
"Triggers when an attachment is created.": "Déclenche quand une pièce jointe est créée.",
|
||||
"Triggers when a new person is added to a project.": "Déclenche quand une nouvelle personne est ajoutée à un projet.",
|
||||
"Triggers when a new section is created.": "Déclenche quand une nouvelle section est créée.",
|
||||
"Triggers when a new comment is created on a task.": "Déclenche lorsqu'un nouveau commentaire est créé sur une tâche.",
|
||||
"Triggers when a task label is created.": "Déclenche quand une étiquette de tâche est créée.",
|
||||
"Triggers when a new checklist item is added to a task.": "Déclenche lorsqu'un nouvel élément de liste de contrôle est ajouté à une tâche.",
|
||||
"Triggers when a new project is created.": "Déclenche lorsqu'un nouveau projet est créé.",
|
||||
"Triggers when a label is created.": "Déclenche quand une étiquette est créée.",
|
||||
"Triggers when a task is created or changed.": "Déclenche lorsqu'une tâche est créée ou modifiée."
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"Intuitive online task manager for teams, personal productivity, and everything in between.": "チームのための直感的なオンラインタスクマネージャー、個人の生産性、そしてその間のすべて。",
|
||||
"Authentication for MeisterTask (uses MindMeister OAuth2)": "MeisterTask の認証 (MindMeister OAuth2を使用)",
|
||||
"Create Label": "ラベルを作成",
|
||||
"Create Task Label": "タスクのラベルを作成",
|
||||
"Create Attachment": "添付ファイルを作成",
|
||||
"Create Task": "タスクを作成",
|
||||
"Update Task": "タスクの更新",
|
||||
"Find Attachment": "添付ファイルを検索",
|
||||
"Find Label": "ラベルを検索",
|
||||
"Find Person": "人を探す",
|
||||
"Find Task": "タスクを検索",
|
||||
"Find or Create Attachment": "添付ファイルを検索または作成",
|
||||
"Find or Create Task": "タスクを検索または作成",
|
||||
"Find or Create Label": "ラベルを検索または作成",
|
||||
"Custom API Call": "カスタムAPI通話",
|
||||
"Creates a new label": "新しいラベルを作成",
|
||||
"Creates a new task label": "新しいタスクリベルを作成",
|
||||
"Creates a new attachment": "新しい添付ファイルを作成",
|
||||
"Creates a new task": "新しいタスクを作成します",
|
||||
"Updates an existing task": "既存のタスクを更新",
|
||||
"Finds an attachment by searching": "検索して添付ファイルを検索",
|
||||
"Finds a label by searching": "検索してラベルを検索",
|
||||
"Finds a person based on person_id": "person_id に基づいて人を検索",
|
||||
"Finds a task by searching": "検索してタスクを検索",
|
||||
"Finds an attachment by searching, or creates one if it doesn't exist": "検索して添付ファイルを検索するか、存在しない場合に作成します。",
|
||||
"Finds a task by searching, or creates one if it doesn't exist": "検索してタスクを検索するか、存在しない場合に作成します",
|
||||
"Finds a label by searching, or creates one if it doesn't exist": "検索してラベルを検索します。存在しない場合はラベルを作成します",
|
||||
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
|
||||
"Project": "プロジェクト",
|
||||
"Label Name": "ラベル名",
|
||||
"Color": "色",
|
||||
"Task": "タスク",
|
||||
"Label": "ラベル",
|
||||
"File URL": "ファイル URL",
|
||||
"Attachment Name": "添付ファイル名",
|
||||
"Section": "セクション",
|
||||
"Task Name": "タスク名",
|
||||
"Notes": "メモ",
|
||||
"Person": "人",
|
||||
"Due Date": "締切日",
|
||||
"Status": "Status",
|
||||
"Person ID": "Person ID",
|
||||
"Method": "方法",
|
||||
"Headers": "ヘッダー",
|
||||
"Query Parameters": "クエリパラメータ",
|
||||
"Body": "本文",
|
||||
"Response is Binary ?": "応答はバイナリですか?",
|
||||
"No Error on Failure": "失敗時にエラーはありません",
|
||||
"Timeout (in seconds)": "タイムアウト(秒)",
|
||||
"Hex color code (e.g., #FF0000)": "16進カラーコード(例:#FF0000)",
|
||||
"URL of the file to attach": "添付するファイルの URL",
|
||||
"URL of the file to attach (used if creating)": "添付するファイルの URL (作成時に使用)",
|
||||
"Notes for the task (used if creating)": "タスクのメモ(作成時に使用)",
|
||||
"Due date for the task (used if creating)": "タスクの期限 (作成時に使用)",
|
||||
"Hex color code (e.g., #FF0000) - used if creating": "16進カラーコード(例:#FF0000) - 作成時に使用",
|
||||
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
|
||||
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
|
||||
"Open": "開く",
|
||||
"Completed": "完了",
|
||||
"Trashed": "ゴミ箱に入れる",
|
||||
"GET": "取得",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "削除",
|
||||
"HEAD": "頭",
|
||||
"New Attachment": "新しい添付ファイル",
|
||||
"New Person": "新しい人",
|
||||
"New Section": "新しいセクション",
|
||||
"New Comment": "新しいコメント",
|
||||
"New Task Label": "新しいタスクのラベル",
|
||||
"New Checklist Item": "新規チェックリストアイテム",
|
||||
"New Project": "新規プロジェクト",
|
||||
"New Label": "新しいラベル",
|
||||
"New Task": "新しいタスク",
|
||||
"Triggers when an attachment is created.": "添付ファイルが作成されたときにトリガーします。",
|
||||
"Triggers when a new person is added to a project.": "新規ユーザーがプロジェクトに追加されたときにトリガーします。",
|
||||
"Triggers when a new section is created.": "新しいセクションが作成されたときにトリガーします。",
|
||||
"Triggers when a new comment is created on a task.": "タスクに新しいコメントが作成されたときにトリガーします。",
|
||||
"Triggers when a task label is created.": "タスクラベルが作成されたときにトリガーされます。",
|
||||
"Triggers when a new checklist item is added to a task.": "タスクに新しいチェックリスト項目が追加されたときにトリガーされます。",
|
||||
"Triggers when a new project is created.": "新しいプロジェクトが作成されたときにトリガーします。",
|
||||
"Triggers when a label is created.": "ラベルが作成されたときにトリガーします。",
|
||||
"Triggers when a task is created or changed.": "タスクが作成または変更されたときにトリガーします。"
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"Intuitive online task manager for teams, personal productivity, and everything in between.": "Intuïtieve online taakbeheer voor teams, persoonlijke productiviteit en alles daartussenin.",
|
||||
"Authentication for MeisterTask (uses MindMeister OAuth2)": "Authenticatie voor MeisterTask (maakt gebruik van MindMeister OAuth2)",
|
||||
"Create Label": "Label maken",
|
||||
"Create Task Label": "Takenlabel aanmaken",
|
||||
"Create Attachment": "Bijlage aanmaken",
|
||||
"Create Task": "Taak maken",
|
||||
"Update Task": "Taak bijwerken",
|
||||
"Find Attachment": "Bijlage zoeken",
|
||||
"Find Label": "Label zoeken",
|
||||
"Find Person": "Persoon zoeken",
|
||||
"Find Task": "Zoek Taak",
|
||||
"Find or Create Attachment": "Bijlage zoeken of aanmaken",
|
||||
"Find or Create Task": "Zoek of maak een Taak",
|
||||
"Find or Create Label": "Label zoeken of maken",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Creates a new label": "Maakt een nieuw label aan",
|
||||
"Creates a new task label": "Maakt een nieuw takenlabel aan",
|
||||
"Creates a new attachment": "Maakt een nieuwe bijlage",
|
||||
"Creates a new task": "Maakt een nieuwe taak",
|
||||
"Updates an existing task": "Werkt een bestaande taak bij",
|
||||
"Finds an attachment by searching": "Vindt een bijlage door te zoeken",
|
||||
"Finds a label by searching": "Zoekt een label door te zoeken",
|
||||
"Finds a person based on person_id": "Vindt een persoon op basis van persoon_id",
|
||||
"Finds a task by searching": "Vindt een taak door te zoeken",
|
||||
"Finds an attachment by searching, or creates one if it doesn't exist": "Vindt een bijlage door te zoeken, of maakt er een aan als deze niet bestaat",
|
||||
"Finds a task by searching, or creates one if it doesn't exist": "Vindt een taak door te zoeken of maakt er een aan als deze niet bestaat",
|
||||
"Finds a label by searching, or creates one if it doesn't exist": "Zoekt een label door te zoeken of maakt er een aan als deze niet bestaat",
|
||||
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
|
||||
"Project": "Project",
|
||||
"Label Name": "Label naam",
|
||||
"Color": "Kleur",
|
||||
"Task": "Opdracht",
|
||||
"Label": "Omschrijving",
|
||||
"File URL": "Bestand URL",
|
||||
"Attachment Name": "Bijlage naam",
|
||||
"Section": "Sectie",
|
||||
"Task Name": "Taak naam",
|
||||
"Notes": "Opmerkingen",
|
||||
"Person": "Persoon",
|
||||
"Due Date": "Inleverdatum",
|
||||
"Status": "status",
|
||||
"Person ID": "Persoon ID",
|
||||
"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)",
|
||||
"Hex color code (e.g., #FF0000)": "Hex kleurcode (bijv. #FF0000)",
|
||||
"URL of the file to attach": "URL van het toe te voegen bestand",
|
||||
"URL of the file to attach (used if creating)": "URL van het bij te voegen bestand (gebruikt bij aanmaken)",
|
||||
"Notes for the task (used if creating)": "Notities voor de taak (gebruikt als schepping)",
|
||||
"Due date for the task (used if creating)": "Vervaldatum voor de taak (gebruikt indien gemaakt)",
|
||||
"Hex color code (e.g., #FF0000) - used if creating": "Hex kleurcode (bijv. #FF0000) - gebruikt bij aanmaken",
|
||||
"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..",
|
||||
"Open": "Open",
|
||||
"Completed": "Voltooid",
|
||||
"Trashed": "Verwijderd",
|
||||
"GET": "KRIJG",
|
||||
"POST": "POSTE",
|
||||
"PATCH": "BEKIJK",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "VERWIJDEREN",
|
||||
"HEAD": "HOOFD",
|
||||
"New Attachment": "Nieuwe bijlage",
|
||||
"New Person": "Nieuw persoon",
|
||||
"New Section": "Nieuwe sectie",
|
||||
"New Comment": "Nieuwe reactie",
|
||||
"New Task Label": "Nieuw takenlabel",
|
||||
"New Checklist Item": "Nieuw Checklist Item",
|
||||
"New Project": "Nieuw project",
|
||||
"New Label": "Nieuw label",
|
||||
"New Task": "Nieuwe taak",
|
||||
"Triggers when an attachment is created.": "Triggert wanneer een bijlage is aangemaakt.",
|
||||
"Triggers when a new person is added to a project.": "Triggert wanneer een nieuwe persoon aan een project wordt toegevoegd.",
|
||||
"Triggers when a new section is created.": "Triggert wanneer een nieuwe sectie is aangemaakt.",
|
||||
"Triggers when a new comment is created on a task.": "Triggert wanneer een nieuwe reactie wordt aangemaakt op een taak.",
|
||||
"Triggers when a task label is created.": "Triggers wanneer een takenlabel is aangemaakt.",
|
||||
"Triggers when a new checklist item is added to a task.": "Triggert wanneer een nieuw checklist item is toegevoegd aan een taak.",
|
||||
"Triggers when a new project is created.": "Triggert wanneer een nieuw project wordt aangemaakt.",
|
||||
"Triggers when a label is created.": "Triggers wanneer een label is aangemaakt.",
|
||||
"Triggers when a task is created or changed.": "Triggert wanneer een taak is aangemaakt of gewijzigd."
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"Intuitive online task manager for teams, personal productivity, and everything in between.": "Gestor de tarefas on-line intuitivo para equipes, produtividade pessoal e tudo o mais.",
|
||||
"Authentication for MeisterTask (uses MindMeister OAuth2)": "Autenticação para MeisterTask (usa MindMeister OAuth2)",
|
||||
"Create Label": "Criar etiqueta",
|
||||
"Create Task Label": "Criar etiqueta de tarefa",
|
||||
"Create Attachment": "Criar anexo",
|
||||
"Create Task": "Criar tarefa",
|
||||
"Update Task": "Atualizar Tarefa",
|
||||
"Find Attachment": "Localizar Anexo",
|
||||
"Find Label": "Localizar etiqueta",
|
||||
"Find Person": "Encontrar pessoa",
|
||||
"Find Task": "Procurar Tarefa",
|
||||
"Find or Create Attachment": "Localizar ou criar anexo",
|
||||
"Find or Create Task": "Encontrar ou Criar Tarefa",
|
||||
"Find or Create Label": "Encontre ou crie etiqueta",
|
||||
"Custom API Call": "Chamada de API personalizada",
|
||||
"Creates a new label": "Cria um novo rótulo",
|
||||
"Creates a new task label": "Cria um novo rótulo de tarefa",
|
||||
"Creates a new attachment": "Cria um novo anexo",
|
||||
"Creates a new task": "Cria uma nova tarefa",
|
||||
"Updates an existing task": "Atualiza uma tarefa existente",
|
||||
"Finds an attachment by searching": "Encontra um anexo ao pesquisar",
|
||||
"Finds a label by searching": "Encontra um rótulo ao pesquisar",
|
||||
"Finds a person based on person_id": "Localiza uma pessoa baseada em person_id",
|
||||
"Finds a task by searching": "Encontra uma tarefa procurando",
|
||||
"Finds an attachment by searching, or creates one if it doesn't exist": "Encontra um anexo por pesquisa, ou cria um se não existe",
|
||||
"Finds a task by searching, or creates one if it doesn't exist": "Encontra uma tarefa procurando ou cria uma se ela não existe",
|
||||
"Finds a label by searching, or creates one if it doesn't exist": "Encontra um rótulo por pesquisa, ou cria um se ele não existe",
|
||||
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
|
||||
"Project": "Projecto",
|
||||
"Label Name": "Nome da etiqueta",
|
||||
"Color": "Cor",
|
||||
"Task": "Tarefas",
|
||||
"Label": "Descrição",
|
||||
"File URL": "URL do Arquivo",
|
||||
"Attachment Name": "Nome do anexo",
|
||||
"Section": "Turma",
|
||||
"Task Name": "Nome da tarefa",
|
||||
"Notes": "Observações",
|
||||
"Person": "Pessoa",
|
||||
"Due Date": "Data de vencimento",
|
||||
"Status": "Estado",
|
||||
"Person ID": "ID da pessoa",
|
||||
"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)",
|
||||
"Hex color code (e.g., #FF0000)": "Código de cor hexadecimal (por exemplo, #FF0000)",
|
||||
"URL of the file to attach": "URL do arquivo a ser anexado",
|
||||
"URL of the file to attach (used if creating)": "URL do arquivo a ser anexado (usado ao criar)",
|
||||
"Notes for the task (used if creating)": "Notas para a tarefa (usado se criar)",
|
||||
"Due date for the task (used if creating)": "Data de vencimento para a tarefa (utilizada se criar)",
|
||||
"Hex color code (e.g., #FF0000) - used if creating": "Código de cor hexadecimal (por exemplo, #FF0000) - usado se criar",
|
||||
"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..",
|
||||
"Open": "Abertas",
|
||||
"Completed": "Concluído",
|
||||
"Trashed": "Lixeira",
|
||||
"GET": "OBTER",
|
||||
"POST": "POSTAR",
|
||||
"PATCH": "COMPRAR",
|
||||
"PUT": "COLOCAR",
|
||||
"DELETE": "EXCLUIR",
|
||||
"HEAD": "CABEÇA",
|
||||
"New Attachment": "Novo Anexo",
|
||||
"New Person": "Nova Pessoa",
|
||||
"New Section": "Nova seção",
|
||||
"New Comment": "Novo Comentário",
|
||||
"New Task Label": "Nova Etiqueta de Tarefa",
|
||||
"New Checklist Item": "Novo item da Checklist",
|
||||
"New Project": "Novo Projeto",
|
||||
"New Label": "Novo Marcador",
|
||||
"New Task": "Nova tarefa",
|
||||
"Triggers when an attachment is created.": "Dispara quando um anexo é criado.",
|
||||
"Triggers when a new person is added to a project.": "Aciona quando uma nova pessoa é adicionada a um projeto.",
|
||||
"Triggers when a new section is created.": "Dispara quando uma nova seção é criada.",
|
||||
"Triggers when a new comment is created on a task.": "Dispara quando um novo comentário é criado em uma tarefa.",
|
||||
"Triggers when a task label is created.": "Dispara quando um rótulo de tarefa é criado.",
|
||||
"Triggers when a new checklist item is added to a task.": "Aciona quando um novo item da lista de verificação é adicionado a uma tarefa.",
|
||||
"Triggers when a new project is created.": "Aciona quando um novo projeto é criado.",
|
||||
"Triggers when a label is created.": "Dispara quando uma etiqueta é criada.",
|
||||
"Triggers when a task is created or changed.": "Dispara quando uma tarefa é criada ou alterada."
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"Intuitive online task manager for teams, personal productivity, and everything in between.": "Intuitive online task manager for teams, personal productivity, and everything in between.",
|
||||
"Authentication for MeisterTask (uses MindMeister OAuth2)": "Authentication for MeisterTask (uses MindMeister OAuth2)",
|
||||
"Create Label": "Create Label",
|
||||
"Create Task Label": "Create Task Label",
|
||||
"Create Attachment": "Create Attachment",
|
||||
"Create Task": "Create Task",
|
||||
"Update Task": "Update Task",
|
||||
"Find Attachment": "Find Attachment",
|
||||
"Find Label": "Find Label",
|
||||
"Find Person": "Find Person",
|
||||
"Find Task": "Find Task",
|
||||
"Find or Create Attachment": "Find or Create Attachment",
|
||||
"Find or Create Task": "Find or Create Task",
|
||||
"Find or Create Label": "Find or Create Label",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Creates a new label": "Creates a new label",
|
||||
"Creates a new task label": "Creates a new task label",
|
||||
"Creates a new attachment": "Creates a new attachment",
|
||||
"Creates a new task": "Creates a new task",
|
||||
"Updates an existing task": "Updates an existing task",
|
||||
"Finds an attachment by searching": "Finds an attachment by searching",
|
||||
"Finds a label by searching": "Finds a label by searching",
|
||||
"Finds a person based on person_id": "Finds a person based on person_id",
|
||||
"Finds a task by searching": "Finds a task by searching",
|
||||
"Finds an attachment by searching, or creates one if it doesn't exist": "Finds an attachment by searching, or creates one if it doesn't exist",
|
||||
"Finds a task by searching, or creates one if it doesn't exist": "Finds a task by searching, or creates one if it doesn't exist",
|
||||
"Finds a label by searching, or creates one if it doesn't exist": "Finds a label by searching, or creates one if it doesn't exist",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Project": "Project",
|
||||
"Label Name": "Label Name",
|
||||
"Color": "Color",
|
||||
"Task": "Task",
|
||||
"Label": "Label",
|
||||
"File URL": "File URL",
|
||||
"Attachment Name": "Attachment Name",
|
||||
"Section": "Section",
|
||||
"Task Name": "Task Name",
|
||||
"Notes": "Notes",
|
||||
"Person": "Person",
|
||||
"Due Date": "Due Date",
|
||||
"Status": "Status",
|
||||
"Person ID": "Person ID",
|
||||
"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)",
|
||||
"Hex color code (e.g., #FF0000)": "Hex color code (e.g., #FF0000)",
|
||||
"URL of the file to attach": "URL of the file to attach",
|
||||
"URL of the file to attach (used if creating)": "URL of the file to attach (used if creating)",
|
||||
"Notes for the task (used if creating)": "Notes for the task (used if creating)",
|
||||
"Due date for the task (used if creating)": "Due date for the task (used if creating)",
|
||||
"Hex color code (e.g., #FF0000) - used if creating": "Hex color code (e.g., #FF0000) - used if creating",
|
||||
"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..",
|
||||
"Open": "Open",
|
||||
"Completed": "Completed",
|
||||
"Trashed": "Trashed",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD",
|
||||
"New Attachment": "New Attachment",
|
||||
"New Person": "New Person",
|
||||
"New Section": "New Section",
|
||||
"New Comment": "New Comment",
|
||||
"New Task Label": "New Task Label",
|
||||
"New Checklist Item": "New Checklist Item",
|
||||
"New Project": "New Project",
|
||||
"New Label": "New Label",
|
||||
"New Task": "New Task",
|
||||
"Triggers when an attachment is created.": "Triggers when an attachment is created.",
|
||||
"Triggers when a new person is added to a project.": "Triggers when a new person is added to a project.",
|
||||
"Triggers when a new section is created.": "Triggers when a new section is created.",
|
||||
"Triggers when a new comment is created on a task.": "Triggers when a new comment is created on a task.",
|
||||
"Triggers when a task label is created.": "Triggers when a task label is created.",
|
||||
"Triggers when a new checklist item is added to a task.": "Triggers when a new checklist item is added to a task.",
|
||||
"Triggers when a new project is created.": "Triggers when a new project is created.",
|
||||
"Triggers when a label is created.": "Triggers when a label is created.",
|
||||
"Triggers when a task is created or changed.": "Triggers when a task is created or changed."
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"Intuitive online task manager for teams, personal productivity, and everything in between.": "Intuitive online task manager for teams, personal productivity, and everything in between.",
|
||||
"Authentication for MeisterTask (uses MindMeister OAuth2)": "Authentication for MeisterTask (uses MindMeister OAuth2)",
|
||||
"Create Label": "Create Label",
|
||||
"Create Task Label": "Create Task Label",
|
||||
"Create Attachment": "Create Attachment",
|
||||
"Create Task": "Create Task",
|
||||
"Update Task": "Update Task",
|
||||
"Find Attachment": "Find Attachment",
|
||||
"Find Label": "Find Label",
|
||||
"Find Person": "Find Person",
|
||||
"Find Task": "Find Task",
|
||||
"Find or Create Attachment": "Find or Create Attachment",
|
||||
"Find or Create Task": "Find or Create Task",
|
||||
"Find or Create Label": "Find or Create Label",
|
||||
"Custom API Call": "自定义 API 呼叫",
|
||||
"Creates a new label": "Creates a new label",
|
||||
"Creates a new task label": "Creates a new task label",
|
||||
"Creates a new attachment": "Creates a new attachment",
|
||||
"Creates a new task": "Creates a new task",
|
||||
"Updates an existing task": "Updates an existing task",
|
||||
"Finds an attachment by searching": "Finds an attachment by searching",
|
||||
"Finds a label by searching": "Finds a label by searching",
|
||||
"Finds a person based on person_id": "Finds a person based on person_id",
|
||||
"Finds a task by searching": "Finds a task by searching",
|
||||
"Finds an attachment by searching, or creates one if it doesn't exist": "Finds an attachment by searching, or creates one if it doesn't exist",
|
||||
"Finds a task by searching, or creates one if it doesn't exist": "Finds a task by searching, or creates one if it doesn't exist",
|
||||
"Finds a label by searching, or creates one if it doesn't exist": "Finds a label by searching, or creates one if it doesn't exist",
|
||||
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
|
||||
"Project": "项目",
|
||||
"Label Name": "Label Name",
|
||||
"Color": "Color",
|
||||
"Task": "Task",
|
||||
"Label": "Label",
|
||||
"File URL": "File URL",
|
||||
"Attachment Name": "Attachment Name",
|
||||
"Section": "Section",
|
||||
"Task Name": "Task Name",
|
||||
"Notes": "Notes",
|
||||
"Person": "Person",
|
||||
"Due Date": "Due Date",
|
||||
"Status": "状态",
|
||||
"Person ID": "Person ID",
|
||||
"Method": "方法",
|
||||
"Headers": "信头",
|
||||
"Query Parameters": "查询参数",
|
||||
"Body": "正文内容",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "失败时没有错误",
|
||||
"Timeout (in seconds)": "超时(秒)",
|
||||
"Hex color code (e.g., #FF0000)": "Hex color code (e.g., #FF0000)",
|
||||
"URL of the file to attach": "URL of the file to attach",
|
||||
"URL of the file to attach (used if creating)": "URL of the file to attach (used if creating)",
|
||||
"Notes for the task (used if creating)": "Notes for the task (used if creating)",
|
||||
"Due date for the task (used if creating)": "Due date for the task (used if creating)",
|
||||
"Hex color code (e.g., #FF0000) - used if creating": "Hex color code (e.g., #FF0000) - used if creating",
|
||||
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"Open": "Open",
|
||||
"Completed": "Completed",
|
||||
"Trashed": "Trashed",
|
||||
"GET": "获取",
|
||||
"POST": "帖子",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "弹出",
|
||||
"DELETE": "删除",
|
||||
"HEAD": "黑色",
|
||||
"New Attachment": "New Attachment",
|
||||
"New Person": "New Person",
|
||||
"New Section": "New Section",
|
||||
"New Comment": "New Comment",
|
||||
"New Task Label": "New Task Label",
|
||||
"New Checklist Item": "New Checklist Item",
|
||||
"New Project": "新建项目",
|
||||
"New Label": "New Label",
|
||||
"New Task": "New Task",
|
||||
"Triggers when an attachment is created.": "Triggers when an attachment is created.",
|
||||
"Triggers when a new person is added to a project.": "Triggers when a new person is added to a project.",
|
||||
"Triggers when a new section is created.": "Triggers when a new section is created.",
|
||||
"Triggers when a new comment is created on a task.": "Triggers when a new comment is created on a task.",
|
||||
"Triggers when a task label is created.": "Triggers when a task label is created.",
|
||||
"Triggers when a new checklist item is added to a task.": "Triggers when a new checklist item is added to a task.",
|
||||
"Triggers when a new project is created.": "Triggers when a new project is created.",
|
||||
"Triggers when a label is created.": "Triggers when a label is created.",
|
||||
"Triggers when a task is created or changed.": "Triggers when a task is created or changed."
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
import { newAttachment } from './lib/triggers/new-attachment';
|
||||
import { newPerson } from './lib/triggers/new-person';
|
||||
import { newSection } from './lib/triggers/new-section';
|
||||
import { newComment } from './lib/triggers/new-comment';
|
||||
import { newTaskLabel } from './lib/triggers/new-task-label';
|
||||
import { newChecklistItem } from './lib/triggers/new-checklist-item';
|
||||
import { newProject } from './lib/triggers/new-project';
|
||||
import { newLabel } from './lib/triggers/new-label';
|
||||
import { newTask } from './lib/triggers/new-task';
|
||||
import { createLabel } from './lib/actions/create-label';
|
||||
import { createTaskLabel } from './lib/actions/create-task-label';
|
||||
import { createAttachment } from './lib/actions/create-attachment';
|
||||
import { createTask } from './lib/actions/create-task';
|
||||
import { updateTask } from './lib/actions/update-task';
|
||||
import { findAttachment } from './lib/actions/find-attachment';
|
||||
import { findLabel } from './lib/actions/find-label';
|
||||
import { findPerson } from './lib/actions/find-person';
|
||||
import { findTask } from './lib/actions/find-task';
|
||||
import { findOrCreateAttachment } from './lib/actions/find-or-create-attachment';
|
||||
import { findOrCreateTask } from './lib/actions/find-or-create-task';
|
||||
import { findOrCreateLabel } from './lib/actions/find-or-create-label';
|
||||
import { OAuth2PropertyValue } from '@activepieces/pieces-framework';
|
||||
import { httpClient, HttpMethod, AuthenticationType, createCustomApiCallAction } from '@activepieces/pieces-common';
|
||||
import { MEISTERTASK_API_URL } from './lib/common/common';
|
||||
|
||||
|
||||
|
||||
export const meistertaskAuth = PieceAuth.OAuth2({
|
||||
description: 'Authentication for MeisterTask (uses MindMeister OAuth2)',
|
||||
authUrl: 'https://www.mindmeister.com/oauth2/authorize',
|
||||
tokenUrl: 'https://www.mindmeister.com/oauth2/token',
|
||||
required: true,
|
||||
scope: ['userinfo.profile', 'userinfo.email', 'meistertask'],
|
||||
validate: async ({ auth }) => {
|
||||
const accessToken = (auth as OAuth2PropertyValue).access_token;
|
||||
try {
|
||||
await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: `${MEISTERTASK_API_URL}/projects`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: accessToken,
|
||||
},
|
||||
});
|
||||
return {
|
||||
valid: true,
|
||||
};
|
||||
} catch (e) {
|
||||
return {
|
||||
valid: false,
|
||||
error: 'Invalid token or insufficient scopes.',
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
export const meistertask = createPiece({
|
||||
displayName: 'MeisterTask',
|
||||
description: 'Intuitive online task manager for teams, personal productivity, and everything in between.',
|
||||
auth: meistertaskAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/meistertask.png',
|
||||
categories: [PieceCategory.PRODUCTIVITY],
|
||||
authors: ['Ani-4x', 'sanket-a11y'],
|
||||
actions: [
|
||||
createLabel,
|
||||
createTaskLabel,
|
||||
createAttachment,
|
||||
createTask,
|
||||
updateTask,
|
||||
findAttachment,
|
||||
findLabel,
|
||||
findPerson,
|
||||
findTask,
|
||||
findOrCreateAttachment,
|
||||
findOrCreateTask,
|
||||
findOrCreateLabel,
|
||||
createCustomApiCallAction({
|
||||
auth: meistertaskAuth,
|
||||
baseUrl: () => MEISTERTASK_API_URL,
|
||||
authMapping: async (auth) => {
|
||||
return {
|
||||
Authorization: `Bearer ${(auth as OAuth2PropertyValue).access_token}`,
|
||||
};
|
||||
},
|
||||
}),
|
||||
],
|
||||
triggers: [
|
||||
newAttachment,
|
||||
newPerson,
|
||||
newSection,
|
||||
newComment,
|
||||
newTaskLabel,
|
||||
newChecklistItem,
|
||||
newProject,
|
||||
newLabel,
|
||||
newTask,
|
||||
],
|
||||
});
|
||||
@@ -0,0 +1,40 @@
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { meisterTaskCommon, makeRequest } from '../common/common';
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { Project } from '@activepieces/shared';
|
||||
|
||||
export const createAttachment = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'create_attachment',
|
||||
displayName: 'Create Attachment',
|
||||
description: 'Creates a new attachment',
|
||||
props: {
|
||||
task_id: meisterTaskCommon.task_id,
|
||||
file_url: Property.File({
|
||||
displayName: 'File URL',
|
||||
description: 'URL of the file to attach',
|
||||
required: true,
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Attachment Name',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { task_id, file_url, name } = context.propsValue;
|
||||
|
||||
const body: any = { url: file_url };
|
||||
if (name) body.name = name;
|
||||
|
||||
const response = await makeRequest(
|
||||
HttpMethod.POST,
|
||||
`/tasks/${task_id}/attachments`,
|
||||
token,
|
||||
body
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,40 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
|
||||
export const createLabel = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'create_label',
|
||||
displayName: 'Create Label',
|
||||
description: 'Creates a new label',
|
||||
props: {
|
||||
project: meisterTaskCommon.project,
|
||||
name: Property.ShortText({
|
||||
displayName: 'Label Name',
|
||||
required: true,
|
||||
}),
|
||||
color: Property.ShortText({
|
||||
displayName: 'Color',
|
||||
description: 'Hex color code (e.g., #FF0000)',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { project, name, color } = context.propsValue;
|
||||
|
||||
const body: any = { name };
|
||||
if (color) body.color = color;
|
||||
|
||||
const response = await makeRequest(
|
||||
HttpMethod.POST,
|
||||
`/projects/${project}/labels`,
|
||||
token,
|
||||
body
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,29 @@
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon} from '../common/common';
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
export const createTaskLabel = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'create_task_label',
|
||||
displayName: 'Create Task Label',
|
||||
description: 'Creates a new task label',
|
||||
props: {
|
||||
project: meisterTaskCommon.project,
|
||||
task_id: meisterTaskCommon.task_id,
|
||||
label: meisterTaskCommon.label,
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { task_id, label } = context.propsValue;
|
||||
|
||||
const response = await makeRequest(
|
||||
HttpMethod.POST,
|
||||
`/tasks/${task_id}/task_labels`,
|
||||
token,
|
||||
{ label_id: label }
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,50 @@
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
export const createTask = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'create_task',
|
||||
displayName: 'Create Task',
|
||||
description: 'Creates a new task',
|
||||
props: {
|
||||
project: meisterTaskCommon.project,
|
||||
section: meisterTaskCommon.section,
|
||||
name: Property.ShortText({
|
||||
displayName: 'Task Name',
|
||||
required: true,
|
||||
}),
|
||||
notes: Property.LongText({
|
||||
displayName: 'Notes',
|
||||
required: false,
|
||||
}),
|
||||
assigned_to: meisterTaskCommon.person,
|
||||
due_date: Property.DateTime({
|
||||
displayName: 'Due Date',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { section, name, notes, assigned_to, due_date } = context.propsValue;
|
||||
|
||||
const body: any = {
|
||||
name,
|
||||
section_id: section,
|
||||
};
|
||||
|
||||
if (notes) body.notes = notes;
|
||||
if (assigned_to) body.assigned_to_id = assigned_to;
|
||||
if (due_date) body.due = due_date;
|
||||
|
||||
const response = await makeRequest(
|
||||
HttpMethod.POST,
|
||||
'/tasks',
|
||||
token,
|
||||
body
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,38 @@
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { meisterTaskCommon, makeRequest } from '../common/common';
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
export const findAttachment = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'find_attachment',
|
||||
displayName: 'Find Attachment',
|
||||
description: 'Finds an attachment by searching',
|
||||
props: {
|
||||
task_id: meisterTaskCommon.task_id,
|
||||
name: Property.ShortText({
|
||||
displayName: 'Attachment Name',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { task_id, name } = context.propsValue;
|
||||
|
||||
const response = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/tasks/${task_id}/attachments`,
|
||||
token
|
||||
);
|
||||
|
||||
let attachments = response.body;
|
||||
|
||||
if (name) {
|
||||
attachments = attachments.filter((att: any) =>
|
||||
att.name.toLowerCase().includes(name.toLowerCase())
|
||||
);
|
||||
}
|
||||
|
||||
return attachments.length > 0 ? attachments[0] : null;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,34 @@
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
export const findLabel = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'find_label',
|
||||
displayName: 'Find Label',
|
||||
description: 'Finds a label by searching',
|
||||
props: {
|
||||
project: meisterTaskCommon.project,
|
||||
name: Property.ShortText({
|
||||
displayName: 'Label Name',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { project, name } = context.propsValue;
|
||||
|
||||
const response = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/projects/${project}/labels`,
|
||||
token
|
||||
);
|
||||
|
||||
const labels = response.body.filter((label: any) =>
|
||||
label.name.toLowerCase().includes(name.toLowerCase())
|
||||
);
|
||||
|
||||
return labels.length > 0 ? labels[0] : null;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,60 @@
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { meisterTaskCommon, makeRequest } from '../common/common';
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
export const findOrCreateAttachment = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'find_or_create_attachment',
|
||||
displayName: 'Find or Create Attachment',
|
||||
description: 'Finds an attachment by searching, or creates one if it doesn\'t exist',
|
||||
props: {
|
||||
task_id: meisterTaskCommon.task_id,
|
||||
name: Property.ShortText({
|
||||
displayName: 'Attachment Name',
|
||||
required: true,
|
||||
}),
|
||||
file_url: Property.File({
|
||||
displayName: 'File URL',
|
||||
description: 'URL of the file to attach (used if creating)',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { task_id, name, file_url } = context.propsValue;
|
||||
|
||||
// Try to find existing attachment
|
||||
const findResponse = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/tasks/${task_id}/attachments`,
|
||||
token
|
||||
);
|
||||
|
||||
const existingAttachment = findResponse.body.find((att: any) =>
|
||||
att.name.toLowerCase() === name.toLowerCase()
|
||||
);
|
||||
|
||||
if (existingAttachment) {
|
||||
return {
|
||||
found: true,
|
||||
created: false,
|
||||
attachment: existingAttachment,
|
||||
};
|
||||
}
|
||||
|
||||
// Create new attachment
|
||||
const createResponse = await makeRequest(
|
||||
HttpMethod.POST,
|
||||
`/tasks/${task_id}/attachments`,
|
||||
token,
|
||||
{ url: file_url, name }
|
||||
);
|
||||
|
||||
return {
|
||||
found: false,
|
||||
created: true,
|
||||
attachment: createResponse.body,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,63 @@
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
export const findOrCreateLabel = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'find_or_create_label',
|
||||
displayName: 'Find or Create Label',
|
||||
description: 'Finds a label by searching, or creates one if it doesn\'t exist',
|
||||
props: {
|
||||
project: meisterTaskCommon.project,
|
||||
name: Property.ShortText({
|
||||
displayName: 'Label Name',
|
||||
required: true,
|
||||
}),
|
||||
color: Property.ShortText({
|
||||
displayName: 'Color',
|
||||
description: 'Hex color code (e.g., #FF0000) - used if creating',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { project, name, color } = context.propsValue;
|
||||
|
||||
// Try to find existing label
|
||||
const findResponse = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/projects/${project}/labels`,
|
||||
token
|
||||
);
|
||||
|
||||
const existingLabel = findResponse.body.find((label: any) =>
|
||||
label.name.toLowerCase() === name.toLowerCase()
|
||||
);
|
||||
|
||||
if (existingLabel) {
|
||||
return {
|
||||
found: true,
|
||||
created: false,
|
||||
label: existingLabel,
|
||||
};
|
||||
}
|
||||
|
||||
// Create new label
|
||||
const body: any = { name };
|
||||
if (color) body.color = color;
|
||||
|
||||
const createResponse = await makeRequest(
|
||||
HttpMethod.POST,
|
||||
`/projects/${project}/labels`,
|
||||
token,
|
||||
body
|
||||
);
|
||||
|
||||
return {
|
||||
found: false,
|
||||
created: true,
|
||||
label: createResponse.body,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,76 @@
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
export const findOrCreateTask = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'find_or_create_task',
|
||||
displayName: 'Find or Create Task',
|
||||
description: 'Finds a task by searching, or creates one if it doesn\'t exist',
|
||||
props: {
|
||||
project: meisterTaskCommon.project,
|
||||
section: meisterTaskCommon.section,
|
||||
name: Property.ShortText({
|
||||
displayName: 'Task Name',
|
||||
required: true,
|
||||
}),
|
||||
notes: Property.LongText({
|
||||
displayName: 'Notes',
|
||||
description: 'Notes for the task (used if creating)',
|
||||
required: false,
|
||||
}),
|
||||
assigned_to: meisterTaskCommon.person,
|
||||
due_date: Property.DateTime({
|
||||
displayName: 'Due Date',
|
||||
description: 'Due date for the task (used if creating)',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { section, name, notes, assigned_to, due_date } = context.propsValue;
|
||||
|
||||
// Try to find existing task
|
||||
const findResponse = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/sections/${section}/tasks`,
|
||||
token
|
||||
);
|
||||
|
||||
const existingTask = findResponse.body.find((task: any) =>
|
||||
task.name.toLowerCase() === name.toLowerCase()
|
||||
);
|
||||
|
||||
if (existingTask) {
|
||||
return {
|
||||
found: true,
|
||||
created: false,
|
||||
task: existingTask,
|
||||
};
|
||||
}
|
||||
|
||||
// Create new task
|
||||
const body: any = {
|
||||
name,
|
||||
section_id: section,
|
||||
};
|
||||
|
||||
if (notes) body.notes = notes;
|
||||
if (assigned_to) body.assigned_to_id = assigned_to;
|
||||
if (due_date) body.due = due_date;
|
||||
|
||||
const createResponse = await makeRequest(
|
||||
HttpMethod.POST,
|
||||
'/tasks',
|
||||
token,
|
||||
body
|
||||
);
|
||||
|
||||
return {
|
||||
found: false,
|
||||
created: true,
|
||||
task: createResponse.body,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,29 @@
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { meisterTaskCommon, makeRequest } from '../common/common';
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
export const findPerson = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'find_person',
|
||||
displayName: 'Find Person',
|
||||
description: 'Finds a person based on person_id',
|
||||
props: {
|
||||
person_id: Property.Number({
|
||||
displayName: 'Person ID',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { person_id } = context.propsValue;
|
||||
|
||||
const response = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/persons/${person_id}`,
|
||||
token
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,39 @@
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
export const findTask = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'find_task',
|
||||
displayName: 'Find Task',
|
||||
description: 'Finds a task by searching',
|
||||
props: {
|
||||
project: meisterTaskCommon.project,
|
||||
section: meisterTaskCommon.section,
|
||||
name: Property.ShortText({
|
||||
displayName: 'Task Name',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { section, name } = context.propsValue;
|
||||
|
||||
const response = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/sections/${section}/tasks`,
|
||||
token
|
||||
);
|
||||
|
||||
let tasks = response.body;
|
||||
|
||||
if (name) {
|
||||
tasks = tasks.filter((task: any) =>
|
||||
task.name.toLowerCase().includes(name.toLowerCase())
|
||||
);
|
||||
}
|
||||
|
||||
return tasks.length > 0 ? tasks[0] : null;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,61 @@
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { meisterTaskCommon, makeRequest } from '../common/common';
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { Project } from '@activepieces/shared';
|
||||
|
||||
export const updateTask = createAction({
|
||||
auth: meistertaskAuth,
|
||||
name: 'update_task',
|
||||
displayName: 'Update Task',
|
||||
description: 'Updates an existing task',
|
||||
props: {
|
||||
Project: meisterTaskCommon.project,
|
||||
task_id: meisterTaskCommon.task_id,
|
||||
name: Property.ShortText({
|
||||
displayName: 'Task Name',
|
||||
required: false,
|
||||
}),
|
||||
notes: Property.LongText({
|
||||
displayName: 'Notes',
|
||||
required: false,
|
||||
}),
|
||||
status: Property.StaticDropdown({
|
||||
displayName: 'Status',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: 'Open', value: 1 },
|
||||
{ label: 'Completed', value: 2 },
|
||||
{ label: 'Trashed', value: 18 },
|
||||
],
|
||||
},
|
||||
}),
|
||||
assigned_to: meisterTaskCommon.person,
|
||||
due_date: Property.DateTime({
|
||||
displayName: 'Due Date',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const token = context.auth.access_token;
|
||||
const { task_id, name, notes, status, assigned_to, due_date } = context.propsValue;
|
||||
|
||||
const body: any = {};
|
||||
if (name) body.name = name;
|
||||
if (notes) body.notes = notes;
|
||||
if (status) body.status = status;
|
||||
if (assigned_to) body.assigned_to_id = assigned_to;
|
||||
if (due_date) body.due = due_date;
|
||||
|
||||
const response = await makeRequest(
|
||||
HttpMethod.PUT,
|
||||
`/tasks/${task_id}`,
|
||||
token,
|
||||
body
|
||||
);
|
||||
|
||||
return response.body;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,247 @@
|
||||
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
|
||||
import { Property } from '@activepieces/pieces-framework';
|
||||
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
|
||||
import { AuthenticationType } from '@activepieces/pieces-common';
|
||||
import { meistertaskAuth } from '../../index';
|
||||
|
||||
export const MEISTERTASK_API_URL = 'https://www.meistertask.com/api';
|
||||
|
||||
export const meisterTaskCommon = {
|
||||
baseUrl: MEISTERTASK_API_URL,
|
||||
|
||||
project: Property.Dropdown({
|
||||
auth: meistertaskAuth,
|
||||
displayName: 'Project',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const token = typeof auth === 'string' ? auth : (auth).access_token;
|
||||
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: `${MEISTERTASK_API_URL}/projects`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: token,
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.map((project: any) => ({
|
||||
label: project.name,
|
||||
value: project.id,
|
||||
})),
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error fetching projects:', error);
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Error loading projects. Please reconnect your account.',
|
||||
};
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
||||
section: Property.Dropdown({
|
||||
auth: meistertaskAuth,
|
||||
displayName: 'Section',
|
||||
required: true,
|
||||
refreshers: ['project'],
|
||||
options: async ({ auth, project }) => {
|
||||
if (!auth || !project) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please select a project first',
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const token = typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: `${MEISTERTASK_API_URL}/projects/${project}/sections`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: token,
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.map((section: any) => ({
|
||||
label: section.name,
|
||||
value: section.id,
|
||||
})),
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error fetching sections:', error);
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Error loading sections',
|
||||
};
|
||||
}
|
||||
},
|
||||
}),
|
||||
task_id: Property.Dropdown<{ name: string; id: string },true,typeof meistertaskAuth>({
|
||||
auth: meistertaskAuth,
|
||||
displayName: 'Task',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please select a first',
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const token = typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: `${MEISTERTASK_API_URL}/tasks`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: token,
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.map((task: any) => ({
|
||||
label: task.name,
|
||||
value: task.id,
|
||||
})),
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error fetching tasks:', error);
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Error loading tasks',
|
||||
};
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
||||
label: Property.Dropdown<{ name: string; id: string },true,typeof meistertaskAuth>({
|
||||
auth: meistertaskAuth,
|
||||
displayName: 'Label',
|
||||
required: true,
|
||||
refreshers: ['project'],
|
||||
options: async ({ auth, project }) => {
|
||||
if (!auth || !project) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please select a project first',
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const token = typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: `${MEISTERTASK_API_URL}/projects/${project}/labels`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: token,
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.map((label: any) => ({
|
||||
label: label.name,
|
||||
value: label.id,
|
||||
})),
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error fetching labels:', error);
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Error loading labels',
|
||||
};
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
||||
person: Property.Dropdown({
|
||||
auth: meistertaskAuth,
|
||||
displayName: 'Person',
|
||||
required: false,
|
||||
refreshers: ['project'],
|
||||
options: async ({ auth, project }) => {
|
||||
if (!auth || !project) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please select a project first',
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const token = typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: `${MEISTERTASK_API_URL}/projects/${project}/persons`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: token,
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.body.map((person: any) => ({
|
||||
label: `${person.firstname} ${person.lastname}`,
|
||||
value: person.id,
|
||||
})),
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error fetching persons:', error);
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Error loading persons',
|
||||
};
|
||||
}
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
export async function makeRequest(
|
||||
method: HttpMethod,
|
||||
url: string,
|
||||
token: string,
|
||||
body?: any
|
||||
) {
|
||||
return await httpClient.sendRequest({
|
||||
method,
|
||||
url: `${MEISTERTASK_API_URL}${url}`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token,
|
||||
},
|
||||
body,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
HttpMethod,
|
||||
} from '@activepieces/pieces-common';
|
||||
import dayjs from 'dayjs';
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
|
||||
const getToken = (auth: any): string => {
|
||||
return typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
};
|
||||
|
||||
const newAttachmentPolling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof meistertaskAuth>,
|
||||
{ project: unknown; section: unknown }
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth, propsValue }) => {
|
||||
const token = getToken(auth);
|
||||
const tasksResponse = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/sections/${propsValue.section}/tasks`,
|
||||
token
|
||||
);
|
||||
|
||||
const tasks = tasksResponse.body || [];
|
||||
const attachments: any[] = [];
|
||||
|
||||
for (const task of tasks) {
|
||||
try {
|
||||
const attachmentsResponse = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/tasks/${task.id}/attachments`,
|
||||
token
|
||||
);
|
||||
const taskAttachments = attachmentsResponse.body || [];
|
||||
attachments.push(...taskAttachments);
|
||||
} catch (error) {
|
||||
console.error(`Error fetching attachments for task ${task.id}:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
return attachments.map((attachment: any) => ({
|
||||
epochMilliSeconds: dayjs(attachment.created_at).valueOf(),
|
||||
data: attachment,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newAttachment = createTrigger({
|
||||
auth: meistertaskAuth,
|
||||
name: 'new_attachment',
|
||||
displayName: 'New Attachment',
|
||||
description: 'Triggers when an attachment is created.',
|
||||
props: {
|
||||
project: meisterTaskCommon.project,
|
||||
section: meisterTaskCommon.section,
|
||||
},
|
||||
sampleData: {
|
||||
id: 55555555,
|
||||
task_id: 12345678,
|
||||
filename: 'document.pdf',
|
||||
url: 'https://example.com/file.pdf',
|
||||
created_at: '2024-01-15T12:00:00Z',
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(newAttachmentPolling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(newAttachmentPolling, context);
|
||||
},
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(newAttachmentPolling, context);
|
||||
},
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(newAttachmentPolling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,81 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
HttpMethod,
|
||||
} from '@activepieces/pieces-common';
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
|
||||
const getToken = (auth: any): string => {
|
||||
return typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
};
|
||||
|
||||
const newChecklistItemPolling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof meistertaskAuth>,
|
||||
{ task_id: unknown }
|
||||
> = {
|
||||
strategy: DedupeStrategy.LAST_ITEM,
|
||||
items: async ({ auth, propsValue }) => {
|
||||
const token = getToken(auth);
|
||||
|
||||
try {
|
||||
const tasksResponse = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/task/${propsValue.task_id}/checklist_items`,
|
||||
token
|
||||
);
|
||||
|
||||
const tasks = tasksResponse.body || [];
|
||||
const checklistItems: any[] = [];
|
||||
|
||||
if (tasks.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return tasks.map((item: any) => ({
|
||||
id: item.id,
|
||||
data: item,
|
||||
}));
|
||||
} catch (error) {
|
||||
console.error('Error fetching checklist items:', error);
|
||||
return [];
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export const newChecklistItem = createTrigger({
|
||||
auth: meistertaskAuth,
|
||||
name: 'new_checklist_item',
|
||||
displayName: 'New Checklist Item',
|
||||
description: 'Triggers when a new checklist item is added to a task.',
|
||||
props: {
|
||||
task_id: meisterTaskCommon.task_id,
|
||||
},
|
||||
sampleData: {
|
||||
"id": 26,
|
||||
"name": "Checklist A",
|
||||
"sequence": 100000,
|
||||
"task_id": 12,
|
||||
"project_id": 6
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(newChecklistItemPolling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(newChecklistItemPolling, context);
|
||||
},
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(newChecklistItemPolling, context);
|
||||
},
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(newChecklistItemPolling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,73 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
HttpMethod,
|
||||
} from '@activepieces/pieces-common';
|
||||
import dayjs from 'dayjs';
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
|
||||
const getToken = (auth: any): string => {
|
||||
return typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
};
|
||||
|
||||
const newCommentPolling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof meistertaskAuth>,
|
||||
{ task_id: unknown }
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth, propsValue }) => {
|
||||
const token = getToken(auth);
|
||||
const tasksResponse = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/task/${propsValue.task_id}/comments`,
|
||||
token
|
||||
);
|
||||
|
||||
const taskComments = tasksResponse.body || [];
|
||||
|
||||
return taskComments.map((comment: any) => ({
|
||||
epochMilliSeconds: dayjs(comment.created_at).valueOf(),
|
||||
data: comment,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newComment = createTrigger({
|
||||
auth: meistertaskAuth,
|
||||
name: 'new_comment',
|
||||
displayName: 'New Comment',
|
||||
description: 'Triggers when a new comment is created on a task.',
|
||||
props: {
|
||||
task_id: meisterTaskCommon.task_id,
|
||||
},
|
||||
sampleData: {
|
||||
"id": 2,
|
||||
"task_id": 123,
|
||||
"text": "Looks awesome!",
|
||||
"text_html": "<p>Looks awesome!</p>\n",
|
||||
"person_id": 7,
|
||||
"created_at": "2017-04-02T03:14:15.926535Z",
|
||||
"updated_at": "2017-04-02T03:14:15.926535Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(newCommentPolling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(newCommentPolling, context);
|
||||
},
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(newCommentPolling, context);
|
||||
},
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(newCommentPolling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,69 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
HttpMethod,
|
||||
} from '@activepieces/pieces-common';
|
||||
import dayjs from 'dayjs';
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { meisterTaskCommon, makeRequest } from '../common/common';
|
||||
|
||||
const getToken = (auth: any): string => {
|
||||
return typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
};
|
||||
|
||||
const newLabelPolling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof meistertaskAuth>,
|
||||
{ project: unknown }
|
||||
> = {
|
||||
strategy: DedupeStrategy.LAST_ITEM,
|
||||
items: async ({ auth, propsValue }) => {
|
||||
const token = getToken(auth);
|
||||
const response = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/projects/${propsValue.project}/labels`,
|
||||
token
|
||||
);
|
||||
|
||||
const labels = response.body || [];
|
||||
return labels.map((label: any) => ({
|
||||
id: label.id,
|
||||
data: label,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newLabel = createTrigger({
|
||||
auth: meistertaskAuth,
|
||||
name: 'new_label',
|
||||
displayName: 'New Label',
|
||||
description: 'Triggers when a label is created.',
|
||||
props: {
|
||||
project: meisterTaskCommon.project,
|
||||
},
|
||||
sampleData: {
|
||||
"id": 24,
|
||||
"project_id": 42,
|
||||
"name": "Bug",
|
||||
"color": "d93651"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(newLabelPolling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(newLabelPolling, context);
|
||||
},
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(newLabelPolling, context);
|
||||
},
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(newLabelPolling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,73 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
HttpMethod,
|
||||
} from '@activepieces/pieces-common';
|
||||
import dayjs from 'dayjs';
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
|
||||
const getToken = (auth: any): string => {
|
||||
return typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
};
|
||||
|
||||
const newPersonPolling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof meistertaskAuth>,
|
||||
{ project: unknown }
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth, propsValue }) => {
|
||||
const token = getToken(auth);
|
||||
const response = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/projects/${propsValue.project}/persons`,
|
||||
token
|
||||
);
|
||||
|
||||
const persons = response.body || [];
|
||||
return persons.map((person: any) => ({
|
||||
epochMilliSeconds: dayjs(person.created_at).valueOf(),
|
||||
data: person,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newPerson = createTrigger({
|
||||
auth: meistertaskAuth,
|
||||
name: 'new_person',
|
||||
displayName: 'New Person',
|
||||
description: 'Triggers when a new person is added to a project.',
|
||||
props: {
|
||||
project: meisterTaskCommon.project,
|
||||
},
|
||||
sampleData: {
|
||||
"id": 8,
|
||||
"firstname": "Jane",
|
||||
"lastname": "Demo",
|
||||
"email": "jane@example.com",
|
||||
"avatar": "https://www.example.com/files/avatars/jane.jpg",
|
||||
"avatar_thumb": "https://www.example.com/files/avatars/jane.jpg",
|
||||
"created_at": "2017-04-02T03:14:15.926535Z",
|
||||
"updated_at": "2017-04-02T03:14:15.926535Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(newPersonPolling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(newPersonPolling, context);
|
||||
},
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(newPersonPolling, context);
|
||||
},
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(newPersonPolling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,70 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
HttpMethod,
|
||||
} from '@activepieces/pieces-common';
|
||||
import dayjs from 'dayjs';
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
|
||||
const getToken = (auth: any): string => {
|
||||
return typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
};
|
||||
|
||||
const newProjectPolling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof meistertaskAuth>,
|
||||
Record<string, any>
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth }) => {
|
||||
const token = getToken(auth);
|
||||
const response = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/projects`,
|
||||
token
|
||||
);
|
||||
|
||||
const projects = response.body || [];
|
||||
return projects.map((project: any) => ({
|
||||
epochMilliSeconds: dayjs(project.created_at).valueOf(),
|
||||
data: project,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newProject = createTrigger({
|
||||
auth: meistertaskAuth,
|
||||
name: 'new_project',
|
||||
displayName: 'New Project',
|
||||
description: 'Triggers when a new project is created.',
|
||||
props: {},
|
||||
sampleData: {
|
||||
"id": 123,
|
||||
"token": "s3i5reaF",
|
||||
"name": "Getting Started with MeisterTask",
|
||||
"notes": "This is just a demo project",
|
||||
"status": 1,
|
||||
"created_at": "2017-01-13T09:29:36.360375Z",
|
||||
"updated_at": "2017-01-16T10:10:21.460697Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(newProjectPolling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(newProjectPolling, context);
|
||||
},
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(newProjectPolling, context);
|
||||
},
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(newProjectPolling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,74 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
HttpMethod,
|
||||
} from '@activepieces/pieces-common';
|
||||
import dayjs from 'dayjs';
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
|
||||
const getToken = (auth: any): string => {
|
||||
return typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
};
|
||||
|
||||
const newSectionPolling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof meistertaskAuth>,
|
||||
Record<string, any>
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth, propsValue }) => {
|
||||
const token = getToken(auth);
|
||||
const response = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/sections`,
|
||||
token
|
||||
);
|
||||
|
||||
const sections = response.body || [];
|
||||
return sections.map((section: any) => ({
|
||||
epochMilliSeconds: dayjs(section.created_at).valueOf(),
|
||||
data: section,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newSection = createTrigger({
|
||||
auth: meistertaskAuth,
|
||||
name: 'new_section',
|
||||
displayName: 'New Section',
|
||||
description: 'Triggers when a new section is created.',
|
||||
props: {
|
||||
},
|
||||
sampleData: {
|
||||
"id": 119,
|
||||
"name": "Intermediate",
|
||||
"description": null,
|
||||
"color": "30bfbf",
|
||||
"indicator": 7,
|
||||
"status": 1,
|
||||
"project_id": 66,
|
||||
"sequence": -1,
|
||||
"created_at": "2017-01-25T13:22:34.559759Z",
|
||||
"updated_at": "2017-02-01T09:24:48.453184Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(newSectionPolling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(newSectionPolling, context);
|
||||
},
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(newSectionPolling, context);
|
||||
},
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(newSectionPolling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,77 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
Property,
|
||||
AppConnectionValueForAuthProperty,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
HttpMethod,
|
||||
} from '@activepieces/pieces-common';
|
||||
import dayjs from 'dayjs';
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
|
||||
const getToken = (auth: any): string => {
|
||||
return typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
};
|
||||
|
||||
const newTaskLabelPolling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof meistertaskAuth>,
|
||||
{ project: unknown; section: unknown }
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth, propsValue }) => {
|
||||
const token = getToken(auth);
|
||||
|
||||
try {
|
||||
const tasksResponse = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/task/${propsValue.section}/task_labels`,
|
||||
token
|
||||
);
|
||||
|
||||
const taskLabels = tasksResponse.body || [];
|
||||
|
||||
return taskLabels.map((label: any) => ({
|
||||
epochMilliSeconds: dayjs(label.created_at || label.updated_at || new Date()).valueOf(),
|
||||
data: label,
|
||||
}));
|
||||
} catch (error) {
|
||||
console.error('Error fetching task labels:', error);
|
||||
return [];
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export const newTaskLabel = createTrigger({
|
||||
auth: meistertaskAuth,
|
||||
name: 'new_task_label',
|
||||
displayName: 'New Task Label',
|
||||
description: 'Triggers when a task label is created.',
|
||||
props: {
|
||||
project: meisterTaskCommon.project,
|
||||
section: meisterTaskCommon.section,
|
||||
},
|
||||
sampleData: {
|
||||
"id": 364,
|
||||
"label_id": 25,
|
||||
"task_id": 123
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(newTaskLabelPolling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(newTaskLabelPolling, context);
|
||||
},
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(newTaskLabelPolling, context);
|
||||
},
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(newTaskLabelPolling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,79 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
PiecePropValueSchema,
|
||||
AppConnectionValueForAuthProperty,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
HttpMethod,
|
||||
} from '@activepieces/pieces-common';
|
||||
import dayjs from 'dayjs';
|
||||
import { meistertaskAuth } from '../../index';
|
||||
import { makeRequest, meisterTaskCommon } from '../common/common';
|
||||
|
||||
const getToken = (auth: any): string => {
|
||||
return typeof auth === 'string' ? auth : (auth as any).access_token;
|
||||
};
|
||||
|
||||
const newTaskPolling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof meistertaskAuth>,
|
||||
Record<string, any>
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth, propsValue }) => {
|
||||
const token = getToken(auth);
|
||||
const response = await makeRequest(
|
||||
HttpMethod.GET,
|
||||
`/tasks`,
|
||||
token
|
||||
);
|
||||
|
||||
const tasks = response.body || [];
|
||||
return tasks.map((task: any) => ({
|
||||
epochMilliSeconds: dayjs(task.updated_at).valueOf(),
|
||||
data: task,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newTask = createTrigger({
|
||||
auth: meistertaskAuth,
|
||||
name: 'new_task',
|
||||
displayName: 'New Task',
|
||||
description: 'Triggers when a task is created or changed.',
|
||||
props: {
|
||||
},
|
||||
sampleData: {
|
||||
"id": 15,
|
||||
"token": "gvuUs17f",
|
||||
"name": "Task Name",
|
||||
"notes": "Here are some task notes",
|
||||
"status": 1,
|
||||
"status_updated_at": "2019-05-09T14:49:18.303930Z",
|
||||
"section_id": 1,
|
||||
"section_name": "Open",
|
||||
"project_id": 15,
|
||||
"sequence": 100,
|
||||
"assigned_to_id": 1,
|
||||
"tracked_time": 3600,
|
||||
"due": null,
|
||||
"created_at": "2019-02-06T17:01:33.635649Z",
|
||||
"updated_at": "2019-05-09T14:49:18.304227Z"
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(newTaskPolling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(newTaskPolling, context);
|
||||
},
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(newTaskPolling, context);
|
||||
},
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(newTaskPolling, context);
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user