@blickwerk/n8n-nodes-microsoft-planner 1.2.0 → 1.2.2

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
@@ -106,8 +106,8 @@ Configure the Microsoft Planner OAuth2 API credentials in n8n:
106
106
  ### Creating a Task
107
107
 
108
108
  To create a task:
109
- 1. Select a **Plan** from the dropdown (automatically loaded from your Microsoft 365)
110
- 2. Select a **Bucket** from the dropdown (loads buckets from the selected plan)
109
+ 1. Enter the **Plan ID** (you can find this in Microsoft Planner URL or via Graph Explorer)
110
+ 2. Select a **Bucket** from the dropdown (loads automatically based on the Plan ID)
111
111
  3. Enter the **Title** of the task
112
112
 
113
113
  Optional fields:
@@ -146,14 +146,28 @@ To update a task:
146
146
  - Percent Complete
147
147
  - Move to different bucket
148
148
 
149
- ### How Dynamic Dropdowns Work
149
+ ### How to Find Plan IDs
150
150
 
151
- The node automatically fetches your data from Microsoft 365:
152
- - **Plans**: Loaded from your account when you open the Plan dropdown
153
- - **Buckets**: Dynamically loaded based on the selected Plan
154
- - **Tasks**: Loaded from the selected Plan or Bucket
151
+ You can find your Plan ID in several ways:
155
152
 
156
- No need to manually look up IDs anymore! Just select from the dropdown menus.
153
+ 1. **From Planner URL**: Open Microsoft Planner in browser, the URL contains the Plan ID:
154
+ ```
155
+ https://tasks.office.com/.../ planId=YOUR_PLAN_ID_HERE /...
156
+ ```
157
+
158
+ 2. **Via Microsoft Graph Explorer**:
159
+ - Go to https://developer.microsoft.com/graph/graph-explorer
160
+ - Sign in
161
+ - Run: `GET /me/planner/plans`
162
+ - Copy the `id` field from the plan you want
163
+
164
+ ### Dynamic Dropdowns
165
+
166
+ Once you enter a Plan ID:
167
+ - **Buckets**: Automatically load for that plan
168
+ - **Tasks**: Load based on selected Plan/Bucket
169
+
170
+ You can also manually enter Bucket IDs and Task IDs if needed.
157
171
 
158
172
  ## Compatibility
159
173
 
@@ -167,6 +181,19 @@ Tested with n8n version 1.0.0 and above.
167
181
 
168
182
  ## Version History
169
183
 
184
+ ### 1.2.2
185
+ - Removed Plan dropdown (Plans cannot be loaded via API)
186
+ - Plan ID is now manual input only
187
+ - Buckets and Tasks still have dynamic dropdowns
188
+ - Simplified and more reliable plan selection
189
+
190
+ ### 1.2.1
191
+ - Fixed Plans not loading (improved API endpoint to fetch from groups)
192
+ - Allow manual ID input in all dropdown fields
193
+ - You can now choose from dropdown OR paste IDs manually
194
+ - Added placeholders and better descriptions for all ID fields
195
+ - Improved error handling for plans loading
196
+
170
197
  ### 1.2.0
171
198
  - **Major UX Improvement**: Added dynamic dropdowns for Plans, Buckets, and Tasks
172
199
  - No more manual ID lookup - select from dropdown menus
@@ -3,7 +3,6 @@ export declare class MicrosoftPlanner implements INodeType {
3
3
  description: INodeTypeDescription;
4
4
  methods: {
5
5
  loadOptions: {
6
- getPlans(this: ILoadOptionsFunctions): Promise<any>;
7
6
  getBuckets(this: ILoadOptionsFunctions): Promise<any>;
8
7
  getTasks(this: ILoadOptionsFunctions): Promise<any>;
9
8
  };
@@ -45,13 +45,6 @@ class MicrosoftPlanner {
45
45
  };
46
46
  this.methods = {
47
47
  loadOptions: {
48
- async getPlans() {
49
- const plans = await GenericFunctions_1.microsoftApiRequestAllItems.call(this, 'value', 'GET', '/me/planner/plans');
50
- return plans.map((plan) => ({
51
- name: plan.title,
52
- value: plan.id,
53
- }));
54
- },
55
48
  async getBuckets() {
56
49
  const planId = this.getNodeParameter('planId', 0);
57
50
  if (!planId) {
@@ -52,12 +52,9 @@ exports.taskFields = [
52
52
  // task:create
53
53
  // ----------------------------------
54
54
  {
55
- displayName: 'Plan',
55
+ displayName: 'Plan ID',
56
56
  name: 'planId',
57
- type: 'options',
58
- typeOptions: {
59
- loadOptionsMethod: 'getPlans',
60
- },
57
+ type: 'string',
61
58
  required: true,
62
59
  displayOptions: {
63
60
  show: {
@@ -66,12 +63,13 @@ exports.taskFields = [
66
63
  },
67
64
  },
68
65
  default: '',
69
- description: 'The plan to which the task belongs',
66
+ description: 'The ID of the plan to which the task belongs',
67
+ placeholder: 'Enter Plan ID',
70
68
  },
71
69
  {
72
70
  displayName: 'Bucket',
73
71
  name: 'bucketId',
74
- type: 'options',
72
+ type: 'string',
75
73
  typeOptions: {
76
74
  loadOptionsMethod: 'getBuckets',
77
75
  },
@@ -83,7 +81,8 @@ exports.taskFields = [
83
81
  },
84
82
  },
85
83
  default: '',
86
- description: 'The bucket to which the task belongs',
84
+ description: 'The bucket to which the task belongs. Choose from the dropdown or enter a Bucket ID manually.',
85
+ placeholder: 'Select from dropdown or paste Bucket ID',
87
86
  },
88
87
  {
89
88
  displayName: 'Title',
@@ -184,7 +183,7 @@ exports.taskFields = [
184
183
  {
185
184
  displayName: 'Task',
186
185
  name: 'taskId',
187
- type: 'options',
186
+ type: 'string',
188
187
  typeOptions: {
189
188
  loadOptionsMethod: 'getTasks',
190
189
  },
@@ -196,7 +195,8 @@ exports.taskFields = [
196
195
  },
197
196
  },
198
197
  default: '',
199
- description: 'The task to operate on',
198
+ description: 'The task to operate on. Choose from the dropdown or enter a Task ID manually.',
199
+ placeholder: 'Select from dropdown or paste Task ID',
200
200
  },
201
201
  {
202
202
  displayName: 'Additional Fields',
@@ -268,24 +268,23 @@ exports.taskFields = [
268
268
  },
269
269
  options: [
270
270
  {
271
- displayName: 'Plan',
271
+ displayName: 'Plan ID',
272
272
  name: 'planId',
273
- type: 'options',
274
- typeOptions: {
275
- loadOptionsMethod: 'getPlans',
276
- },
273
+ type: 'string',
277
274
  default: '',
278
- description: 'Filter tasks by plan',
275
+ description: 'Filter tasks by Plan ID',
276
+ placeholder: 'Enter Plan ID',
279
277
  },
280
278
  {
281
279
  displayName: 'Bucket',
282
280
  name: 'bucketId',
283
- type: 'options',
281
+ type: 'string',
284
282
  typeOptions: {
285
283
  loadOptionsMethod: 'getBuckets',
286
284
  },
287
285
  default: '',
288
- description: 'Filter tasks by bucket',
286
+ description: 'Filter tasks by bucket. Choose from the dropdown or enter a Bucket ID manually.',
287
+ placeholder: 'Select from dropdown or paste Bucket ID',
289
288
  },
290
289
  ],
291
290
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blickwerk/n8n-nodes-microsoft-planner",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "n8n node for Microsoft Planner - Create and retrieve tasks",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",