n8n-nodes-base 1.105.2 → 1.107.0

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.
Files changed (211) hide show
  1. package/dist/nodes/Affinity/__schema__/v1.0.0/organization/get.json +1 -4
  2. package/dist/nodes/Affinity/__schema__/v1.0.0/person/getAll.json +24 -0
  3. package/dist/nodes/Airtable/test/v2/node/helpers.d.ts.map +1 -1
  4. package/dist/nodes/Airtable/test/v2/node/helpers.js +8 -8
  5. package/dist/nodes/Airtable/test/v2/node/helpers.js.map +1 -1
  6. package/dist/nodes/Airtable/v2/actions/record/create.operation.d.ts.map +1 -1
  7. package/dist/nodes/Airtable/v2/actions/record/create.operation.js +6 -5
  8. package/dist/nodes/Airtable/v2/actions/record/create.operation.js.map +1 -1
  9. package/dist/nodes/Airtop/__schema__/v1.0.0/extraction/getPaginated.json +7 -1
  10. package/dist/nodes/Airtop/__schema__/v1.0.0/extraction/scrape.json +7 -1
  11. package/dist/nodes/Airtop/__schema__/v1.0.0/interaction/click.json +42 -0
  12. package/dist/nodes/Airtop/__schema__/v1.0.0/session/create.json +60 -1
  13. package/dist/nodes/Airtop/__schema__/v1.0.0/session/terminate.json +9 -0
  14. package/dist/nodes/Airtop/__schema__/v1.0.0/window/create.json +1 -4
  15. package/dist/nodes/Aws/DynamoDB/__schema__/v1.0.0/item/getAll.json +9 -0
  16. package/dist/nodes/BambooHr/__schema__/v1.0.0/companyReport/get.json +1 -7
  17. package/dist/nodes/BambooHr/__schema__/v1.0.0/employee/getAll.json +10 -1
  18. package/dist/nodes/Bitly/__schema__/v1.0.0/link/create.json +7 -1
  19. package/dist/nodes/Box/__schema__/v1.0.0/file/download.json +7 -1
  20. package/dist/nodes/ClickUp/__schema__/v1.0.0/folder/create.json +74 -1
  21. package/dist/nodes/ClickUp/__schema__/v1.0.0/list/customFields.json +26 -1
  22. package/dist/nodes/Coda/__schema__/v1.1.0/table/getAllRows.json +4 -1
  23. package/dist/nodes/Code/Code.node.d.ts.map +1 -1
  24. package/dist/nodes/Code/Code.node.js +46 -26
  25. package/dist/nodes/Code/Code.node.js.map +1 -1
  26. package/dist/nodes/Code/JsTaskRunnerSandbox.d.ts +0 -1
  27. package/dist/nodes/Code/JsTaskRunnerSandbox.d.ts.map +1 -1
  28. package/dist/nodes/Code/JsTaskRunnerSandbox.js +3 -15
  29. package/dist/nodes/Code/JsTaskRunnerSandbox.js.map +1 -1
  30. package/dist/nodes/Code/PythonTaskRunnerSandbox.d.ts +17 -0
  31. package/dist/nodes/Code/PythonTaskRunnerSandbox.d.ts.map +1 -0
  32. package/dist/nodes/Code/PythonTaskRunnerSandbox.js +39 -0
  33. package/dist/nodes/Code/PythonTaskRunnerSandbox.js.map +1 -0
  34. package/dist/nodes/Code/descriptions/PythonCodeDescription.d.ts.map +1 -1
  35. package/dist/nodes/Code/descriptions/PythonCodeDescription.js +15 -3
  36. package/dist/nodes/Code/descriptions/PythonCodeDescription.js.map +1 -1
  37. package/dist/nodes/Code/native-python-without-runner.error.d.ts +5 -0
  38. package/dist/nodes/Code/native-python-without-runner.error.d.ts.map +1 -0
  39. package/dist/nodes/Code/native-python-without-runner.error.js +11 -0
  40. package/dist/nodes/Code/native-python-without-runner.error.js.map +1 -0
  41. package/dist/nodes/Code/throw-execution-error.d.ts +2 -0
  42. package/dist/nodes/Code/throw-execution-error.d.ts.map +1 -0
  43. package/dist/nodes/Code/throw-execution-error.js +17 -0
  44. package/dist/nodes/Code/throw-execution-error.js.map +1 -0
  45. package/dist/nodes/CoinGecko/__schema__/v1.0.0/coin/candlestick.json +9 -0
  46. package/dist/nodes/Contentful/__schema__/v1.0.0/contentType/get.json +27 -0
  47. package/dist/nodes/Dropbox/__schema__/v1.0.0/file/download.json +1 -19
  48. package/dist/nodes/Dropcontact/__schema__/v1.0.0/contact/enrich.json +1 -19
  49. package/dist/nodes/Elastic/Elasticsearch/__schema__/v1.0.0/document/getAll.json +4 -1
  50. package/dist/nodes/EmailSend/__schema__/v2.1.0/email/send.json +1 -7
  51. package/dist/nodes/Files/ExtractFromFile/actions/moveTo.operation.js +1 -1
  52. package/dist/nodes/Files/ExtractFromFile/actions/moveTo.operation.js.map +1 -1
  53. package/dist/nodes/Files/ReadWriteFile/helpers/utils.d.ts.map +1 -1
  54. package/dist/nodes/Files/ReadWriteFile/helpers/utils.js +18 -16
  55. package/dist/nodes/Files/ReadWriteFile/helpers/utils.js.map +1 -1
  56. package/dist/nodes/Form/Form.node.d.ts.map +1 -1
  57. package/dist/nodes/Form/Form.node.js +3 -1
  58. package/dist/nodes/Form/Form.node.js.map +1 -1
  59. package/dist/nodes/Form/FormTrigger.node.d.ts.map +1 -1
  60. package/dist/nodes/Form/FormTrigger.node.js +2 -1
  61. package/dist/nodes/Form/FormTrigger.node.js.map +1 -1
  62. package/dist/nodes/Form/common.descriptions.d.ts.map +1 -1
  63. package/dist/nodes/Form/common.descriptions.js +171 -14
  64. package/dist/nodes/Form/common.descriptions.js.map +1 -1
  65. package/dist/nodes/Form/interfaces.d.ts +21 -11
  66. package/dist/nodes/Form/interfaces.d.ts.map +1 -1
  67. package/dist/nodes/Form/interfaces.js.map +1 -1
  68. package/dist/nodes/Form/utils/utils.d.ts +4 -0
  69. package/dist/nodes/Form/utils/utils.d.ts.map +1 -1
  70. package/dist/nodes/Form/utils/utils.js +16 -2
  71. package/dist/nodes/Form/utils/utils.js.map +1 -1
  72. package/dist/nodes/Form/v2/FormTriggerV2.node.d.ts.map +1 -1
  73. package/dist/nodes/Form/v2/FormTriggerV2.node.js +3 -1
  74. package/dist/nodes/Form/v2/FormTriggerV2.node.js.map +1 -1
  75. package/dist/nodes/FreshworksCrm/__schema__/v1.0.0/search/query.json +35 -0
  76. package/dist/nodes/Github/__schema__/v1.1.0/file/get.json +1 -42
  77. package/dist/nodes/Gitlab/__schema__/v1.0.0/file/get.json +4 -1
  78. package/dist/nodes/Google/Analytics/__schema__/v2.0.0/report/get.json +71 -2
  79. package/dist/nodes/Google/Calendar/__schema__/v1.3.0/event/create.json +4 -1
  80. package/dist/nodes/Google/Calendar/__schema__/v1.3.0/event/getAll.json +1 -4
  81. package/dist/nodes/Google/Chat/__schema__/v1.0.0/message/create.json +30 -1
  82. package/dist/nodes/Google/Chat/__schema__/v1.0.0/message/get.json +1 -63
  83. package/dist/nodes/Google/CloudStorage/__schema__/v1.0.0/object/getAll.json +7 -1
  84. package/dist/nodes/Google/Contacts/__schema__/v1.0.0/contact/getAll.json +21 -1
  85. package/dist/nodes/Google/Drive/__schema__/v3.0.0/file/upload.json +34 -1
  86. package/dist/nodes/Google/Firebase/CloudFirestore/__schema__/v1.1.0/document/create.json +1 -4
  87. package/dist/nodes/Google/Firebase/CloudFirestore/__schema__/v1.1.0/document/getAll.json +1 -4
  88. package/dist/nodes/Google/GSuiteAdmin/__schema__/v1.0.0/user/get.json +1 -65
  89. package/dist/nodes/Google/GSuiteAdmin/__schema__/v1.0.0/user/getAll.json +1 -22
  90. package/dist/nodes/Google/Gmail/__schema__/v2.1.0/message/getAll.json +27 -123
  91. package/dist/nodes/Google/Task/__schema__/v1.0.0/task/getAll.json +4 -4
  92. package/dist/nodes/Grist/GenericFunctions.d.ts +1 -0
  93. package/dist/nodes/Grist/GenericFunctions.d.ts.map +1 -1
  94. package/dist/nodes/Grist/GenericFunctions.js +5 -1
  95. package/dist/nodes/Grist/GenericFunctions.js.map +1 -1
  96. package/dist/nodes/HighLevel/__schema__/v2.0.0/calendar/bookAppointment.json +36 -0
  97. package/dist/nodes/HomeAssistant/__schema__/v1.0.0/state/get.json +1 -7
  98. package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.d.ts.map +1 -1
  99. package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js +190 -179
  100. package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js.map +1 -1
  101. package/dist/nodes/Hubspot/__schema__/v2.1.0/company/getAll.json +4 -1
  102. package/dist/nodes/Hubspot/__schema__/v2.1.0/deal/getAll.json +1 -257
  103. package/dist/nodes/Hubspot/__schema__/v2.1.0/deal/search.json +10 -1
  104. package/dist/nodes/Hubspot/__schema__/v2.1.0/ticket/get.json +67 -1
  105. package/dist/nodes/Hubspot/__schema__/v2.1.0/ticket/getAll.json +61 -1
  106. package/dist/nodes/Jenkins/__schema__/v1.0.0/job/trigger.json +9 -0
  107. package/dist/nodes/Jenkins/__schema__/v1.0.0/job/triggerParams.json +9 -0
  108. package/dist/nodes/JinaAI/__schema__/v1.0.0/reader/read.json +9 -1
  109. package/dist/nodes/Jira/__schema__/v1.0.0/issue/get.json +121 -1
  110. package/dist/nodes/Jira/__schema__/v1.0.0/issue/getAll.json +310 -1
  111. package/dist/nodes/Lemlist/__schema__/v2.0.0/campaign/getStats.json +39 -0
  112. package/dist/nodes/Lemlist/__schema__/v2.0.0/enrich/get.json +3 -18
  113. package/dist/nodes/Lemlist/__schema__/v2.0.0/lead/get.json +1 -4
  114. package/dist/nodes/Mailchimp/__schema__/v1.0.0/member/create.json +15 -1
  115. package/dist/nodes/Mailchimp/__schema__/v1.0.0/member/get.json +7 -4
  116. package/dist/nodes/Marketstack/__schema__/v1.0.0/endOfDayData/getAll.json +1 -4
  117. package/dist/nodes/Matrix/__schema__/v1.0.0/message/getAll.json +4 -1
  118. package/dist/nodes/Metabase/__schema__/v1.0.0/databases/getAll.json +21 -0
  119. package/dist/nodes/Metabase/__schema__/v1.0.0/databases/getFields.json +9 -13
  120. package/dist/nodes/Metabase/__schema__/v1.0.0/questions/get.json +85 -12
  121. package/dist/nodes/Microsoft/AzureCosmosDb/__schema__/v1.0.0/item/getAll.json +12 -0
  122. package/dist/nodes/Microsoft/Entra/__schema__/v1.0.0/group/getAll.json +27 -0
  123. package/dist/nodes/Microsoft/Entra/__schema__/v1.0.0/user/create.json +13 -18
  124. package/dist/nodes/Microsoft/Entra/__schema__/v1.0.0/user/getAll.json +1 -4
  125. package/dist/nodes/Microsoft/OneDrive/__schema__/v1.0.0/file/download.json +10 -23
  126. package/dist/nodes/Microsoft/OneDrive/__schema__/v1.0.0/folder/create.json +15 -7
  127. package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/message/get.json +39 -4
  128. package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/message/getAll.json +1 -4
  129. package/dist/nodes/Microsoft/Outlook/__schema__/v2.0.0/messageAttachment/get.json +1 -25
  130. package/dist/nodes/Microsoft/SharePoint/__schema__/v1.0.0/item/get.json +71 -0
  131. package/dist/nodes/Microsoft/SharePoint/__schema__/v1.0.0/item/getAll.json +1 -70
  132. package/dist/nodes/Microsoft/SharePoint/__schema__/v1.0.0/list/get.json +27 -0
  133. package/dist/nodes/Microsoft/SharePoint/__schema__/v1.0.0/list/getAll.json +27 -0
  134. package/dist/nodes/Microsoft/Sql/MicrosoftSql.node.js +1 -1
  135. package/dist/nodes/Microsoft/Sql/MicrosoftSql.node.js.map +1 -1
  136. package/dist/nodes/Microsoft/ToDo/__schema__/v1.0.0/task/getAll.json +18 -1
  137. package/dist/nodes/N8nTrainingCustomerDatastore/__schema__/v1.0.0/execution/get.json +1 -4
  138. package/dist/nodes/N8nTrainingCustomerDatastore/__schema__/v1.0.0/execution/getAll.json +1 -4
  139. package/dist/nodes/N8nTrainingCustomerDatastore/__schema__/v1.0.0/workflow/create.json +10 -1
  140. package/dist/nodes/Nasa/__schema__/v1.0.0/donkiSolarFlare/get.json +1 -7
  141. package/dist/nodes/NextCloud/__schema__/v1.0.0/file/download.json +2 -32
  142. package/dist/nodes/Odoo/__schema__/v1.0.0/contact/get.json +1 -4
  143. package/dist/nodes/Odoo/__schema__/v1.0.0/opportunity/getAll.json +4 -1
  144. package/dist/nodes/Okta/__schema__/v1.0.0/user/getAll.json +1 -37
  145. package/dist/nodes/Perplexity/__schema__/v1.0.0/chat/complete.json +12 -1
  146. package/dist/nodes/Phantombuster/__schema__/v1.0.0/agent/getOutput.json +1 -10
  147. package/dist/nodes/Reddit/__schema__/v1.0.0/post/getAll.json +78 -4
  148. package/dist/nodes/RespondToWebhook/RespondToWebhook.node.d.ts.map +1 -1
  149. package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js +1 -15
  150. package/dist/nodes/RespondToWebhook/RespondToWebhook.node.js.map +1 -1
  151. package/dist/nodes/RespondToWebhook/utils/binary.d.ts +1 -1
  152. package/dist/nodes/RespondToWebhook/utils/binary.d.ts.map +1 -1
  153. package/dist/nodes/RespondToWebhook/utils/binary.js +2 -17
  154. package/dist/nodes/RespondToWebhook/utils/binary.js.map +1 -1
  155. package/dist/nodes/S3/__schema__/v1.0.0/file/download.json +10 -1
  156. package/dist/nodes/Salesforce/__schema__/v1.0.0/case/getAll.json +4 -1
  157. package/dist/nodes/Salesforce/__schema__/v1.0.0/customObject/create.json +15 -1
  158. package/dist/nodes/Salesforce/__schema__/v1.0.0/customObject/getAll.json +4 -1
  159. package/dist/nodes/Salesforce/__schema__/v1.0.0/customObject/upsert.json +4 -4
  160. package/dist/nodes/Salesforce/__schema__/v1.0.0/opportunity/getAll.json +5 -2
  161. package/dist/nodes/Salesforce/__schema__/v1.0.0/task/getAll.json +10 -4
  162. package/dist/nodes/Salesforce/__schema__/v1.0.0/user/getAll.json +1 -4
  163. package/dist/nodes/SeaTable/__schema__/v2.0.0/row/create.json +24 -0
  164. package/dist/nodes/Shopify/__schema__/v1.0.0/order/getAll.json +4 -45
  165. package/dist/nodes/Shopify/__schema__/v1.0.0/product/get.json +1 -4
  166. package/dist/nodes/Slack/V2/MessageDescription.js +1 -1
  167. package/dist/nodes/Slack/V2/MessageDescription.js.map +1 -1
  168. package/dist/nodes/Slack/__schema__/v2.3.0/channel/history.json +3 -3
  169. package/dist/nodes/Slack/__schema__/v2.3.0/channel/join.json +2 -174
  170. package/dist/nodes/Slack/__schema__/v2.3.0/channel/replies.json +44 -4
  171. package/dist/nodes/Stripe/__schema__/v1.0.0/balance/get.json +34 -1
  172. package/dist/nodes/Telegram/__schema__/v1.2.0/chat/get.json +1 -4
  173. package/dist/nodes/Telegram/__schema__/v1.2.0/chat/member.json +4 -4
  174. package/dist/nodes/Telegram/__schema__/v1.2.0/message/editMessageText.json +4 -1
  175. package/dist/nodes/Telegram/__schema__/v1.2.0/message/sendMessage.json +1 -12
  176. package/dist/nodes/Todoist/GenericFunctions.d.ts +1 -1
  177. package/dist/nodes/Todoist/GenericFunctions.d.ts.map +1 -1
  178. package/dist/nodes/Todoist/GenericFunctions.js +2 -2
  179. package/dist/nodes/Todoist/GenericFunctions.js.map +1 -1
  180. package/dist/nodes/Todoist/v2/OperationHandler.d.ts +134 -15
  181. package/dist/nodes/Todoist/v2/OperationHandler.d.ts.map +1 -1
  182. package/dist/nodes/Todoist/v2/OperationHandler.js +555 -52
  183. package/dist/nodes/Todoist/v2/OperationHandler.js.map +1 -1
  184. package/dist/nodes/Todoist/v2/Service.d.ts +36 -3
  185. package/dist/nodes/Todoist/v2/Service.d.ts.map +1 -1
  186. package/dist/nodes/Todoist/v2/Service.js +105 -2
  187. package/dist/nodes/Todoist/v2/Service.js.map +1 -1
  188. package/dist/nodes/Todoist/v2/TodoistV2.node.d.ts.map +1 -1
  189. package/dist/nodes/Todoist/v2/TodoistV2.node.js +1240 -31
  190. package/dist/nodes/Todoist/v2/TodoistV2.node.js.map +1 -1
  191. package/dist/nodes/Trello/__schema__/v1.0.0/attachment/get.json +4 -1
  192. package/dist/nodes/Trello/__schema__/v1.0.0/label/getAll.json +18 -0
  193. package/dist/nodes/Trello/__schema__/v1.0.0/list/getAll.json +1 -4
  194. package/dist/nodes/Trello/__schema__/v1.0.0/list/getCards.json +11 -2
  195. package/dist/nodes/Twilio/__schema__/v1.0.0/sms/send.json +7 -1
  196. package/dist/nodes/Wait/Wait.node.d.ts.map +1 -1
  197. package/dist/nodes/Wait/Wait.node.js +9 -1
  198. package/dist/nodes/Wait/Wait.node.js.map +1 -1
  199. package/dist/nodes/Wait/validation.d.ts +4 -0
  200. package/dist/nodes/Wait/validation.d.ts.map +1 -0
  201. package/dist/nodes/Wait/validation.js +11 -0
  202. package/dist/nodes/Wait/validation.js.map +1 -0
  203. package/dist/nodes/Wise/__schema__/v1.0.0/exchangeRate/get.json +4 -1
  204. package/dist/nodes/Wordpress/__schema__/v1.0.0/post/getAll.json +15 -1
  205. package/dist/nodes/Xero/__schema__/v1.0.0/contact/getAll.json +1 -4
  206. package/dist/nodes/Zoho/__schema__/v1.0.0/contact/getAll.json +15 -14
  207. package/dist/nodes/Zoho/__schema__/v1.0.0/lead/getAll.json +10 -32
  208. package/dist/typecheck.tsbuildinfo +1 -1
  209. package/dist/types/credentials.json +1 -1
  210. package/dist/types/nodes.json +18 -18
  211. package/package.json +7 -7
@@ -4,20 +4,28 @@ exports.TodoistV2 = void 0;
4
4
  const n8n_workflow_1 = require("n8n-workflow");
5
5
  const Service_1 = require("./Service");
6
6
  const GenericFunctions_1 = require("../GenericFunctions");
7
- // interface IBodyCreateTask {
8
- // content?: string;
9
- // description?: string;
10
- // project_id?: number;
11
- // section_id?: number;
12
- // parent_id?: number;
13
- // order?: number;
14
- // label_ids?: number[];
15
- // priority?: number;
16
- // due_string?: string;
17
- // due_datetime?: string;
18
- // due_date?: string;
19
- // due_lang?: string;
20
- // }
7
+ const TODOIST_COLOR_OPTIONS = [
8
+ { name: 'Berry Red', value: 'berry_red' },
9
+ { name: 'Red', value: 'red' },
10
+ { name: 'Orange', value: 'orange' },
11
+ { name: 'Yellow', value: 'yellow' },
12
+ { name: 'Olive Green', value: 'olive_green' },
13
+ { name: 'Lime Green', value: 'lime_green' },
14
+ { name: 'Green', value: 'green' },
15
+ { name: 'Mint Green', value: 'mint_green' },
16
+ { name: 'Teal', value: 'teal' },
17
+ { name: 'Sky Blue', value: 'sky_blue' },
18
+ { name: 'Light Blue', value: 'light_blue' },
19
+ { name: 'Blue', value: 'blue' },
20
+ { name: 'Grape', value: 'grape' },
21
+ { name: 'Violet', value: 'violet' },
22
+ { name: 'Lavender', value: 'lavender' },
23
+ { name: 'Magenta', value: 'magenta' },
24
+ { name: 'Salmon', value: 'salmon' },
25
+ { name: 'Charcoal', value: 'charcoal' },
26
+ { name: 'Grey', value: 'grey' },
27
+ { name: 'Taupe', value: 'taupe' },
28
+ ];
21
29
  const versionDescription = {
22
30
  displayName: 'Todoist',
23
31
  name: 'todoist',
@@ -74,12 +82,38 @@ const versionDescription = {
74
82
  name: 'resource',
75
83
  type: 'options',
76
84
  noDataExpression: true,
85
+ // eslint-disable-next-line n8n-nodes-base/node-param-options-type-unsorted-items
77
86
  options: [
78
87
  {
79
88
  name: 'Task',
80
89
  value: 'task',
81
90
  description: 'Task resource',
82
91
  },
92
+ {
93
+ name: 'Project',
94
+ value: 'project',
95
+ description: 'Project resource',
96
+ },
97
+ {
98
+ name: 'Section',
99
+ value: 'section',
100
+ description: 'Section resource',
101
+ },
102
+ {
103
+ name: 'Comment',
104
+ value: 'comment',
105
+ description: 'Comment resource',
106
+ },
107
+ {
108
+ name: 'Label',
109
+ value: 'label',
110
+ description: 'Label resource',
111
+ },
112
+ {
113
+ name: 'Reminder',
114
+ value: 'reminder',
115
+ description: 'Reminder resource',
116
+ },
83
117
  ],
84
118
  default: 'task',
85
119
  required: true,
@@ -132,17 +166,18 @@ const versionDescription = {
132
166
  description: 'Move a task',
133
167
  action: 'Move a task',
134
168
  },
169
+ {
170
+ name: 'Quick Add',
171
+ value: 'quickAdd',
172
+ description: 'Quick add a task using natural language',
173
+ action: 'Quick add a task',
174
+ },
135
175
  {
136
176
  name: 'Reopen',
137
177
  value: 'reopen',
138
178
  description: 'Reopen a task',
139
179
  action: 'Reopen a task',
140
180
  },
141
- // {
142
- // name: 'Sync',
143
- // value: 'sync',
144
- // description: 'Sync a project',
145
- // },
146
181
  {
147
182
  name: 'Update',
148
183
  value: 'update',
@@ -152,6 +187,248 @@ const versionDescription = {
152
187
  ],
153
188
  default: 'create',
154
189
  },
190
+ // Project operations
191
+ {
192
+ displayName: 'Operation',
193
+ name: 'operation',
194
+ type: 'options',
195
+ noDataExpression: true,
196
+ required: true,
197
+ displayOptions: {
198
+ show: {
199
+ resource: ['project'],
200
+ },
201
+ },
202
+ options: [
203
+ {
204
+ name: 'Archive',
205
+ value: 'archive',
206
+ description: 'Archive a project',
207
+ action: 'Archive a project',
208
+ },
209
+ {
210
+ name: 'Create',
211
+ value: 'create',
212
+ description: 'Create a new project',
213
+ action: 'Create a project',
214
+ },
215
+ {
216
+ name: 'Delete',
217
+ value: 'delete',
218
+ description: 'Delete a project',
219
+ action: 'Delete a project',
220
+ },
221
+ {
222
+ name: 'Get',
223
+ value: 'get',
224
+ description: 'Get a project',
225
+ action: 'Get a project',
226
+ },
227
+ {
228
+ name: 'Get Collaborators',
229
+ value: 'getCollaborators',
230
+ description: 'Get project collaborators',
231
+ action: 'Get project collaborators',
232
+ },
233
+ {
234
+ name: 'Get Many',
235
+ value: 'getAll',
236
+ description: 'Get many projects',
237
+ action: 'Get many projects',
238
+ },
239
+ {
240
+ name: 'Unarchive',
241
+ value: 'unarchive',
242
+ description: 'Unarchive a project',
243
+ action: 'Unarchive a project',
244
+ },
245
+ {
246
+ name: 'Update',
247
+ value: 'update',
248
+ description: 'Update a project',
249
+ action: 'Update a project',
250
+ },
251
+ ],
252
+ default: 'create',
253
+ },
254
+ // Section operations
255
+ {
256
+ displayName: 'Operation',
257
+ name: 'operation',
258
+ type: 'options',
259
+ noDataExpression: true,
260
+ required: true,
261
+ displayOptions: {
262
+ show: {
263
+ resource: ['section'],
264
+ },
265
+ },
266
+ options: [
267
+ {
268
+ name: 'Create',
269
+ value: 'create',
270
+ description: 'Create a new section',
271
+ action: 'Create a section',
272
+ },
273
+ {
274
+ name: 'Delete',
275
+ value: 'delete',
276
+ description: 'Delete a section',
277
+ action: 'Delete a section',
278
+ },
279
+ {
280
+ name: 'Get',
281
+ value: 'get',
282
+ description: 'Get a section',
283
+ action: 'Get a section',
284
+ },
285
+ {
286
+ name: 'Get Many',
287
+ value: 'getAll',
288
+ description: 'Get many sections',
289
+ action: 'Get many sections',
290
+ },
291
+ {
292
+ name: 'Update',
293
+ value: 'update',
294
+ description: 'Update a section',
295
+ action: 'Update a section',
296
+ },
297
+ ],
298
+ default: 'create',
299
+ },
300
+ // Comment operations
301
+ {
302
+ displayName: 'Operation',
303
+ name: 'operation',
304
+ type: 'options',
305
+ noDataExpression: true,
306
+ required: true,
307
+ displayOptions: {
308
+ show: {
309
+ resource: ['comment'],
310
+ },
311
+ },
312
+ options: [
313
+ {
314
+ name: 'Create',
315
+ value: 'create',
316
+ description: 'Create a new comment',
317
+ action: 'Create a comment',
318
+ },
319
+ {
320
+ name: 'Delete',
321
+ value: 'delete',
322
+ description: 'Delete a comment',
323
+ action: 'Delete a comment',
324
+ },
325
+ {
326
+ name: 'Get',
327
+ value: 'get',
328
+ description: 'Get a comment',
329
+ action: 'Get a comment',
330
+ },
331
+ {
332
+ name: 'Get Many',
333
+ value: 'getAll',
334
+ description: 'Get many comments',
335
+ action: 'Get many comments',
336
+ },
337
+ {
338
+ name: 'Update',
339
+ value: 'update',
340
+ description: 'Update a comment',
341
+ action: 'Update a comment',
342
+ },
343
+ ],
344
+ default: 'create',
345
+ },
346
+ // Label operations
347
+ {
348
+ displayName: 'Operation',
349
+ name: 'operation',
350
+ type: 'options',
351
+ noDataExpression: true,
352
+ required: true,
353
+ displayOptions: {
354
+ show: {
355
+ resource: ['label'],
356
+ },
357
+ },
358
+ options: [
359
+ {
360
+ name: 'Create',
361
+ value: 'create',
362
+ description: 'Create a new label',
363
+ action: 'Create a label',
364
+ },
365
+ {
366
+ name: 'Delete',
367
+ value: 'delete',
368
+ description: 'Delete a label',
369
+ action: 'Delete a label',
370
+ },
371
+ {
372
+ name: 'Get',
373
+ value: 'get',
374
+ description: 'Get a label',
375
+ action: 'Get a label',
376
+ },
377
+ {
378
+ name: 'Get Many',
379
+ value: 'getAll',
380
+ description: 'Get many labels',
381
+ action: 'Get many labels',
382
+ },
383
+ {
384
+ name: 'Update',
385
+ value: 'update',
386
+ description: 'Update a label',
387
+ action: 'Update a label',
388
+ },
389
+ ],
390
+ default: 'create',
391
+ },
392
+ // Reminder operations
393
+ {
394
+ displayName: 'Operation',
395
+ name: 'operation',
396
+ type: 'options',
397
+ noDataExpression: true,
398
+ required: true,
399
+ displayOptions: {
400
+ show: {
401
+ resource: ['reminder'],
402
+ },
403
+ },
404
+ options: [
405
+ {
406
+ name: 'Create',
407
+ value: 'create',
408
+ description: 'Create a new reminder',
409
+ action: 'Create a reminder',
410
+ },
411
+ {
412
+ name: 'Delete',
413
+ value: 'delete',
414
+ description: 'Delete a reminder',
415
+ action: 'Delete a reminder',
416
+ },
417
+ {
418
+ name: 'Get Many',
419
+ value: 'getAll',
420
+ description: 'Get many reminders',
421
+ action: 'Get many reminders',
422
+ },
423
+ {
424
+ name: 'Update',
425
+ value: 'update',
426
+ description: 'Update a reminder',
427
+ action: 'Update a reminder',
428
+ },
429
+ ],
430
+ default: 'create',
431
+ },
155
432
  {
156
433
  displayName: 'Task ID',
157
434
  name: 'taskId',
@@ -192,7 +469,7 @@ const versionDescription = {
192
469
  displayOptions: {
193
470
  show: {
194
471
  resource: ['task'],
195
- operation: ['create', 'move', 'sync'],
472
+ operation: ['create', 'move'],
196
473
  },
197
474
  },
198
475
  description: 'The destination project. Choose from the list, or specify an ID.',
@@ -256,7 +533,8 @@ const versionDescription = {
256
533
  ],
257
534
  },
258
535
  {
259
- displayName: 'Label Names or IDs',
536
+ // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-multi-options
537
+ displayName: 'Label Names',
260
538
  name: 'labels',
261
539
  type: 'multiOptions',
262
540
  typeOptions: {
@@ -289,18 +567,58 @@ const versionDescription = {
289
567
  description: 'Task content',
290
568
  },
291
569
  {
292
- displayName: 'Sync Commands',
293
- name: 'commands',
570
+ displayName: 'Text',
571
+ name: 'text',
294
572
  type: 'string',
573
+ typeOptions: {
574
+ rows: 3,
575
+ },
576
+ displayOptions: {
577
+ show: {
578
+ resource: ['task'],
579
+ operation: ['quickAdd'],
580
+ },
581
+ },
582
+ default: '',
583
+ required: true,
584
+ description: 'Natural language text for quick adding task (e.g., "Buy milk @Grocery #shopping tomorrow"). It can include a due date in free form text, a project name starting with the "#" character (without spaces), a label starting with the "@" character, an assignee starting with the "+" character, a priority (e.g., p1), a deadline between "{}" (e.g. {in 3 days}), or a description starting from "//" until the end of the text.',
585
+ },
586
+ {
587
+ displayName: 'Additional Fields',
588
+ name: 'options',
589
+ type: 'collection',
590
+ placeholder: 'Add Field',
591
+ default: {},
295
592
  displayOptions: {
296
593
  show: {
297
594
  resource: ['task'],
298
- operation: ['sync'],
595
+ operation: ['quickAdd'],
299
596
  },
300
597
  },
301
- default: '[]',
302
- hint: 'See docs for possible commands: https://developer.todoist.com/sync/v8/#sync',
303
- description: 'Sync body',
598
+ options: [
599
+ {
600
+ displayName: 'Note',
601
+ name: 'note',
602
+ type: 'string',
603
+ default: '',
604
+ description: 'The content of the note',
605
+ },
606
+ {
607
+ displayName: 'Reminder',
608
+ name: 'reminder',
609
+ type: 'string',
610
+ default: '',
611
+ description: 'The date of the reminder, added in free form text',
612
+ },
613
+ {
614
+ displayName: 'Auto Reminder',
615
+ name: 'auto_reminder',
616
+ type: 'boolean',
617
+ default: false,
618
+ // eslint-disable-next-line n8n-nodes-base/node-param-description-boolean-without-whether
619
+ description: 'When this option is enabled, the default reminder will be added to the new item if it has a due date with time set',
620
+ },
621
+ ],
304
622
  },
305
623
  {
306
624
  displayName: 'Additional Fields',
@@ -376,6 +694,60 @@ const versionDescription = {
376
694
  default: {},
377
695
  description: 'The section you want to operate on. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
378
696
  },
697
+ {
698
+ displayName: 'Order',
699
+ name: 'order',
700
+ type: 'number',
701
+ default: 0,
702
+ description: 'Non-zero integer used to sort tasks under the same parent',
703
+ },
704
+ {
705
+ displayName: 'Due Date',
706
+ name: 'dueDate',
707
+ type: 'string',
708
+ default: '',
709
+ placeholder: 'YYYY-MM-DD',
710
+ description: 'Specific date in YYYY-MM-DD format',
711
+ },
712
+ {
713
+ displayName: 'Assignee ID',
714
+ name: 'assigneeId',
715
+ type: 'string',
716
+ default: '',
717
+ description: 'Responsible user ID (for shared tasks)',
718
+ },
719
+ {
720
+ displayName: 'Duration',
721
+ name: 'duration',
722
+ type: 'number',
723
+ default: 0,
724
+ description: 'Positive integer for task duration (must be used with Duration Unit)',
725
+ },
726
+ {
727
+ displayName: 'Duration Unit',
728
+ name: 'durationUnit',
729
+ type: 'options',
730
+ options: [
731
+ {
732
+ name: 'Minute',
733
+ value: 'minute',
734
+ },
735
+ {
736
+ name: 'Day',
737
+ value: 'day',
738
+ },
739
+ ],
740
+ default: 'minute',
741
+ description: 'Unit of time for duration (must be used with Duration)',
742
+ },
743
+ {
744
+ displayName: 'Deadline Date',
745
+ name: 'deadlineDate',
746
+ type: 'string',
747
+ default: '',
748
+ placeholder: 'YYYY-MM-DD',
749
+ description: 'Specific deadline date in YYYY-MM-DD format',
750
+ },
379
751
  ],
380
752
  },
381
753
  {
@@ -543,7 +915,8 @@ const versionDescription = {
543
915
  description: '2-letter code specifying language in case due_string is not written in English',
544
916
  },
545
917
  {
546
- displayName: 'Label Names or IDs',
918
+ // eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-multi-options
919
+ displayName: 'Label Names',
547
920
  name: 'labels',
548
921
  type: 'multiOptions',
549
922
  description: 'Choose from the list, or specify IDs using an <a href="https://docs.n8n.io/code/expressions/">expression</a>',
@@ -563,10 +936,813 @@ const versionDescription = {
563
936
  default: 1,
564
937
  description: 'Task priority from 1 (normal) to 4 (urgent)',
565
938
  },
939
+ {
940
+ displayName: 'Order',
941
+ name: 'order',
942
+ type: 'number',
943
+ default: 0,
944
+ description: 'Non-zero integer used to sort tasks under the same parent',
945
+ },
946
+ {
947
+ displayName: 'Due Date',
948
+ name: 'dueDate',
949
+ type: 'string',
950
+ default: '',
951
+ placeholder: 'YYYY-MM-DD',
952
+ description: 'Specific date in YYYY-MM-DD format',
953
+ },
954
+ {
955
+ displayName: 'Assignee ID',
956
+ name: 'assigneeId',
957
+ type: 'string',
958
+ default: '',
959
+ description: 'Responsible user ID (for shared tasks)',
960
+ },
961
+ {
962
+ displayName: 'Duration',
963
+ name: 'duration',
964
+ type: 'number',
965
+ default: 0,
966
+ description: 'Positive integer for task duration (must be used with Duration Unit)',
967
+ },
968
+ {
969
+ displayName: 'Duration Unit',
970
+ name: 'durationUnit',
971
+ type: 'options',
972
+ options: [
973
+ {
974
+ name: 'Minute',
975
+ value: 'minute',
976
+ },
977
+ {
978
+ name: 'Day',
979
+ value: 'day',
980
+ },
981
+ ],
982
+ default: 'minute',
983
+ description: 'Unit of time for duration (must be used with Duration)',
984
+ },
985
+ {
986
+ displayName: 'Deadline Date',
987
+ name: 'deadlineDate',
988
+ type: 'string',
989
+ default: '',
990
+ placeholder: 'YYYY-MM-DD',
991
+ description: 'Specific deadline date in YYYY-MM-DD format',
992
+ },
566
993
  ],
567
994
  },
568
- ],
569
- };
995
+ // Project fields
996
+ {
997
+ displayName: 'Project ID',
998
+ name: 'projectId',
999
+ type: 'string',
1000
+ default: '',
1001
+ required: true,
1002
+ displayOptions: {
1003
+ show: {
1004
+ resource: ['project'],
1005
+ operation: ['archive', 'delete', 'get', 'getCollaborators', 'unarchive', 'update'],
1006
+ },
1007
+ },
1008
+ description: 'The project ID - can be either a string or number',
1009
+ },
1010
+ {
1011
+ displayName: 'Name',
1012
+ name: 'name',
1013
+ type: 'string',
1014
+ default: '',
1015
+ required: true,
1016
+ displayOptions: {
1017
+ show: {
1018
+ resource: ['project'],
1019
+ operation: ['create'],
1020
+ },
1021
+ },
1022
+ description: 'Name of the project',
1023
+ },
1024
+ {
1025
+ displayName: 'Additional Fields',
1026
+ name: 'projectOptions',
1027
+ type: 'collection',
1028
+ placeholder: 'Add Field',
1029
+ default: {},
1030
+ displayOptions: {
1031
+ show: {
1032
+ resource: ['project'],
1033
+ operation: ['create'],
1034
+ },
1035
+ },
1036
+ options: [
1037
+ {
1038
+ displayName: 'Color',
1039
+ name: 'color',
1040
+ type: 'options',
1041
+ options: TODOIST_COLOR_OPTIONS,
1042
+ default: '',
1043
+ description: 'The color of the project',
1044
+ },
1045
+ {
1046
+ displayName: 'Is Favorite',
1047
+ name: 'is_favorite',
1048
+ type: 'boolean',
1049
+ default: false,
1050
+ description: 'Whether the project is a favorite',
1051
+ },
1052
+ {
1053
+ displayName: 'Parent ID',
1054
+ name: 'parent_id',
1055
+ type: 'string',
1056
+ default: '',
1057
+ description: 'Parent project ID',
1058
+ },
1059
+ {
1060
+ displayName: 'View Style',
1061
+ name: 'view_style',
1062
+ type: 'options',
1063
+ options: [
1064
+ {
1065
+ name: 'List',
1066
+ value: 'list',
1067
+ },
1068
+ {
1069
+ name: 'Board',
1070
+ value: 'board',
1071
+ },
1072
+ ],
1073
+ default: 'list',
1074
+ description: 'The default view style of the project',
1075
+ },
1076
+ ],
1077
+ },
1078
+ {
1079
+ displayName: 'Update Fields',
1080
+ name: 'projectUpdateFields',
1081
+ type: 'collection',
1082
+ placeholder: 'Add Field',
1083
+ default: {},
1084
+ displayOptions: {
1085
+ show: {
1086
+ resource: ['project'],
1087
+ operation: ['update'],
1088
+ },
1089
+ },
1090
+ options: [
1091
+ {
1092
+ displayName: 'Name',
1093
+ name: 'name',
1094
+ type: 'string',
1095
+ default: '',
1096
+ description: 'Name of the project',
1097
+ },
1098
+ {
1099
+ displayName: 'Color',
1100
+ name: 'color',
1101
+ type: 'options',
1102
+ options: TODOIST_COLOR_OPTIONS,
1103
+ default: '',
1104
+ description: 'The color of the project',
1105
+ },
1106
+ {
1107
+ displayName: 'Is Favorite',
1108
+ name: 'is_favorite',
1109
+ type: 'boolean',
1110
+ default: false,
1111
+ description: 'Whether the project is a favorite',
1112
+ },
1113
+ {
1114
+ displayName: 'View Style',
1115
+ name: 'view_style',
1116
+ type: 'options',
1117
+ options: [
1118
+ {
1119
+ name: 'List',
1120
+ value: 'list',
1121
+ },
1122
+ {
1123
+ name: 'Board',
1124
+ value: 'board',
1125
+ },
1126
+ ],
1127
+ default: 'list',
1128
+ description: 'The default view style of the project',
1129
+ },
1130
+ ],
1131
+ },
1132
+ // Section fields
1133
+ {
1134
+ displayName: 'Section ID',
1135
+ name: 'sectionId',
1136
+ type: 'string',
1137
+ default: '',
1138
+ required: true,
1139
+ displayOptions: {
1140
+ show: {
1141
+ resource: ['section'],
1142
+ operation: ['delete', 'get', 'update'],
1143
+ },
1144
+ },
1145
+ },
1146
+ {
1147
+ displayName: 'Project Name or ID',
1148
+ name: 'sectionProject',
1149
+ type: 'resourceLocator',
1150
+ default: { mode: 'list', value: '' },
1151
+ required: true,
1152
+ modes: [
1153
+ {
1154
+ displayName: 'From List',
1155
+ name: 'list',
1156
+ type: 'list',
1157
+ placeholder: 'Select a project...',
1158
+ typeOptions: {
1159
+ searchListMethod: 'searchProjects',
1160
+ searchable: true,
1161
+ },
1162
+ },
1163
+ {
1164
+ displayName: 'ID',
1165
+ name: 'id',
1166
+ type: 'string',
1167
+ placeholder: '2302163813',
1168
+ },
1169
+ ],
1170
+ displayOptions: {
1171
+ show: {
1172
+ resource: ['section'],
1173
+ operation: ['create'],
1174
+ },
1175
+ },
1176
+ description: 'The project to add the section to',
1177
+ },
1178
+ {
1179
+ displayName: 'Name',
1180
+ name: 'sectionName',
1181
+ type: 'string',
1182
+ default: '',
1183
+ required: true,
1184
+ displayOptions: {
1185
+ show: {
1186
+ resource: ['section'],
1187
+ operation: ['create'],
1188
+ },
1189
+ },
1190
+ description: 'Name of the section',
1191
+ },
1192
+ {
1193
+ displayName: 'Additional Fields',
1194
+ name: 'sectionOptions',
1195
+ type: 'collection',
1196
+ placeholder: 'Add Field',
1197
+ default: {},
1198
+ displayOptions: {
1199
+ show: {
1200
+ resource: ['section'],
1201
+ operation: ['create'],
1202
+ },
1203
+ },
1204
+ options: [
1205
+ {
1206
+ displayName: 'Order',
1207
+ name: 'order',
1208
+ type: 'number',
1209
+ default: 0,
1210
+ description: 'The order of the section',
1211
+ },
1212
+ ],
1213
+ },
1214
+ {
1215
+ displayName: 'Update Fields',
1216
+ name: 'sectionUpdateFields',
1217
+ type: 'collection',
1218
+ placeholder: 'Add Field',
1219
+ default: {},
1220
+ displayOptions: {
1221
+ show: {
1222
+ resource: ['section'],
1223
+ operation: ['update'],
1224
+ },
1225
+ },
1226
+ options: [
1227
+ {
1228
+ displayName: 'Name',
1229
+ name: 'name',
1230
+ type: 'string',
1231
+ default: '',
1232
+ description: 'Name of the section',
1233
+ },
1234
+ ],
1235
+ },
1236
+ {
1237
+ displayName: 'Filters',
1238
+ name: 'sectionFilters',
1239
+ type: 'collection',
1240
+ placeholder: 'Add Filter',
1241
+ default: {},
1242
+ displayOptions: {
1243
+ show: {
1244
+ resource: ['section'],
1245
+ operation: ['getAll'],
1246
+ },
1247
+ },
1248
+ options: [
1249
+ {
1250
+ displayName: 'Project Name or ID',
1251
+ name: 'project_id',
1252
+ type: 'options',
1253
+ typeOptions: {
1254
+ loadOptionsMethod: 'getProjects',
1255
+ },
1256
+ default: '',
1257
+ description: 'Filter sections by project. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
1258
+ },
1259
+ ],
1260
+ },
1261
+ // Comment fields
1262
+ {
1263
+ displayName: 'Comment ID',
1264
+ name: 'commentId',
1265
+ type: 'string',
1266
+ default: '',
1267
+ required: true,
1268
+ displayOptions: {
1269
+ show: {
1270
+ resource: ['comment'],
1271
+ operation: ['delete', 'get', 'update'],
1272
+ },
1273
+ },
1274
+ },
1275
+ {
1276
+ displayName: 'Task ID',
1277
+ name: 'commentTaskId',
1278
+ type: 'string',
1279
+ default: '',
1280
+ required: true,
1281
+ displayOptions: {
1282
+ show: {
1283
+ resource: ['comment'],
1284
+ operation: ['create'],
1285
+ },
1286
+ },
1287
+ description: 'The ID of the task to comment on',
1288
+ },
1289
+ {
1290
+ displayName: 'Content',
1291
+ name: 'commentContent',
1292
+ type: 'string',
1293
+ typeOptions: {
1294
+ rows: 3,
1295
+ },
1296
+ default: '',
1297
+ required: true,
1298
+ displayOptions: {
1299
+ show: {
1300
+ resource: ['comment'],
1301
+ operation: ['create'],
1302
+ },
1303
+ },
1304
+ description: 'Comment content',
1305
+ },
1306
+ {
1307
+ displayName: 'Update Fields',
1308
+ name: 'commentUpdateFields',
1309
+ type: 'collection',
1310
+ placeholder: 'Add Field',
1311
+ default: {},
1312
+ displayOptions: {
1313
+ show: {
1314
+ resource: ['comment'],
1315
+ operation: ['update'],
1316
+ },
1317
+ },
1318
+ options: [
1319
+ {
1320
+ displayName: 'Content',
1321
+ name: 'content',
1322
+ type: 'string',
1323
+ typeOptions: {
1324
+ rows: 3,
1325
+ },
1326
+ default: '',
1327
+ description: 'Comment content',
1328
+ },
1329
+ ],
1330
+ },
1331
+ {
1332
+ displayName: 'Filters',
1333
+ name: 'commentFilters',
1334
+ type: 'collection',
1335
+ placeholder: 'Add Filter',
1336
+ default: {},
1337
+ displayOptions: {
1338
+ show: {
1339
+ resource: ['comment'],
1340
+ operation: ['getAll'],
1341
+ },
1342
+ },
1343
+ options: [
1344
+ {
1345
+ displayName: 'Task ID',
1346
+ name: 'task_id',
1347
+ type: 'string',
1348
+ default: '',
1349
+ description: 'Filter comments by task ID',
1350
+ },
1351
+ {
1352
+ displayName: 'Project ID',
1353
+ name: 'project_id',
1354
+ type: 'string',
1355
+ default: '',
1356
+ description: 'Filter comments by project ID',
1357
+ },
1358
+ ],
1359
+ },
1360
+ // Label fields
1361
+ {
1362
+ displayName: 'Label ID',
1363
+ name: 'labelId',
1364
+ type: 'string',
1365
+ default: '',
1366
+ required: true,
1367
+ displayOptions: {
1368
+ show: {
1369
+ resource: ['label'],
1370
+ operation: ['delete', 'get', 'update'],
1371
+ },
1372
+ },
1373
+ },
1374
+ {
1375
+ displayName: 'Name',
1376
+ name: 'labelName',
1377
+ type: 'string',
1378
+ default: '',
1379
+ required: true,
1380
+ displayOptions: {
1381
+ show: {
1382
+ resource: ['label'],
1383
+ operation: ['create'],
1384
+ },
1385
+ },
1386
+ description: 'Name of the label',
1387
+ },
1388
+ {
1389
+ displayName: 'Additional Fields',
1390
+ name: 'labelOptions',
1391
+ type: 'collection',
1392
+ placeholder: 'Add Field',
1393
+ default: {},
1394
+ displayOptions: {
1395
+ show: {
1396
+ resource: ['label'],
1397
+ operation: ['create'],
1398
+ },
1399
+ },
1400
+ options: [
1401
+ {
1402
+ displayName: 'Color',
1403
+ name: 'color',
1404
+ type: 'options',
1405
+ options: TODOIST_COLOR_OPTIONS,
1406
+ default: '',
1407
+ description: 'The color of the label',
1408
+ },
1409
+ {
1410
+ displayName: 'Order',
1411
+ name: 'order',
1412
+ type: 'number',
1413
+ default: 0,
1414
+ description: 'Label order',
1415
+ },
1416
+ {
1417
+ displayName: 'Is Favorite',
1418
+ name: 'is_favorite',
1419
+ type: 'boolean',
1420
+ default: false,
1421
+ description: 'Whether the label is a favorite',
1422
+ },
1423
+ ],
1424
+ },
1425
+ {
1426
+ displayName: 'Update Fields',
1427
+ name: 'labelUpdateFields',
1428
+ type: 'collection',
1429
+ placeholder: 'Add Field',
1430
+ default: {},
1431
+ displayOptions: {
1432
+ show: {
1433
+ resource: ['label'],
1434
+ operation: ['update'],
1435
+ },
1436
+ },
1437
+ options: [
1438
+ {
1439
+ displayName: 'Name',
1440
+ name: 'name',
1441
+ type: 'string',
1442
+ default: '',
1443
+ description: 'Name of the label',
1444
+ },
1445
+ {
1446
+ displayName: 'Color',
1447
+ name: 'color',
1448
+ type: 'options',
1449
+ options: TODOIST_COLOR_OPTIONS,
1450
+ default: '',
1451
+ description: 'The color of the label',
1452
+ },
1453
+ {
1454
+ displayName: 'Order',
1455
+ name: 'order',
1456
+ type: 'number',
1457
+ default: 0,
1458
+ description: 'Label order',
1459
+ },
1460
+ {
1461
+ displayName: 'Is Favorite',
1462
+ name: 'is_favorite',
1463
+ type: 'boolean',
1464
+ default: false,
1465
+ description: 'Whether the label is a favorite',
1466
+ },
1467
+ ],
1468
+ },
1469
+ // Reminder fields
1470
+ {
1471
+ displayName: 'Reminder ID',
1472
+ name: 'reminderId',
1473
+ type: 'string',
1474
+ default: '',
1475
+ required: true,
1476
+ displayOptions: {
1477
+ show: {
1478
+ resource: ['reminder'],
1479
+ operation: ['delete', 'update'],
1480
+ },
1481
+ },
1482
+ },
1483
+ {
1484
+ displayName: 'Task ID',
1485
+ name: 'itemId',
1486
+ type: 'string',
1487
+ default: '',
1488
+ required: true,
1489
+ displayOptions: {
1490
+ show: {
1491
+ resource: ['reminder'],
1492
+ operation: ['create'],
1493
+ },
1494
+ },
1495
+ description: 'The ID of the task to attach reminder to',
1496
+ },
1497
+ {
1498
+ displayName: 'Due Date Type',
1499
+ name: 'dueDateType',
1500
+ type: 'options',
1501
+ options: [
1502
+ {
1503
+ name: 'Natural Language',
1504
+ value: 'natural_language',
1505
+ description: 'Human-readable date and time (e.g., "tomorrow 2pm")',
1506
+ },
1507
+ {
1508
+ name: 'Full-Day Date',
1509
+ value: 'full_day',
1510
+ description: 'Date without specific time (floating)',
1511
+ },
1512
+ {
1513
+ name: 'Floating Date with Time',
1514
+ value: 'floating_time',
1515
+ description: 'Date and time without timezone',
1516
+ },
1517
+ {
1518
+ name: 'Fixed Timezone Date with Time',
1519
+ value: 'fixed_timezone',
1520
+ description: 'Date and time with specific timezone',
1521
+ },
1522
+ ],
1523
+ default: 'natural_language',
1524
+ required: true,
1525
+ displayOptions: {
1526
+ show: {
1527
+ resource: ['reminder'],
1528
+ operation: ['create'],
1529
+ },
1530
+ },
1531
+ description: 'How to specify when the reminder should trigger',
1532
+ },
1533
+ {
1534
+ displayName: 'Natural Language Representation',
1535
+ name: 'natural_language_representation',
1536
+ type: 'string',
1537
+ default: '',
1538
+ placeholder: 'e.g., "tomorrow 2pm", "monday 10:45am"',
1539
+ required: true,
1540
+ displayOptions: {
1541
+ show: {
1542
+ resource: ['reminder'],
1543
+ operation: ['create'],
1544
+ dueDateType: ['natural_language'],
1545
+ },
1546
+ },
1547
+ description: 'Human-readable date and time',
1548
+ },
1549
+ {
1550
+ displayName: 'Date',
1551
+ name: 'date',
1552
+ type: 'string',
1553
+ default: '',
1554
+ placeholder: 'YYYY-MM-DD',
1555
+ required: true,
1556
+ displayOptions: {
1557
+ show: {
1558
+ resource: ['reminder'],
1559
+ operation: ['create'],
1560
+ dueDateType: ['full_day'],
1561
+ },
1562
+ },
1563
+ description: 'Full-day date in YYYY-MM-DD format',
1564
+ },
1565
+ {
1566
+ displayName: 'Date Time',
1567
+ name: 'datetime',
1568
+ type: 'dateTime',
1569
+ default: '',
1570
+ required: true,
1571
+ displayOptions: {
1572
+ show: {
1573
+ resource: ['reminder'],
1574
+ operation: ['create'],
1575
+ dueDateType: ['floating_time'],
1576
+ },
1577
+ },
1578
+ description: 'Floating date and time (no timezone)',
1579
+ },
1580
+ {
1581
+ displayName: 'Date Time',
1582
+ name: 'datetime',
1583
+ type: 'dateTime',
1584
+ default: '',
1585
+ required: true,
1586
+ displayOptions: {
1587
+ show: {
1588
+ resource: ['reminder'],
1589
+ operation: ['create'],
1590
+ dueDateType: ['fixed_timezone'],
1591
+ },
1592
+ },
1593
+ description: 'Date and time with timezone',
1594
+ },
1595
+ {
1596
+ displayName: 'Timezone',
1597
+ name: 'timezone',
1598
+ type: 'string',
1599
+ default: '',
1600
+ placeholder: 'e.g., "America/New_York"',
1601
+ required: true,
1602
+ displayOptions: {
1603
+ show: {
1604
+ resource: ['reminder'],
1605
+ operation: ['create'],
1606
+ dueDateType: ['fixed_timezone'],
1607
+ },
1608
+ },
1609
+ description: 'Timezone for the fixed timezone date',
1610
+ },
1611
+ {
1612
+ displayName: 'Additional Fields',
1613
+ name: 'reminderOptions',
1614
+ type: 'collection',
1615
+ placeholder: 'Add Field',
1616
+ default: {},
1617
+ displayOptions: {
1618
+ show: {
1619
+ resource: ['reminder'],
1620
+ operation: ['create'],
1621
+ },
1622
+ },
1623
+ options: [
1624
+ {
1625
+ displayName: 'Type',
1626
+ name: 'type',
1627
+ type: 'options',
1628
+ options: [
1629
+ {
1630
+ name: 'Absolute',
1631
+ value: 'absolute',
1632
+ },
1633
+ {
1634
+ name: 'Relative',
1635
+ value: 'relative',
1636
+ },
1637
+ ],
1638
+ default: 'absolute',
1639
+ description: 'The reminder type',
1640
+ },
1641
+ {
1642
+ displayName: 'Minute Offset',
1643
+ name: 'minute_offset',
1644
+ type: 'number',
1645
+ default: 0,
1646
+ description: 'Minutes before the task due date',
1647
+ },
1648
+ {
1649
+ displayName: 'Notify User ID',
1650
+ name: 'notify_uid',
1651
+ type: 'string',
1652
+ default: '',
1653
+ description: 'User ID to notify (for shared tasks)',
1654
+ },
1655
+ ],
1656
+ },
1657
+ {
1658
+ displayName: 'Update Fields',
1659
+ name: 'reminderUpdateFields',
1660
+ type: 'collection',
1661
+ placeholder: 'Add Field',
1662
+ default: {},
1663
+ displayOptions: {
1664
+ show: {
1665
+ resource: ['reminder'],
1666
+ operation: ['update'],
1667
+ },
1668
+ },
1669
+ options: [
1670
+ {
1671
+ displayName: 'Due',
1672
+ name: 'due',
1673
+ type: 'collection',
1674
+ placeholder: 'Add Due Date Option',
1675
+ default: {},
1676
+ options: [
1677
+ {
1678
+ displayName: 'Natural Language',
1679
+ name: 'string',
1680
+ type: 'string',
1681
+ default: '',
1682
+ placeholder: 'e.g., "tomorrow 2pm", "monday 10:45am"',
1683
+ description: 'Human-readable date and time',
1684
+ },
1685
+ {
1686
+ displayName: 'Date',
1687
+ name: 'date',
1688
+ type: 'string',
1689
+ default: '',
1690
+ placeholder: 'YYYY-MM-DD',
1691
+ description: 'Specific date in YYYY-MM-DD format',
1692
+ },
1693
+ {
1694
+ displayName: 'Date Time',
1695
+ name: 'datetime',
1696
+ type: 'dateTime',
1697
+ default: '',
1698
+ description: 'Specific date and time',
1699
+ },
1700
+ {
1701
+ displayName: 'Timezone',
1702
+ name: 'timezone',
1703
+ type: 'string',
1704
+ default: '',
1705
+ placeholder: 'e.g., "America/New_York"',
1706
+ description: 'Timezone for the reminder',
1707
+ },
1708
+ ],
1709
+ description: 'When the reminder should trigger',
1710
+ },
1711
+ {
1712
+ displayName: 'Type',
1713
+ name: 'type',
1714
+ type: 'options',
1715
+ options: [
1716
+ {
1717
+ name: 'Absolute',
1718
+ value: 'absolute',
1719
+ },
1720
+ {
1721
+ name: 'Relative',
1722
+ value: 'relative',
1723
+ },
1724
+ ],
1725
+ default: 'absolute',
1726
+ description: 'The reminder type',
1727
+ },
1728
+ {
1729
+ displayName: 'Minute Offset',
1730
+ name: 'minute_offset',
1731
+ type: 'number',
1732
+ default: 0,
1733
+ description: 'Minutes before the task due date',
1734
+ },
1735
+ {
1736
+ displayName: 'Notify User ID',
1737
+ name: 'notify_uid',
1738
+ type: 'string',
1739
+ default: '',
1740
+ description: 'User ID to notify (for shared tasks)',
1741
+ },
1742
+ ],
1743
+ },
1744
+ ],
1745
+ };
570
1746
  class TodoistV2 {
571
1747
  description;
572
1748
  constructor(baseDescription) {
@@ -672,7 +1848,40 @@ class TodoistV2 {
672
1848
  for (let i = 0; i < length; i++) {
673
1849
  try {
674
1850
  if (resource === 'task') {
675
- responseData = await service.execute(this, operation, i);
1851
+ if (!(0, Service_1.isTaskOperationType)(operation)) {
1852
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid operation '${operation}' for task resource`);
1853
+ }
1854
+ responseData = await service.executeTask(this, operation, i);
1855
+ }
1856
+ else if (resource === 'project') {
1857
+ if (!(0, Service_1.isProjectOperationType)(operation)) {
1858
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid operation '${operation}' for project resource`);
1859
+ }
1860
+ responseData = await service.executeProject(this, operation, i);
1861
+ }
1862
+ else if (resource === 'section') {
1863
+ if (!(0, Service_1.isSectionOperationType)(operation)) {
1864
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid operation '${operation}' for section resource`);
1865
+ }
1866
+ responseData = await service.executeSection(this, operation, i);
1867
+ }
1868
+ else if (resource === 'comment') {
1869
+ if (!(0, Service_1.isCommentOperationType)(operation)) {
1870
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid operation '${operation}' for comment resource`);
1871
+ }
1872
+ responseData = await service.executeComment(this, operation, i);
1873
+ }
1874
+ else if (resource === 'label') {
1875
+ if (!(0, Service_1.isLabelOperationType)(operation)) {
1876
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid operation '${operation}' for label resource`);
1877
+ }
1878
+ responseData = await service.executeLabel(this, operation, i);
1879
+ }
1880
+ else if (resource === 'reminder') {
1881
+ if (!(0, Service_1.isReminderOperationType)(operation)) {
1882
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Invalid operation '${operation}' for reminder resource`);
1883
+ }
1884
+ responseData = await service.executeReminder(this, operation, i);
676
1885
  }
677
1886
  if (responseData !== undefined && Array.isArray(responseData?.data)) {
678
1887
  const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData.data), { itemData: { item: i } });