@blickwerk/n8n-nodes-microsoft-planner 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,7 +14,7 @@ Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes
14
14
 
15
15
  1. Go to **Settings > Community Nodes** in your n8n instance
16
16
  2. Select **Install**
17
- 3. Enter `n8n-nodes-microsoft-planner` in **Enter npm package name**
17
+ 3. Enter `@blickwerk/n8n-nodes-microsoft-planner` in **Enter npm package name**
18
18
  4. Agree to the [risks](https://docs.n8n.io/integrations/community-nodes/risks/) of using community nodes
19
19
  5. Select **Install**
20
20
 
@@ -22,10 +22,10 @@ After installing the node, you can use it like any other node in your workflows.
22
22
 
23
23
  ### Manual Installation
24
24
 
25
- To install manually from source:
25
+ To install manually:
26
26
 
27
27
  ```bash
28
- npm install n8n-nodes-microsoft-planner
28
+ npm install @blickwerk/n8n-nodes-microsoft-planner
29
29
  ```
30
30
 
31
31
  ## Prerequisites
@@ -36,6 +36,7 @@ You need to have:
36
36
  - Azure AD App Registration with the following API permissions:
37
37
  - `Tasks.ReadWrite` - Read and write tasks
38
38
  - `Group.ReadWrite.All` - Read and write all groups (required for Planner)
39
+ - `User.Read.All` - Read all users (required for user assignment by email)
39
40
 
40
41
  ## Setting up Azure AD App
41
42
 
@@ -54,10 +55,13 @@ You need to have:
54
55
  3. Select **Microsoft Graph**
55
56
  4. Select **Delegated permissions**
56
57
  5. Add the following permissions:
57
- - `Tasks.ReadWrite`
58
- - `Group.ReadWrite.All`
58
+ - `Tasks.ReadWrite` - Read and write tasks
59
+ - `Group.ReadWrite.All` - Read and write all groups (required for Planner)
60
+ - `User.Read.All` - Read all users' basic profiles (required for user assignment)
59
61
  6. Click **Grant admin consent**
60
62
 
63
+ **Note**: The `User.Read.All` permission is required if you want to assign tasks to users by email address.
64
+
61
65
  ### Create Client Secret
62
66
 
63
67
  1. Go to **Certificates & secrets**
@@ -100,11 +104,16 @@ To create a task, you need:
100
104
  - **Title**: The task title
101
105
 
102
106
  Optional fields:
103
- - Description
104
- - Priority (0-10, where 0 is most urgent)
105
- - Due Date Time
106
- - Start Date Time
107
- - Percent Complete
107
+ - **Description**: Detailed task description
108
+ - **Priority**: Select from dropdown
109
+ - Urgent (highest priority)
110
+ - Important
111
+ - Medium (default)
112
+ - Low
113
+ - **Assigned To**: Comma-separated list of user emails (e.g., `user1@domain.com, user2@domain.com`)
114
+ - **Due Date Time**: When the task should be completed
115
+ - **Start Date Time**: When work on the task should begin
116
+ - **Percent Complete**: Task completion percentage (0-100)
108
117
 
109
118
  ### Getting Tasks
110
119
 
@@ -115,7 +124,15 @@ You can retrieve tasks by:
115
124
 
116
125
  ### Updating a Task
117
126
 
118
- To update a task, provide the Task ID and the fields you want to update.
127
+ To update a task, provide the Task ID and the fields you want to update. You can update:
128
+ - Title
129
+ - Description
130
+ - Priority (via dropdown)
131
+ - Assigned users (via email list)
132
+ - Due Date Time
133
+ - Start Date Time
134
+ - Percent Complete
135
+ - Move to different bucket
119
136
 
120
137
  ### Finding Plan and Bucket IDs
121
138
 
@@ -139,10 +156,20 @@ Tested with n8n version 1.0.0 and above.
139
156
 
140
157
  ## Version History
141
158
 
159
+ ### 1.1.0
160
+ - Added priority dropdown (Urgent, Important, Medium, Low) instead of number input
161
+ - Added user assignment functionality (assign tasks by email)
162
+ - Improved user experience with better field descriptions
163
+
164
+ ### 1.0.1
165
+ - Fixed DateTime format handling (automatic conversion to ISO 8601)
166
+ - Improved error handling for invalid date formats
167
+
142
168
  ### 1.0.0
143
169
  - Initial release
144
170
  - Support for creating and retrieving Planner tasks
145
171
  - OAuth2 authentication
172
+ - CRUD operations (Create, Read, Update, Delete)
146
173
 
147
174
  ## License
148
175
 
@@ -70,6 +70,8 @@ async function getUserIdByEmail(email) {
70
70
  return response.id;
71
71
  }
72
72
  catch (error) {
73
+ // Log error for debugging
74
+ console.error(`Failed to get user ID for email ${email}:`, error.message || error);
73
75
  return null;
74
76
  }
75
77
  }
@@ -68,11 +68,13 @@ class MicrosoftPlanner {
68
68
  if (additionalFields.priority !== undefined) {
69
69
  body.priority = additionalFields.priority;
70
70
  }
71
- if (additionalFields.dueDateTime) {
72
- body.dueDateTime = (0, GenericFunctions_1.formatDateTime)(additionalFields.dueDateTime);
71
+ const formattedDueDateTime = (0, GenericFunctions_1.formatDateTime)(additionalFields.dueDateTime);
72
+ if (formattedDueDateTime) {
73
+ body.dueDateTime = formattedDueDateTime;
73
74
  }
74
- if (additionalFields.startDateTime) {
75
- body.startDateTime = (0, GenericFunctions_1.formatDateTime)(additionalFields.startDateTime);
75
+ const formattedStartDateTime = (0, GenericFunctions_1.formatDateTime)(additionalFields.startDateTime);
76
+ if (formattedStartDateTime) {
77
+ body.startDateTime = formattedStartDateTime;
76
78
  }
77
79
  if (additionalFields.percentComplete !== undefined) {
78
80
  body.percentComplete = additionalFields.percentComplete;
@@ -86,10 +88,16 @@ class MicrosoftPlanner {
86
88
  if (userId) {
87
89
  userIds.push(userId);
88
90
  }
91
+ else {
92
+ console.warn(`Could not find user ID for email: ${email}`);
93
+ }
89
94
  }
90
95
  if (userIds.length > 0) {
91
96
  body.assignments = (0, GenericFunctions_1.createAssignmentsObject)(userIds);
92
97
  }
98
+ else if (emails.length > 0) {
99
+ console.warn('No valid user IDs found for assignment. Check if User.Read.All permission is granted.');
100
+ }
93
101
  }
94
102
  const responseData = await GenericFunctions_1.microsoftApiRequest.call(this, 'POST', '/planner/tasks', body);
95
103
  // Add description if provided
@@ -162,11 +170,13 @@ class MicrosoftPlanner {
162
170
  if (updateFields.priority !== undefined) {
163
171
  body.priority = updateFields.priority;
164
172
  }
165
- if (updateFields.dueDateTime) {
166
- body.dueDateTime = (0, GenericFunctions_1.formatDateTime)(updateFields.dueDateTime);
173
+ const formattedDueDateTime = (0, GenericFunctions_1.formatDateTime)(updateFields.dueDateTime);
174
+ if (formattedDueDateTime) {
175
+ body.dueDateTime = formattedDueDateTime;
167
176
  }
168
- if (updateFields.startDateTime) {
169
- body.startDateTime = (0, GenericFunctions_1.formatDateTime)(updateFields.startDateTime);
177
+ const formattedStartDateTime = (0, GenericFunctions_1.formatDateTime)(updateFields.startDateTime);
178
+ if (formattedStartDateTime) {
179
+ body.startDateTime = formattedStartDateTime;
170
180
  }
171
181
  if (updateFields.percentComplete !== undefined) {
172
182
  body.percentComplete = updateFields.percentComplete;
@@ -183,10 +193,16 @@ class MicrosoftPlanner {
183
193
  if (userId) {
184
194
  userIds.push(userId);
185
195
  }
196
+ else {
197
+ console.warn(`Could not find user ID for email: ${email}`);
198
+ }
186
199
  }
187
200
  if (userIds.length > 0) {
188
201
  body.assignments = (0, GenericFunctions_1.createAssignmentsObject)(userIds);
189
202
  }
203
+ else if (emails.length > 0) {
204
+ console.warn('No valid user IDs found for assignment. Check if User.Read.All permission is granted.');
205
+ }
190
206
  }
191
207
  const responseData = await GenericFunctions_1.microsoftApiRequest.call(this, 'PATCH', `/planner/tasks/${taskId}`, body, {}, undefined, {
192
208
  'If-Match': eTag,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blickwerk/n8n-nodes-microsoft-planner",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "n8n node for Microsoft Planner - Create and retrieve tasks",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",