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,33 @@
|
||||
{
|
||||
"extends": [
|
||||
"../../../../.eslintrc.base.json"
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"!**/*"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx",
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
# pieces-microsoft-365-planner
|
||||
|
||||
This library was generated with [Nx](https://nx.dev).
|
||||
|
||||
## Building
|
||||
|
||||
Run `nx build pieces-microsoft-365-planner` to build the library.
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "@activepieces/piece-microsoft-365-planner",
|
||||
"version": "0.0.3",
|
||||
"type": "commonjs",
|
||||
"main": "./src/index.js",
|
||||
"types": "./src/index.d.ts",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0",
|
||||
"@microsoft/microsoft-graph-client": "3.0.7",
|
||||
"@microsoft/microsoft-graph-types": "2.40.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"name": "pieces-microsoft-365-planner",
|
||||
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
|
||||
"sourceRoot": "packages/pieces/community/microsoft-365-planner/src",
|
||||
"projectType": "library",
|
||||
"release": {
|
||||
"version": {
|
||||
"manifestRootsToUpdate": [
|
||||
"dist/{projectRoot}"
|
||||
],
|
||||
"currentVersionResolver": "git-tag",
|
||||
"fallbackCurrentVersionResolver": "disk"
|
||||
}
|
||||
},
|
||||
"tags": [],
|
||||
"targets": {
|
||||
"build": {
|
||||
"executor": "@nx/js:tsc",
|
||||
"outputs": [
|
||||
"{options.outputPath}"
|
||||
],
|
||||
"options": {
|
||||
"outputPath": "dist/packages/pieces/community/microsoft-365-planner",
|
||||
"tsConfig": "packages/pieces/community/microsoft-365-planner/tsconfig.lib.json",
|
||||
"packageJson": "packages/pieces/community/microsoft-365-planner/package.json",
|
||||
"main": "packages/pieces/community/microsoft-365-planner/src/index.ts",
|
||||
"assets": [
|
||||
"packages/pieces/community/microsoft-365-planner/*.md",
|
||||
{
|
||||
"input": "packages/pieces/community/microsoft-365-planner/src/i18n",
|
||||
"output": "./src/i18n",
|
||||
"glob": "**/!(i18n.json)"
|
||||
}
|
||||
],
|
||||
"buildableProjectDepsInPackageJsonType": "dependencies",
|
||||
"updateBuildableProjectDepsInPackageJson": true
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build",
|
||||
"prebuild"
|
||||
]
|
||||
},
|
||||
"nx-release-publish": {
|
||||
"options": {
|
||||
"packageRoot": "dist/{projectRoot}"
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"executor": "@nx/eslint:lint",
|
||||
"outputs": [
|
||||
"{options.outputFile}"
|
||||
]
|
||||
},
|
||||
"prebuild": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"cwd": "packages/pieces/community/microsoft-365-planner",
|
||||
"command": "bun install --no-save --silent"
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.": "Microsoft 365 Planner ist Teil der Microsoft 365 Suite und bietet leichte Aufgaben- und Eimer-basierte Planung für Teams. Diese Integration unterstützt die Erstellung von Plänen, Buckets, Aufgaben, das Abrufen, Löschen und benutzerdefinierte API-Aufrufe.",
|
||||
"Create Plan": "Plan erstellen",
|
||||
"Create Bucket": "Bucket erstellen",
|
||||
"Create Task": "Aufgabe erstellen",
|
||||
"Delete Bucket": "Bucket löschen",
|
||||
"Delete Task": "Aufgabe löschen",
|
||||
"Update Plan": "Paket aktualisieren",
|
||||
"Update Bucket": "Bucket aktualisieren",
|
||||
"Update Task": "Aufgabe aktualisieren",
|
||||
"Find a Plan": "Plan finden",
|
||||
"Get a Bucket": "Holen Sie sich einen Bucket",
|
||||
"Find Task": "Aufgabe finden",
|
||||
"Custom API Call": "Eigener API-Aufruf",
|
||||
"Create a new planner plan": "Neuen Planerplan erstellen",
|
||||
"Create a bucket (category) under a plan.": "Erstellen Sie eine Gruppe (Kategorie) unter einem Plan.",
|
||||
"Create a new planner task with title, assignments, due date, etc.": "Erstellen Sie eine neue Planer-Aufgabe mit Titel, Aufgaben, Fälligkeitsdatum usw.",
|
||||
"Delete an existing bucket.": "Lösche eine bestehende Gruppe.",
|
||||
"Remove a specific task by ID.": "Entferne eine bestimmte Aufgabe über ID.",
|
||||
"modify metadata of a plan (e.g. title changes).": "die Metadaten eines Plans ändern (z.B. Titeländerungen).",
|
||||
"Modify bucket’s name or properties.": "Ändern Sie den Namen oder die Eigenschaften.",
|
||||
"Modify existing task fields: title, due date, assignments, descriptions.": "Bestehende Aufgabenfelder ändern: Titel, Fälligkeitsdatum, Zuordnungen, Beschreibungen.",
|
||||
"Finds a plan by field.": "Findet einen Plan nach Feld.",
|
||||
"Retrieve details about a specific bucket.": "Rufe Details zu einer bestimmten Gruppe ab.",
|
||||
"Find task by fields.": "Suche Aufgabe nach Feldern.",
|
||||
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
|
||||
"Group": "Gruppe",
|
||||
"Title": "Titel",
|
||||
"Plan": "Plan",
|
||||
"Bucket Name": "Bucket-Name",
|
||||
"Order Hint": "Auftragshinweise",
|
||||
"Bucket": "Eimer",
|
||||
"Assignments": "Aufgaben",
|
||||
"Due Date": "Fälligkeitsdatum",
|
||||
"Percent Complete": "Prozent abgeschlossen",
|
||||
"Priority": "Priorität",
|
||||
"Start Date": "Startdatum",
|
||||
"Task": "Aufgabe",
|
||||
"Name": "Name",
|
||||
"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)",
|
||||
"Select the Grroup": "Grroup auswählen",
|
||||
"The title of the plan": "Der Titel des Plans",
|
||||
"Select the plan": "Wählen Sie den Plan",
|
||||
"The name of the bucket to be created": "Der Name des zu erstellenden Buckets",
|
||||
"Hint used to order items of this type in a list. The format is defined as outlined here: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0": "Hinweis zum Bestellen von Artikeln dieses Typs in einer Liste. Das Format ist wie hier beschrieben definiert: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0",
|
||||
"Select the bucket": "Wählen Sie die Gruppe",
|
||||
"The title of the task to be created": "Der Titel der zu erstellenden Aufgabe",
|
||||
"Select users to assign the task to. If left empty, the task will be unassigned.": "Wählen Sie Benutzer, denen die Aufgabe zugewiesen werden soll. Wenn leer gelassen, wird die Aufgabe nicht zugewiesen.",
|
||||
"The due date and time for the task": "Enddatum und Uhrzeit der Aufgabe",
|
||||
"The completion percentage of the task (0-100)": "Prozentsatz der Fertigstellung der Aufgabe (0-100)",
|
||||
"The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).": "Die Priorität der Aufgabe zwischen 0 und 10 mit niedrigerer Priorität (0 hat die höchste Priorität und 10 hat die niedrigste Priorität).",
|
||||
"The start date and time for the task": "Das Startdatum und die Uhrzeit der Aufgabe",
|
||||
"Select the task": "Wählen Sie die Aufgabe",
|
||||
"The new title of the plan": "Der neue Titel des Plans",
|
||||
"The new name of the bucket": "Der neue Name der Gruppe",
|
||||
"The new title of the task": "Der neue Titel der Aufgabe",
|
||||
"The title of the plan to search for": "Der Titel des zu suchenden Plans",
|
||||
"The title of the task to search for": "Der Titel der zu suchenden Aufgabe",
|
||||
"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",
|
||||
"New Plan Created": "Neuer Plan erstellt",
|
||||
"New Task Created": "Neue Aufgabe erstellt",
|
||||
"New Task Assigned to User": "Neue Aufgabe zugewiesen an Benutzer",
|
||||
"Triggers when a new Plan is created in Microsoft 365 Planner.": "Wird ausgelöst, wenn ein neuer Plan in Microsoft 365 Planner erstellt wird.",
|
||||
"Triggers when a new Task is created in Microsoft 365 Planner.": "Wird ausgelöst, wenn eine neue Aufgabe in Microsoft 365 Planner erstellt wird.",
|
||||
"Triggers when a Task is assigned to the authenticated user in Microsoft 365 Planner.": "Wird ausgelöst, wenn eine Aufgabe dem authentifizierten Benutzer in Microsoft 365 Planner zugewiesen wird."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.": "Microsoft 365 Planner forma parte de la suite Microsoft 365, que ofrece una tarea ligera y una planificación basada en cubos para equipos. Esta integración soporta la creación de planes, cuquetes, tareas, buscarlos, borrarlos y llamadas personalizadas de API.",
|
||||
"Create Plan": "Crear plan",
|
||||
"Create Bucket": "Crear cubo",
|
||||
"Create Task": "Crear tarea",
|
||||
"Delete Bucket": "Eliminar cubo",
|
||||
"Delete Task": "Eliminar tarea",
|
||||
"Update Plan": "Actualizar plan",
|
||||
"Update Bucket": "Actualizar cubo",
|
||||
"Update Task": "Actualizar tarea",
|
||||
"Find a Plan": "Encontrar un plan",
|
||||
"Get a Bucket": "Consigue un cubo",
|
||||
"Find Task": "Buscar tarea",
|
||||
"Custom API Call": "Llamada API personalizada",
|
||||
"Create a new planner plan": "Crear un nuevo plan de planificación",
|
||||
"Create a bucket (category) under a plan.": "Crear un cubo (categoría) bajo un plan.",
|
||||
"Create a new planner task with title, assignments, due date, etc.": "Crear una nueva tarea de planificador con título, asignaciones, fecha de vencimiento, etc.",
|
||||
"Delete an existing bucket.": "Eliminar un cubo existente.",
|
||||
"Remove a specific task by ID.": "Elimina una tarea específica por ID.",
|
||||
"modify metadata of a plan (e.g. title changes).": "modificar metadatos de un plan (por ejemplo, cambios de título).",
|
||||
"Modify bucket’s name or properties.": "Modificar el nombre del cubo o las propiedades.",
|
||||
"Modify existing task fields: title, due date, assignments, descriptions.": "Modificar campos de tareas existentes: título, fecha de vencimiento, asignaciones, descripciones.",
|
||||
"Finds a plan by field.": "Encuentra un plan por campo.",
|
||||
"Retrieve details about a specific bucket.": "Recuperar detalles sobre un cubo específico.",
|
||||
"Find task by fields.": "Buscar tareas por campos.",
|
||||
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
|
||||
"Group": "Grupo",
|
||||
"Title": "Título",
|
||||
"Plan": "Plano",
|
||||
"Bucket Name": "Nombre del cubo",
|
||||
"Order Hint": "Pista de pedido",
|
||||
"Bucket": "Cubo",
|
||||
"Assignments": "Asignaciones",
|
||||
"Due Date": "Fecha de fin",
|
||||
"Percent Complete": "Porcentaje completo",
|
||||
"Priority": "Prioridad",
|
||||
"Start Date": "Fecha de inicio",
|
||||
"Task": "Tarea",
|
||||
"Name": "Nombre",
|
||||
"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)",
|
||||
"Select the Grroup": "Selecciona el Grroup",
|
||||
"The title of the plan": "El título del plan",
|
||||
"Select the plan": "Seleccione el plan",
|
||||
"The name of the bucket to be created": "El nombre del cubo a crear",
|
||||
"Hint used to order items of this type in a list. The format is defined as outlined here: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0": "Pista usada para ordenar artículos de este tipo en una lista. El formato se define como descrito aquí: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0",
|
||||
"Select the bucket": "Seleccione el cubo",
|
||||
"The title of the task to be created": "El título de la tarea a crear",
|
||||
"Select users to assign the task to. If left empty, the task will be unassigned.": "Seleccione los usuarios a los que asignar la tarea. Si se deja vacío, la tarea será desasignada.",
|
||||
"The due date and time for the task": "Fecha y hora de vencimiento de la tarea",
|
||||
"The completion percentage of the task (0-100)": "El porcentaje de finalización de la tarea (0-100)",
|
||||
"The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).": "La prioridad de la tarea entre 0 y 10, con el valor creciente de menor prioridad (0 tiene la prioridad más alta y 10 tiene la prioridad más baja).",
|
||||
"The start date and time for the task": "La fecha y hora de inicio de la tarea",
|
||||
"Select the task": "Seleccione la tarea",
|
||||
"The new title of the plan": "El nuevo título del plan",
|
||||
"The new name of the bucket": "El nuevo nombre del cubo",
|
||||
"The new title of the task": "El nuevo título de la tarea",
|
||||
"The title of the plan to search for": "El título del plan de búsqueda",
|
||||
"The title of the task to search for": "El título de la tarea a buscar",
|
||||
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
|
||||
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
|
||||
"GET": "RECOGER",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "BORRAR",
|
||||
"HEAD": "LIMPIO",
|
||||
"New Plan Created": "Nuevo plan creado",
|
||||
"New Task Created": "Nueva tarea creada",
|
||||
"New Task Assigned to User": "Nueva tarea asignada al usuario",
|
||||
"Triggers when a new Plan is created in Microsoft 365 Planner.": "Se activa cuando se crea un nuevo Plan en Microsoft 365 Planner.",
|
||||
"Triggers when a new Task is created in Microsoft 365 Planner.": "Se activa cuando se crea una nueva tarea en Microsoft 365 Planner.",
|
||||
"Triggers when a Task is assigned to the authenticated user in Microsoft 365 Planner.": "Se activa cuando se asigna una tarea al usuario autenticado en Microsoft 365 Planner."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.": "Microsoft 365 Planner fait partie de la suite Microsoft 365, offrant des tâches légères et une planification basée sur des compartiments pour les équipes. Cette intégration prend en charge la création de plans, de segments, de tâches, la récupération, la suppression et les appels API personnalisés.",
|
||||
"Create Plan": "Créer un plan",
|
||||
"Create Bucket": "Créer un seau",
|
||||
"Create Task": "Créer une tâche",
|
||||
"Delete Bucket": "Supprimer le seau",
|
||||
"Delete Task": "Supprimer la tâche",
|
||||
"Update Plan": "Mettre à jour le plan",
|
||||
"Update Bucket": "Mettre à jour le seau",
|
||||
"Update Task": "Tâche de mise à jour",
|
||||
"Find a Plan": "Trouver un plan",
|
||||
"Get a Bucket": "Obtenir un seau",
|
||||
"Find Task": "Trouver une tâche",
|
||||
"Custom API Call": "Appel d'API personnalisé",
|
||||
"Create a new planner plan": "Créer un nouveau plan de planificateur",
|
||||
"Create a bucket (category) under a plan.": "Créer un compartiment (catégorie) sous un plan.",
|
||||
"Create a new planner task with title, assignments, due date, etc.": "Créer une nouvelle tâche de planificateur avec titre, devoirs, date d'échéance, etc.",
|
||||
"Delete an existing bucket.": "Supprimer un compartiment existant.",
|
||||
"Remove a specific task by ID.": "Supprimer une tâche spécifique par ID.",
|
||||
"modify metadata of a plan (e.g. title changes).": "modifier les métadonnées d'un plan (par exemple, les changements de titre).",
|
||||
"Modify bucket’s name or properties.": "Modifier le nom ou les propriétés du segment.",
|
||||
"Modify existing task fields: title, due date, assignments, descriptions.": "Modifier les champs de tâche existants : titre, date d'échéance, devoirs, descriptions.",
|
||||
"Finds a plan by field.": "Trouve un plan par champ.",
|
||||
"Retrieve details about a specific bucket.": "Récupérer les détails d'un compartiment spécifique.",
|
||||
"Find task by fields.": "Trouver une tâche par champs.",
|
||||
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
|
||||
"Group": "Groupes",
|
||||
"Title": "Titre",
|
||||
"Plan": "Forfait",
|
||||
"Bucket Name": "Nom du seau",
|
||||
"Order Hint": "Astuce de la commande",
|
||||
"Bucket": "Seau",
|
||||
"Assignments": "Affectations",
|
||||
"Due Date": "Date de fin",
|
||||
"Percent Complete": "Pourcentage terminé",
|
||||
"Priority": "Priorité",
|
||||
"Start Date": "Date de début",
|
||||
"Task": "Tâche",
|
||||
"Name": "Nom",
|
||||
"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)",
|
||||
"Select the Grroup": "Sélectionnez le Grroup",
|
||||
"The title of the plan": "Le titre du plan",
|
||||
"Select the plan": "Sélectionnez le plan",
|
||||
"The name of the bucket to be created": "Le nom du segment à créer",
|
||||
"Hint used to order items of this type in a list. The format is defined as outlined here: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0": "Indice utilisé pour ordonner les éléments de ce type dans une liste. Le format est défini comme décrit ici : https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0",
|
||||
"Select the bucket": "Sélectionnez le compartiment",
|
||||
"The title of the task to be created": "Le titre de la tâche à créer",
|
||||
"Select users to assign the task to. If left empty, the task will be unassigned.": "Sélectionnez les utilisateurs auxquels assigner la tâche. Si laissé vide, la tâche ne sera plus assignée.",
|
||||
"The due date and time for the task": "La date d'échéance et l'heure de la tâche",
|
||||
"The completion percentage of the task (0-100)": "Le pourcentage d'achèvement de la tâche (0-100)",
|
||||
"The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).": "La priorité de la tâche entre 0 et 10, avec la valeur de plus en plus faible priorité (0 a la priorité la plus élevée et 10 a la priorité la plus basse).",
|
||||
"The start date and time for the task": "La date et l'heure de début de la tâche",
|
||||
"Select the task": "Sélectionnez la tâche",
|
||||
"The new title of the plan": "Le nouveau titre du plan",
|
||||
"The new name of the bucket": "Le nouveau nom du compartiment",
|
||||
"The new title of the task": "Le nouveau titre de la tâche",
|
||||
"The title of the plan to search for": "Le titre du plan de recherche",
|
||||
"The title of the task to search for": "Le titre de la tâche à rechercher",
|
||||
"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",
|
||||
"New Plan Created": "Nouveau plan créé",
|
||||
"New Task Created": "Nouvelle tâche créée",
|
||||
"New Task Assigned to User": "Nouvelle tâche assignée à l'utilisateur",
|
||||
"Triggers when a new Plan is created in Microsoft 365 Planner.": "Déclenche lorsqu'un nouveau Plan est créé dans Microsoft 365 Planner.",
|
||||
"Triggers when a new Task is created in Microsoft 365 Planner.": "Déclenche quand une nouvelle tâche est créée dans Microsoft 365 Planner.",
|
||||
"Triggers when a Task is assigned to the authenticated user in Microsoft 365 Planner.": "Déclenche lorsqu'une tâche est assignée à l'utilisateur authentifié dans Microsoft 365 Planner."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.": "Microsoft 365 Plannerは、Microsoft 365スイートの一部であり、チーム向けに軽量なタスクとバケットベースの計画を提供します。 この統合は、プラン、バケット、タスク、フェッチ、削除、カスタム API コールの作成をサポートします。",
|
||||
"Create Plan": "プランを作成",
|
||||
"Create Bucket": "バケットを作成",
|
||||
"Create Task": "タスクを作成",
|
||||
"Delete Bucket": "バケットを削除",
|
||||
"Delete Task": "タスクの削除",
|
||||
"Update Plan": "プランを更新",
|
||||
"Update Bucket": "バケットを更新",
|
||||
"Update Task": "タスクの更新",
|
||||
"Find a Plan": "プランを探す",
|
||||
"Get a Bucket": "バケツを入手",
|
||||
"Find Task": "タスクを検索",
|
||||
"Custom API Call": "カスタムAPI通話",
|
||||
"Create a new planner plan": "新しいプランナープランを作成する",
|
||||
"Create a bucket (category) under a plan.": "プランの下にバケット(カテゴリ)を作成します。",
|
||||
"Create a new planner task with title, assignments, due date, etc.": "タイトル、課題、期日などの新しいプランナータスクを作成します。",
|
||||
"Delete an existing bucket.": "既存のバケットを削除します",
|
||||
"Remove a specific task by ID.": "ID で特定のタスクを削除します。",
|
||||
"modify metadata of a plan (e.g. title changes).": "プランのメタデータを変更(例:タイトル変更)",
|
||||
"Modify bucket’s name or properties.": "バケット名またはプロパティを変更します。",
|
||||
"Modify existing task fields: title, due date, assignments, descriptions.": "Modify existing task fields: title, 締切日, 課題, 説明.",
|
||||
"Finds a plan by field.": "フィールド別にプランを検索します。",
|
||||
"Retrieve details about a specific bucket.": "特定のバケットの詳細を取得します。",
|
||||
"Find task by fields.": "フィールドでタスクを検索します。",
|
||||
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
|
||||
"Group": "グループ",
|
||||
"Title": "タイトル",
|
||||
"Plan": "プラン",
|
||||
"Bucket Name": "バケット名",
|
||||
"Order Hint": "注文ヒント",
|
||||
"Bucket": "バケツ入りバケツ",
|
||||
"Assignments": "課題",
|
||||
"Due Date": "締切日",
|
||||
"Percent Complete": "完了率",
|
||||
"Priority": "優先度",
|
||||
"Start Date": "開始日",
|
||||
"Task": "タスク",
|
||||
"Name": "名前",
|
||||
"Method": "方法",
|
||||
"Headers": "ヘッダー",
|
||||
"Query Parameters": "クエリパラメータ",
|
||||
"Body": "本文",
|
||||
"Response is Binary ?": "応答はバイナリですか?",
|
||||
"No Error on Failure": "失敗時にエラーはありません",
|
||||
"Timeout (in seconds)": "タイムアウト(秒)",
|
||||
"Select the Grroup": "Grroupを選択",
|
||||
"The title of the plan": "プランのタイトル",
|
||||
"Select the plan": "プランを選択",
|
||||
"The name of the bucket to be created": "作成するバケットの名前",
|
||||
"Hint used to order items of this type in a list. The format is defined as outlined here: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0": "このタイプのアイテムをリストで注文するために使用されるヒント。フォーマットはここで概要を定義します: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0",
|
||||
"Select the bucket": "Bucket を選択",
|
||||
"The title of the task to be created": "作成されるタスクのタイトル",
|
||||
"Select users to assign the task to. If left empty, the task will be unassigned.": "タスクに割り当てるユーザーを選択します。空のままにすると、タスクは割り当てられなくなります。",
|
||||
"The due date and time for the task": "タスクの期日と時刻",
|
||||
"The completion percentage of the task (0-100)": "タスクの完了率 (0-100)",
|
||||
"The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).": "0 から 10 の間のタスクの優先度 値が増えると、優先度が低くなります(0が最も高くなり、10が最も低くなります)。",
|
||||
"The start date and time for the task": "タスクの開始日時",
|
||||
"Select the task": "タスクを選択",
|
||||
"The new title of the plan": "プランの新しいタイトル",
|
||||
"The new name of the bucket": "バケットの新しい名前",
|
||||
"The new title of the task": "タスクの新しいタイトル",
|
||||
"The title of the plan to search for": "検索する計画のタイトル",
|
||||
"The title of the task to search for": "検索するタスクのタイトル",
|
||||
"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": "頭",
|
||||
"New Plan Created": "新規作成されたプラン",
|
||||
"New Task Created": "新しいタスクが作成されました",
|
||||
"New Task Assigned to User": "ユーザーに割り当てられた新規タスク",
|
||||
"Triggers when a new Plan is created in Microsoft 365 Planner.": "Microsoft 365 Plannerで新しいプランを作成したときにトリガーします。",
|
||||
"Triggers when a new Task is created in Microsoft 365 Planner.": "Microsoft 365 Plannerで新規タスクを作成したときにトリガーします。",
|
||||
"Triggers when a Task is assigned to the authenticated user in Microsoft 365 Planner.": "Microsoft 365 Plannerの認証済みユーザーにタスクが割り当てられたときにトリガーします。"
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.": "Microsoft 365 Planner maakt deel uit van de Microsoft 365 suite, biedt lichtgewicht taak en bucket-gebaseerde planning voor teams. Deze integratie ondersteunt het maken van plannen, buckets, taken, ophalen ervan, verwijderen ervan en aangepaste API-oproepen.",
|
||||
"Create Plan": "Maak Plan aan",
|
||||
"Create Bucket": "Emmer maken",
|
||||
"Create Task": "Taak maken",
|
||||
"Delete Bucket": "Emmer verwijderen",
|
||||
"Delete Task": "Taak verwijderen",
|
||||
"Update Plan": "Plan bijwerken",
|
||||
"Update Bucket": "Emmer bijwerken",
|
||||
"Update Task": "Taak bijwerken",
|
||||
"Find a Plan": "Vind een plan",
|
||||
"Get a Bucket": "Bucket krijgen",
|
||||
"Find Task": "Zoek Taak",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Create a new planner plan": "Maak een nieuwe planner plan",
|
||||
"Create a bucket (category) under a plan.": "Maak een emmer (categorie) onder een plan.",
|
||||
"Create a new planner task with title, assignments, due date, etc.": "Maak een nieuwe planner taak met titel, toewijzingen, vervaldatum, etc.",
|
||||
"Delete an existing bucket.": "Verwijder een bestaande bucket.",
|
||||
"Remove a specific task by ID.": "Verwijder een specifieke taak via ID.",
|
||||
"modify metadata of a plan (e.g. title changes).": "wijzig de metadata van een abonnement (bijv. titel wijzigingen).",
|
||||
"Modify bucket’s name or properties.": "Wijzig emmer naam of eigenschappen.",
|
||||
"Modify existing task fields: title, due date, assignments, descriptions.": "Wijzig bestaande takenvelden: titel, vervaldatum, toewijzingen, beschrijvingen.",
|
||||
"Finds a plan by field.": "Vindt een plan per veld.",
|
||||
"Retrieve details about a specific bucket.": "Gegevens over een specifieke bucket ophalen.",
|
||||
"Find task by fields.": "Zoek taak op velden.",
|
||||
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
|
||||
"Group": "Groeperen",
|
||||
"Title": "Aanspreektitel",
|
||||
"Plan": "Abonnement",
|
||||
"Bucket Name": "Bucket Naam",
|
||||
"Order Hint": "Hint bestellen",
|
||||
"Bucket": "Emmer",
|
||||
"Assignments": "Opdrachten",
|
||||
"Due Date": "Inleverdatum",
|
||||
"Percent Complete": "Percentage Compleet",
|
||||
"Priority": "Prioriteit",
|
||||
"Start Date": "Start datum",
|
||||
"Task": "Opdracht",
|
||||
"Name": "Naam",
|
||||
"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)",
|
||||
"Select the Grroup": "Selecteer de Grroup",
|
||||
"The title of the plan": "De titel van het plan",
|
||||
"Select the plan": "Selecteer het abonnement",
|
||||
"The name of the bucket to be created": "De naam van de emmer die gemaakt moet worden",
|
||||
"Hint used to order items of this type in a list. The format is defined as outlined here: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0": "Hint gebruikt om items van dit type in een lijst te bestellen. Het formaat wordt hier gedefinieerd: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0",
|
||||
"Select the bucket": "Selecteer de emmer",
|
||||
"The title of the task to be created": "De titel van de taak die aangemaakt moet worden",
|
||||
"Select users to assign the task to. If left empty, the task will be unassigned.": "Selecteer gebruikers om de taak toe te wijzen. Indien leeg wordt de taak niet toegewezen.",
|
||||
"The due date and time for the task": "De vervaldatum en tijd voor de taak",
|
||||
"The completion percentage of the task (0-100)": "Het voltooiingspercentage van de taak (0-100)",
|
||||
"The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).": "De prioriteit van de taak tussen 0 en 10, met de toenemende prioriteit een lagere prioriteit (0 heeft de hoogste prioriteit en 10 heeft de laagste prioriteit).",
|
||||
"The start date and time for the task": "De startdatum en tijd voor de taak",
|
||||
"Select the task": "Selecteer de taak",
|
||||
"The new title of the plan": "De nieuwe titel van het plan",
|
||||
"The new name of the bucket": "De nieuwe naam van de emmer",
|
||||
"The new title of the task": "De nieuwe titel van de taak",
|
||||
"The title of the plan to search for": "De titel van het plan om naar te zoeken",
|
||||
"The title of the task to search for": "De titel van de taak om naar te zoeken",
|
||||
"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",
|
||||
"New Plan Created": "Nieuw Plan Aangemaakt",
|
||||
"New Task Created": "Nieuwe taak aangemaakt",
|
||||
"New Task Assigned to User": "Nieuwe taak toegewezen aan gebruiker",
|
||||
"Triggers when a new Plan is created in Microsoft 365 Planner.": "Triggert wanneer er een nieuw Plan wordt gemaakt in Microsoft 365 Planner.",
|
||||
"Triggers when a new Task is created in Microsoft 365 Planner.": "Taak wordt uitgevoerd wanneer een nieuwe Taak wordt aangemaakt in Microsoft 365 Planner.",
|
||||
"Triggers when a Task is assigned to the authenticated user in Microsoft 365 Planner.": "Triggers wanneer een Taak is toegewezen aan de geverifieerde gebruiker in Microsoft 365 Planner."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.": "O Planejador do Microsoft 365 faz parte do pacote Microsoft 365, oferecendo uma tarefa leve e um planejamento baseado em baldes para equipes. Esta integração suporta a criação de planos, buckets, tarefas, buscando-os, excluindo-as e chamadas de API personalizadas.",
|
||||
"Create Plan": "Criar plano",
|
||||
"Create Bucket": "Criar Balde",
|
||||
"Create Task": "Criar tarefa",
|
||||
"Delete Bucket": "Excluir Balde",
|
||||
"Delete Task": "Excluir Tarefa",
|
||||
"Update Plan": "Plano de atualização",
|
||||
"Update Bucket": "Atualizar Bucket",
|
||||
"Update Task": "Atualizar Tarefa",
|
||||
"Find a Plan": "Encontre um plano",
|
||||
"Get a Bucket": "Obter um Balde",
|
||||
"Find Task": "Procurar Tarefa",
|
||||
"Custom API Call": "Chamada de API personalizada",
|
||||
"Create a new planner plan": "Criar um novo plano de planejador",
|
||||
"Create a bucket (category) under a plan.": "Criar um balde (categoria) sob um plano.",
|
||||
"Create a new planner task with title, assignments, due date, etc.": "Crie uma nova tarefa de planejador com título, atividades, data de vencimento, etc.",
|
||||
"Delete an existing bucket.": "Apagar um balde existente.",
|
||||
"Remove a specific task by ID.": "Remover uma tarefa específica por ID.",
|
||||
"modify metadata of a plan (e.g. title changes).": "modificar os metadados de um plano (ex: alterações no título).",
|
||||
"Modify bucket’s name or properties.": "Modificar nome ou propriedades do bucket.",
|
||||
"Modify existing task fields: title, due date, assignments, descriptions.": "Modificar campos de tarefa existentes: título, data limite, atribuições, descrições.",
|
||||
"Finds a plan by field.": "Localiza um plano por campo.",
|
||||
"Retrieve details about a specific bucket.": "Recuperar detalhes sobre um grupo específico.",
|
||||
"Find task by fields.": "Encontrar tarefa por campos.",
|
||||
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
|
||||
"Group": "grupo",
|
||||
"Title": "Título",
|
||||
"Plan": "Planejamento",
|
||||
"Bucket Name": "Nome do Balde",
|
||||
"Order Hint": "Dica do pedido",
|
||||
"Bucket": "Balde",
|
||||
"Assignments": "Recomendações",
|
||||
"Due Date": "Data de vencimento",
|
||||
"Percent Complete": "Porcentagem Completa",
|
||||
"Priority": "Prioridade",
|
||||
"Start Date": "Data Inicial",
|
||||
"Task": "Tarefas",
|
||||
"Name": "Nome",
|
||||
"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)",
|
||||
"Select the Grroup": "Selecione o Grroup",
|
||||
"The title of the plan": "O título do plano",
|
||||
"Select the plan": "Selecione o plano",
|
||||
"The name of the bucket to be created": "O nome do balde a ser criado",
|
||||
"Hint used to order items of this type in a list. The format is defined as outlined here: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0": "Dica usada para ordenar itens deste tipo em uma lista. O formato é definido como descrito aqui: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0",
|
||||
"Select the bucket": "Selecionar balde",
|
||||
"The title of the task to be created": "O título da tarefa a ser criada",
|
||||
"Select users to assign the task to. If left empty, the task will be unassigned.": "Selecione usuários para atribuir a tarefa a. Se deixada vazia, a tarefa não será atribuída.",
|
||||
"The due date and time for the task": "Data de vencimento e hora para a tarefa",
|
||||
"The completion percentage of the task (0-100)": "A porcentagem de conclusão da tarefa (0-100)",
|
||||
"The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).": "A prioridade da tarefa entre 0 e 10, com o valor crescente sendo menor prioridade (0 tem a maior prioridade e 10 tem a menor prioridade).",
|
||||
"The start date and time for the task": "Data e hora de início da tarefa",
|
||||
"Select the task": "Selecionar tarefa",
|
||||
"The new title of the plan": "O novo título do plano",
|
||||
"The new name of the bucket": "O novo nome do balde",
|
||||
"The new title of the task": "O novo título da tarefa",
|
||||
"The title of the plan to search for": "O título do plano para pesquisar",
|
||||
"The title of the task to search for": "O título da tarefa a procurar",
|
||||
"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",
|
||||
"New Plan Created": "Novo Plano Criado",
|
||||
"New Task Created": "Nova tarefa criada",
|
||||
"New Task Assigned to User": "Nova tarefa atribuída ao usuário",
|
||||
"Triggers when a new Plan is created in Microsoft 365 Planner.": "Aciona quando um novo plano é criado no planejamento do Microsoft 365.",
|
||||
"Triggers when a new Task is created in Microsoft 365 Planner.": "Aciona quando uma nova tarefa é criada no planejamento do Microsoft 365.",
|
||||
"Triggers when a Task is assigned to the authenticated user in Microsoft 365 Planner.": "Aciona quando uma tarefa é atribuída ao usuário autenticado no Microsoft 365 Planner."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.": "Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.",
|
||||
"Create Plan": "Create Plan",
|
||||
"Create Bucket": "Create Bucket",
|
||||
"Create Task": "Create Task",
|
||||
"Delete Bucket": "Delete Bucket",
|
||||
"Delete Task": "Delete Task",
|
||||
"Update Plan": "Update Plan",
|
||||
"Update Bucket": "Update Bucket",
|
||||
"Update Task": "Update Task",
|
||||
"Find a Plan": "Find a Plan",
|
||||
"Get a Bucket": "Get a Bucket",
|
||||
"Find Task": "Find Task",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Create a new planner plan": "Create a new planner plan",
|
||||
"Create a bucket (category) under a plan.": "Create a bucket (category) under a plan.",
|
||||
"Create a new planner task with title, assignments, due date, etc.": "Create a new planner task with title, assignments, due date, etc.",
|
||||
"Delete an existing bucket.": "Delete an existing bucket.",
|
||||
"Remove a specific task by ID.": "Remove a specific task by ID.",
|
||||
"modify metadata of a plan (e.g. title changes).": "modify metadata of a plan (e.g. title changes).",
|
||||
"Modify bucket’s name or properties.": "Modify bucket’s name or properties.",
|
||||
"Modify existing task fields: title, due date, assignments, descriptions.": "Modify existing task fields: title, due date, assignments, descriptions.",
|
||||
"Finds a plan by field.": "Finds a plan by field.",
|
||||
"Retrieve details about a specific bucket.": "Retrieve details about a specific bucket.",
|
||||
"Find task by fields.": "Find task by fields.",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Group": "Group",
|
||||
"Title": "Title",
|
||||
"Plan": "Plan",
|
||||
"Bucket Name": "Bucket Name",
|
||||
"Order Hint": "Order Hint",
|
||||
"Bucket": "Bucket",
|
||||
"Assignments": "Assignments",
|
||||
"Due Date": "Due Date",
|
||||
"Percent Complete": "Percent Complete",
|
||||
"Priority": "Priority",
|
||||
"Start Date": "Start Date",
|
||||
"Task": "Task",
|
||||
"Name": "Name",
|
||||
"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)",
|
||||
"Select the Grroup": "Select the Grroup",
|
||||
"The title of the plan": "The title of the plan",
|
||||
"Select the plan": "Select the plan",
|
||||
"The name of the bucket to be created": "The name of the bucket to be created",
|
||||
"Hint used to order items of this type in a list. The format is defined as outlined here: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0": "Hint used to order items of this type in a list. The format is defined as outlined here: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0",
|
||||
"Select the bucket": "Select the bucket",
|
||||
"The title of the task to be created": "The title of the task to be created",
|
||||
"Select users to assign the task to. If left empty, the task will be unassigned.": "Select users to assign the task to. If left empty, the task will be unassigned.",
|
||||
"The due date and time for the task": "The due date and time for the task",
|
||||
"The completion percentage of the task (0-100)": "The completion percentage of the task (0-100)",
|
||||
"The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).": "The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).",
|
||||
"The start date and time for the task": "The start date and time for the task",
|
||||
"Select the task": "Select the task",
|
||||
"The new title of the plan": "The new title of the plan",
|
||||
"The new name of the bucket": "The new name of the bucket",
|
||||
"The new title of the task": "The new title of the task",
|
||||
"The title of the plan to search for": "The title of the plan to search for",
|
||||
"The title of the task to search for": "The title of the task to search for",
|
||||
"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",
|
||||
"New Plan Created": "New Plan Created",
|
||||
"New Task Created": "New Task Created",
|
||||
"New Task Assigned to User": "New Task Assigned to User",
|
||||
"Triggers when a new Plan is created in Microsoft 365 Planner.": "Triggers when a new Plan is created in Microsoft 365 Planner.",
|
||||
"Triggers when a new Task is created in Microsoft 365 Planner.": "Triggers when a new Task is created in Microsoft 365 Planner.",
|
||||
"Triggers when a Task is assigned to the authenticated user in Microsoft 365 Planner.": "Triggers when a Task is assigned to the authenticated user in Microsoft 365 Planner."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.": "Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.",
|
||||
"Create Plan": "Create Plan",
|
||||
"Create Bucket": "Create Bucket",
|
||||
"Create Task": "Create Task",
|
||||
"Delete Bucket": "Delete Bucket",
|
||||
"Delete Task": "Delete Task",
|
||||
"Update Plan": "Update Plan",
|
||||
"Update Bucket": "Update Bucket",
|
||||
"Update Task": "Update Task",
|
||||
"Find a Plan": "Find a Plan",
|
||||
"Get a Bucket": "Get a Bucket",
|
||||
"Find Task": "Find Task",
|
||||
"Custom API Call": "自定义 API 呼叫",
|
||||
"Create a new planner plan": "Create a new planner plan",
|
||||
"Create a bucket (category) under a plan.": "Create a bucket (category) under a plan.",
|
||||
"Create a new planner task with title, assignments, due date, etc.": "Create a new planner task with title, assignments, due date, etc.",
|
||||
"Delete an existing bucket.": "Delete an existing bucket.",
|
||||
"Remove a specific task by ID.": "Remove a specific task by ID.",
|
||||
"modify metadata of a plan (e.g. title changes).": "modify metadata of a plan (e.g. title changes).",
|
||||
"Modify bucket’s name or properties.": "Modify bucket’s name or properties.",
|
||||
"Modify existing task fields: title, due date, assignments, descriptions.": "Modify existing task fields: title, due date, assignments, descriptions.",
|
||||
"Finds a plan by field.": "Finds a plan by field.",
|
||||
"Retrieve details about a specific bucket.": "Retrieve details about a specific bucket.",
|
||||
"Find task by fields.": "Find task by fields.",
|
||||
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
|
||||
"Group": "Group",
|
||||
"Title": "标题",
|
||||
"Plan": "Plan",
|
||||
"Bucket Name": "Bucket Name",
|
||||
"Order Hint": "Order Hint",
|
||||
"Bucket": "Bucket",
|
||||
"Assignments": "Assignments",
|
||||
"Due Date": "Due Date",
|
||||
"Percent Complete": "Percent Complete",
|
||||
"Priority": "Priority",
|
||||
"Start Date": "Start Date",
|
||||
"Task": "Task",
|
||||
"Name": "名称",
|
||||
"Method": "方法",
|
||||
"Headers": "信头",
|
||||
"Query Parameters": "查询参数",
|
||||
"Body": "正文内容",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "失败时没有错误",
|
||||
"Timeout (in seconds)": "超时(秒)",
|
||||
"Select the Grroup": "Select the Grroup",
|
||||
"The title of the plan": "The title of the plan",
|
||||
"Select the plan": "Select the plan",
|
||||
"The name of the bucket to be created": "The name of the bucket to be created",
|
||||
"Hint used to order items of this type in a list. The format is defined as outlined here: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0": "Hint used to order items of this type in a list. The format is defined as outlined here: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0",
|
||||
"Select the bucket": "Select the bucket",
|
||||
"The title of the task to be created": "The title of the task to be created",
|
||||
"Select users to assign the task to. If left empty, the task will be unassigned.": "Select users to assign the task to. If left empty, the task will be unassigned.",
|
||||
"The due date and time for the task": "The due date and time for the task",
|
||||
"The completion percentage of the task (0-100)": "The completion percentage of the task (0-100)",
|
||||
"The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).": "The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).",
|
||||
"The start date and time for the task": "The start date and time for the task",
|
||||
"Select the task": "Select the task",
|
||||
"The new title of the plan": "The new title of the plan",
|
||||
"The new name of the bucket": "The new name of the bucket",
|
||||
"The new title of the task": "The new title of the task",
|
||||
"The title of the plan to search for": "The title of the plan to search for",
|
||||
"The title of the task to search for": "The title of the task to search for",
|
||||
"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": "黑色",
|
||||
"New Plan Created": "New Plan Created",
|
||||
"New Task Created": "New Task Created",
|
||||
"New Task Assigned to User": "New Task Assigned to User",
|
||||
"Triggers when a new Plan is created in Microsoft 365 Planner.": "Triggers when a new Plan is created in Microsoft 365 Planner.",
|
||||
"Triggers when a new Task is created in Microsoft 365 Planner.": "Triggers when a new Task is created in Microsoft 365 Planner.",
|
||||
"Triggers when a Task is assigned to the authenticated user in Microsoft 365 Planner.": "Triggers when a Task is assigned to the authenticated user in Microsoft 365 Planner."
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
import { createPiece, OAuth2PropertyValue } from '@activepieces/pieces-framework';
|
||||
import { createBucket } from './lib/actions/create-bucket';
|
||||
import { createPlan } from './lib/actions/create-plan';
|
||||
import { createTask } from './lib/actions/create-task';
|
||||
import { deleteBucket } from './lib/actions/delete-bucket';
|
||||
import { deleteTask } from './lib/actions/delete-task';
|
||||
import { findAPlan } from './lib/actions/find-a-plan';
|
||||
import { findTask } from './lib/actions/find-task';
|
||||
import { getABucket } from './lib/actions/get-a-bucket';
|
||||
import { updateBucket } from './lib/actions/update-bucket';
|
||||
import { updatePlan } from './lib/actions/update-plan';
|
||||
import { updateTask } from './lib/actions/update-task';
|
||||
import { microsoft365PlannerAuth } from './lib/common';
|
||||
import { newPlanCreated } from './lib/triggers/new-plan-created';
|
||||
import { newTaskAssignedToUser } from './lib/triggers/new-task-assigned-to-user';
|
||||
import { newTaskCreated } from './lib/triggers/new-task-created';
|
||||
import { createCustomApiCallAction } from '@activepieces/pieces-common';
|
||||
|
||||
export const microsoft365Planner = createPiece({
|
||||
displayName: 'Microsoft 365 Planner',
|
||||
description:
|
||||
'Microsoft 365 Planner is part of the Microsoft 365 suite, offering lightweight task and bucket-based planning for teams. This integration supports creating plans, buckets, tasks, fetching them, deleting them, and custom API calls.',
|
||||
auth: microsoft365PlannerAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/microsoft-365-planner.png',
|
||||
authors: ['LuizDMM','sanket-a11y'],
|
||||
actions: [
|
||||
// Write Actions
|
||||
createPlan,
|
||||
createBucket,
|
||||
createTask,
|
||||
deleteBucket,
|
||||
deleteTask,
|
||||
updatePlan,
|
||||
updateBucket,
|
||||
updateTask,
|
||||
// Search Actions
|
||||
findAPlan,
|
||||
getABucket,
|
||||
findTask,
|
||||
createCustomApiCallAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
baseUrl: () => 'https://graph.microsoft.com/v1.0/',
|
||||
authMapping: async (auth) => ({
|
||||
Authorization: `Bearer ${(auth as OAuth2PropertyValue).access_token}`,
|
||||
}),
|
||||
}),
|
||||
],
|
||||
triggers: [
|
||||
newPlanCreated,
|
||||
newTaskCreated,
|
||||
newTaskAssignedToUser,
|
||||
],
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import { OrderHintProperty, PlanDropdown } from '../common/properties';
|
||||
|
||||
export const createBucket = createAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'createBucket',
|
||||
displayName: 'Create Bucket',
|
||||
description: 'Create a bucket (category) under a plan.',
|
||||
props: {
|
||||
planId: PlanDropdown({ required: true }),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Bucket Name',
|
||||
description: 'The name of the bucket to be created',
|
||||
required: true,
|
||||
}),
|
||||
orderHint: OrderHintProperty({ required: false }),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
return await microsoft365PlannerCommon.createBucket({
|
||||
auth,
|
||||
...propsValue,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,27 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import { groupDropdown } from '../common/properties';
|
||||
|
||||
export const createPlan = createAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'createPlan',
|
||||
displayName: 'Create Plan',
|
||||
description: 'Create a new planner plan',
|
||||
props: {
|
||||
groupId: groupDropdown({ required: true }),
|
||||
title: Property.ShortText({
|
||||
displayName: 'Title',
|
||||
description: 'The title of the plan',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const planParams = {
|
||||
container: {
|
||||
url : `https://graph.microsoft.com/v1.0/groups/${propsValue.groupId}`,
|
||||
},
|
||||
title: propsValue.title,
|
||||
};
|
||||
return await microsoft365PlannerCommon.createPlan({ auth, ...planParams });
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,94 @@
|
||||
import {
|
||||
createAction,
|
||||
OAuth2PropertyValue,
|
||||
Property,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import { BucketDropdown, PlanDropdown } from '../common/properties';
|
||||
|
||||
export const createTask = createAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'createTask',
|
||||
displayName: 'Create Task',
|
||||
description:
|
||||
'Create a new planner task with title, assignments, due date, etc.',
|
||||
props: {
|
||||
planId: PlanDropdown({ required: true }),
|
||||
bucketId: BucketDropdown({ required: false }),
|
||||
title: Property.ShortText({
|
||||
displayName: 'Title',
|
||||
description: 'The title of the task to be created',
|
||||
required: true,
|
||||
}),
|
||||
assignments: Property.MultiSelectDropdown({
|
||||
displayName: 'Assignments',
|
||||
description:
|
||||
'Select users to assign the task to. If left empty, the task will be unassigned.',
|
||||
required: false,
|
||||
auth: microsoft365PlannerAuth,
|
||||
refreshers: ['auth'],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
options: [],
|
||||
disabled: true,
|
||||
placeholder: 'Please select an authentication first',
|
||||
};
|
||||
}
|
||||
const users = await microsoft365PlannerCommon.listUsers({ auth: auth });
|
||||
return {
|
||||
options: users.map((user) => ({
|
||||
label: user.displayName || user.userPrincipalName || 'No Name',
|
||||
value: user.id || '',
|
||||
})),
|
||||
disabled: false,
|
||||
placeholder: 'Select users to assign the task to',
|
||||
};
|
||||
},
|
||||
}),
|
||||
dueDateTime: Property.DateTime({
|
||||
displayName: 'Due Date',
|
||||
description: 'The due date and time for the task',
|
||||
required: false,
|
||||
}),
|
||||
percentComplete: Property.Number({
|
||||
displayName: 'Percent Complete',
|
||||
description: 'The completion percentage of the task (0-100)',
|
||||
required: false,
|
||||
}),
|
||||
priority: Property.Number({
|
||||
displayName: 'Priority',
|
||||
description:
|
||||
'The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).',
|
||||
required: false,
|
||||
}),
|
||||
startDateTime: Property.DateTime({
|
||||
displayName: 'Start Date',
|
||||
description: 'The start date and time for the task',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const taskParams = {
|
||||
...propsValue,
|
||||
assignments: propsValue.assignments
|
||||
? Object.fromEntries(
|
||||
propsValue.assignments.map((userId) => [
|
||||
userId,
|
||||
{ '@odata.type': 'microsoft.graph.plannerAssignment' },
|
||||
])
|
||||
)
|
||||
: undefined,
|
||||
dueDateTime: propsValue.dueDateTime
|
||||
? new Date(propsValue.dueDateTime).toISOString()
|
||||
: undefined,
|
||||
startDateTime: propsValue.startDateTime
|
||||
? new Date(propsValue.startDateTime).toISOString()
|
||||
: undefined,
|
||||
};
|
||||
return await microsoft365PlannerCommon.createTask({
|
||||
auth,
|
||||
...taskParams,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,23 @@
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import { BucketDropdown, PlanDropdown } from '../common/properties';
|
||||
|
||||
export const deleteBucket = createAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'deleteBucket',
|
||||
displayName: 'Delete Bucket',
|
||||
description: 'Delete an existing bucket.',
|
||||
props: {
|
||||
planId: PlanDropdown({ required: true }),
|
||||
id: BucketDropdown({ required: true }),
|
||||
},
|
||||
async run({ auth, propsValue: { id } }) {
|
||||
if (!id) {
|
||||
throw new Error('Bucket id is required');
|
||||
}
|
||||
return await microsoft365PlannerCommon.deleteBucket({
|
||||
auth,
|
||||
id,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,23 @@
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import { PlanDropdown, TaskDropdown } from '../common/properties';
|
||||
|
||||
export const deleteTask = createAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'deleteTask',
|
||||
displayName: 'Delete Task',
|
||||
description: 'Remove a specific task by ID.',
|
||||
props: {
|
||||
planId: PlanDropdown({ required: true }),
|
||||
id: TaskDropdown({ required: true }),
|
||||
},
|
||||
async run({ auth, propsValue: { id } }) {
|
||||
if (!id) {
|
||||
throw new Error('Task id is required');
|
||||
}
|
||||
return await microsoft365PlannerCommon.deleteTask({
|
||||
auth,
|
||||
id,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,23 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
|
||||
export const findAPlan = createAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'findAPlan',
|
||||
displayName: 'Find a Plan',
|
||||
description: 'Finds a plan by field.',
|
||||
props: {
|
||||
title: Property.ShortText({
|
||||
displayName: 'Title',
|
||||
description: 'The title of the plan to search for',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { title } }) {
|
||||
const plans = await microsoft365PlannerCommon.listPlans({ auth });
|
||||
return plans.filter(
|
||||
(plan) =>
|
||||
plan.title && plan.title.toLowerCase().includes(title.toLowerCase())
|
||||
);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,28 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import { PlanDropdown } from '../common/properties';
|
||||
|
||||
export const findTask = createAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'findTask',
|
||||
displayName: 'Find Task',
|
||||
description: 'Find task by fields.',
|
||||
props: {
|
||||
planId: PlanDropdown({ required: true }),
|
||||
title: Property.ShortText({
|
||||
displayName: 'Title',
|
||||
description: 'The title of the task to search for',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { title, planId } }) {
|
||||
if (!planId) {
|
||||
throw new Error('Plan ID is required to fetch tasks.');
|
||||
}
|
||||
const tasks = await microsoft365PlannerCommon.listTasks({ auth, planId });
|
||||
return tasks.filter(
|
||||
(task) =>
|
||||
task.title && task.title.toLowerCase().includes(title.toLowerCase())
|
||||
);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,23 @@
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import { BucketDropdown, PlanDropdown } from '../common/properties';
|
||||
|
||||
export const getABucket = createAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'getABucket',
|
||||
displayName: 'Get a Bucket',
|
||||
description: 'Retrieve details about a specific bucket.',
|
||||
props: {
|
||||
planId: PlanDropdown({ required: true }),
|
||||
bucketId: BucketDropdown({ required: true }),
|
||||
},
|
||||
async run({ auth, propsValue: { bucketId } }) {
|
||||
if (!bucketId) {
|
||||
throw new Error('Bucket ID is required to fetch bucket details.');
|
||||
}
|
||||
return await microsoft365PlannerCommon.getBucketDetails({
|
||||
auth,
|
||||
bucketId,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,35 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import {
|
||||
BucketDropdown,
|
||||
OrderHintProperty,
|
||||
PlanDropdown,
|
||||
} from '../common/properties';
|
||||
|
||||
export const updateBucket = createAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'updateBucket',
|
||||
displayName: 'Update Bucket',
|
||||
description: 'Modify bucket’s name or properties.',
|
||||
props: {
|
||||
planId: PlanDropdown({ required: true }),
|
||||
id: BucketDropdown({ required: true }),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Name',
|
||||
description: 'The new name of the bucket',
|
||||
required: false,
|
||||
}),
|
||||
orderHint: OrderHintProperty({ required: false }),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const { planId, id, ...updateParams } = propsValue;
|
||||
if (!id) {
|
||||
throw new Error('Bucket ID is required to update a bucket.');
|
||||
}
|
||||
return await microsoft365PlannerCommon.updateBucket({
|
||||
auth,
|
||||
id,
|
||||
...updateParams,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,28 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import { PlanDropdown } from '../common/properties';
|
||||
|
||||
export const updatePlan = createAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'updatePlan',
|
||||
displayName: 'Update Plan',
|
||||
description: 'modify metadata of a plan (e.g. title changes).',
|
||||
props: {
|
||||
id: PlanDropdown({ required: true }),
|
||||
title: Property.ShortText({
|
||||
displayName: 'Title',
|
||||
description: 'The new title of the plan',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { id, title } }) {
|
||||
if (!id) {
|
||||
throw new Error('Plan id is required');
|
||||
}
|
||||
return await microsoft365PlannerCommon.updatePlan({
|
||||
auth,
|
||||
id,
|
||||
title,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,93 @@
|
||||
import {
|
||||
createAction,
|
||||
OAuth2PropertyValue,
|
||||
Property,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import { PlanDropdown, TaskDropdown } from '../common/properties';
|
||||
|
||||
export const updateTask = createAction({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'updateTask',
|
||||
displayName: 'Update Task',
|
||||
description:
|
||||
'Modify existing task fields: title, due date, assignments, descriptions.',
|
||||
props: {
|
||||
planId: PlanDropdown({ required: true }),
|
||||
id: TaskDropdown({ required: true }),
|
||||
title: Property.ShortText({
|
||||
displayName: 'Title',
|
||||
description: 'The new title of the task',
|
||||
required: false,
|
||||
}),
|
||||
assignments: Property.MultiSelectDropdown({
|
||||
displayName: 'Assignments',
|
||||
description:
|
||||
'Select users to assign the task to. If left empty, the task will be unassigned.',
|
||||
required: false,
|
||||
refreshers: ['auth'],
|
||||
auth: microsoft365PlannerAuth,
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
options: [],
|
||||
disabled: true,
|
||||
placeholder: 'Please select an authentication first',
|
||||
};
|
||||
}
|
||||
const users = await microsoft365PlannerCommon.listUsers({ auth: auth });
|
||||
return {
|
||||
options: users.map((user) => ({
|
||||
label: user.displayName || user.userPrincipalName || 'No Name',
|
||||
value: user.id || '',
|
||||
})),
|
||||
disabled: false,
|
||||
placeholder: 'Select users to assign the task to',
|
||||
};
|
||||
},
|
||||
}),
|
||||
dueDateTime: Property.DateTime({
|
||||
displayName: 'Due Date',
|
||||
description: 'The due date and time for the task',
|
||||
required: false,
|
||||
}),
|
||||
percentComplete: Property.Number({
|
||||
displayName: 'Percent Complete',
|
||||
description: 'The completion percentage of the task (0-100)',
|
||||
required: false,
|
||||
}),
|
||||
priority: Property.Number({
|
||||
displayName: 'Priority',
|
||||
description:
|
||||
'The priority of the task between 0 and 10, with the increasing value being lower priority (0 has the highest priority and 10 has the lowest priority).',
|
||||
required: false,
|
||||
}),
|
||||
startDateTime: Property.DateTime({
|
||||
displayName: 'Start Date',
|
||||
description: 'The start date and time for the task',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const { planId, id, ...updateParams } = propsValue;
|
||||
if (!id) {
|
||||
throw new Error('Task ID is required to update a task.');
|
||||
}
|
||||
const formattedParams = {
|
||||
...updateParams,
|
||||
assignments: updateParams.assignments
|
||||
? Object.fromEntries(
|
||||
updateParams.assignments.map((userId) => [
|
||||
userId,
|
||||
{ '@odata.type': 'microsoft.graph.plannerAssignment' },
|
||||
])
|
||||
)
|
||||
: undefined,
|
||||
};
|
||||
return await microsoft365PlannerCommon.updateTask({
|
||||
auth,
|
||||
id,
|
||||
...formattedParams,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,213 @@
|
||||
import { PieceAuth } from '@activepieces/pieces-framework';
|
||||
import { Client } from '@microsoft/microsoft-graph-client';
|
||||
import { PlannerBucket } from '@microsoft/microsoft-graph-types';
|
||||
import {
|
||||
AuthenticationParams,
|
||||
CreateBucketParams,
|
||||
CreateBucketResponse,
|
||||
CreatePlanParams,
|
||||
CreatePlanResponse,
|
||||
CreateTaskParams,
|
||||
CreateTaskResponse,
|
||||
DeleteBucketParams,
|
||||
DeleteTaskParams,
|
||||
GetBucketDetailsParams,
|
||||
GetUserResponse,
|
||||
ListBucketsParams,
|
||||
ListBucketsResponse,
|
||||
ListGroupsResponse,
|
||||
ListPlansResponse,
|
||||
ListTasksParams,
|
||||
ListTasksResponse,
|
||||
ListUserResponse,
|
||||
UpdateBucketParams,
|
||||
UpdatePlanParams,
|
||||
UpdateTaskParams,
|
||||
} from './types';
|
||||
|
||||
export const microsoft365PlannerAuth = PieceAuth.OAuth2({
|
||||
authUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
|
||||
tokenUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
|
||||
required: true,
|
||||
scope: ['Tasks.ReadWrite', 'User.Read', 'Group.Read.All'],
|
||||
prompt: 'omit',
|
||||
});
|
||||
|
||||
export const microsoft365PlannerCommon = {
|
||||
endpoints: {
|
||||
createPlan: '/planner/plans',
|
||||
listPlans: '/me/planner/plans',
|
||||
listGroups: '/groups',
|
||||
planDetail: (id: string) => `/planner/plans/${id}`,
|
||||
listBuckets: (planId: string) => `/planner/plans/${planId}/buckets`,
|
||||
listPlanTasks: (planId: string) => `/planner/plans/${planId}/tasks`,
|
||||
createBucket: '/planner/buckets',
|
||||
bucketDetail: (id: string) => `/planner/buckets/${id}`,
|
||||
createTask: '/planner/tasks',
|
||||
deleteTask: (id: string) => `/planner/tasks/${id}`,
|
||||
},
|
||||
getClient: ({ auth }: AuthenticationParams) => {
|
||||
return Client.initWithMiddleware({
|
||||
authProvider: {
|
||||
getAccessToken: async () => {
|
||||
return auth.access_token;
|
||||
},
|
||||
},
|
||||
});
|
||||
},
|
||||
getUser: async ({ auth }: AuthenticationParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const user: GetUserResponse = await client.api('/me').get();
|
||||
return user;
|
||||
},
|
||||
getEtag: async ({
|
||||
auth,
|
||||
id,
|
||||
endpointType,
|
||||
}: AuthenticationParams & {
|
||||
id: string;
|
||||
endpointType:
|
||||
| 'planDetail'
|
||||
| 'listBuckets'
|
||||
| 'listPlanTasks'
|
||||
| 'bucketDetail'
|
||||
| 'deleteTask'
|
||||
| 'deleteTask';
|
||||
}) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const endpointFn = microsoft365PlannerCommon.endpoints[endpointType] as (
|
||||
arg: string
|
||||
) => string;
|
||||
const endpoint = endpointFn(id);
|
||||
const response = await client.api(endpoint).get();
|
||||
return (response as any)['@odata.etag'] as string;
|
||||
},
|
||||
listUsers: async ({ auth }: AuthenticationParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const response: ListUserResponse = await client.api('/users').get();
|
||||
return response.value;
|
||||
},
|
||||
listGroups: async ({ auth }: AuthenticationParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const response: ListGroupsResponse = await client
|
||||
.api(microsoft365PlannerCommon.endpoints.listGroups)
|
||||
.get();
|
||||
return response.value;
|
||||
},
|
||||
listPlans: async ({ auth }: AuthenticationParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const response: ListPlansResponse = await client
|
||||
.api(microsoft365PlannerCommon.endpoints.listPlans)
|
||||
.get();
|
||||
return response.value;
|
||||
},
|
||||
listBuckets: async ({ auth, planId }: ListBucketsParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const response: ListBucketsResponse = await client
|
||||
.api(microsoft365PlannerCommon.endpoints.listBuckets(planId))
|
||||
.get();
|
||||
return response.value;
|
||||
},
|
||||
listTasks: async ({ auth, planId }: ListTasksParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
|
||||
const response: ListTasksResponse = await client
|
||||
.api(microsoft365PlannerCommon.endpoints.listPlanTasks(planId))
|
||||
.get();
|
||||
return response.value;
|
||||
},
|
||||
createPlan: async ({ auth, ...planParams }: CreatePlanParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const response: CreatePlanResponse = await client
|
||||
.api(microsoft365PlannerCommon.endpoints.createPlan)
|
||||
.create(planParams);
|
||||
return response;
|
||||
},
|
||||
createBucket: async ({ auth, ...bucketParams }: CreateBucketParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const response: CreateBucketResponse = await client
|
||||
.api(microsoft365PlannerCommon.endpoints.createBucket)
|
||||
.create(bucketParams);
|
||||
return response;
|
||||
},
|
||||
updateBucket: async ({ auth, id, name, orderHint }: UpdateBucketParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const etag = await microsoft365PlannerCommon.getEtag({
|
||||
auth,
|
||||
id,
|
||||
endpointType: 'bucketDetail',
|
||||
});
|
||||
await client
|
||||
.api(microsoft365PlannerCommon.endpoints.bucketDetail(id))
|
||||
.header('If-Match', etag)
|
||||
.update({ name, orderHint });
|
||||
return { success: true };
|
||||
},
|
||||
deleteTask: async ({ auth, id }: DeleteTaskParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const etag = await microsoft365PlannerCommon.getEtag({
|
||||
auth,
|
||||
id,
|
||||
endpointType: 'deleteTask',
|
||||
});
|
||||
await client
|
||||
.api(microsoft365PlannerCommon.endpoints.deleteTask(id))
|
||||
.header('If-Match', etag)
|
||||
.delete();
|
||||
return { success: true };
|
||||
},
|
||||
createTask: async ({ auth, ...taskParams }: CreateTaskParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const response: CreateTaskResponse = await client
|
||||
.api(microsoft365PlannerCommon.endpoints.createTask)
|
||||
.create(taskParams);
|
||||
return response;
|
||||
},
|
||||
updateTask: async ({ auth, id, ...taskParams }: UpdateTaskParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const etag = await microsoft365PlannerCommon.getEtag({
|
||||
auth,
|
||||
id,
|
||||
endpointType: 'deleteTask',
|
||||
});
|
||||
await client
|
||||
.api(microsoft365PlannerCommon.endpoints.deleteTask(id))
|
||||
.header('If-Match', etag)
|
||||
.update(taskParams);
|
||||
return { success: true };
|
||||
},
|
||||
deleteBucket: async ({ auth, id }: DeleteBucketParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const etag = await microsoft365PlannerCommon.getEtag({
|
||||
auth,
|
||||
id,
|
||||
endpointType: 'bucketDetail',
|
||||
});
|
||||
await client
|
||||
.api(microsoft365PlannerCommon.endpoints.bucketDetail(id))
|
||||
.header('If-Match', etag)
|
||||
.delete();
|
||||
return { success: true };
|
||||
},
|
||||
|
||||
updatePlan: async ({ auth, id, title }: UpdatePlanParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const etag = await microsoft365PlannerCommon.getEtag({
|
||||
auth,
|
||||
id,
|
||||
endpointType: 'planDetail',
|
||||
});
|
||||
await client
|
||||
.api(microsoft365PlannerCommon.endpoints.planDetail(id))
|
||||
.header('If-Match', etag)
|
||||
.update({ title });
|
||||
return { success: true };
|
||||
},
|
||||
getBucketDetails: async ({ auth, bucketId }: GetBucketDetailsParams) => {
|
||||
const client = microsoft365PlannerCommon.getClient({ auth });
|
||||
const response: PlannerBucket = await client
|
||||
.api(microsoft365PlannerCommon.endpoints.bucketDetail(bucketId))
|
||||
.get();
|
||||
return response;
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,151 @@
|
||||
import { OAuth2PropertyValue, Property } from '@activepieces/pieces-framework';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '.';
|
||||
|
||||
export const groupDropdown = ({ required = true }) =>
|
||||
Property.Dropdown({
|
||||
auth: microsoft365PlannerAuth,
|
||||
displayName: 'Group',
|
||||
description: 'Select the Grroup',
|
||||
required: required,
|
||||
refreshers: ['auth'],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
options: [],
|
||||
disabled: true,
|
||||
placeholder: 'Please select an authentication first',
|
||||
};
|
||||
}
|
||||
const groups = await microsoft365PlannerCommon.listGroups({ auth });
|
||||
return {
|
||||
options: groups.map((group) => ({
|
||||
label: group.displayName ?? '',
|
||||
value: group.id ?? '',
|
||||
})),
|
||||
disabled: false,
|
||||
placeholder: 'Select a group',
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
export const PlanDropdown = ({ required = true }) =>
|
||||
Property.Dropdown({
|
||||
auth: microsoft365PlannerAuth,
|
||||
displayName: 'Plan',
|
||||
description: 'Select the plan',
|
||||
required: required,
|
||||
refreshers: ['auth'],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
options: [],
|
||||
disabled: true,
|
||||
placeholder: 'Please select an authentication first',
|
||||
};
|
||||
}
|
||||
const plans = await microsoft365PlannerCommon.listPlans({ auth });
|
||||
return {
|
||||
options: plans.map((plan) => ({
|
||||
label: plan.title ?? '',
|
||||
value: plan.id ?? '',
|
||||
})),
|
||||
disabled: false,
|
||||
placeholder: 'Select a plan',
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
export const BucketDropdown = ({ required = true }) =>
|
||||
Property.Dropdown({
|
||||
auth: microsoft365PlannerAuth,
|
||||
displayName: 'Bucket',
|
||||
description: 'Select the bucket',
|
||||
required: required,
|
||||
refreshers: ['auth', 'planId'],
|
||||
options: async ({
|
||||
auth,
|
||||
planId,
|
||||
}: {
|
||||
auth?: OAuth2PropertyValue | null;
|
||||
planId?: string;
|
||||
}) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
options: [],
|
||||
disabled: true,
|
||||
placeholder: 'Please select an authentication first',
|
||||
};
|
||||
}
|
||||
if (!planId) {
|
||||
return {
|
||||
options: [],
|
||||
disabled: true,
|
||||
placeholder: 'Please select a plan first',
|
||||
};
|
||||
}
|
||||
const buckets = await microsoft365PlannerCommon.listBuckets({
|
||||
auth,
|
||||
planId,
|
||||
});
|
||||
console.log("Buckets:", JSON.stringify(buckets));
|
||||
return {
|
||||
options: buckets.map((bucket) => ({
|
||||
label: bucket.name ?? '',
|
||||
value: bucket.id ?? '',
|
||||
})),
|
||||
disabled: false,
|
||||
placeholder: 'Select a bucket',
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
export const TaskDropdown = ({ required = true }) =>
|
||||
Property.Dropdown({
|
||||
auth: microsoft365PlannerAuth,
|
||||
displayName: 'Task',
|
||||
description: 'Select the task',
|
||||
required: required,
|
||||
refreshers: ['auth', 'planId'],
|
||||
options: async ({
|
||||
auth,
|
||||
planId,
|
||||
}: {
|
||||
auth?: OAuth2PropertyValue | null;
|
||||
planId?: string;
|
||||
}) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
options: [],
|
||||
disabled: true,
|
||||
placeholder: 'Please select an authentication first',
|
||||
};
|
||||
}
|
||||
if (!planId) {
|
||||
return {
|
||||
options: [],
|
||||
disabled: true,
|
||||
placeholder: 'Please select a plan first',
|
||||
};
|
||||
}
|
||||
const tasks = await microsoft365PlannerCommon.listTasks({
|
||||
auth,
|
||||
planId,
|
||||
});
|
||||
return {
|
||||
options: tasks.map((task) => ({
|
||||
label: task.title ?? '',
|
||||
value: task.id ?? '',
|
||||
})),
|
||||
disabled: false,
|
||||
placeholder: 'Select a task',
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
export const OrderHintProperty = ({ required = false }) =>
|
||||
Property.ShortText({
|
||||
displayName: 'Order Hint',
|
||||
description:
|
||||
'Hint used to order items of this type in a list. The format is defined as outlined here: https://learn.microsoft.com/en-us/graph/api/resources/planner-order-hint-format?view=graph-rest-1.0',
|
||||
required: required,
|
||||
});
|
||||
@@ -0,0 +1,108 @@
|
||||
import { OAuth2PropertyValue } from '@activepieces/pieces-framework';
|
||||
import {
|
||||
Group,
|
||||
PlannerBucket,
|
||||
PlannerPlan,
|
||||
PlannerPlanContainer,
|
||||
PlannerTask,
|
||||
User
|
||||
} from '@microsoft/microsoft-graph-types';
|
||||
|
||||
export interface AuthenticationParams {
|
||||
auth: OAuth2PropertyValue;
|
||||
}
|
||||
|
||||
export interface GenericDetailParams extends AuthenticationParams {
|
||||
id: string;
|
||||
}
|
||||
|
||||
// API Types
|
||||
export interface ListPlansResponse {
|
||||
value: PlannerPlan[];
|
||||
}
|
||||
|
||||
export interface ListGroupsResponse {
|
||||
value: Group[];
|
||||
}
|
||||
|
||||
export interface ListBucketsParams extends AuthenticationParams {
|
||||
planId: string;
|
||||
}
|
||||
|
||||
export interface ListBucketsResponse {
|
||||
value: PlannerBucket[];
|
||||
}
|
||||
|
||||
export interface ListTasksParams extends AuthenticationParams {
|
||||
planId: string;
|
||||
}
|
||||
|
||||
export interface ListTasksResponse {
|
||||
value: PlannerTask[];
|
||||
}
|
||||
|
||||
export interface CreatePlanParams extends AuthenticationParams {
|
||||
title: string;
|
||||
container: PlannerPlanContainer;
|
||||
}
|
||||
|
||||
export type CreatePlanResponse = PlannerPlan;
|
||||
|
||||
export interface CreateBucketParams
|
||||
extends AuthenticationParams,
|
||||
Omit<PlannerBucket, 'id'> {}
|
||||
|
||||
export type CreateBucketResponse = PlannerBucket;
|
||||
|
||||
export interface CreateTaskParams
|
||||
extends AuthenticationParams,
|
||||
Omit<PlannerTask, 'id'> {}
|
||||
|
||||
export type CreateTaskResponse = PlannerTask;
|
||||
|
||||
export type DeleteBucketParams = GenericDetailParams;
|
||||
|
||||
export type DeleteTaskParams = GenericDetailParams;
|
||||
|
||||
export interface UpdatePlanParams extends AuthenticationParams {
|
||||
id: string;
|
||||
title: string;
|
||||
}
|
||||
|
||||
export interface UpdateBucketParams extends AuthenticationParams {
|
||||
id: string;
|
||||
name?: string;
|
||||
orderHint?: string;
|
||||
}
|
||||
|
||||
export interface UpdateTaskParams
|
||||
extends AuthenticationParams,
|
||||
Omit<
|
||||
PlannerTask,
|
||||
| 'activeChecklistItemCount'
|
||||
| 'checklistItemCount'
|
||||
| 'completedBy'
|
||||
| 'completedDateTime'
|
||||
| 'createdBy'
|
||||
| 'createdDateTime'
|
||||
| 'hasDescription'
|
||||
| 'planId'
|
||||
| 'previewType'
|
||||
| 'referenceCount'
|
||||
| 'assignedToTaskBoardFormat'
|
||||
| 'bucketTaskBoardFormat'
|
||||
| 'details'
|
||||
| 'progressTaskBoardFormat'
|
||||
> {
|
||||
id: string;
|
||||
}
|
||||
|
||||
export interface GetBucketDetailsParams extends AuthenticationParams {
|
||||
bucketId: string;
|
||||
}
|
||||
|
||||
export type GetUserResponse = User;
|
||||
|
||||
export interface ListUserResponse {
|
||||
value: User[];
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
} from '@activepieces/pieces-common';
|
||||
import {
|
||||
AppConnectionValueForAuthProperty,
|
||||
createTrigger,
|
||||
PiecePropValueSchema,
|
||||
TriggerStrategy,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import dayjs from 'dayjs';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
|
||||
const polling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof microsoft365PlannerAuth>,
|
||||
Record<string, never>
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth }) => {
|
||||
const items = await microsoft365PlannerCommon.listPlans({
|
||||
auth,
|
||||
});
|
||||
return items.map((item) => ({
|
||||
epochMilliSeconds: dayjs(item.createdDateTime).valueOf(),
|
||||
data: item,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newPlanCreated = createTrigger({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'newPlanCreated',
|
||||
displayName: 'New Plan Created',
|
||||
description: 'Triggers when a new Plan is created in Microsoft 365 Planner.',
|
||||
props: {},
|
||||
sampleData: {},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onEnable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onDisable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,75 @@
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
} from '@activepieces/pieces-common';
|
||||
import {
|
||||
AppConnectionValueForAuthProperty,
|
||||
createTrigger,
|
||||
PiecePropValueSchema,
|
||||
StaticPropsValue,
|
||||
TriggerStrategy,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import dayjs from 'dayjs';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import { PlanDropdown } from '../common/properties';
|
||||
|
||||
const props = {
|
||||
planId: PlanDropdown({ required: true }),
|
||||
};
|
||||
|
||||
const polling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof microsoft365PlannerAuth>,
|
||||
StaticPropsValue<typeof props>
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth, propsValue: { planId } }) => {
|
||||
if (!planId) {
|
||||
return [];
|
||||
}
|
||||
const user = await microsoft365PlannerCommon.getUser({ auth });
|
||||
if (!user || !user.id) {
|
||||
throw new Error('Unable to fetch authenticated user details.');
|
||||
}
|
||||
const items = await microsoft365PlannerCommon.listTasks({ auth, planId });
|
||||
return items
|
||||
.filter((item) => {
|
||||
const userId = String(user.id);
|
||||
return (
|
||||
item.assignments &&
|
||||
Object.prototype.hasOwnProperty.call(item.assignments, userId)
|
||||
);
|
||||
})
|
||||
.map((item) => ({
|
||||
epochMilliSeconds: dayjs(item.createdDateTime).valueOf(),
|
||||
data: item,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newTaskAssignedToUser = createTrigger({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'newTaskAssignedToUser',
|
||||
displayName: 'New Task Assigned to User',
|
||||
description:
|
||||
'Triggers when a Task is assigned to the authenticated user in Microsoft 365 Planner.',
|
||||
props,
|
||||
sampleData: {},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onEnable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onDisable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,98 @@
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
} from '@activepieces/pieces-common';
|
||||
import {
|
||||
AppConnectionValueForAuthProperty,
|
||||
createTrigger,
|
||||
PiecePropValueSchema,
|
||||
StaticPropsValue,
|
||||
TriggerStrategy,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import dayjs from 'dayjs';
|
||||
import { microsoft365PlannerAuth, microsoft365PlannerCommon } from '../common';
|
||||
import { PlanDropdown } from '../common/properties';
|
||||
|
||||
const props = {
|
||||
planId: PlanDropdown({ required: true }),
|
||||
};
|
||||
|
||||
const polling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof microsoft365PlannerAuth>,
|
||||
StaticPropsValue<typeof props>
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth, propsValue: { planId } }) => {
|
||||
if (!planId) {
|
||||
return [];
|
||||
}
|
||||
const items = await microsoft365PlannerCommon.listTasks({
|
||||
auth,
|
||||
planId,
|
||||
});
|
||||
return items.map((item) => ({
|
||||
epochMilliSeconds: dayjs(item.createdDateTime).valueOf(),
|
||||
data: item,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newTaskCreated = createTrigger({
|
||||
auth: microsoft365PlannerAuth,
|
||||
name: 'newTaskCreated',
|
||||
displayName: 'New Task Created',
|
||||
description: 'Triggers when a new Task is created in Microsoft 365 Planner.',
|
||||
props,
|
||||
sampleData: {
|
||||
'@odata.etag': 'W/"JzEtVGFzayAgQEBAffEBAQEBAQEBARCc="',
|
||||
planId: 's58lztas2UyCXSffEjnlVRgWUAFMLw',
|
||||
bucketId: 'xZ2RCz88uE6BffffftN-0TKffPGUAB-pQ',
|
||||
title: 'test task 123',
|
||||
orderHint: '8584411578775238762',
|
||||
assigneePriority: '',
|
||||
percentComplete: 0,
|
||||
startDateTime: null,
|
||||
createdDateTime: '2025-10-14T13:36:47.953708Z',
|
||||
dueDateTime: null,
|
||||
hasDescription: false,
|
||||
previewType: 'automatic',
|
||||
completedDateTime: null,
|
||||
referenceCount: 0,
|
||||
checklistItemCount: 0,
|
||||
activeChecklistItemCount: 0,
|
||||
conversationThreadId: null,
|
||||
priority: 5,
|
||||
id: 'wvG9lNxhuUO2JuedF9-rimUAFsBA',
|
||||
completedBy: null,
|
||||
createdBy: {
|
||||
user: {
|
||||
displayName: null,
|
||||
id: '90b3720d-f459-42c1-a02e-6471a1ecb068',
|
||||
},
|
||||
application: {
|
||||
displayName: null,
|
||||
id: '5ea0744c-62fa-4a19-99be-99f0869d3182',
|
||||
},
|
||||
},
|
||||
appliedCategories: {},
|
||||
assignments: {},
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
async onEnable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onEnable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onDisable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"extends": "../../../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"importHelpers": true,
|
||||
"noImplicitOverride": true,
|
||||
"noImplicitReturns": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noPropertyAccessFromIndexSignature": true
|
||||
},
|
||||
"files": [],
|
||||
"include": [],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.lib.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../../../dist/out-tsc",
|
||||
"declaration": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
Reference in New Issue
Block a user