n8n-nodes-base 1.68.0 → 1.70.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 (344) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/credentials/MicrosoftOAuth2Api.credentials.js.map +1 -1
  3. package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.d.ts +14 -0
  4. package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js +37 -0
  5. package/dist/credentials/MicrosoftSharePointOAuth2Api.credentials.js.map +1 -0
  6. package/dist/credentials/ZabbixApi.credentials.d.ts +15 -0
  7. package/dist/credentials/ZabbixApi.credentials.js +70 -0
  8. package/dist/credentials/ZabbixApi.credentials.js.map +1 -0
  9. package/dist/credentials/icons/SharePoint.svg +59 -0
  10. package/dist/credentials/icons/Zabbix.svg +1 -0
  11. package/dist/known/credentials.json +11 -0
  12. package/dist/nodes/AiTransform/AiTransform.node.js +1 -1
  13. package/dist/nodes/AiTransform/AiTransform.node.js.map +1 -1
  14. package/dist/nodes/Airtable/v2/actions/base/Base.resource.js +17 -7
  15. package/dist/nodes/Airtable/v2/actions/base/Base.resource.js.map +1 -1
  16. package/dist/nodes/Airtable/v2/actions/record/Record.resource.js +17 -7
  17. package/dist/nodes/Airtable/v2/actions/record/Record.resource.js.map +1 -1
  18. package/dist/nodes/Airtable/v2/actions/router.js +17 -7
  19. package/dist/nodes/Airtable/v2/actions/router.js.map +1 -1
  20. package/dist/nodes/Airtable/v2/actions/versionDescription.js +17 -7
  21. package/dist/nodes/Airtable/v2/actions/versionDescription.js.map +1 -1
  22. package/dist/nodes/Airtable/v2/methods/index.js +17 -7
  23. package/dist/nodes/Airtable/v2/methods/index.js.map +1 -1
  24. package/dist/nodes/BambooHr/v1/actions/companyReport/index.js +17 -7
  25. package/dist/nodes/BambooHr/v1/actions/companyReport/index.js.map +1 -1
  26. package/dist/nodes/BambooHr/v1/actions/employee/index.js +17 -7
  27. package/dist/nodes/BambooHr/v1/actions/employee/index.js.map +1 -1
  28. package/dist/nodes/BambooHr/v1/actions/employeeDocument/index.js +17 -7
  29. package/dist/nodes/BambooHr/v1/actions/employeeDocument/index.js.map +1 -1
  30. package/dist/nodes/BambooHr/v1/actions/file/index.js +17 -7
  31. package/dist/nodes/BambooHr/v1/actions/file/index.js.map +1 -1
  32. package/dist/nodes/BambooHr/v1/actions/router.js +17 -7
  33. package/dist/nodes/BambooHr/v1/actions/router.js.map +1 -1
  34. package/dist/nodes/BambooHr/v1/actions/versionDescription.js +17 -7
  35. package/dist/nodes/BambooHr/v1/actions/versionDescription.js.map +1 -1
  36. package/dist/nodes/BambooHr/v1/methods/index.js +17 -7
  37. package/dist/nodes/BambooHr/v1/methods/index.js.map +1 -1
  38. package/dist/nodes/Code/Code.node.js +3 -2
  39. package/dist/nodes/Code/Code.node.js.map +1 -1
  40. package/dist/nodes/Code/JsTaskRunnerSandbox.d.ts +4 -2
  41. package/dist/nodes/Code/JsTaskRunnerSandbox.js +36 -11
  42. package/dist/nodes/Code/JsTaskRunnerSandbox.js.map +1 -1
  43. package/dist/nodes/Code/Pyodide.js +17 -7
  44. package/dist/nodes/Code/Pyodide.js.map +1 -1
  45. package/dist/nodes/Code/Sandbox.js +2 -2
  46. package/dist/nodes/Code/Sandbox.js.map +1 -1
  47. package/dist/nodes/Compression/Compression.node.js +17 -7
  48. package/dist/nodes/Compression/Compression.node.js.map +1 -1
  49. package/dist/nodes/Contentful/Contentful.node.js +17 -7
  50. package/dist/nodes/Contentful/Contentful.node.js.map +1 -1
  51. package/dist/nodes/Cortex/Cortex.node.js +17 -7
  52. package/dist/nodes/Cortex/Cortex.node.js.map +1 -1
  53. package/dist/nodes/CrowdDev/descriptions/memberFields.js +17 -7
  54. package/dist/nodes/CrowdDev/descriptions/memberFields.js.map +1 -1
  55. package/dist/nodes/Discord/v2/actions/channel/index.js +17 -7
  56. package/dist/nodes/Discord/v2/actions/channel/index.js.map +1 -1
  57. package/dist/nodes/Discord/v2/actions/member/index.js +17 -7
  58. package/dist/nodes/Discord/v2/actions/member/index.js.map +1 -1
  59. package/dist/nodes/Discord/v2/actions/message/index.js +17 -7
  60. package/dist/nodes/Discord/v2/actions/message/index.js.map +1 -1
  61. package/dist/nodes/Discord/v2/actions/router.js +17 -7
  62. package/dist/nodes/Discord/v2/actions/router.js.map +1 -1
  63. package/dist/nodes/Discord/v2/actions/versionDescription.js +17 -7
  64. package/dist/nodes/Discord/v2/actions/versionDescription.js.map +1 -1
  65. package/dist/nodes/Discord/v2/actions/webhook/index.js +17 -7
  66. package/dist/nodes/Discord/v2/actions/webhook/index.js.map +1 -1
  67. package/dist/nodes/Discord/v2/methods/index.js +17 -7
  68. package/dist/nodes/Discord/v2/methods/index.js.map +1 -1
  69. package/dist/nodes/Elastic/Elasticsearch/descriptions/DocumentDescription.js +17 -7
  70. package/dist/nodes/Elastic/Elasticsearch/descriptions/DocumentDescription.js.map +1 -1
  71. package/dist/nodes/Elastic/Elasticsearch/descriptions/IndexDescription.js +17 -7
  72. package/dist/nodes/Elastic/Elasticsearch/descriptions/IndexDescription.js.map +1 -1
  73. package/dist/nodes/EmailSend/v2/EmailSendV2.node.js +17 -7
  74. package/dist/nodes/EmailSend/v2/EmailSendV2.node.js.map +1 -1
  75. package/dist/nodes/ExecuteWorkflow/ExecuteWorkflow.node.js +53 -6
  76. package/dist/nodes/ExecuteWorkflow/ExecuteWorkflow.node.js.map +1 -1
  77. package/dist/nodes/FacebookLeadAds/methods/index.js +17 -7
  78. package/dist/nodes/FacebookLeadAds/methods/index.js.map +1 -1
  79. package/dist/nodes/Files/ConvertToFile/ConvertToFile.node.js +17 -7
  80. package/dist/nodes/Files/ConvertToFile/ConvertToFile.node.js.map +1 -1
  81. package/dist/nodes/Files/ConvertToFile/actions/iCall.operation.js +17 -7
  82. package/dist/nodes/Files/ConvertToFile/actions/iCall.operation.js.map +1 -1
  83. package/dist/nodes/Files/ExtractFromFile/ExtractFromFile.node.js +17 -7
  84. package/dist/nodes/Files/ExtractFromFile/ExtractFromFile.node.js.map +1 -1
  85. package/dist/nodes/Files/ExtractFromFile/actions/spreadsheet.operation.js +17 -7
  86. package/dist/nodes/Files/ExtractFromFile/actions/spreadsheet.operation.js.map +1 -1
  87. package/dist/nodes/Files/ReadWriteFile/ReadWriteFile.node.js +17 -7
  88. package/dist/nodes/Files/ReadWriteFile/ReadWriteFile.node.js.map +1 -1
  89. package/dist/nodes/Files/ReadWriteFile/actions/read.operation.js +1 -0
  90. package/dist/nodes/Files/ReadWriteFile/actions/read.operation.js.map +1 -1
  91. package/dist/nodes/Files/ReadWriteFile/helpers/utils.d.ts +1 -0
  92. package/dist/nodes/Files/ReadWriteFile/helpers/utils.js +5 -0
  93. package/dist/nodes/Files/ReadWriteFile/helpers/utils.js.map +1 -1
  94. package/dist/nodes/Form/Form.node.js +26 -16
  95. package/dist/nodes/Form/Form.node.js.map +1 -1
  96. package/dist/nodes/Form/interfaces.d.ts +6 -0
  97. package/dist/nodes/Form/interfaces.js.map +1 -1
  98. package/dist/nodes/Function/Function.node.js +3 -3
  99. package/dist/nodes/Function/Function.node.js.map +1 -1
  100. package/dist/nodes/FunctionItem/FunctionItem.node.js +3 -3
  101. package/dist/nodes/FunctionItem/FunctionItem.node.js.map +1 -1
  102. package/dist/nodes/GoToWebinar/GenericFunctions.js +17 -7
  103. package/dist/nodes/GoToWebinar/GenericFunctions.js.map +1 -1
  104. package/dist/nodes/Google/Analytics/v2/actions/report/Report.resource.js +17 -7
  105. package/dist/nodes/Google/Analytics/v2/actions/report/Report.resource.js.map +1 -1
  106. package/dist/nodes/Google/Analytics/v2/actions/router.js +17 -7
  107. package/dist/nodes/Google/Analytics/v2/actions/router.js.map +1 -1
  108. package/dist/nodes/Google/Analytics/v2/actions/userActivity/UserActivity.resource.js +17 -7
  109. package/dist/nodes/Google/Analytics/v2/actions/userActivity/UserActivity.resource.js.map +1 -1
  110. package/dist/nodes/Google/Analytics/v2/actions/versionDescription.js +17 -7
  111. package/dist/nodes/Google/Analytics/v2/actions/versionDescription.js.map +1 -1
  112. package/dist/nodes/Google/Analytics/v2/methods/index.js +17 -7
  113. package/dist/nodes/Google/Analytics/v2/methods/index.js.map +1 -1
  114. package/dist/nodes/Google/BigQuery/v2/actions/database/Database.resource.js +17 -7
  115. package/dist/nodes/Google/BigQuery/v2/actions/database/Database.resource.js.map +1 -1
  116. package/dist/nodes/Google/BigQuery/v2/actions/router.js +17 -7
  117. package/dist/nodes/Google/BigQuery/v2/actions/router.js.map +1 -1
  118. package/dist/nodes/Google/BigQuery/v2/actions/versionDescription.js +17 -7
  119. package/dist/nodes/Google/BigQuery/v2/actions/versionDescription.js.map +1 -1
  120. package/dist/nodes/Google/BigQuery/v2/methods/index.js +17 -7
  121. package/dist/nodes/Google/BigQuery/v2/methods/index.js.map +1 -1
  122. package/dist/nodes/Google/Drive/v2/actions/drive/Drive.resource.js +17 -7
  123. package/dist/nodes/Google/Drive/v2/actions/drive/Drive.resource.js.map +1 -1
  124. package/dist/nodes/Google/Drive/v2/actions/file/File.resource.js +17 -7
  125. package/dist/nodes/Google/Drive/v2/actions/file/File.resource.js.map +1 -1
  126. package/dist/nodes/Google/Drive/v2/actions/fileFolder/FileFolder.resource.js +17 -7
  127. package/dist/nodes/Google/Drive/v2/actions/fileFolder/FileFolder.resource.js.map +1 -1
  128. package/dist/nodes/Google/Drive/v2/actions/folder/Folder.resource.js +17 -7
  129. package/dist/nodes/Google/Drive/v2/actions/folder/Folder.resource.js.map +1 -1
  130. package/dist/nodes/Google/Drive/v2/actions/router.js +17 -7
  131. package/dist/nodes/Google/Drive/v2/actions/router.js.map +1 -1
  132. package/dist/nodes/Google/Drive/v2/actions/versionDescription.js +17 -7
  133. package/dist/nodes/Google/Drive/v2/actions/versionDescription.js.map +1 -1
  134. package/dist/nodes/Google/Drive/v2/methods/index.js +17 -7
  135. package/dist/nodes/Google/Drive/v2/methods/index.js.map +1 -1
  136. package/dist/nodes/Google/GenericFunctions.d.ts +2 -1
  137. package/dist/nodes/Google/GenericFunctions.js +29 -7
  138. package/dist/nodes/Google/GenericFunctions.js.map +1 -1
  139. package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js +2 -2
  140. package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js.map +1 -1
  141. package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.utils.js +17 -7
  142. package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.utils.js.map +1 -1
  143. package/dist/nodes/Google/Sheet/v2/actions/router.js +17 -7
  144. package/dist/nodes/Google/Sheet/v2/actions/router.js.map +1 -1
  145. package/dist/nodes/Google/Sheet/v2/actions/sheet/Sheet.resource.js +19 -9
  146. package/dist/nodes/Google/Sheet/v2/actions/sheet/Sheet.resource.js.map +1 -1
  147. package/dist/nodes/Google/Sheet/v2/actions/spreadsheet/SpreadSheet.resource.js +17 -7
  148. package/dist/nodes/Google/Sheet/v2/actions/spreadsheet/SpreadSheet.resource.js.map +1 -1
  149. package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js +17 -7
  150. package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js.map +1 -1
  151. package/dist/nodes/Google/Sheet/v2/methods/index.js +17 -7
  152. package/dist/nodes/Google/Sheet/v2/methods/index.js.map +1 -1
  153. package/dist/nodes/Google/YouTube/YouTube.node.js +3 -15
  154. package/dist/nodes/Google/YouTube/YouTube.node.js.map +1 -1
  155. package/dist/nodes/Google/constants.d.ts +1 -0
  156. package/dist/nodes/Google/constants.js +2 -1
  157. package/dist/nodes/Google/constants.js.map +1 -1
  158. package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js +366 -343
  159. package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js.map +1 -1
  160. package/dist/nodes/HttpRequest/test/node/workflow.use_error_output.json +97 -0
  161. package/dist/nodes/ICalendar/ICalendar.node.js +17 -7
  162. package/dist/nodes/ICalendar/ICalendar.node.js.map +1 -1
  163. package/dist/nodes/ICalendar/createEvent.operation.js +17 -7
  164. package/dist/nodes/ICalendar/createEvent.operation.js.map +1 -1
  165. package/dist/nodes/ItemLists/V1/ItemListsV1.node.js +17 -7
  166. package/dist/nodes/ItemLists/V1/ItemListsV1.node.js.map +1 -1
  167. package/dist/nodes/ItemLists/V2/ItemListsV2.node.js +17 -7
  168. package/dist/nodes/ItemLists/V2/ItemListsV2.node.js.map +1 -1
  169. package/dist/nodes/ItemLists/V3/actions/itemList/index.js +17 -7
  170. package/dist/nodes/ItemLists/V3/actions/itemList/index.js.map +1 -1
  171. package/dist/nodes/ItemLists/V3/actions/router.js +17 -7
  172. package/dist/nodes/ItemLists/V3/actions/router.js.map +1 -1
  173. package/dist/nodes/ItemLists/V3/actions/versionDescription.js +17 -7
  174. package/dist/nodes/ItemLists/V3/actions/versionDescription.js.map +1 -1
  175. package/dist/nodes/Mattermost/v1/actions/channel/index.js +17 -7
  176. package/dist/nodes/Mattermost/v1/actions/channel/index.js.map +1 -1
  177. package/dist/nodes/Mattermost/v1/actions/message/index.js +17 -7
  178. package/dist/nodes/Mattermost/v1/actions/message/index.js.map +1 -1
  179. package/dist/nodes/Mattermost/v1/actions/reaction/index.js +17 -7
  180. package/dist/nodes/Mattermost/v1/actions/reaction/index.js.map +1 -1
  181. package/dist/nodes/Mattermost/v1/actions/router.js +17 -7
  182. package/dist/nodes/Mattermost/v1/actions/router.js.map +1 -1
  183. package/dist/nodes/Mattermost/v1/actions/user/index.js +17 -7
  184. package/dist/nodes/Mattermost/v1/actions/user/index.js.map +1 -1
  185. package/dist/nodes/Mattermost/v1/actions/versionDescription.js +17 -7
  186. package/dist/nodes/Mattermost/v1/actions/versionDescription.js.map +1 -1
  187. package/dist/nodes/Mattermost/v1/methods/index.js +17 -7
  188. package/dist/nodes/Mattermost/v1/methods/index.js.map +1 -1
  189. package/dist/nodes/Merge/v2/utils.d.ts +6 -0
  190. package/dist/nodes/Merge/v3/actions/mode/index.js +17 -7
  191. package/dist/nodes/Merge/v3/actions/mode/index.js.map +1 -1
  192. package/dist/nodes/Merge/v3/actions/router.js +17 -7
  193. package/dist/nodes/Merge/v3/actions/router.js.map +1 -1
  194. package/dist/nodes/Merge/v3/actions/versionDescription.js +17 -7
  195. package/dist/nodes/Merge/v3/actions/versionDescription.js.map +1 -1
  196. package/dist/nodes/Merge/v3/helpers/utils.d.ts +6 -0
  197. package/dist/nodes/Merge/v3/methods/index.js +17 -7
  198. package/dist/nodes/Merge/v3/methods/index.js.map +1 -1
  199. package/dist/nodes/Microsoft/Excel/v2/actions/router.js +17 -7
  200. package/dist/nodes/Microsoft/Excel/v2/actions/router.js.map +1 -1
  201. package/dist/nodes/Microsoft/Excel/v2/actions/table/Table.resource.js +17 -7
  202. package/dist/nodes/Microsoft/Excel/v2/actions/table/Table.resource.js.map +1 -1
  203. package/dist/nodes/Microsoft/Excel/v2/actions/versionDescription.js +17 -7
  204. package/dist/nodes/Microsoft/Excel/v2/actions/versionDescription.js.map +1 -1
  205. package/dist/nodes/Microsoft/Excel/v2/actions/workbook/Workbook.resource.js +17 -7
  206. package/dist/nodes/Microsoft/Excel/v2/actions/workbook/Workbook.resource.js.map +1 -1
  207. package/dist/nodes/Microsoft/Excel/v2/actions/worksheet/Worksheet.resource.js +17 -7
  208. package/dist/nodes/Microsoft/Excel/v2/actions/worksheet/Worksheet.resource.js.map +1 -1
  209. package/dist/nodes/Microsoft/Excel/v2/methods/index.js +17 -7
  210. package/dist/nodes/Microsoft/Excel/v2/methods/index.js.map +1 -1
  211. package/dist/nodes/Microsoft/Outlook/v2/actions/calendar/index.js +17 -7
  212. package/dist/nodes/Microsoft/Outlook/v2/actions/calendar/index.js.map +1 -1
  213. package/dist/nodes/Microsoft/Outlook/v2/actions/contact/index.js +17 -7
  214. package/dist/nodes/Microsoft/Outlook/v2/actions/contact/index.js.map +1 -1
  215. package/dist/nodes/Microsoft/Outlook/v2/actions/draft/index.js +17 -7
  216. package/dist/nodes/Microsoft/Outlook/v2/actions/draft/index.js.map +1 -1
  217. package/dist/nodes/Microsoft/Outlook/v2/actions/event/index.js +17 -7
  218. package/dist/nodes/Microsoft/Outlook/v2/actions/event/index.js.map +1 -1
  219. package/dist/nodes/Microsoft/Outlook/v2/actions/folder/index.js +17 -7
  220. package/dist/nodes/Microsoft/Outlook/v2/actions/folder/index.js.map +1 -1
  221. package/dist/nodes/Microsoft/Outlook/v2/actions/folderMessage/index.js +17 -7
  222. package/dist/nodes/Microsoft/Outlook/v2/actions/folderMessage/index.js.map +1 -1
  223. package/dist/nodes/Microsoft/Outlook/v2/actions/message/index.js +17 -7
  224. package/dist/nodes/Microsoft/Outlook/v2/actions/message/index.js.map +1 -1
  225. package/dist/nodes/Microsoft/Outlook/v2/actions/messageAttachment/index.js +17 -7
  226. package/dist/nodes/Microsoft/Outlook/v2/actions/messageAttachment/index.js.map +1 -1
  227. package/dist/nodes/Microsoft/Outlook/v2/actions/node.description.js +17 -7
  228. package/dist/nodes/Microsoft/Outlook/v2/actions/node.description.js.map +1 -1
  229. package/dist/nodes/Microsoft/Outlook/v2/actions/router.js +17 -7
  230. package/dist/nodes/Microsoft/Outlook/v2/actions/router.js.map +1 -1
  231. package/dist/nodes/Microsoft/Outlook/v2/methods/index.js +17 -7
  232. package/dist/nodes/Microsoft/Outlook/v2/methods/index.js.map +1 -1
  233. package/dist/nodes/Microsoft/Teams/v2/actions/channel/index.js +17 -7
  234. package/dist/nodes/Microsoft/Teams/v2/actions/channel/index.js.map +1 -1
  235. package/dist/nodes/Microsoft/Teams/v2/actions/channelMessage/index.js +17 -7
  236. package/dist/nodes/Microsoft/Teams/v2/actions/channelMessage/index.js.map +1 -1
  237. package/dist/nodes/Microsoft/Teams/v2/actions/chatMessage/index.js +17 -7
  238. package/dist/nodes/Microsoft/Teams/v2/actions/chatMessage/index.js.map +1 -1
  239. package/dist/nodes/Microsoft/Teams/v2/actions/router.js +17 -7
  240. package/dist/nodes/Microsoft/Teams/v2/actions/router.js.map +1 -1
  241. package/dist/nodes/Microsoft/Teams/v2/actions/task/index.js +17 -7
  242. package/dist/nodes/Microsoft/Teams/v2/actions/task/index.js.map +1 -1
  243. package/dist/nodes/Microsoft/Teams/v2/actions/versionDescription.js +17 -7
  244. package/dist/nodes/Microsoft/Teams/v2/actions/versionDescription.js.map +1 -1
  245. package/dist/nodes/Microsoft/Teams/v2/methods/index.js +17 -7
  246. package/dist/nodes/Microsoft/Teams/v2/methods/index.js.map +1 -1
  247. package/dist/nodes/MongoDb/GenericFunctions.js +2 -2
  248. package/dist/nodes/MySql/v2/actions/database/Database.resource.js +17 -7
  249. package/dist/nodes/MySql/v2/actions/database/Database.resource.js.map +1 -1
  250. package/dist/nodes/MySql/v2/actions/router.js +17 -7
  251. package/dist/nodes/MySql/v2/actions/router.js.map +1 -1
  252. package/dist/nodes/MySql/v2/actions/versionDescription.js +17 -7
  253. package/dist/nodes/MySql/v2/actions/versionDescription.js.map +1 -1
  254. package/dist/nodes/MySql/v2/methods/index.js +17 -7
  255. package/dist/nodes/MySql/v2/methods/index.js.map +1 -1
  256. package/dist/nodes/Notion/shared/methods/index.js +17 -7
  257. package/dist/nodes/Notion/shared/methods/index.js.map +1 -1
  258. package/dist/nodes/Notion/v2/methods/index.js +17 -7
  259. package/dist/nodes/Notion/v2/methods/index.js.map +1 -1
  260. package/dist/nodes/Postgres/v2/actions/database/Database.resource.js +17 -7
  261. package/dist/nodes/Postgres/v2/actions/database/Database.resource.js.map +1 -1
  262. package/dist/nodes/Postgres/v2/actions/router.js +17 -7
  263. package/dist/nodes/Postgres/v2/actions/router.js.map +1 -1
  264. package/dist/nodes/Postgres/v2/actions/versionDescription.js +17 -7
  265. package/dist/nodes/Postgres/v2/actions/versionDescription.js.map +1 -1
  266. package/dist/nodes/Postgres/v2/methods/index.js +17 -7
  267. package/dist/nodes/Postgres/v2/methods/index.js.map +1 -1
  268. package/dist/nodes/RabbitMQ/GenericFunctions.js +17 -7
  269. package/dist/nodes/RabbitMQ/GenericFunctions.js.map +1 -1
  270. package/dist/nodes/Set/v2/SetV2.node.js +17 -7
  271. package/dist/nodes/Set/v2/SetV2.node.js.map +1 -1
  272. package/dist/nodes/Simulate/methods/index.js +17 -7
  273. package/dist/nodes/Simulate/methods/index.js.map +1 -1
  274. package/dist/nodes/Slack/Slack.node.js +2 -1
  275. package/dist/nodes/Slack/Slack.node.js.map +1 -1
  276. package/dist/nodes/Slack/V2/GenericFunctions.d.ts +2 -1
  277. package/dist/nodes/Slack/V2/GenericFunctions.js +5 -2
  278. package/dist/nodes/Slack/V2/GenericFunctions.js.map +1 -1
  279. package/dist/nodes/Slack/V2/MessageInterface.d.ts +26 -0
  280. package/dist/nodes/Slack/V2/SlackV2.node.js +1 -1
  281. package/dist/nodes/Slack/V2/SlackV2.node.js.map +1 -1
  282. package/dist/nodes/Splunk/v2/actions/alert/index.js +17 -7
  283. package/dist/nodes/Splunk/v2/actions/alert/index.js.map +1 -1
  284. package/dist/nodes/Splunk/v2/actions/report/index.js +17 -7
  285. package/dist/nodes/Splunk/v2/actions/report/index.js.map +1 -1
  286. package/dist/nodes/Splunk/v2/actions/router.js +17 -7
  287. package/dist/nodes/Splunk/v2/actions/router.js.map +1 -1
  288. package/dist/nodes/Splunk/v2/actions/search/index.js +17 -7
  289. package/dist/nodes/Splunk/v2/actions/search/index.js.map +1 -1
  290. package/dist/nodes/Splunk/v2/actions/user/index.js +17 -7
  291. package/dist/nodes/Splunk/v2/actions/user/index.js.map +1 -1
  292. package/dist/nodes/Splunk/v2/actions/versionDescription.js +17 -7
  293. package/dist/nodes/Splunk/v2/actions/versionDescription.js.map +1 -1
  294. package/dist/nodes/Splunk/v2/methods/index.js +17 -7
  295. package/dist/nodes/Splunk/v2/methods/index.js.map +1 -1
  296. package/dist/nodes/SpreadsheetFile/v2/SpreadsheetFileV2.node.js +17 -7
  297. package/dist/nodes/SpreadsheetFile/v2/SpreadsheetFileV2.node.js.map +1 -1
  298. package/dist/nodes/SyncroMSP/v1/actions/contact/index.js +17 -7
  299. package/dist/nodes/SyncroMSP/v1/actions/contact/index.js.map +1 -1
  300. package/dist/nodes/SyncroMSP/v1/actions/customer/index.js +17 -7
  301. package/dist/nodes/SyncroMSP/v1/actions/customer/index.js.map +1 -1
  302. package/dist/nodes/SyncroMSP/v1/actions/rmm/index.js +17 -7
  303. package/dist/nodes/SyncroMSP/v1/actions/rmm/index.js.map +1 -1
  304. package/dist/nodes/SyncroMSP/v1/actions/router.js +17 -7
  305. package/dist/nodes/SyncroMSP/v1/actions/router.js.map +1 -1
  306. package/dist/nodes/SyncroMSP/v1/actions/ticket/index.js +17 -7
  307. package/dist/nodes/SyncroMSP/v1/actions/ticket/index.js.map +1 -1
  308. package/dist/nodes/SyncroMSP/v1/actions/versionDescription.js +17 -7
  309. package/dist/nodes/SyncroMSP/v1/actions/versionDescription.js.map +1 -1
  310. package/dist/nodes/SyncroMSP/v1/methods/index.js +17 -7
  311. package/dist/nodes/SyncroMSP/v1/methods/index.js.map +1 -1
  312. package/dist/nodes/TheHiveProject/actions/alert/index.js +17 -7
  313. package/dist/nodes/TheHiveProject/actions/alert/index.js.map +1 -1
  314. package/dist/nodes/TheHiveProject/actions/case/index.js +17 -7
  315. package/dist/nodes/TheHiveProject/actions/case/index.js.map +1 -1
  316. package/dist/nodes/TheHiveProject/actions/comment/index.js +17 -7
  317. package/dist/nodes/TheHiveProject/actions/comment/index.js.map +1 -1
  318. package/dist/nodes/TheHiveProject/actions/log/index.js +17 -7
  319. package/dist/nodes/TheHiveProject/actions/log/index.js.map +1 -1
  320. package/dist/nodes/TheHiveProject/actions/node.description.js +17 -7
  321. package/dist/nodes/TheHiveProject/actions/node.description.js.map +1 -1
  322. package/dist/nodes/TheHiveProject/actions/observable/index.js +17 -7
  323. package/dist/nodes/TheHiveProject/actions/observable/index.js.map +1 -1
  324. package/dist/nodes/TheHiveProject/actions/page/index.js +17 -7
  325. package/dist/nodes/TheHiveProject/actions/page/index.js.map +1 -1
  326. package/dist/nodes/TheHiveProject/actions/query/index.js +17 -7
  327. package/dist/nodes/TheHiveProject/actions/query/index.js.map +1 -1
  328. package/dist/nodes/TheHiveProject/actions/router.js +17 -7
  329. package/dist/nodes/TheHiveProject/actions/router.js.map +1 -1
  330. package/dist/nodes/TheHiveProject/actions/task/index.js +17 -7
  331. package/dist/nodes/TheHiveProject/actions/task/index.js.map +1 -1
  332. package/dist/nodes/TheHiveProject/methods/index.js +17 -7
  333. package/dist/nodes/TheHiveProject/methods/index.js.map +1 -1
  334. package/dist/nodes/Venafi/ProtectCloud/GenericFunctions.js +17 -7
  335. package/dist/nodes/Venafi/ProtectCloud/GenericFunctions.js.map +1 -1
  336. package/dist/nodes/Webflow/V2/actions/Item/Item.resource.js +17 -7
  337. package/dist/nodes/Webflow/V2/actions/Item/Item.resource.js.map +1 -1
  338. package/dist/nodes/Webflow/V2/actions/router.js +17 -7
  339. package/dist/nodes/Webflow/V2/actions/router.js.map +1 -1
  340. package/dist/nodes/Webflow/V2/actions/versionDescription.js +17 -7
  341. package/dist/nodes/Webflow/V2/actions/versionDescription.js.map +1 -1
  342. package/dist/types/credentials.json +2 -0
  343. package/dist/types/nodes.json +6 -6
  344. package/package.json +7 -5
@@ -64,6 +64,7 @@ class HttpRequestV3 {
64
64
  uri: '',
65
65
  };
66
66
  let returnItems = [];
67
+ const errorItems = {};
67
68
  const requestPromises = [];
68
69
  let fullResponse = false;
69
70
  let autoDetectResponseFormat = false;
@@ -72,400 +73,415 @@ class HttpRequestV3 {
72
73
  });
73
74
  const requests = [];
74
75
  for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
75
- if (authentication === 'genericCredentialType') {
76
- genericCredentialType = this.getNodeParameter('genericAuthType', 0);
77
- if (genericCredentialType === 'httpBasicAuth') {
78
- httpBasicAuth = await this.getCredentials('httpBasicAuth', itemIndex);
76
+ try {
77
+ if (authentication === 'genericCredentialType') {
78
+ genericCredentialType = this.getNodeParameter('genericAuthType', 0);
79
+ if (genericCredentialType === 'httpBasicAuth') {
80
+ httpBasicAuth = await this.getCredentials('httpBasicAuth', itemIndex);
81
+ }
82
+ else if (genericCredentialType === 'httpDigestAuth') {
83
+ httpDigestAuth = await this.getCredentials('httpDigestAuth', itemIndex);
84
+ }
85
+ else if (genericCredentialType === 'httpHeaderAuth') {
86
+ httpHeaderAuth = await this.getCredentials('httpHeaderAuth', itemIndex);
87
+ }
88
+ else if (genericCredentialType === 'httpQueryAuth') {
89
+ httpQueryAuth = await this.getCredentials('httpQueryAuth', itemIndex);
90
+ }
91
+ else if (genericCredentialType === 'httpCustomAuth') {
92
+ httpCustomAuth = await this.getCredentials('httpCustomAuth', itemIndex);
93
+ }
94
+ else if (genericCredentialType === 'oAuth1Api') {
95
+ oAuth1Api = await this.getCredentials('oAuth1Api', itemIndex);
96
+ }
97
+ else if (genericCredentialType === 'oAuth2Api') {
98
+ oAuth2Api = await this.getCredentials('oAuth2Api', itemIndex);
99
+ }
79
100
  }
80
- else if (genericCredentialType === 'httpDigestAuth') {
81
- httpDigestAuth = await this.getCredentials('httpDigestAuth', itemIndex);
101
+ else if (authentication === 'predefinedCredentialType') {
102
+ nodeCredentialType = this.getNodeParameter('nodeCredentialType', itemIndex);
103
+ }
104
+ const provideSslCertificates = this.getNodeParameter('provideSslCertificates', itemIndex, false);
105
+ if (provideSslCertificates) {
106
+ sslCertificates = await this.getCredentials('httpSslAuth', itemIndex);
107
+ }
108
+ const requestMethod = this.getNodeParameter('method', itemIndex);
109
+ const sendQuery = this.getNodeParameter('sendQuery', itemIndex, false);
110
+ const queryParameters = this.getNodeParameter('queryParameters.parameters', itemIndex, []);
111
+ const specifyQuery = this.getNodeParameter('specifyQuery', itemIndex, 'keypair');
112
+ const jsonQueryParameter = this.getNodeParameter('jsonQuery', itemIndex, '');
113
+ const sendBody = this.getNodeParameter('sendBody', itemIndex, false);
114
+ const bodyContentType = this.getNodeParameter('contentType', itemIndex, '');
115
+ const specifyBody = this.getNodeParameter('specifyBody', itemIndex, '');
116
+ const bodyParameters = this.getNodeParameter('bodyParameters.parameters', itemIndex, []);
117
+ const jsonBodyParameter = this.getNodeParameter('jsonBody', itemIndex, '');
118
+ const body = this.getNodeParameter('body', itemIndex, '');
119
+ const sendHeaders = this.getNodeParameter('sendHeaders', itemIndex, false);
120
+ const headerParameters = this.getNodeParameter('headerParameters.parameters', itemIndex, []);
121
+ const specifyHeaders = this.getNodeParameter('specifyHeaders', itemIndex, 'keypair');
122
+ const jsonHeadersParameter = this.getNodeParameter('jsonHeaders', itemIndex, '');
123
+ const { redirect, batching, proxy, timeout, allowUnauthorizedCerts, queryParameterArrays, response, lowercaseHeaders, } = this.getNodeParameter('options', itemIndex, {});
124
+ const url = this.getNodeParameter('url', itemIndex);
125
+ const responseFormat = response?.response?.responseFormat || 'autodetect';
126
+ fullResponse = response?.response?.fullResponse || false;
127
+ autoDetectResponseFormat = responseFormat === 'autodetect';
128
+ const batchSize = batching?.batch?.batchSize > 0 ? batching?.batch?.batchSize : 1;
129
+ const batchInterval = batching?.batch.batchInterval;
130
+ if (itemIndex > 0 && batchSize >= 0 && batchInterval > 0) {
131
+ if (itemIndex % batchSize === 0) {
132
+ await (0, n8n_workflow_1.sleep)(batchInterval);
133
+ }
82
134
  }
83
- else if (genericCredentialType === 'httpHeaderAuth') {
84
- httpHeaderAuth = await this.getCredentials('httpHeaderAuth', itemIndex);
135
+ requestOptions = {
136
+ headers: {},
137
+ method: requestMethod,
138
+ uri: url,
139
+ gzip: true,
140
+ rejectUnauthorized: !allowUnauthorizedCerts || false,
141
+ followRedirect: false,
142
+ resolveWithFullResponse: true,
143
+ };
144
+ if (requestOptions.method !== 'GET' && nodeVersion >= 4.1) {
145
+ requestOptions = { ...requestOptions, followAllRedirects: false };
85
146
  }
86
- else if (genericCredentialType === 'httpQueryAuth') {
87
- httpQueryAuth = await this.getCredentials('httpQueryAuth', itemIndex);
147
+ const defaultRedirect = nodeVersion >= 4 && redirect === undefined;
148
+ if (redirect?.redirect?.followRedirects || defaultRedirect) {
149
+ requestOptions.followRedirect = true;
150
+ requestOptions.followAllRedirects = true;
88
151
  }
89
- else if (genericCredentialType === 'httpCustomAuth') {
90
- httpCustomAuth = await this.getCredentials('httpCustomAuth', itemIndex);
152
+ if (redirect?.redirect?.maxRedirects || defaultRedirect) {
153
+ requestOptions.maxRedirects = redirect?.redirect?.maxRedirects;
91
154
  }
92
- else if (genericCredentialType === 'oAuth1Api') {
93
- oAuth1Api = await this.getCredentials('oAuth1Api', itemIndex);
155
+ if (response?.response?.neverError) {
156
+ requestOptions.simple = false;
94
157
  }
95
- else if (genericCredentialType === 'oAuth2Api') {
96
- oAuth2Api = await this.getCredentials('oAuth2Api', itemIndex);
158
+ if (proxy) {
159
+ requestOptions.proxy = proxy;
97
160
  }
98
- }
99
- else if (authentication === 'predefinedCredentialType') {
100
- nodeCredentialType = this.getNodeParameter('nodeCredentialType', itemIndex);
101
- }
102
- const provideSslCertificates = this.getNodeParameter('provideSslCertificates', itemIndex, false);
103
- if (provideSslCertificates) {
104
- sslCertificates = await this.getCredentials('httpSslAuth', itemIndex);
105
- }
106
- const requestMethod = this.getNodeParameter('method', itemIndex);
107
- const sendQuery = this.getNodeParameter('sendQuery', itemIndex, false);
108
- const queryParameters = this.getNodeParameter('queryParameters.parameters', itemIndex, []);
109
- const specifyQuery = this.getNodeParameter('specifyQuery', itemIndex, 'keypair');
110
- const jsonQueryParameter = this.getNodeParameter('jsonQuery', itemIndex, '');
111
- const sendBody = this.getNodeParameter('sendBody', itemIndex, false);
112
- const bodyContentType = this.getNodeParameter('contentType', itemIndex, '');
113
- const specifyBody = this.getNodeParameter('specifyBody', itemIndex, '');
114
- const bodyParameters = this.getNodeParameter('bodyParameters.parameters', itemIndex, []);
115
- const jsonBodyParameter = this.getNodeParameter('jsonBody', itemIndex, '');
116
- const body = this.getNodeParameter('body', itemIndex, '');
117
- const sendHeaders = this.getNodeParameter('sendHeaders', itemIndex, false);
118
- const headerParameters = this.getNodeParameter('headerParameters.parameters', itemIndex, []);
119
- const specifyHeaders = this.getNodeParameter('specifyHeaders', itemIndex, 'keypair');
120
- const jsonHeadersParameter = this.getNodeParameter('jsonHeaders', itemIndex, '');
121
- const { redirect, batching, proxy, timeout, allowUnauthorizedCerts, queryParameterArrays, response, lowercaseHeaders, } = this.getNodeParameter('options', itemIndex, {});
122
- const url = this.getNodeParameter('url', itemIndex);
123
- const responseFormat = response?.response?.responseFormat || 'autodetect';
124
- fullResponse = response?.response?.fullResponse || false;
125
- autoDetectResponseFormat = responseFormat === 'autodetect';
126
- const batchSize = batching?.batch?.batchSize > 0 ? batching?.batch?.batchSize : 1;
127
- const batchInterval = batching?.batch.batchInterval;
128
- if (itemIndex > 0 && batchSize >= 0 && batchInterval > 0) {
129
- if (itemIndex % batchSize === 0) {
130
- await (0, n8n_workflow_1.sleep)(batchInterval);
161
+ if (timeout) {
162
+ requestOptions.timeout = timeout;
131
163
  }
132
- }
133
- requestOptions = {
134
- headers: {},
135
- method: requestMethod,
136
- uri: url,
137
- gzip: true,
138
- rejectUnauthorized: !allowUnauthorizedCerts || false,
139
- followRedirect: false,
140
- resolveWithFullResponse: true,
141
- };
142
- if (requestOptions.method !== 'GET' && nodeVersion >= 4.1) {
143
- requestOptions = { ...requestOptions, followAllRedirects: false };
144
- }
145
- const defaultRedirect = nodeVersion >= 4 && redirect === undefined;
146
- if (redirect?.redirect?.followRedirects || defaultRedirect) {
147
- requestOptions.followRedirect = true;
148
- requestOptions.followAllRedirects = true;
149
- }
150
- if (redirect?.redirect?.maxRedirects || defaultRedirect) {
151
- requestOptions.maxRedirects = redirect?.redirect?.maxRedirects;
152
- }
153
- if (response?.response?.neverError) {
154
- requestOptions.simple = false;
155
- }
156
- if (proxy) {
157
- requestOptions.proxy = proxy;
158
- }
159
- if (timeout) {
160
- requestOptions.timeout = timeout;
161
- }
162
- else {
163
- requestOptions.timeout = 300_000;
164
- }
165
- if (sendQuery && queryParameterArrays) {
166
- Object.assign(requestOptions, {
167
- qsStringifyOptions: { arrayFormat: queryParameterArrays },
168
- });
169
- }
170
- const parametersToKeyValue = async (accumulator, cur) => {
171
- if (cur.parameterType === 'formBinaryData') {
172
- if (!cur.inputDataFieldName)
164
+ else {
165
+ requestOptions.timeout = 300_000;
166
+ }
167
+ if (sendQuery && queryParameterArrays) {
168
+ Object.assign(requestOptions, {
169
+ qsStringifyOptions: { arrayFormat: queryParameterArrays },
170
+ });
171
+ }
172
+ const parametersToKeyValue = async (accumulator, cur) => {
173
+ if (cur.parameterType === 'formBinaryData') {
174
+ if (!cur.inputDataFieldName)
175
+ return accumulator;
176
+ const binaryData = this.helpers.assertBinaryData(itemIndex, cur.inputDataFieldName);
177
+ let uploadData;
178
+ const itemBinaryData = items[itemIndex].binary[cur.inputDataFieldName];
179
+ if (itemBinaryData.id) {
180
+ uploadData = await this.helpers.getBinaryStream(itemBinaryData.id);
181
+ }
182
+ else {
183
+ uploadData = Buffer.from(itemBinaryData.data, n8n_workflow_1.BINARY_ENCODING);
184
+ }
185
+ accumulator[cur.name] = {
186
+ value: uploadData,
187
+ options: {
188
+ filename: binaryData.fileName,
189
+ contentType: binaryData.mimeType,
190
+ },
191
+ };
173
192
  return accumulator;
174
- const binaryData = this.helpers.assertBinaryData(itemIndex, cur.inputDataFieldName);
175
- let uploadData;
176
- const itemBinaryData = items[itemIndex].binary[cur.inputDataFieldName];
177
- if (itemBinaryData.id) {
178
- uploadData = await this.helpers.getBinaryStream(itemBinaryData.id);
179
- }
180
- else {
181
- uploadData = Buffer.from(itemBinaryData.data, n8n_workflow_1.BINARY_ENCODING);
182
193
  }
183
- accumulator[cur.name] = {
184
- value: uploadData,
185
- options: {
186
- filename: binaryData.fileName,
187
- contentType: binaryData.mimeType,
188
- },
189
- };
194
+ accumulator[cur.name] = cur.value;
190
195
  return accumulator;
196
+ };
197
+ if (sendBody && bodyParameters) {
198
+ if (specifyBody === 'keypair' || bodyContentType === 'multipart-form-data') {
199
+ requestOptions.body = await (0, GenericFunctions_1.prepareRequestBody)(bodyParameters, bodyContentType, nodeVersion, parametersToKeyValue);
200
+ }
201
+ else if (specifyBody === 'json') {
202
+ if (typeof jsonBodyParameter !== 'object' && jsonBodyParameter !== null) {
203
+ try {
204
+ JSON.parse(jsonBodyParameter);
205
+ }
206
+ catch {
207
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'JSON parameter needs to be valid JSON', {
208
+ itemIndex,
209
+ });
210
+ }
211
+ requestOptions.body = (0, n8n_workflow_1.jsonParse)(jsonBodyParameter);
212
+ }
213
+ else {
214
+ requestOptions.body = jsonBodyParameter;
215
+ }
216
+ }
217
+ else if (specifyBody === 'string') {
218
+ requestOptions.body = Object.fromEntries(new URLSearchParams(body));
219
+ }
191
220
  }
192
- accumulator[cur.name] = cur.value;
193
- return accumulator;
194
- };
195
- if (sendBody && bodyParameters) {
196
- if (specifyBody === 'keypair' || bodyContentType === 'multipart-form-data') {
197
- requestOptions.body = await (0, GenericFunctions_1.prepareRequestBody)(bodyParameters, bodyContentType, nodeVersion, parametersToKeyValue);
221
+ if (sendBody && ['PATCH', 'POST', 'PUT', 'GET'].includes(requestMethod)) {
222
+ if (bodyContentType === 'multipart-form-data') {
223
+ requestOptions.formData = requestOptions.body;
224
+ delete requestOptions.body;
225
+ }
226
+ else if (bodyContentType === 'form-urlencoded') {
227
+ requestOptions.form = requestOptions.body;
228
+ delete requestOptions.body;
229
+ }
230
+ else if (bodyContentType === 'binaryData') {
231
+ const inputDataFieldName = this.getNodeParameter('inputDataFieldName', itemIndex);
232
+ let uploadData;
233
+ let contentLength;
234
+ const itemBinaryData = this.helpers.assertBinaryData(itemIndex, inputDataFieldName);
235
+ if (itemBinaryData.id) {
236
+ uploadData = await this.helpers.getBinaryStream(itemBinaryData.id);
237
+ const metadata = await this.helpers.getBinaryMetadata(itemBinaryData.id);
238
+ contentLength = metadata.fileSize;
239
+ }
240
+ else {
241
+ uploadData = Buffer.from(itemBinaryData.data, n8n_workflow_1.BINARY_ENCODING);
242
+ contentLength = uploadData.length;
243
+ }
244
+ requestOptions.body = uploadData;
245
+ requestOptions.headers = {
246
+ ...requestOptions.headers,
247
+ 'content-length': contentLength,
248
+ 'content-type': itemBinaryData.mimeType ?? 'application/octet-stream',
249
+ };
250
+ }
251
+ else if (bodyContentType === 'raw') {
252
+ requestOptions.body = body;
253
+ }
198
254
  }
199
- else if (specifyBody === 'json') {
200
- if (typeof jsonBodyParameter !== 'object' && jsonBodyParameter !== null) {
255
+ if (sendQuery && queryParameters) {
256
+ if (specifyQuery === 'keypair') {
257
+ requestOptions.qs = await (0, GenericFunctions_1.reduceAsync)(queryParameters, parametersToKeyValue);
258
+ }
259
+ else if (specifyQuery === 'json') {
201
260
  try {
202
- JSON.parse(jsonBodyParameter);
261
+ JSON.parse(jsonQueryParameter);
203
262
  }
204
263
  catch {
205
264
  throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'JSON parameter needs to be valid JSON', {
206
265
  itemIndex,
207
266
  });
208
267
  }
209
- requestOptions.body = (0, n8n_workflow_1.jsonParse)(jsonBodyParameter);
210
- }
211
- else {
212
- requestOptions.body = jsonBodyParameter;
268
+ requestOptions.qs = (0, n8n_workflow_1.jsonParse)(jsonQueryParameter);
213
269
  }
214
270
  }
215
- else if (specifyBody === 'string') {
216
- requestOptions.body = Object.fromEntries(new URLSearchParams(body));
217
- }
218
- }
219
- if (sendBody && ['PATCH', 'POST', 'PUT', 'GET'].includes(requestMethod)) {
220
- if (bodyContentType === 'multipart-form-data') {
221
- requestOptions.formData = requestOptions.body;
222
- delete requestOptions.body;
223
- }
224
- else if (bodyContentType === 'form-urlencoded') {
225
- requestOptions.form = requestOptions.body;
226
- delete requestOptions.body;
227
- }
228
- else if (bodyContentType === 'binaryData') {
229
- const inputDataFieldName = this.getNodeParameter('inputDataFieldName', itemIndex);
230
- let uploadData;
231
- let contentLength;
232
- const itemBinaryData = this.helpers.assertBinaryData(itemIndex, inputDataFieldName);
233
- if (itemBinaryData.id) {
234
- uploadData = await this.helpers.getBinaryStream(itemBinaryData.id);
235
- const metadata = await this.helpers.getBinaryMetadata(itemBinaryData.id);
236
- contentLength = metadata.fileSize;
271
+ if (sendHeaders && headerParameters) {
272
+ let additionalHeaders = {};
273
+ if (specifyHeaders === 'keypair') {
274
+ additionalHeaders = await (0, GenericFunctions_1.reduceAsync)(headerParameters.filter((header) => header.name), parametersToKeyValue);
237
275
  }
238
- else {
239
- uploadData = Buffer.from(itemBinaryData.data, n8n_workflow_1.BINARY_ENCODING);
240
- contentLength = uploadData.length;
276
+ else if (specifyHeaders === 'json') {
277
+ try {
278
+ JSON.parse(jsonHeadersParameter);
279
+ }
280
+ catch {
281
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'JSON parameter needs to be valid JSON', {
282
+ itemIndex,
283
+ });
284
+ }
285
+ additionalHeaders = (0, n8n_workflow_1.jsonParse)(jsonHeadersParameter);
241
286
  }
242
- requestOptions.body = uploadData;
243
287
  requestOptions.headers = {
244
288
  ...requestOptions.headers,
245
- 'content-length': contentLength,
246
- 'content-type': itemBinaryData.mimeType ?? 'application/octet-stream',
289
+ ...(lowercaseHeaders === undefined || lowercaseHeaders
290
+ ? (0, utilities_1.keysToLowercase)(additionalHeaders)
291
+ : additionalHeaders),
247
292
  };
248
293
  }
249
- else if (bodyContentType === 'raw') {
250
- requestOptions.body = body;
294
+ if (autoDetectResponseFormat || responseFormat === 'file') {
295
+ requestOptions.encoding = null;
296
+ requestOptions.json = false;
297
+ requestOptions.useStream = true;
251
298
  }
252
- }
253
- if (sendQuery && queryParameters) {
254
- if (specifyQuery === 'keypair') {
255
- requestOptions.qs = await (0, GenericFunctions_1.reduceAsync)(queryParameters, parametersToKeyValue);
299
+ else if (bodyContentType === 'raw') {
300
+ requestOptions.json = false;
301
+ requestOptions.useStream = true;
256
302
  }
257
- else if (specifyQuery === 'json') {
258
- try {
259
- JSON.parse(jsonQueryParameter);
260
- }
261
- catch {
262
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'JSON parameter needs to be valid JSON', {
263
- itemIndex,
264
- });
265
- }
266
- requestOptions.qs = (0, n8n_workflow_1.jsonParse)(jsonQueryParameter);
303
+ else {
304
+ requestOptions.json = true;
267
305
  }
268
- }
269
- if (sendHeaders && headerParameters) {
270
- let additionalHeaders = {};
271
- if (specifyHeaders === 'keypair') {
272
- additionalHeaders = await (0, GenericFunctions_1.reduceAsync)(headerParameters.filter((header) => header.name), parametersToKeyValue);
273
- }
274
- else if (specifyHeaders === 'json') {
275
- try {
276
- JSON.parse(jsonHeadersParameter);
277
- }
278
- catch {
279
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'JSON parameter needs to be valid JSON', {
280
- itemIndex,
281
- });
306
+ if (bodyContentType === 'raw') {
307
+ if (requestOptions.headers === undefined) {
308
+ requestOptions.headers = {};
282
309
  }
283
- additionalHeaders = (0, n8n_workflow_1.jsonParse)(jsonHeadersParameter);
284
- }
285
- requestOptions.headers = {
286
- ...requestOptions.headers,
287
- ...(lowercaseHeaders === undefined || lowercaseHeaders
288
- ? (0, utilities_1.keysToLowercase)(additionalHeaders)
289
- : additionalHeaders),
290
- };
291
- }
292
- if (autoDetectResponseFormat || responseFormat === 'file') {
293
- requestOptions.encoding = null;
294
- requestOptions.json = false;
295
- requestOptions.useStream = true;
296
- }
297
- else if (bodyContentType === 'raw') {
298
- requestOptions.json = false;
299
- requestOptions.useStream = true;
300
- }
301
- else {
302
- requestOptions.json = true;
303
- }
304
- if (bodyContentType === 'raw') {
305
- if (requestOptions.headers === undefined) {
306
- requestOptions.headers = {};
307
- }
308
- const rawContentType = this.getNodeParameter('rawContentType', itemIndex);
309
- requestOptions.headers['content-type'] = rawContentType;
310
- }
311
- const authDataKeys = {};
312
- (0, GenericFunctions_1.setAgentOptions)(requestOptions, sslCertificates);
313
- if (requestOptions.agentOptions) {
314
- authDataKeys.agentOptions = Object.keys(requestOptions.agentOptions);
315
- }
316
- if (httpBasicAuth !== undefined) {
317
- requestOptions.auth = {
318
- user: httpBasicAuth.user,
319
- pass: httpBasicAuth.password,
320
- };
321
- authDataKeys.auth = ['pass'];
322
- }
323
- if (httpHeaderAuth !== undefined) {
324
- requestOptions.headers[httpHeaderAuth.name] = httpHeaderAuth.value;
325
- authDataKeys.headers = [httpHeaderAuth.name];
326
- }
327
- if (httpQueryAuth !== undefined) {
328
- if (!requestOptions.qs) {
329
- requestOptions.qs = {};
330
- }
331
- requestOptions.qs[httpQueryAuth.name] = httpQueryAuth.value;
332
- authDataKeys.qs = [httpQueryAuth.name];
333
- }
334
- if (httpDigestAuth !== undefined) {
335
- requestOptions.auth = {
336
- user: httpDigestAuth.user,
337
- pass: httpDigestAuth.password,
338
- sendImmediately: false,
339
- };
340
- authDataKeys.auth = ['pass'];
341
- }
342
- if (httpCustomAuth !== undefined) {
343
- const customAuth = (0, n8n_workflow_1.jsonParse)(httpCustomAuth.json || '{}', { errorMessage: 'Invalid Custom Auth JSON' });
344
- if (customAuth.headers) {
345
- requestOptions.headers = { ...requestOptions.headers, ...customAuth.headers };
346
- authDataKeys.headers = Object.keys(customAuth.headers);
347
- }
348
- if (customAuth.body) {
349
- requestOptions.body = { ...requestOptions.body, ...customAuth.body };
350
- authDataKeys.body = Object.keys(customAuth.body);
351
- }
352
- if (customAuth.qs) {
353
- requestOptions.qs = { ...requestOptions.qs, ...customAuth.qs };
354
- authDataKeys.qs = Object.keys(customAuth.qs);
310
+ const rawContentType = this.getNodeParameter('rawContentType', itemIndex);
311
+ requestOptions.headers['content-type'] = rawContentType;
312
+ }
313
+ const authDataKeys = {};
314
+ (0, GenericFunctions_1.setAgentOptions)(requestOptions, sslCertificates);
315
+ if (requestOptions.agentOptions) {
316
+ authDataKeys.agentOptions = Object.keys(requestOptions.agentOptions);
317
+ }
318
+ if (httpBasicAuth !== undefined) {
319
+ requestOptions.auth = {
320
+ user: httpBasicAuth.user,
321
+ pass: httpBasicAuth.password,
322
+ };
323
+ authDataKeys.auth = ['pass'];
355
324
  }
356
- }
357
- if (requestOptions.headers.accept === undefined) {
358
- if (responseFormat === 'json') {
359
- requestOptions.headers.accept = 'application/json,text/*;q=0.99';
325
+ if (httpHeaderAuth !== undefined) {
326
+ requestOptions.headers[httpHeaderAuth.name] = httpHeaderAuth.value;
327
+ authDataKeys.headers = [httpHeaderAuth.name];
360
328
  }
361
- else if (responseFormat === 'text') {
362
- requestOptions.headers.accept =
363
- 'application/json,text/html,application/xhtml+xml,application/xml,text/*;q=0.9, */*;q=0.1';
364
- }
365
- else {
366
- requestOptions.headers.accept =
367
- 'application/json,text/html,application/xhtml+xml,application/xml,text/*;q=0.9, image/*;q=0.8, */*;q=0.7';
329
+ if (httpQueryAuth !== undefined) {
330
+ if (!requestOptions.qs) {
331
+ requestOptions.qs = {};
332
+ }
333
+ requestOptions.qs[httpQueryAuth.name] = httpQueryAuth.value;
334
+ authDataKeys.qs = [httpQueryAuth.name];
335
+ }
336
+ if (httpDigestAuth !== undefined) {
337
+ requestOptions.auth = {
338
+ user: httpDigestAuth.user,
339
+ pass: httpDigestAuth.password,
340
+ sendImmediately: false,
341
+ };
342
+ authDataKeys.auth = ['pass'];
368
343
  }
369
- }
370
- requests.push({
371
- options: requestOptions,
372
- authKeys: authDataKeys,
373
- credentialType: nodeCredentialType,
374
- });
375
- if (pagination && pagination.paginationMode !== 'off') {
376
- let continueExpression = '={{false}}';
377
- if (pagination.paginationCompleteWhen === 'receiveSpecificStatusCodes') {
378
- const statusCodesWhenCompleted = pagination.statusCodesWhenComplete
379
- .split(',')
380
- .map((item) => parseInt(item.trim()));
381
- continueExpression = `={{ !${JSON.stringify(statusCodesWhenCompleted)}.includes($response.statusCode) }}`;
382
- }
383
- else if (pagination.paginationCompleteWhen === 'responseIsEmpty') {
384
- continueExpression =
385
- '={{ Array.isArray($response.body) ? $response.body.length : !!$response.body }}';
344
+ if (httpCustomAuth !== undefined) {
345
+ const customAuth = (0, n8n_workflow_1.jsonParse)(httpCustomAuth.json || '{}', { errorMessage: 'Invalid Custom Auth JSON' });
346
+ if (customAuth.headers) {
347
+ requestOptions.headers = { ...requestOptions.headers, ...customAuth.headers };
348
+ authDataKeys.headers = Object.keys(customAuth.headers);
349
+ }
350
+ if (customAuth.body) {
351
+ requestOptions.body = { ...requestOptions.body, ...customAuth.body };
352
+ authDataKeys.body = Object.keys(customAuth.body);
353
+ }
354
+ if (customAuth.qs) {
355
+ requestOptions.qs = { ...requestOptions.qs, ...customAuth.qs };
356
+ authDataKeys.qs = Object.keys(customAuth.qs);
357
+ }
386
358
  }
387
- else {
388
- if (!pagination.completeExpression.length || pagination.completeExpression[0] !== '=') {
389
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Invalid or empty Complete Expression');
359
+ if (requestOptions.headers.accept === undefined) {
360
+ if (responseFormat === 'json') {
361
+ requestOptions.headers.accept = 'application/json,text/*;q=0.99';
362
+ }
363
+ else if (responseFormat === 'text') {
364
+ requestOptions.headers.accept =
365
+ 'application/json,text/html,application/xhtml+xml,application/xml,text/*;q=0.9, */*;q=0.1';
366
+ }
367
+ else {
368
+ requestOptions.headers.accept =
369
+ 'application/json,text/html,application/xhtml+xml,application/xml,text/*;q=0.9, image/*;q=0.8, */*;q=0.7';
390
370
  }
391
- continueExpression = `={{ !(${pagination.completeExpression.trim().slice(3, -2)}) }}`;
392
371
  }
393
- const paginationData = {
394
- continue: continueExpression,
395
- request: {},
396
- requestInterval: pagination.requestInterval,
397
- };
398
- if (pagination.paginationMode === 'updateAParameterInEachRequest') {
399
- paginationData.request = {};
400
- const { parameters } = pagination.parameters;
401
- if (parameters.length === 1 && parameters[0].name === '' && parameters[0].value === '') {
402
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), "At least one entry with 'Name' and 'Value' filled must be included in 'Parameters' to use 'Update a Parameter in Each Request' mode ");
403
- }
404
- pagination.parameters.parameters.forEach((parameter, index) => {
405
- if (!paginationData.request[parameter.type]) {
406
- paginationData.request[parameter.type] = {};
372
+ requests.push({
373
+ options: requestOptions,
374
+ authKeys: authDataKeys,
375
+ credentialType: nodeCredentialType,
376
+ });
377
+ if (pagination && pagination.paginationMode !== 'off') {
378
+ let continueExpression = '={{false}}';
379
+ if (pagination.paginationCompleteWhen === 'receiveSpecificStatusCodes') {
380
+ const statusCodesWhenCompleted = pagination.statusCodesWhenComplete
381
+ .split(',')
382
+ .map((item) => parseInt(item.trim()));
383
+ continueExpression = `={{ !${JSON.stringify(statusCodesWhenCompleted)}.includes($response.statusCode) }}`;
384
+ }
385
+ else if (pagination.paginationCompleteWhen === 'responseIsEmpty') {
386
+ continueExpression =
387
+ '={{ Array.isArray($response.body) ? $response.body.length : !!$response.body }}';
388
+ }
389
+ else {
390
+ if (!pagination.completeExpression.length || pagination.completeExpression[0] !== '=') {
391
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Invalid or empty Complete Expression');
407
392
  }
408
- const parameterName = parameter.name;
409
- if (parameterName === '') {
410
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Parameter name must be set for parameter [${index + 1}] in pagination settings`);
393
+ continueExpression = `={{ !(${pagination.completeExpression.trim().slice(3, -2)}) }}`;
394
+ }
395
+ const paginationData = {
396
+ continue: continueExpression,
397
+ request: {},
398
+ requestInterval: pagination.requestInterval,
399
+ };
400
+ if (pagination.paginationMode === 'updateAParameterInEachRequest') {
401
+ paginationData.request = {};
402
+ const { parameters } = pagination.parameters;
403
+ if (parameters.length === 1 &&
404
+ parameters[0].name === '' &&
405
+ parameters[0].value === '') {
406
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), "At least one entry with 'Name' and 'Value' filled must be included in 'Parameters' to use 'Update a Parameter in Each Request' mode ");
411
407
  }
412
- const parameterValue = parameter.value;
413
- if (parameterValue === '') {
414
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Some value must be provided for parameter [${index + 1}] in pagination settings, omitting it will result in an infinite loop`);
408
+ pagination.parameters.parameters.forEach((parameter, index) => {
409
+ if (!paginationData.request[parameter.type]) {
410
+ paginationData.request[parameter.type] = {};
411
+ }
412
+ const parameterName = parameter.name;
413
+ if (parameterName === '') {
414
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Parameter name must be set for parameter [${index + 1}] in pagination settings`);
415
+ }
416
+ const parameterValue = parameter.value;
417
+ if (parameterValue === '') {
418
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Some value must be provided for parameter [${index + 1}] in pagination settings, omitting it will result in an infinite loop`);
419
+ }
420
+ paginationData.request[parameter.type][parameterName] = parameterValue;
421
+ });
422
+ }
423
+ else if (pagination.paginationMode === 'responseContainsNextURL') {
424
+ paginationData.request.url = pagination.nextURL;
425
+ }
426
+ if (pagination.limitPagesFetched) {
427
+ paginationData.maxRequests = pagination.maxRequests;
428
+ }
429
+ if (responseFormat === 'file') {
430
+ paginationData.binaryResult = true;
431
+ }
432
+ const requestPromise = this.helpers.requestWithAuthenticationPaginated
433
+ .call(this, requestOptions, itemIndex, paginationData, nodeCredentialType ?? genericCredentialType)
434
+ .catch((error) => {
435
+ if (error instanceof n8n_workflow_1.NodeOperationError && error.type === 'invalid_url') {
436
+ const urlParameterName = pagination.paginationMode === 'responseContainsNextURL' ? 'Next URL' : 'URL';
437
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error.message, {
438
+ description: `Make sure the "${urlParameterName}" parameter evaluates to a valid URL.`,
439
+ });
415
440
  }
416
- paginationData.request[parameter.type][parameterName] = parameterValue;
441
+ throw error;
417
442
  });
443
+ requestPromises.push(requestPromise);
418
444
  }
419
- else if (pagination.paginationMode === 'responseContainsNextURL') {
420
- paginationData.request.url = pagination.nextURL;
421
- }
422
- if (pagination.limitPagesFetched) {
423
- paginationData.maxRequests = pagination.maxRequests;
424
- }
425
- if (responseFormat === 'file') {
426
- paginationData.binaryResult = true;
427
- }
428
- const requestPromise = this.helpers.requestWithAuthenticationPaginated
429
- .call(this, requestOptions, itemIndex, paginationData, nodeCredentialType ?? genericCredentialType)
430
- .catch((error) => {
431
- if (error instanceof n8n_workflow_1.NodeOperationError && error.type === 'invalid_url') {
432
- const urlParameterName = pagination.paginationMode === 'responseContainsNextURL' ? 'Next URL' : 'URL';
433
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), error.message, {
434
- description: `Make sure the "${urlParameterName}" parameter evaluates to a valid URL.`,
445
+ else if (authentication === 'genericCredentialType' || authentication === 'none') {
446
+ if (oAuth1Api) {
447
+ const requestOAuth1 = this.helpers.requestOAuth1.call(this, 'oAuth1Api', requestOptions);
448
+ requestOAuth1.catch(() => { });
449
+ requestPromises.push(requestOAuth1);
450
+ }
451
+ else if (oAuth2Api) {
452
+ const requestOAuth2 = this.helpers.requestOAuth2.call(this, 'oAuth2Api', requestOptions, {
453
+ tokenType: 'Bearer',
435
454
  });
455
+ requestOAuth2.catch(() => { });
456
+ requestPromises.push(requestOAuth2);
457
+ }
458
+ else {
459
+ const request = this.helpers.request(requestOptions);
460
+ request.catch(() => { });
461
+ requestPromises.push(request);
436
462
  }
437
- throw error;
438
- });
439
- requestPromises.push(requestPromise);
440
- }
441
- else if (authentication === 'genericCredentialType' || authentication === 'none') {
442
- if (oAuth1Api) {
443
- const requestOAuth1 = this.helpers.requestOAuth1.call(this, 'oAuth1Api', requestOptions);
444
- requestOAuth1.catch(() => { });
445
- requestPromises.push(requestOAuth1);
446
- }
447
- else if (oAuth2Api) {
448
- const requestOAuth2 = this.helpers.requestOAuth2.call(this, 'oAuth2Api', requestOptions, {
449
- tokenType: 'Bearer',
450
- });
451
- requestOAuth2.catch(() => { });
452
- requestPromises.push(requestOAuth2);
453
463
  }
454
- else {
455
- const request = this.helpers.request(requestOptions);
456
- request.catch(() => { });
457
- requestPromises.push(request);
464
+ else if (authentication === 'predefinedCredentialType' && nodeCredentialType) {
465
+ const additionalOAuth2Options = (0, GenericFunctions_1.getOAuth2AdditionalParameters)(nodeCredentialType);
466
+ const requestWithAuthentication = this.helpers.requestWithAuthentication.call(this, nodeCredentialType, requestOptions, additionalOAuth2Options && { oauth2: additionalOAuth2Options }, itemIndex);
467
+ requestWithAuthentication.catch(() => { });
468
+ requestPromises.push(requestWithAuthentication);
458
469
  }
459
470
  }
460
- else if (authentication === 'predefinedCredentialType' && nodeCredentialType) {
461
- const additionalOAuth2Options = (0, GenericFunctions_1.getOAuth2AdditionalParameters)(nodeCredentialType);
462
- const requestWithAuthentication = this.helpers.requestWithAuthentication.call(this, nodeCredentialType, requestOptions, additionalOAuth2Options && { oauth2: additionalOAuth2Options }, itemIndex);
463
- requestWithAuthentication.catch(() => { });
464
- requestPromises.push(requestWithAuthentication);
471
+ catch (error) {
472
+ if (!this.continueOnFail())
473
+ throw error;
474
+ requestPromises.push(Promise.reject(error).catch(() => { }));
475
+ errorItems[itemIndex] = error.message;
476
+ continue;
465
477
  }
466
478
  }
467
479
  const sanitizedRequests = [];
468
- const promisesResponses = await Promise.allSettled(requestPromises.map(async (requestPromise, itemIndex) => await requestPromise.finally(async () => {
480
+ const promisesResponses = await Promise.allSettled(requestPromises.map(async (requestPromise, itemIndex) => await requestPromise
481
+ .then((response) => response)
482
+ .finally(async () => {
483
+ if (errorItems[itemIndex])
484
+ return;
469
485
  try {
470
486
  const { options, authKeys, credentialType } = requests[itemIndex];
471
487
  let secrets = [];
@@ -483,6 +499,13 @@ class HttpRequestV3 {
483
499
  let responseData;
484
500
  for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
485
501
  responseData = promisesResponses.shift();
502
+ if (errorItems[itemIndex]) {
503
+ returnItems.push({
504
+ json: { error: errorItems[itemIndex] },
505
+ pairedItem: { item: itemIndex },
506
+ });
507
+ continue;
508
+ }
486
509
  if (responseData.status !== 'fulfilled') {
487
510
  if (responseData.reason.statusCode === 429) {
488
511
  responseData.reason.message =