@limetech/n8n-nodes-lime 0.5.0 → 2.3.1-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/.github/workflows/lint.yml +3 -1
  2. package/.github/workflows/release.yml +2 -49
  3. package/.github/workflows/test-and-build.yml +1 -1
  4. package/.releaserc.json +2 -1
  5. package/CHANGELOG.md +122 -0
  6. package/README.md +1 -1
  7. package/credentials/LimeCrmApi.credentials.ts +38 -1
  8. package/credentials/index.ts +2 -0
  9. package/eslint.config.mjs +2 -1
  10. package/knip.json +9 -0
  11. package/nodes/fortnox/index.ts +6 -0
  12. package/nodes/fortnox/resources/customers/index.ts +18 -22
  13. package/nodes/fortnox/resources/customers/operations/create.operation.ts +12 -8
  14. package/nodes/fortnox/resources/customers/operations/delete.operation.ts +10 -15
  15. package/nodes/fortnox/resources/customers/operations/get.operation.ts +10 -15
  16. package/nodes/fortnox/resources/customers/operations/getAll.operation.ts +1 -2
  17. package/nodes/fortnox/resources/customers/operations/index.ts +5 -0
  18. package/nodes/fortnox/resources/customers/operations/update.operation.ts +30 -30
  19. package/nodes/fortnox/resources/invoice/index.ts +16 -18
  20. package/nodes/fortnox/resources/invoice/model.ts +0 -4
  21. package/nodes/fortnox/resources/invoice/operations/create.operation.ts +1 -2
  22. package/nodes/fortnox/resources/invoice/operations/get.operation.ts +10 -15
  23. package/nodes/fortnox/resources/invoice/operations/getAll.operation.ts +1 -2
  24. package/nodes/fortnox/resources/invoice/operations/index.ts +4 -0
  25. package/nodes/fortnox/resources/invoice/operations/update.operation.ts +11 -16
  26. package/nodes/fortnox/transport/index.ts +14 -11
  27. package/nodes/index.ts +4 -0
  28. package/nodes/lime-crm/LimeCrmNode.node.ts +81 -11
  29. package/nodes/lime-crm/LimeCrmTrigger.node.ts +70 -30
  30. package/nodes/lime-crm/index.ts +9 -0
  31. package/nodes/lime-crm/methods/getLimetypeProperties.ts +51 -8
  32. package/nodes/lime-crm/methods/getLimetypes.ts +14 -9
  33. package/nodes/lime-crm/methods/index.ts +1 -1
  34. package/nodes/lime-crm/models/constants.ts +73 -0
  35. package/nodes/lime-crm/models/index.ts +21 -0
  36. package/nodes/lime-crm/models/limeobject.ts +13 -0
  37. package/nodes/lime-crm/models/limetype.ts +47 -0
  38. package/nodes/lime-crm/models/propertyTypes.ts +13 -0
  39. package/nodes/lime-crm/models/users.ts +46 -0
  40. package/nodes/lime-crm/models/webhook.ts +61 -0
  41. package/nodes/lime-crm/resources/admin/index.ts +89 -0
  42. package/nodes/lime-crm/resources/admin/operations/getManyUsers.operation.ts +166 -0
  43. package/nodes/lime-crm/resources/admin/operations/getSingleUser.operation.ts +113 -0
  44. package/nodes/lime-crm/resources/admin/operations/index.ts +8 -0
  45. package/nodes/lime-crm/resources/data/index.ts +68 -31
  46. package/nodes/lime-crm/resources/data/operations/{createSingleObject.ts → createSingleObject.operation.ts} +82 -26
  47. package/nodes/lime-crm/resources/data/operations/{deleteSingleObject.ts → deleteSingleObject.operation.ts} +32 -4
  48. package/nodes/lime-crm/resources/data/operations/{getManyObjects.ts → getManyObjects.operation.ts} +191 -48
  49. package/nodes/lime-crm/resources/data/operations/{getSingleFile.ts → getSingleFile.operation.ts} +36 -12
  50. package/nodes/lime-crm/resources/data/operations/{getSingleObject.ts → getSingleObject.operation.ts} +39 -6
  51. package/nodes/lime-crm/resources/data/operations/index.ts +24 -0
  52. package/nodes/lime-crm/resources/data/operations/updateSingleObject.operation.ts +55 -17
  53. package/nodes/lime-crm/resources/metadata/index.ts +56 -16
  54. package/nodes/lime-crm/resources/metadata/operations/getAllLimetypes.operation.ts +15 -5
  55. package/nodes/lime-crm/resources/metadata/operations/{getSingleFileMetadata.ts → getSingleFileMetadata.operation.ts} +31 -14
  56. package/nodes/lime-crm/resources/metadata/operations/{getSingleLimetype.ts → getSingleLimetype.operation.ts} +23 -1
  57. package/nodes/lime-crm/resources/metadata/operations/index.ts +12 -0
  58. package/nodes/lime-crm/transport/commons.ts +86 -28
  59. package/nodes/lime-crm/transport/files.ts +149 -84
  60. package/nodes/lime-crm/transport/index.ts +35 -17
  61. package/nodes/lime-crm/transport/limeQuery.ts +42 -6
  62. package/nodes/lime-crm/transport/limeobjects.ts +102 -179
  63. package/nodes/lime-crm/transport/limetypes.ts +126 -70
  64. package/nodes/lime-crm/transport/users.ts +264 -0
  65. package/nodes/lime-crm/transport/webhooks.ts +96 -37
  66. package/nodes/lime-crm/{commons → utils}/files.ts +75 -39
  67. package/nodes/lime-crm/utils/hmac.ts +35 -0
  68. package/nodes/lime-crm/utils/index.ts +10 -0
  69. package/nodes/lime-crm/utils/propertyAdapters.ts +75 -0
  70. package/nodes/lime-crm/utils/webhook.ts +81 -0
  71. package/nodes/modules.ts +44 -0
  72. package/nodes/response.ts +16 -0
  73. package/package.json +18 -27
  74. package/tests/nodes/lime-crm/utils.spec.ts +238 -0
  75. package/typedoc.css +9 -0
  76. package/typedoc.json +19 -0
  77. package/.dockerignore +0 -1
  78. package/Dockerfile +0 -21
  79. package/dist/credentials/FortnoxApi.credentials.d.ts +0 -9
  80. package/dist/credentials/FortnoxApi.credentials.js +0 -57
  81. package/dist/credentials/FortnoxApi.credentials.js.map +0 -1
  82. package/dist/credentials/LimeCrmApi.credentials.d.ts +0 -9
  83. package/dist/credentials/LimeCrmApi.credentials.js +0 -66
  84. package/dist/credentials/LimeCrmApi.credentials.js.map +0 -1
  85. package/dist/nodes/fortnox/Fortnox.node.d.ts +0 -5
  86. package/dist/nodes/fortnox/Fortnox.node.js +0 -95
  87. package/dist/nodes/fortnox/Fortnox.node.js.map +0 -1
  88. package/dist/nodes/fortnox/Fortnox.node.json +0 -18
  89. package/dist/nodes/fortnox/FortnoxTrigger.node.d.ts +0 -5
  90. package/dist/nodes/fortnox/FortnoxTrigger.node.js +0 -155
  91. package/dist/nodes/fortnox/FortnoxTrigger.node.js.map +0 -1
  92. package/dist/nodes/fortnox/FortnoxTrigger.node.json +0 -18
  93. package/dist/nodes/fortnox/commons.d.ts +0 -25
  94. package/dist/nodes/fortnox/commons.js +0 -44
  95. package/dist/nodes/fortnox/commons.js.map +0 -1
  96. package/dist/nodes/fortnox/fortnoxLogo.svg +0 -15
  97. package/dist/nodes/fortnox/model.d.ts +0 -20
  98. package/dist/nodes/fortnox/model.js +0 -3
  99. package/dist/nodes/fortnox/model.js.map +0 -1
  100. package/dist/nodes/fortnox/resources/customers/filterParameters.d.ts +0 -2
  101. package/dist/nodes/fortnox/resources/customers/filterParameters.js +0 -31
  102. package/dist/nodes/fortnox/resources/customers/filterParameters.js.map +0 -1
  103. package/dist/nodes/fortnox/resources/customers/index.d.ts +0 -20
  104. package/dist/nodes/fortnox/resources/customers/index.js +0 -87
  105. package/dist/nodes/fortnox/resources/customers/index.js.map +0 -1
  106. package/dist/nodes/fortnox/resources/customers/model.d.ts +0 -99
  107. package/dist/nodes/fortnox/resources/customers/model.js +0 -3
  108. package/dist/nodes/fortnox/resources/customers/model.js.map +0 -1
  109. package/dist/nodes/fortnox/resources/customers/operations/create.operation.d.ts +0 -12
  110. package/dist/nodes/fortnox/resources/customers/operations/create.operation.js +0 -283
  111. package/dist/nodes/fortnox/resources/customers/operations/create.operation.js.map +0 -1
  112. package/dist/nodes/fortnox/resources/customers/operations/delete.operation.d.ts +0 -10
  113. package/dist/nodes/fortnox/resources/customers/operations/delete.operation.js +0 -45
  114. package/dist/nodes/fortnox/resources/customers/operations/delete.operation.js.map +0 -1
  115. package/dist/nodes/fortnox/resources/customers/operations/get.operation.d.ts +0 -11
  116. package/dist/nodes/fortnox/resources/customers/operations/get.operation.js +0 -45
  117. package/dist/nodes/fortnox/resources/customers/operations/get.operation.js.map +0 -1
  118. package/dist/nodes/fortnox/resources/customers/operations/getAll.operation.d.ts +0 -11
  119. package/dist/nodes/fortnox/resources/customers/operations/getAll.operation.js +0 -68
  120. package/dist/nodes/fortnox/resources/customers/operations/getAll.operation.js.map +0 -1
  121. package/dist/nodes/fortnox/resources/customers/operations/update.operation.d.ts +0 -12
  122. package/dist/nodes/fortnox/resources/customers/operations/update.operation.js +0 -276
  123. package/dist/nodes/fortnox/resources/customers/operations/update.operation.js.map +0 -1
  124. package/dist/nodes/fortnox/resources/customers/sortParameters.d.ts +0 -2
  125. package/dist/nodes/fortnox/resources/customers/sortParameters.js +0 -30
  126. package/dist/nodes/fortnox/resources/customers/sortParameters.js.map +0 -1
  127. package/dist/nodes/fortnox/resources/invoice/filterParameters.d.ts +0 -2
  128. package/dist/nodes/fortnox/resources/invoice/filterParameters.js +0 -72
  129. package/dist/nodes/fortnox/resources/invoice/filterParameters.js.map +0 -1
  130. package/dist/nodes/fortnox/resources/invoice/index.d.ts +0 -20
  131. package/dist/nodes/fortnox/resources/invoice/index.js +0 -81
  132. package/dist/nodes/fortnox/resources/invoice/index.js.map +0 -1
  133. package/dist/nodes/fortnox/resources/invoice/invoiceParameters.d.ts +0 -2
  134. package/dist/nodes/fortnox/resources/invoice/invoiceParameters.js +0 -193
  135. package/dist/nodes/fortnox/resources/invoice/invoiceParameters.js.map +0 -1
  136. package/dist/nodes/fortnox/resources/invoice/model.d.ts +0 -150
  137. package/dist/nodes/fortnox/resources/invoice/model.js +0 -3
  138. package/dist/nodes/fortnox/resources/invoice/model.js.map +0 -1
  139. package/dist/nodes/fortnox/resources/invoice/operations/create.operation.d.ts +0 -11
  140. package/dist/nodes/fortnox/resources/invoice/operations/create.operation.js +0 -64
  141. package/dist/nodes/fortnox/resources/invoice/operations/create.operation.js.map +0 -1
  142. package/dist/nodes/fortnox/resources/invoice/operations/get.operation.d.ts +0 -11
  143. package/dist/nodes/fortnox/resources/invoice/operations/get.operation.js +0 -44
  144. package/dist/nodes/fortnox/resources/invoice/operations/get.operation.js.map +0 -1
  145. package/dist/nodes/fortnox/resources/invoice/operations/getAll.operation.d.ts +0 -11
  146. package/dist/nodes/fortnox/resources/invoice/operations/getAll.operation.js +0 -92
  147. package/dist/nodes/fortnox/resources/invoice/operations/getAll.operation.js.map +0 -1
  148. package/dist/nodes/fortnox/resources/invoice/operations/update.operation.d.ts +0 -11
  149. package/dist/nodes/fortnox/resources/invoice/operations/update.operation.js +0 -71
  150. package/dist/nodes/fortnox/resources/invoice/operations/update.operation.js.map +0 -1
  151. package/dist/nodes/fortnox/transport/errorCodes.d.ts +0 -1
  152. package/dist/nodes/fortnox/transport/errorCodes.js +0 -50
  153. package/dist/nodes/fortnox/transport/errorCodes.js.map +0 -1
  154. package/dist/nodes/fortnox/transport/index.d.ts +0 -4
  155. package/dist/nodes/fortnox/transport/index.js +0 -77
  156. package/dist/nodes/fortnox/transport/index.js.map +0 -1
  157. package/dist/nodes/lime-crm/LimeCrm.node.json +0 -18
  158. package/dist/nodes/lime-crm/LimeCrmNode.node.d.ts +0 -14
  159. package/dist/nodes/lime-crm/LimeCrmNode.node.js +0 -126
  160. package/dist/nodes/lime-crm/LimeCrmNode.node.js.map +0 -1
  161. package/dist/nodes/lime-crm/LimeCrmTrigger.node.d.ts +0 -18
  162. package/dist/nodes/lime-crm/LimeCrmTrigger.node.js +0 -215
  163. package/dist/nodes/lime-crm/LimeCrmTrigger.node.js.map +0 -1
  164. package/dist/nodes/lime-crm/assets/lime-crm.svg +0 -1
  165. package/dist/nodes/lime-crm/commons/constants.d.ts +0 -5
  166. package/dist/nodes/lime-crm/commons/constants.js +0 -9
  167. package/dist/nodes/lime-crm/commons/constants.js.map +0 -1
  168. package/dist/nodes/lime-crm/commons/hmac.d.ts +0 -1
  169. package/dist/nodes/lime-crm/commons/hmac.js +0 -11
  170. package/dist/nodes/lime-crm/commons/hmac.js.map +0 -1
  171. package/dist/nodes/lime-crm/commons/index.d.ts +0 -3
  172. package/dist/nodes/lime-crm/commons/index.js +0 -12
  173. package/dist/nodes/lime-crm/commons/index.js.map +0 -1
  174. package/dist/nodes/lime-crm/commons/limetype.d.ts +0 -10
  175. package/dist/nodes/lime-crm/commons/limetype.js +0 -3
  176. package/dist/nodes/lime-crm/commons/limetype.js.map +0 -1
  177. package/dist/nodes/lime-crm/commons/task.d.ts +0 -14
  178. package/dist/nodes/lime-crm/commons/task.js +0 -48
  179. package/dist/nodes/lime-crm/commons/task.js.map +0 -1
  180. package/dist/nodes/lime-crm/commons/webhook.d.ts +0 -20
  181. package/dist/nodes/lime-crm/commons/webhook.js +0 -30
  182. package/dist/nodes/lime-crm/commons/webhook.js.map +0 -1
  183. package/dist/nodes/lime-crm/methods/getEntitiesForErpSystem.d.ts +0 -5
  184. package/dist/nodes/lime-crm/methods/getEntitiesForErpSystem.js +0 -11
  185. package/dist/nodes/lime-crm/methods/getEntitiesForErpSystem.js.map +0 -1
  186. package/dist/nodes/lime-crm/methods/getLimeTypeProperties.d.ts +0 -2
  187. package/dist/nodes/lime-crm/methods/getLimeTypeProperties.js +0 -20
  188. package/dist/nodes/lime-crm/methods/getLimeTypeProperties.js.map +0 -1
  189. package/dist/nodes/lime-crm/methods/getLimeTypes.d.ts +0 -2
  190. package/dist/nodes/lime-crm/methods/getLimeTypes.js +0 -20
  191. package/dist/nodes/lime-crm/methods/getLimeTypes.js.map +0 -1
  192. package/dist/nodes/lime-crm/methods/index.d.ts +0 -3
  193. package/dist/nodes/lime-crm/methods/index.js +0 -10
  194. package/dist/nodes/lime-crm/methods/index.js.map +0 -1
  195. package/dist/nodes/lime-crm/resources/erpConnector/index.d.ts +0 -23
  196. package/dist/nodes/lime-crm/resources/erpConnector/index.js +0 -67
  197. package/dist/nodes/lime-crm/resources/erpConnector/index.js.map +0 -1
  198. package/dist/nodes/lime-crm/resources/erpConnector/operations/createOrUpdateObjects.operation.d.ts +0 -26
  199. package/dist/nodes/lime-crm/resources/erpConnector/operations/createOrUpdateObjects.operation.js +0 -65
  200. package/dist/nodes/lime-crm/resources/erpConnector/operations/createOrUpdateObjects.operation.js.map +0 -1
  201. package/dist/nodes/lime-crm/resources/erpConnector/operations/transform.operation.d.ts +0 -9
  202. package/dist/nodes/lime-crm/resources/erpConnector/operations/transform.operation.js +0 -220
  203. package/dist/nodes/lime-crm/resources/erpConnector/operations/transform.operation.js.map +0 -1
  204. package/dist/nodes/lime-crm/resources/erpConnector/transform.d.ts +0 -15
  205. package/dist/nodes/lime-crm/resources/erpConnector/transform.js +0 -11
  206. package/dist/nodes/lime-crm/resources/erpConnector/transform.js.map +0 -1
  207. package/dist/nodes/lime-crm/resources/erpConnector/transformers/baseTransformer.d.ts +0 -4
  208. package/dist/nodes/lime-crm/resources/erpConnector/transformers/baseTransformer.js +0 -7
  209. package/dist/nodes/lime-crm/resources/erpConnector/transformers/baseTransformer.js.map +0 -1
  210. package/dist/nodes/lime-crm/resources/erpConnector/transformers/fortnox.d.ts +0 -37
  211. package/dist/nodes/lime-crm/resources/erpConnector/transformers/fortnox.js +0 -124
  212. package/dist/nodes/lime-crm/resources/erpConnector/transformers/fortnox.js.map +0 -1
  213. package/dist/nodes/lime-crm/resources/erpConnector/transformers/index.d.ts +0 -1
  214. package/dist/nodes/lime-crm/resources/erpConnector/transformers/index.js +0 -6
  215. package/dist/nodes/lime-crm/resources/erpConnector/transformers/index.js.map +0 -1
  216. package/dist/nodes/lime-crm/resources/limeObject/index.d.ts +0 -14
  217. package/dist/nodes/lime-crm/resources/limeObject/index.js +0 -88
  218. package/dist/nodes/lime-crm/resources/limeObject/index.js.map +0 -1
  219. package/dist/nodes/lime-crm/resources/limeObject/operations/create.operation.d.ts +0 -9
  220. package/dist/nodes/lime-crm/resources/limeObject/operations/create.operation.js +0 -139
  221. package/dist/nodes/lime-crm/resources/limeObject/operations/create.operation.js.map +0 -1
  222. package/dist/nodes/lime-crm/resources/limeObject/operations/delete.operation.d.ts +0 -9
  223. package/dist/nodes/lime-crm/resources/limeObject/operations/delete.operation.js +0 -51
  224. package/dist/nodes/lime-crm/resources/limeObject/operations/delete.operation.js.map +0 -1
  225. package/dist/nodes/lime-crm/resources/limeObject/operations/fetchMany.operation.d.ts +0 -9
  226. package/dist/nodes/lime-crm/resources/limeObject/operations/fetchMany.operation.js +0 -103
  227. package/dist/nodes/lime-crm/resources/limeObject/operations/fetchMany.operation.js.map +0 -1
  228. package/dist/nodes/lime-crm/resources/limeObject/operations/get.operation.d.ts +0 -9
  229. package/dist/nodes/lime-crm/resources/limeObject/operations/get.operation.js +0 -51
  230. package/dist/nodes/lime-crm/resources/limeObject/operations/get.operation.js.map +0 -1
  231. package/dist/nodes/lime-crm/resources/limeObject/operations/search.operation.d.ts +0 -9
  232. package/dist/nodes/lime-crm/resources/limeObject/operations/search.operation.js +0 -103
  233. package/dist/nodes/lime-crm/resources/limeObject/operations/search.operation.js.map +0 -1
  234. package/dist/nodes/lime-crm/resources/limeObject/operations/update.operation.d.ts +0 -9
  235. package/dist/nodes/lime-crm/resources/limeObject/operations/update.operation.js +0 -149
  236. package/dist/nodes/lime-crm/resources/limeObject/operations/update.operation.js.map +0 -1
  237. package/dist/nodes/lime-crm/resources/limeQuery/index.d.ts +0 -6
  238. package/dist/nodes/lime-crm/resources/limeQuery/index.js +0 -66
  239. package/dist/nodes/lime-crm/resources/limeQuery/index.js.map +0 -1
  240. package/dist/nodes/lime-crm/resources/limeQuery/operations/query.operation.d.ts +0 -9
  241. package/dist/nodes/lime-crm/resources/limeQuery/operations/query.operation.js +0 -191
  242. package/dist/nodes/lime-crm/resources/limeQuery/operations/query.operation.js.map +0 -1
  243. package/dist/nodes/lime-crm/resources/limeType/index.d.ts +0 -20
  244. package/dist/nodes/lime-crm/resources/limeType/index.js +0 -81
  245. package/dist/nodes/lime-crm/resources/limeType/index.js.map +0 -1
  246. package/dist/nodes/lime-crm/resources/limeType/operations/getProperties.operation.d.ts +0 -11
  247. package/dist/nodes/lime-crm/resources/limeType/operations/getProperties.operation.js +0 -36
  248. package/dist/nodes/lime-crm/resources/limeType/operations/getProperties.operation.js.map +0 -1
  249. package/dist/nodes/lime-crm/resources/limeType/operations/getType.operation.d.ts +0 -9
  250. package/dist/nodes/lime-crm/resources/limeType/operations/getType.operation.js +0 -36
  251. package/dist/nodes/lime-crm/resources/limeType/operations/getType.operation.js.map +0 -1
  252. package/dist/nodes/lime-crm/resources/limeType/operations/listTypes.operation.d.ts +0 -10
  253. package/dist/nodes/lime-crm/resources/limeType/operations/listTypes.operation.js +0 -15
  254. package/dist/nodes/lime-crm/resources/limeType/operations/listTypes.operation.js.map +0 -1
  255. package/dist/nodes/lime-crm/transport/commons.d.ts +0 -5
  256. package/dist/nodes/lime-crm/transport/commons.js +0 -33
  257. package/dist/nodes/lime-crm/transport/commons.js.map +0 -1
  258. package/dist/nodes/lime-crm/transport/erpConnector.d.ts +0 -9
  259. package/dist/nodes/lime-crm/transport/erpConnector.js +0 -11
  260. package/dist/nodes/lime-crm/transport/erpConnector.js.map +0 -1
  261. package/dist/nodes/lime-crm/transport/index.d.ts +0 -6
  262. package/dist/nodes/lime-crm/transport/index.js +0 -24
  263. package/dist/nodes/lime-crm/transport/index.js.map +0 -1
  264. package/dist/nodes/lime-crm/transport/limeQuery.d.ts +0 -10
  265. package/dist/nodes/lime-crm/transport/limeQuery.js +0 -15
  266. package/dist/nodes/lime-crm/transport/limeQuery.js.map +0 -1
  267. package/dist/nodes/lime-crm/transport/limeobjects.d.ts +0 -7
  268. package/dist/nodes/lime-crm/transport/limeobjects.js +0 -134
  269. package/dist/nodes/lime-crm/transport/limeobjects.js.map +0 -1
  270. package/dist/nodes/lime-crm/transport/limetypes.d.ts +0 -6
  271. package/dist/nodes/lime-crm/transport/limetypes.js +0 -54
  272. package/dist/nodes/lime-crm/transport/limetypes.js.map +0 -1
  273. package/dist/nodes/lime-crm/transport/task.d.ts +0 -13
  274. package/dist/nodes/lime-crm/transport/task.js +0 -13
  275. package/dist/nodes/lime-crm/transport/task.js.map +0 -1
  276. package/dist/nodes/lime-crm/transport/webhooks.d.ts +0 -16
  277. package/dist/nodes/lime-crm/transport/webhooks.js +0 -43
  278. package/dist/nodes/lime-crm/transport/webhooks.js.map +0 -1
  279. package/dist/nodes/nodeResponse.d.ts +0 -12
  280. package/dist/nodes/nodeResponse.js +0 -3
  281. package/dist/nodes/nodeResponse.js.map +0 -1
  282. package/dist/package.json +0 -75
  283. package/dist/tsconfig.tsbuildinfo +0 -1
  284. package/docker-compose.yml +0 -52
  285. package/nodes/lime-crm/commons/constants.ts +0 -9
  286. package/nodes/lime-crm/commons/hmac.ts +0 -13
  287. package/nodes/lime-crm/commons/index.ts +0 -10
  288. package/nodes/lime-crm/commons/task.ts +0 -55
  289. package/nodes/lime-crm/commons/webhook.ts +0 -68
  290. package/nodes/lime-crm/methods/getEntitiesForErpSystem.ts +0 -11
  291. package/nodes/lime-crm/model.ts +0 -22
  292. package/nodes/lime-crm/resources/erpConnector/index.ts +0 -43
  293. package/nodes/lime-crm/resources/erpConnector/operations/createOrUpdateObjects.operation.ts +0 -69
  294. package/nodes/lime-crm/resources/erpConnector/operations/transform.operation.ts +0 -274
  295. package/nodes/lime-crm/resources/erpConnector/transform.ts +0 -49
  296. package/nodes/lime-crm/resources/erpConnector/transformers/baseTransformer.ts +0 -18
  297. package/nodes/lime-crm/resources/erpConnector/transformers/fortnox.ts +0 -201
  298. package/nodes/lime-crm/resources/erpConnector/transformers/index.ts +0 -1
  299. package/nodes/lime-crm/transport/erpConnector.ts +0 -21
  300. package/nodes/lime-crm/transport/task.ts +0 -32
  301. package/nodes/nodeResponse.ts +0 -13
  302. package/tests/fixtures/fortnox.ts +0 -182
  303. package/tests/transform.spec.ts +0 -187
@@ -4,10 +4,15 @@ import {
4
4
  NodePropertyTypes,
5
5
  } from 'n8n-workflow';
6
6
 
7
- import * as create from './operations/create.operation';
8
- import * as get from './operations/get.operation';
9
- import * as getAll from './operations/getAll.operation';
10
- import * as update from './operations/update.operation';
7
+ import * as operations from './operations';
8
+ import { N8NOperationModuleHandler } from '../../../modules';
9
+
10
+ const moduleHandler = new N8NOperationModuleHandler([
11
+ operations.createSingleInvoice,
12
+ operations.getManyInvoices,
13
+ operations.getSingleInvoice,
14
+ operations.updateSingleInvoice,
15
+ ]);
11
16
 
12
17
  export const invoiceProperties: INodeProperties[] = [
13
18
  {
@@ -20,18 +25,10 @@ export const invoiceProperties: INodeProperties[] = [
20
25
  resource: ['invoice'],
21
26
  },
22
27
  },
23
- options: [
24
- create.description,
25
- get.description,
26
- getAll.description,
27
- update.description,
28
- ],
28
+ options: moduleHandler.getDescriptions(),
29
29
  default: 'getAll',
30
30
  },
31
- ...create.properties,
32
- ...get.properties,
33
- ...getAll.properties,
34
- ...update.properties,
31
+ ...moduleHandler.getProperties(),
35
32
  ];
36
33
 
37
34
  export async function invoiceOperations(
@@ -39,13 +36,14 @@ export async function invoiceOperations(
39
36
  { operation, i }: { operation: string; i: number }
40
37
  ) {
41
38
  if (operation === 'create') {
42
- return await create.execute.call(this, i);
39
+ return await operations.createSingleInvoice.execute.call(this, i);
43
40
  } else if (operation === 'get') {
44
- return await get.execute.call(this, i);
41
+ return await operations.getSingleInvoice.execute.call(this, i);
45
42
  } else if (operation === 'getAll') {
46
- return await getAll.execute.call(this, i);
43
+ return await operations.getManyInvoices.execute.call(this, i);
47
44
  } else if (operation === 'update') {
48
- return await update.execute.call(this, i);
45
+ return await operations.updateSingleInvoice.execute.call(this, i);
49
46
  }
50
47
  return null;
51
48
  }
49
+ export * from './operations';
@@ -147,10 +147,6 @@ export interface CreateInvoiceResponse {
147
147
  Invoice: Invoice;
148
148
  }
149
149
 
150
- export interface UpdateInvoiceResponse {
151
- Invoice: Invoice;
152
- }
153
-
154
150
  export interface GetInvoiceResponse extends ResponseModel {
155
151
  Invoice: InvoiceBase;
156
152
  }
@@ -2,7 +2,6 @@ import { IExecuteFunctions, INodeProperties, IDataObject } from 'n8n-workflow';
2
2
  import { apiRequest } from '../../../transport';
3
3
  import { CreateInvoiceResponse } from '../model';
4
4
  import { invoiceParameters } from '../invoiceParameters';
5
- import { NodeResponse } from '../../../../nodeResponse';
6
5
 
7
6
  export const description = {
8
7
  name: 'Create',
@@ -44,7 +43,7 @@ export const properties: INodeProperties[] = [
44
43
  export async function execute(
45
44
  this: IExecuteFunctions,
46
45
  i: number
47
- ): Promise<NodeResponse<CreateInvoiceResponse>> {
46
+ ): Promise<CreateInvoiceResponse> {
48
47
  const customerNumber = this.getNodeParameter('customerNumber', i, {});
49
48
  const createParameters = this.getNodeParameter('createParameters', i, {});
50
49
 
@@ -1,7 +1,6 @@
1
1
  import { IExecuteFunctions, INodeProperties } from 'n8n-workflow';
2
2
  import { apiRequest } from '../../../transport';
3
3
  import { GetInvoiceResponse } from '../model';
4
- import { NodeResponse } from '../../../../nodeResponse';
5
4
 
6
5
  export const description = {
7
6
  name: 'Get',
@@ -29,7 +28,7 @@ export const properties: INodeProperties[] = [
29
28
  export async function execute(
30
29
  this: IExecuteFunctions,
31
30
  i: number
32
- ): Promise<NodeResponse<GetInvoiceResponse>> {
31
+ ): Promise<GetInvoiceResponse> {
33
32
  const documentNumber = this.getNodeParameter(
34
33
  'documentNumber',
35
34
  i,
@@ -38,18 +37,14 @@ export async function execute(
38
37
 
39
38
  const endpoint = `invoices/${encodeURIComponent(documentNumber)}`;
40
39
 
41
- const response = await apiRequest<GetInvoiceResponse>(this, {
42
- method: 'GET',
43
- endpoint: endpoint,
44
- });
45
-
46
- if (response.success) return response;
47
-
48
- return {
49
- ...response,
50
- metadata: {
51
- ...response.metadata,
52
- id: documentNumber,
40
+ return await apiRequest<GetInvoiceResponse>(
41
+ this,
42
+ {
43
+ method: 'GET',
44
+ endpoint: endpoint,
53
45
  },
54
- };
46
+ {
47
+ id: documentNumber,
48
+ }
49
+ );
55
50
  }
@@ -2,7 +2,6 @@ import { IExecuteFunctions, INodeProperties, IDataObject } from 'n8n-workflow';
2
2
  import { apiRequest } from '../../../transport';
3
3
  import { filterParameters } from '../filterParameters';
4
4
  import { GetAllInvoicesResponse } from '../model';
5
- import { NodeResponse } from '../../../../nodeResponse';
6
5
 
7
6
  export const description = {
8
7
  name: 'Get Many',
@@ -73,7 +72,7 @@ export const properties: INodeProperties[] = [
73
72
  export async function execute(
74
73
  this: IExecuteFunctions,
75
74
  i: number
76
- ): Promise<NodeResponse<GetAllInvoicesResponse>> {
75
+ ): Promise<GetAllInvoicesResponse> {
77
76
  const filterParameters = this.getNodeParameter('filterParameters', i, {});
78
77
  const sortParameters = this.getNodeParameter('sortParameters', i, '');
79
78
 
@@ -0,0 +1,4 @@
1
+ export * as createSingleInvoice from './create.operation';
2
+ export * as getSingleInvoice from './get.operation';
3
+ export * as getManyInvoices from './getAll.operation';
4
+ export * as updateSingleInvoice from './update.operation';
@@ -2,7 +2,6 @@ import { IExecuteFunctions, INodeProperties, IDataObject } from 'n8n-workflow';
2
2
  import { apiRequest } from '../../../transport';
3
3
  import { CreateInvoiceResponse } from '../model';
4
4
  import { invoiceParameters } from '../invoiceParameters';
5
- import { NodeResponse } from '../../../../nodeResponse';
6
5
 
7
6
  export const description = {
8
7
  name: 'Update',
@@ -44,7 +43,7 @@ export const properties: INodeProperties[] = [
44
43
  export async function execute(
45
44
  this: IExecuteFunctions,
46
45
  i: number
47
- ): Promise<NodeResponse<CreateInvoiceResponse>> {
46
+ ): Promise<CreateInvoiceResponse> {
48
47
  const documentNumber = this.getNodeParameter(
49
48
  'documentNumber',
50
49
  i,
@@ -66,19 +65,15 @@ export async function execute(
66
65
 
67
66
  const endpoint = `invoices/${encodeURIComponent(documentNumber)}`;
68
67
 
69
- const response = await apiRequest<CreateInvoiceResponse>(this, {
70
- method: 'PUT',
71
- endpoint: endpoint,
72
- body: body,
73
- });
74
-
75
- if (response.success) return response;
76
-
77
- return {
78
- ...response,
79
- metadata: {
80
- ...response.metadata,
81
- id: documentNumber,
68
+ return await apiRequest<CreateInvoiceResponse>(
69
+ this,
70
+ {
71
+ method: 'PUT',
72
+ endpoint: endpoint,
73
+ body: body,
82
74
  },
83
- };
75
+ {
76
+ id: documentNumber,
77
+ }
78
+ );
84
79
  }
@@ -5,18 +5,19 @@ import {
5
5
  IRequestOptions,
6
6
  LoggerProxy as Logger,
7
7
  IHttpRequestMethods,
8
+ NodeOperationError,
8
9
  } from 'n8n-workflow';
9
10
  import { translateErrorCode } from './errorCodes';
10
11
  import { ErrorResponseModel } from '../model';
11
12
  import { FORTNOX_API_CREDENTIAL_KEY } from '../commons';
12
- import { NodeResponse } from '../../nodeResponse';
13
13
 
14
14
  export const FORTNOX_BASE_URL = 'https://api.fortnox.se/3/';
15
15
 
16
16
  export async function apiRequest<T>(
17
17
  nodeContext: IExecuteFunctions | ILoadOptionsFunctions,
18
- options: IDataObject
19
- ): Promise<NodeResponse<T>> {
18
+ options: IDataObject,
19
+ errorMetadata?: Record<string, unknown>
20
+ ): Promise<T> {
20
21
  const endpoint = options.endpoint;
21
22
  const method = options.method as IHttpRequestMethods;
22
23
  const credentials = await nodeContext.getCredentials(
@@ -52,17 +53,15 @@ export async function apiRequest<T>(
52
53
  // use request instead of requestWithAuthentication cause in the requestWithAuthentication
53
54
  // error.error is not set, so we cannot access error.error.ErrorInformation
54
55
  // and we cannot translate the error code
55
- const response = await nodeContext.helpers.request.call(
56
+ return await nodeContext.helpers.request.call(
56
57
  nodeContext,
57
58
  FORTNOX_API_CREDENTIAL_KEY,
58
59
  requestOptions
59
60
  );
60
- return {
61
- success: true,
62
- data: response,
63
- };
64
61
  } catch (error) {
65
- const errorResponse: ErrorResponseModel = error.error || {};
62
+ const errorResponse: ErrorResponseModel = error.error || {
63
+ ErrorInformation: {},
64
+ };
66
65
  // fields in ErrorInformationModel can start with lowercase or uppercase,
67
66
  // so we normalize them to lowercase for consistency
68
67
  const errorInformation = errorResponse?.ErrorInformation && {
@@ -89,15 +88,19 @@ export async function apiRequest<T>(
89
88
  } else {
90
89
  message = `API request failed [URL: ${fullUrl}][Method: ${method}]: ${error.message}`;
91
90
  }
92
- return {
93
- success: false,
91
+ const errorContext = {
94
92
  error: message,
95
93
  status: error?.cause?.status,
96
94
  metadata: {
97
95
  qs: options?.qs,
98
96
  body: options?.body,
99
97
  timeout: options?.timeout,
98
+ ...errorMetadata,
100
99
  },
101
100
  };
101
+ throw new NodeOperationError(
102
+ nodeContext.getNode(),
103
+ JSON.stringify(errorContext)
104
+ );
102
105
  }
103
106
  }
package/nodes/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './response';
2
+ export * from './lime-crm';
3
+ export * from './fortnox';
4
+ export * from './modules';
@@ -9,28 +9,69 @@ import {
9
9
  } from 'n8n-workflow';
10
10
 
11
11
  import { metadataFields, metadataOperations } from './resources/metadata';
12
+ import { adminFields, adminOperations } from './resources/admin';
12
13
  import { dataFields, dataOperations } from './resources/data';
13
14
 
14
15
  import {
16
+ ADMIN_RESOURCE,
15
17
  DATA_RESOURCE,
16
18
  METADATA_RESOURCE,
17
19
  LIME_CRM_API_CREDENTIAL_KEY,
18
- } from './commons';
20
+ } from './models';
19
21
 
20
22
  import {
21
- getEntitiesForErpSystem,
22
23
  getFileProperties,
23
24
  getLimetypeProperties,
24
25
  getLimetypes,
25
26
  getNoHasManyProperties,
26
27
  } from './methods';
27
28
 
29
+ /**
30
+ * Representation of a function that executes a specific Lime CRM operation.
31
+ *
32
+ * This function type is used by the Lime CRM node to dynamically invoke
33
+ * the appropriate handler (e.g., metadata or data operations) during node execution.
34
+ *
35
+ * @param this - The n8n {@link IExecuteFunctions} context, providing access to
36
+ * node parameters, credentials, and helper methods.
37
+ * @param args - The arguments used for the operation.
38
+ * @param args.operation - The name of the operation to execute (e.g., "getAll", "create").
39
+ * @param args.i - The index of the current item being processed in the n8n execution loop.
40
+ *
41
+ * @returns A promise that resolves with the result of the operation.
42
+ *
43
+ * @public
44
+ * @group Node Definition
45
+ */
28
46
  type OperationFn = (
29
47
  this: IExecuteFunctions,
30
48
  args: { operation: string; i: number }
31
49
  ) => Promise<unknown>;
32
50
 
51
+ /**
52
+ * The main n8n node for interacting with the Lime CRM API.
53
+ *
54
+ * Provides two resource groups:
55
+ * - **Metadata**: Allows interaction with the structure of available Limetypes and their properties.
56
+ * - **Data**: Enables operations on Lime CRM data objects.
57
+ *
58
+ * The node dynamically loads available Lime CRM resources and properties and routes
59
+ * executions to the appropriate operation handlers.
60
+ *
61
+ * @remarks
62
+ * This node uses {@link metadataOperations} and {@link dataOperations} to process workflow executions
63
+ * based on the selected resource and operation.
64
+ *
65
+ * @public
66
+ * @group Node Definition
67
+ */
33
68
  export class LimeCrmNode implements INodeType {
69
+ /**
70
+ * Node configuration and metadata, defining available resources, operations, and credentials.
71
+ * Describes how the Lime CRM node appears and behaves in the n8n editor.
72
+ *
73
+ * @see {@link https://docs.n8n.io/integrations/creating-nodes/#node-description}
74
+ */
34
75
  description: INodeTypeDescription = {
35
76
  displayName: 'Lime CRM',
36
77
  name: 'limeCrm',
@@ -51,6 +92,7 @@ export class LimeCrmNode implements INodeType {
51
92
  required: true,
52
93
  },
53
94
  ],
95
+ usableAsTool: true,
54
96
  properties: [
55
97
  {
56
98
  displayName: 'Resource',
@@ -70,28 +112,54 @@ export class LimeCrmNode implements INodeType {
70
112
  value: DATA_RESOURCE,
71
113
  description: 'Work with CRM data',
72
114
  },
115
+ {
116
+ name: 'Admin',
117
+ value: ADMIN_RESOURCE,
118
+ description: 'Work with administrative data',
119
+ },
73
120
  ],
74
121
  default: DATA_RESOURCE,
75
122
  },
76
123
 
77
124
  ...(metadataFields as INodeProperties[]),
78
125
  ...(dataFields as INodeProperties[]),
126
+ ...(adminFields as INodeProperties[]),
79
127
  ],
80
128
  };
81
129
 
130
+ /**
131
+ * Methods used by the Lime CRM node to load dynamic options in the n8n UI.
132
+ *
133
+ * @remarks
134
+ * These functions are used to populate dropdowns and lists in the node's
135
+ * parameter editor. For details, see:
136
+ * - {@link getLimetypes}
137
+ * - {@link getFileProperties}
138
+ * - {@link getLimetypeProperties}
139
+ * - {@link getNoHasManyProperties}
140
+ */
82
141
  methods = {
83
142
  loadOptions: {
84
- getEntitiesForErpSystem,
85
143
  getLimetypes,
86
- getFileProperties,
87
144
  getLimetypeProperties,
145
+ getFileProperties,
88
146
  getNoHasManyProperties,
89
147
  },
90
148
  };
91
149
 
150
+ /**
151
+ * Execute the selected operation for the configured resource.
152
+ *
153
+ * Routes the execution to either {@link metadataOperations} or {@link dataOperations},
154
+ * based on the user’s selection in the n8n UI.
155
+ *
156
+ * @returns A two-dimensional array of execution data for downstream nodes.
157
+ *
158
+ * @throws Error - Will throw an error if execution fails and `continueOnFail` is not enabled
159
+ */
92
160
  async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
93
161
  const items = this.getInputData();
94
- const returnData = [];
162
+ let returnData: INodeExecutionData[] = [];
95
163
 
96
164
  const resource = this.getNodeParameter('resource', 0) as string;
97
165
  const operation = this.getNodeParameter('operation', 0) as string;
@@ -106,23 +174,25 @@ export class LimeCrmNode implements INodeType {
106
174
  operationFn = dataOperations;
107
175
  break;
108
176
  }
177
+ case ADMIN_RESOURCE: {
178
+ operationFn = adminOperations;
179
+ break;
180
+ }
109
181
  }
110
182
 
111
183
  for (let i = 0; i < items.length; i++) {
112
184
  if (!operationFn) continue;
113
185
  try {
114
- const responseData = await operationFn.call(this, {
186
+ const responseData = (await operationFn.call(this, {
115
187
  operation,
116
188
  i,
117
- });
189
+ })) as INodeExecutionData | INodeExecutionData[] | undefined;
118
190
  if (responseData !== undefined) {
119
- returnData.push(
120
- responseData as unknown as INodeExecutionData
121
- );
191
+ returnData = returnData.concat(responseData);
122
192
  }
123
193
  } catch (error) {
124
194
  if (this.continueOnFail()) {
125
- returnData.push({ error: error.message });
195
+ returnData.push({ json: {}, error: error.message });
126
196
  continue;
127
197
  }
128
198
  throw error;
@@ -10,7 +10,7 @@ import {
10
10
  NodeConnectionTypes,
11
11
  } from 'n8n-workflow';
12
12
 
13
- import { getWebhook, LIME_CRM_API_CREDENTIAL_KEY } from './commons';
13
+ import { LIME_CRM_API_CREDENTIAL_KEY } from './models';
14
14
  import { getLimetypes } from './methods';
15
15
  import {
16
16
  createSubscription,
@@ -19,9 +19,32 @@ import {
19
19
  listSubscriptionsWithExistingData,
20
20
  } from './transport';
21
21
 
22
- import { verifyHmac } from './commons';
22
+ import { getWebhook, verifyHmac } from './utils';
23
23
 
24
+ /**
25
+ * Trigger node for handling incoming webhooks from **Lime CRM**.
26
+ *
27
+ * This node subscribes to events in Lime (such as record creation, update, or deletion)
28
+ * and triggers workflows in n8n when those events occur.
29
+ *
30
+ * @remarks
31
+ * - Automatically manages webhook subscriptions in Lime CRM (create, check, delete).
32
+ * - Verifies incoming webhook authenticity using HMAC signatures.
33
+ * - Returns the received payload as JSON to connected nodes.
34
+ *
35
+ * @public
36
+ * @group Node Definition
37
+ *
38
+ * @see {@link getSubscription} - Fetches an existing webhook subscription
39
+ * @see {@link listSubscriptionsWithExistingData} - Checks for existing subscriptions matching the same target URL and events
40
+ * @see {@link createSubscription} - Creates a new webhook subscription in Lime
41
+ * @see {@link deleteSubscription} - Removes an existing webhook subscription
42
+ */
24
43
  export class LimeCrmTrigger implements INodeType {
44
+ /**
45
+ * Definition of the node’s metadata, input/output configuration,
46
+ * authentication requirements, and event subscription options.
47
+ */
25
48
  description: INodeTypeDescription = {
26
49
  displayName: 'Lime CRM Trigger',
27
50
  name: 'limeCrmTrigger',
@@ -112,12 +135,24 @@ export class LimeCrmTrigger implements INodeType {
112
135
  ],
113
136
  };
114
137
 
138
+ /**
139
+ * Methods used to dynamically load options in the node UI. For details, see:
140
+ *
141
+ * - {@link getLimetypes}
142
+ */
115
143
  methods = {
116
144
  loadOptions: {
117
145
  getLimetypes,
118
146
  },
119
147
  };
120
148
 
149
+ /**
150
+ * Webhook lifecycle management methods:
151
+ *
152
+ * - checkExists - Verifies whether the webhook already exists in Lime CRM
153
+ * - create - Creates a new webhook subscription in Lime CRM if one does not exist
154
+ * - delete - Deletes the existing webhook subscription in Lime CRM
155
+ */
121
156
  webhookMethods = {
122
157
  default: {
123
158
  async checkExists(this: IHookFunctions): Promise<boolean> {
@@ -127,20 +162,18 @@ export class LimeCrmTrigger implements INodeType {
127
162
  return false;
128
163
  }
129
164
 
130
- const response = await getSubscription(this, webhook);
131
- if (!response.success) {
132
- if (response.status === 404) {
165
+ try {
166
+ await getSubscription(this, webhook);
167
+ } catch (error) {
168
+ if (error.cause?.status === 404) {
133
169
  delete webhook.data.webhookId;
134
170
  delete webhook.data.webhookEvents;
135
171
  return false;
136
172
  }
137
173
  Logger.warn(
138
- `There was en error while getting a webhook from Lime CRM: ${response.error}`
139
- );
140
- throw new NodeOperationError(
141
- this.getNode(),
142
- response.error
174
+ `There was en error while getting a webhook from Lime CRM: ${error}`
143
175
  );
176
+ throw new NodeOperationError(this.getNode(), error);
144
177
  }
145
178
  return true;
146
179
  },
@@ -158,17 +191,10 @@ export class LimeCrmTrigger implements INodeType {
158
191
  // Check if a webhook already exists in order to not duplicate it in Lime
159
192
  // This is a different check then 'checkExists' which only takes an ID,
160
193
  // but it's only suited for production environment
161
-
162
194
  const existingSubscriptionResponse =
163
195
  await listSubscriptionsWithExistingData(this, webhook);
164
- if (!existingSubscriptionResponse.success) {
165
- throw new NodeOperationError(
166
- this.getNode(),
167
- existingSubscriptionResponse.error
168
- );
169
- }
170
196
 
171
- if (existingSubscriptionResponse.data.length === 0) {
197
+ if (existingSubscriptionResponse.length === 0) {
172
198
  const credentials = await this.getCredentials(
173
199
  LIME_CRM_API_CREDENTIAL_KEY
174
200
  );
@@ -182,15 +208,8 @@ export class LimeCrmTrigger implements INodeType {
182
208
  webhookCreateData
183
209
  );
184
210
 
185
- if (!createSubscriptionResponse.success) {
186
- throw new NodeOperationError(
187
- this.getNode(),
188
- createSubscriptionResponse.error
189
- );
190
- }
191
-
192
- const subscriptionId = createSubscriptionResponse.data.id;
193
- const events = createSubscriptionResponse.data.events;
211
+ const subscriptionId = createSubscriptionResponse.id;
212
+ const events = createSubscriptionResponse.events;
194
213
 
195
214
  webhook.data.webhookId = subscriptionId;
196
215
  webhook.data.webhookEvents = events;
@@ -199,7 +218,7 @@ export class LimeCrmTrigger implements INodeType {
199
218
  );
200
219
  return true;
201
220
  } else {
202
- const limeWebhook = existingSubscriptionResponse.data[0];
221
+ const limeWebhook = existingSubscriptionResponse[0];
203
222
  webhook.data.webhookId = limeWebhook.id;
204
223
  webhook.data.webhookEvents = limeWebhook.events;
205
224
  Logger.info(
@@ -217,8 +236,9 @@ export class LimeCrmTrigger implements INodeType {
217
236
  { ...webhook }
218
237
  );
219
238
  if (webhook.data.webhookId !== undefined) {
220
- const response = await deleteSubscription(this, webhook);
221
- if (!response.success) {
239
+ try {
240
+ await deleteSubscription(this, webhook);
241
+ } catch {
222
242
  Logger.error(
223
243
  `Failed to delete webhook with ID: ${webhook.data.webhookId}`,
224
244
  {
@@ -236,6 +256,26 @@ export class LimeCrmTrigger implements INodeType {
236
256
  },
237
257
  };
238
258
 
259
+ /**
260
+ * Main webhook handler — called when Lime CRM sends an event to this node.
261
+ *
262
+ * @returns The formatted webhook response data ready for n8n workflow processing.
263
+ *
264
+ * @throws NodeOperationError if authentication fails or webhook data is invalid.
265
+ *
266
+ * @example
267
+ * ```ts
268
+ * // Example webhook body:
269
+ * {
270
+ * "event": "deal.new",
271
+ * "body": {
272
+ * "id": 1001,
273
+ * "limetype": "deal",
274
+ * "values": { "company": 1001, "coworker": 1001, "probability": 0, ... }
275
+ * }
276
+ * }
277
+ * ```
278
+ */
239
279
  async webhook(this: IWebhookFunctions): Promise<IWebhookResponseData> {
240
280
  const webhook = getWebhook(this);
241
281
  Logger.info('Webhook received. Starting webhook processing...', {
@@ -0,0 +1,9 @@
1
+ export * from './utils';
2
+ export * from './methods';
3
+ export * from './models';
4
+ export * from './resources/data';
5
+ export * from './resources/metadata';
6
+ export * from './resources/admin';
7
+ export * from './transport';
8
+ export * from './LimeCrmNode.node';
9
+ export * from './LimeCrmTrigger.node';