@limetech/n8n-nodes-lime 0.2.9 → 0.3.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 (271) hide show
  1. package/.dockerignore +1 -0
  2. package/.github/workflows/lint.yml +21 -0
  3. package/.github/workflows/release.yml +82 -0
  4. package/.github/workflows/test-and-build.yml +47 -0
  5. package/.prettierignore +4 -0
  6. package/.prettierrc.mjs +1 -0
  7. package/.releaserc.json +34 -0
  8. package/CHANGELOG.md +74 -0
  9. package/Dockerfile +21 -0
  10. package/README.md +4 -0
  11. package/credentials/FortnoxApi.credentials.ts +61 -0
  12. package/credentials/LimeCrmApi.credentials.ts +60 -0
  13. package/dist/credentials/FortnoxApi.credentials.d.ts +9 -0
  14. package/dist/credentials/FortnoxApi.credentials.js +57 -0
  15. package/dist/credentials/FortnoxApi.credentials.js.map +1 -0
  16. package/dist/credentials/LimeCrmApi.credentials.js +3 -2
  17. package/dist/credentials/LimeCrmApi.credentials.js.map +1 -1
  18. package/dist/nodes/fortnox/Fortnox.node.d.ts +5 -0
  19. package/dist/nodes/fortnox/Fortnox.node.js +95 -0
  20. package/dist/nodes/fortnox/Fortnox.node.js.map +1 -0
  21. package/dist/nodes/fortnox/Fortnox.node.json +18 -0
  22. package/dist/nodes/fortnox/FortnoxTrigger.node.d.ts +5 -0
  23. package/dist/nodes/fortnox/FortnoxTrigger.node.js +155 -0
  24. package/dist/nodes/fortnox/FortnoxTrigger.node.js.map +1 -0
  25. package/dist/nodes/fortnox/FortnoxTrigger.node.json +18 -0
  26. package/dist/nodes/fortnox/commons.d.ts +25 -0
  27. package/dist/nodes/fortnox/commons.js +44 -0
  28. package/dist/nodes/fortnox/commons.js.map +1 -0
  29. package/dist/nodes/fortnox/model.d.ts +20 -0
  30. package/dist/nodes/fortnox/model.js +3 -0
  31. package/dist/nodes/fortnox/model.js.map +1 -0
  32. package/dist/nodes/fortnox/resources/customers/filterParameters.d.ts +2 -0
  33. package/dist/nodes/fortnox/resources/customers/filterParameters.js +31 -0
  34. package/dist/nodes/fortnox/resources/customers/filterParameters.js.map +1 -0
  35. package/dist/nodes/fortnox/resources/customers/index.d.ts +20 -0
  36. package/dist/nodes/fortnox/resources/customers/index.js +77 -0
  37. package/dist/nodes/fortnox/resources/customers/index.js.map +1 -0
  38. package/dist/nodes/fortnox/resources/customers/model.d.ts +99 -0
  39. package/dist/nodes/fortnox/resources/customers/model.js +3 -0
  40. package/dist/nodes/fortnox/resources/customers/model.js.map +1 -0
  41. package/dist/nodes/fortnox/resources/customers/operations/create.operation.d.ts +12 -0
  42. package/dist/nodes/fortnox/resources/customers/operations/create.operation.js +283 -0
  43. package/dist/nodes/fortnox/resources/customers/operations/create.operation.js.map +1 -0
  44. package/dist/nodes/fortnox/resources/customers/operations/delete.operation.d.ts +10 -0
  45. package/dist/nodes/fortnox/resources/customers/operations/delete.operation.js +36 -0
  46. package/dist/nodes/fortnox/resources/customers/operations/delete.operation.js.map +1 -0
  47. package/dist/nodes/fortnox/resources/customers/operations/get.operation.d.ts +11 -0
  48. package/dist/nodes/fortnox/resources/customers/operations/get.operation.js +36 -0
  49. package/dist/nodes/fortnox/resources/customers/operations/get.operation.js.map +1 -0
  50. package/dist/nodes/fortnox/resources/customers/operations/getAll.operation.d.ts +11 -0
  51. package/dist/nodes/fortnox/resources/customers/operations/getAll.operation.js +68 -0
  52. package/dist/nodes/fortnox/resources/customers/operations/getAll.operation.js.map +1 -0
  53. package/dist/nodes/fortnox/resources/customers/operations/update.operation.d.ts +12 -0
  54. package/dist/nodes/fortnox/resources/customers/operations/update.operation.js +267 -0
  55. package/dist/nodes/fortnox/resources/customers/operations/update.operation.js.map +1 -0
  56. package/dist/nodes/fortnox/resources/customers/sortParameters.d.ts +2 -0
  57. package/dist/nodes/fortnox/resources/customers/sortParameters.js +30 -0
  58. package/dist/nodes/fortnox/resources/customers/sortParameters.js.map +1 -0
  59. package/dist/nodes/fortnox/resources/invoice/filterParameters.d.ts +2 -0
  60. package/dist/nodes/fortnox/resources/invoice/filterParameters.js +72 -0
  61. package/dist/nodes/fortnox/resources/invoice/filterParameters.js.map +1 -0
  62. package/dist/nodes/fortnox/resources/invoice/index.d.ts +20 -0
  63. package/dist/nodes/fortnox/resources/invoice/index.js +71 -0
  64. package/dist/nodes/fortnox/resources/invoice/index.js.map +1 -0
  65. package/dist/nodes/fortnox/resources/invoice/invoiceParameters.d.ts +2 -0
  66. package/dist/nodes/fortnox/resources/invoice/invoiceParameters.js +193 -0
  67. package/dist/nodes/fortnox/resources/invoice/invoiceParameters.js.map +1 -0
  68. package/dist/nodes/fortnox/resources/invoice/model.d.ts +150 -0
  69. package/dist/nodes/fortnox/resources/invoice/model.js +3 -0
  70. package/dist/nodes/fortnox/resources/invoice/model.js.map +1 -0
  71. package/dist/nodes/fortnox/resources/invoice/operations/create.operation.d.ts +11 -0
  72. package/dist/nodes/fortnox/resources/invoice/operations/create.operation.js +64 -0
  73. package/dist/nodes/fortnox/resources/invoice/operations/create.operation.js.map +1 -0
  74. package/dist/nodes/fortnox/resources/invoice/operations/get.operation.d.ts +11 -0
  75. package/dist/nodes/fortnox/resources/invoice/operations/get.operation.js +35 -0
  76. package/dist/nodes/fortnox/resources/invoice/operations/get.operation.js.map +1 -0
  77. package/dist/nodes/fortnox/resources/invoice/operations/getAll.operation.d.ts +11 -0
  78. package/dist/nodes/fortnox/resources/invoice/operations/getAll.operation.js +92 -0
  79. package/dist/nodes/fortnox/resources/invoice/operations/getAll.operation.js.map +1 -0
  80. package/dist/nodes/fortnox/resources/invoice/operations/update.operation.d.ts +11 -0
  81. package/dist/nodes/fortnox/resources/invoice/operations/update.operation.js +62 -0
  82. package/dist/nodes/fortnox/resources/invoice/operations/update.operation.js.map +1 -0
  83. package/dist/nodes/fortnox/transport/errorCodes.d.ts +1 -0
  84. package/dist/nodes/fortnox/transport/errorCodes.js +51 -0
  85. package/dist/nodes/fortnox/transport/errorCodes.js.map +1 -0
  86. package/dist/nodes/fortnox/transport/index.d.ts +4 -0
  87. package/dist/nodes/fortnox/transport/index.js +72 -0
  88. package/dist/nodes/fortnox/transport/index.js.map +1 -0
  89. package/dist/nodes/lime-crm/LimeCrm.node.json +18 -0
  90. package/dist/nodes/lime-crm/LimeCrmNode.node.d.ts +14 -0
  91. package/dist/nodes/lime-crm/LimeCrmNode.node.js +113 -0
  92. package/dist/nodes/lime-crm/LimeCrmNode.node.js.map +1 -0
  93. package/dist/nodes/lime-crm/LimeCrmTrigger.node.d.ts +18 -0
  94. package/dist/nodes/lime-crm/LimeCrmTrigger.node.js +200 -0
  95. package/dist/nodes/lime-crm/LimeCrmTrigger.node.js.map +1 -0
  96. package/dist/nodes/lime-crm/commons/constants.d.ts +4 -0
  97. package/dist/nodes/lime-crm/commons/constants.js +8 -0
  98. package/dist/nodes/lime-crm/commons/constants.js.map +1 -0
  99. package/dist/nodes/lime-crm/commons/index.d.ts +3 -0
  100. package/dist/nodes/lime-crm/commons/index.js +11 -0
  101. package/dist/nodes/lime-crm/commons/index.js.map +1 -0
  102. package/dist/nodes/lime-crm/commons/limetype.d.ts +10 -0
  103. package/dist/nodes/lime-crm/commons/limetype.js +3 -0
  104. package/dist/nodes/lime-crm/commons/limetype.js.map +1 -0
  105. package/dist/nodes/lime-crm/commons/task.d.ts +14 -0
  106. package/dist/nodes/lime-crm/commons/task.js +49 -0
  107. package/dist/nodes/lime-crm/commons/task.js.map +1 -0
  108. package/dist/nodes/lime-crm/commons/webhook.d.ts +16 -0
  109. package/dist/nodes/lime-crm/commons/webhook.js +30 -0
  110. package/dist/nodes/lime-crm/commons/webhook.js.map +1 -0
  111. package/dist/nodes/lime-crm/methods/getEntitiesForErpSystem.d.ts +5 -0
  112. package/dist/nodes/lime-crm/methods/getEntitiesForErpSystem.js +12 -0
  113. package/dist/nodes/lime-crm/methods/getEntitiesForErpSystem.js.map +1 -0
  114. package/dist/nodes/lime-crm/methods/getLimeTypeProperties.d.ts +2 -0
  115. package/dist/nodes/lime-crm/methods/getLimeTypeProperties.js +21 -0
  116. package/dist/nodes/lime-crm/methods/getLimeTypeProperties.js.map +1 -0
  117. package/dist/nodes/lime-crm/methods/getLimeTypes.d.ts +2 -0
  118. package/dist/nodes/lime-crm/methods/getLimeTypes.js +21 -0
  119. package/dist/nodes/lime-crm/methods/getLimeTypes.js.map +1 -0
  120. package/dist/nodes/lime-crm/methods/index.d.ts +3 -0
  121. package/dist/nodes/lime-crm/methods/index.js +10 -0
  122. package/dist/nodes/lime-crm/methods/index.js.map +1 -0
  123. package/dist/nodes/lime-crm/resources/erpConnector/index.d.ts +23 -0
  124. package/dist/nodes/lime-crm/resources/erpConnector/index.js +57 -0
  125. package/dist/nodes/lime-crm/resources/erpConnector/index.js.map +1 -0
  126. package/dist/nodes/lime-crm/resources/erpConnector/operations/createOrUpdateObjects.operation.d.ts +26 -0
  127. package/dist/nodes/lime-crm/resources/erpConnector/operations/createOrUpdateObjects.operation.js +65 -0
  128. package/dist/nodes/lime-crm/resources/erpConnector/operations/createOrUpdateObjects.operation.js.map +1 -0
  129. package/dist/nodes/lime-crm/resources/erpConnector/operations/transform.operation.d.ts +9 -0
  130. package/dist/nodes/lime-crm/resources/erpConnector/operations/transform.operation.js +220 -0
  131. package/dist/nodes/lime-crm/resources/erpConnector/operations/transform.operation.js.map +1 -0
  132. package/dist/nodes/lime-crm/resources/erpConnector/transform.d.ts +15 -0
  133. package/dist/nodes/lime-crm/resources/erpConnector/transform.js +12 -0
  134. package/dist/nodes/lime-crm/resources/erpConnector/transform.js.map +1 -0
  135. package/dist/nodes/lime-crm/resources/erpConnector/transformers/baseTransformer.d.ts +4 -0
  136. package/dist/nodes/lime-crm/resources/erpConnector/transformers/baseTransformer.js +7 -0
  137. package/dist/nodes/lime-crm/resources/erpConnector/transformers/baseTransformer.js.map +1 -0
  138. package/dist/nodes/lime-crm/resources/erpConnector/transformers/fortnox.d.ts +37 -0
  139. package/dist/nodes/lime-crm/resources/erpConnector/transformers/fortnox.js +124 -0
  140. package/dist/nodes/lime-crm/resources/erpConnector/transformers/fortnox.js.map +1 -0
  141. package/dist/nodes/lime-crm/resources/erpConnector/transformers/index.d.ts +1 -0
  142. package/dist/nodes/lime-crm/resources/erpConnector/transformers/index.js +6 -0
  143. package/dist/nodes/lime-crm/resources/erpConnector/transformers/index.js.map +1 -0
  144. package/dist/nodes/lime-crm/resources/limeObject/index.d.ts +14 -0
  145. package/dist/nodes/lime-crm/resources/limeObject/index.js +78 -0
  146. package/dist/nodes/lime-crm/resources/limeObject/index.js.map +1 -0
  147. package/dist/nodes/lime-crm/resources/limeObject/operations/create.operation.d.ts +9 -0
  148. package/dist/nodes/lime-crm/resources/limeObject/operations/create.operation.js +139 -0
  149. package/dist/nodes/lime-crm/resources/limeObject/operations/create.operation.js.map +1 -0
  150. package/dist/nodes/lime-crm/resources/limeObject/operations/delete.operation.d.ts +9 -0
  151. package/dist/nodes/lime-crm/resources/limeObject/operations/delete.operation.js +51 -0
  152. package/dist/nodes/lime-crm/resources/limeObject/operations/delete.operation.js.map +1 -0
  153. package/dist/nodes/lime-crm/resources/limeObject/operations/get.operation.d.ts +9 -0
  154. package/dist/nodes/lime-crm/resources/limeObject/operations/get.operation.js +51 -0
  155. package/dist/nodes/lime-crm/resources/limeObject/operations/get.operation.js.map +1 -0
  156. package/dist/nodes/lime-crm/resources/limeObject/operations/search.operation.d.ts +9 -0
  157. package/dist/nodes/lime-crm/resources/limeObject/operations/search.operation.js +86 -0
  158. package/dist/nodes/lime-crm/resources/limeObject/operations/search.operation.js.map +1 -0
  159. package/dist/nodes/lime-crm/resources/limeObject/operations/update.operation.d.ts +9 -0
  160. package/dist/nodes/lime-crm/resources/limeObject/operations/update.operation.js +149 -0
  161. package/dist/nodes/lime-crm/resources/limeObject/operations/update.operation.js.map +1 -0
  162. package/dist/nodes/lime-crm/resources/limeType/index.d.ts +20 -0
  163. package/dist/nodes/lime-crm/resources/limeType/index.js +71 -0
  164. package/dist/nodes/lime-crm/resources/limeType/index.js.map +1 -0
  165. package/dist/nodes/lime-crm/resources/limeType/operations/getProperties.operation.d.ts +11 -0
  166. package/dist/nodes/lime-crm/resources/limeType/operations/getProperties.operation.js +36 -0
  167. package/dist/nodes/lime-crm/resources/limeType/operations/getProperties.operation.js.map +1 -0
  168. package/dist/nodes/lime-crm/resources/limeType/operations/getType.operation.d.ts +9 -0
  169. package/dist/nodes/lime-crm/resources/limeType/operations/getType.operation.js +36 -0
  170. package/dist/nodes/lime-crm/resources/limeType/operations/getType.operation.js.map +1 -0
  171. package/dist/nodes/lime-crm/resources/limeType/operations/listTypes.operation.d.ts +10 -0
  172. package/dist/nodes/lime-crm/resources/limeType/operations/listTypes.operation.js +15 -0
  173. package/dist/nodes/lime-crm/resources/limeType/operations/listTypes.operation.js.map +1 -0
  174. package/dist/nodes/lime-crm/transport/commons.d.ts +5 -0
  175. package/dist/nodes/lime-crm/transport/commons.js +33 -0
  176. package/dist/nodes/lime-crm/transport/commons.js.map +1 -0
  177. package/dist/nodes/lime-crm/transport/erpConnector.d.ts +9 -0
  178. package/dist/nodes/lime-crm/transport/erpConnector.js +12 -0
  179. package/dist/nodes/lime-crm/transport/erpConnector.js.map +1 -0
  180. package/dist/nodes/lime-crm/transport/index.d.ts +5 -0
  181. package/dist/nodes/lime-crm/transport/index.js +22 -0
  182. package/dist/nodes/lime-crm/transport/index.js.map +1 -0
  183. package/dist/nodes/lime-crm/transport/limeobjects.d.ts +7 -0
  184. package/dist/nodes/lime-crm/transport/limeobjects.js +49 -0
  185. package/dist/nodes/lime-crm/transport/limeobjects.js.map +1 -0
  186. package/dist/nodes/lime-crm/transport/limetypes.d.ts +6 -0
  187. package/dist/nodes/lime-crm/transport/limetypes.js +40 -0
  188. package/dist/nodes/lime-crm/transport/limetypes.js.map +1 -0
  189. package/dist/nodes/lime-crm/transport/task.d.ts +13 -0
  190. package/dist/nodes/lime-crm/transport/task.js +14 -0
  191. package/dist/nodes/lime-crm/transport/task.js.map +1 -0
  192. package/dist/nodes/lime-crm/transport/webhooks.d.ts +15 -0
  193. package/dist/nodes/lime-crm/transport/webhooks.js +33 -0
  194. package/dist/nodes/lime-crm/transport/webhooks.js.map +1 -0
  195. package/dist/nodes/nodeResponse.d.ts +12 -0
  196. package/dist/nodes/nodeResponse.js +3 -0
  197. package/dist/nodes/nodeResponse.js.map +1 -0
  198. package/dist/package.json +36 -16
  199. package/dist/tsconfig.tsbuildinfo +1 -1
  200. package/docker-compose.yml +46 -0
  201. package/eslint.config.mjs +27 -0
  202. package/jest.config.js +11 -0
  203. package/nodes/fortnox/Fortnox.node.json +18 -0
  204. package/nodes/fortnox/Fortnox.node.ts +102 -0
  205. package/nodes/fortnox/FortnoxTrigger.node.json +18 -0
  206. package/nodes/fortnox/FortnoxTrigger.node.ts +196 -0
  207. package/nodes/fortnox/commons.ts +94 -0
  208. package/nodes/fortnox/fortnoxLogo.svg +15 -0
  209. package/nodes/fortnox/model.ts +25 -0
  210. package/nodes/fortnox/resources/customers/filterParameters.ts +47 -0
  211. package/nodes/fortnox/resources/customers/index.ts +57 -0
  212. package/nodes/fortnox/resources/customers/model.ts +107 -0
  213. package/nodes/fortnox/resources/customers/operations/create.operation.ts +303 -0
  214. package/nodes/fortnox/resources/customers/operations/delete.operation.ts +44 -0
  215. package/nodes/fortnox/resources/customers/operations/get.operation.ts +45 -0
  216. package/nodes/fortnox/resources/customers/operations/getAll.operation.ts +80 -0
  217. package/nodes/fortnox/resources/customers/operations/update.operation.ts +278 -0
  218. package/nodes/fortnox/resources/customers/sortParameters.ts +32 -0
  219. package/nodes/fortnox/resources/invoice/filterParameters.ts +88 -0
  220. package/nodes/fortnox/resources/invoice/index.ts +51 -0
  221. package/nodes/fortnox/resources/invoice/invoiceParameters.ts +214 -0
  222. package/nodes/fortnox/resources/invoice/model.ts +160 -0
  223. package/nodes/fortnox/resources/invoice/operations/create.operation.ts +72 -0
  224. package/nodes/fortnox/resources/invoice/operations/get.operation.ts +45 -0
  225. package/nodes/fortnox/resources/invoice/operations/getAll.operation.ts +101 -0
  226. package/nodes/fortnox/resources/invoice/operations/update.operation.ts +74 -0
  227. package/nodes/fortnox/transport/errorCodes.ts +62 -0
  228. package/nodes/fortnox/transport/index.ts +98 -0
  229. package/nodes/lime-crm/LimeCrm.node.json +18 -0
  230. package/nodes/lime-crm/LimeCrmNode.node.ts +135 -0
  231. package/nodes/lime-crm/LimeCrmTrigger.node.ts +263 -0
  232. package/nodes/lime-crm/assets/lime-crm.svg +1 -0
  233. package/nodes/lime-crm/commons/constants.ts +9 -0
  234. package/nodes/lime-crm/commons/index.ts +9 -0
  235. package/nodes/lime-crm/commons/limetype.ts +11 -0
  236. package/nodes/lime-crm/commons/task.ts +55 -0
  237. package/nodes/lime-crm/commons/webhook.ts +50 -0
  238. package/nodes/lime-crm/methods/getEntitiesForErpSystem.ts +11 -0
  239. package/nodes/lime-crm/methods/getLimeTypeProperties.ts +27 -0
  240. package/nodes/lime-crm/methods/getLimeTypes.ts +23 -0
  241. package/nodes/lime-crm/methods/index.ts +3 -0
  242. package/nodes/lime-crm/resources/erpConnector/index.ts +43 -0
  243. package/nodes/lime-crm/resources/erpConnector/operations/createOrUpdateObjects.operation.ts +69 -0
  244. package/nodes/lime-crm/resources/erpConnector/operations/transform.operation.ts +274 -0
  245. package/nodes/lime-crm/resources/erpConnector/transform.ts +49 -0
  246. package/nodes/lime-crm/resources/erpConnector/transformers/baseTransformer.ts +18 -0
  247. package/nodes/lime-crm/resources/erpConnector/transformers/fortnox.ts +201 -0
  248. package/nodes/lime-crm/resources/erpConnector/transformers/index.ts +1 -0
  249. package/nodes/lime-crm/resources/limeObject/index.ts +64 -0
  250. package/nodes/lime-crm/resources/limeObject/operations/create.operation.ts +152 -0
  251. package/nodes/lime-crm/resources/limeObject/operations/delete.operation.ts +55 -0
  252. package/nodes/lime-crm/resources/limeObject/operations/get.operation.ts +54 -0
  253. package/nodes/lime-crm/resources/limeObject/operations/search.operation.ts +99 -0
  254. package/nodes/lime-crm/resources/limeObject/operations/update.operation.ts +157 -0
  255. package/nodes/lime-crm/resources/limeType/index.ts +58 -0
  256. package/nodes/lime-crm/resources/limeType/operations/getProperties.operation.ts +42 -0
  257. package/nodes/lime-crm/resources/limeType/operations/getType.operation.ts +36 -0
  258. package/nodes/lime-crm/resources/limeType/operations/listTypes.operation.ts +18 -0
  259. package/nodes/lime-crm/transport/commons.ts +44 -0
  260. package/nodes/lime-crm/transport/erpConnector.ts +21 -0
  261. package/nodes/lime-crm/transport/index.ts +17 -0
  262. package/nodes/lime-crm/transport/limeobjects.ts +83 -0
  263. package/nodes/lime-crm/transport/limetypes.ts +68 -0
  264. package/nodes/lime-crm/transport/task.ts +32 -0
  265. package/nodes/lime-crm/transport/webhooks.ts +61 -0
  266. package/nodes/nodeResponse.ts +13 -0
  267. package/package.json +36 -16
  268. package/tests/fixtures/fortnox.ts +182 -0
  269. package/tests/transform.spec.ts +187 -0
  270. package/tsconfig.json +30 -0
  271. package/index.js +0 -3
@@ -0,0 +1,44 @@
1
+ import { LIME_CRM_API_CREDENTIAL_KEY } from '../commons';
2
+ import { IAllExecuteFunctions } from 'n8n-workflow';
3
+ import { NodeResponse } from '../../nodeResponse';
4
+
5
+ type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
6
+
7
+ async function getLimeUrl(context: IAllExecuteFunctions): Promise<string> {
8
+ const credentials = await context.getCredentials(
9
+ LIME_CRM_API_CREDENTIAL_KEY
10
+ );
11
+ return credentials.url as string;
12
+ }
13
+
14
+ export async function callLimeApi<T>(
15
+ nodeContext: IAllExecuteFunctions,
16
+ method: HTTPMethod,
17
+ url: string,
18
+ options?: object
19
+ ): Promise<NodeResponse<T>> {
20
+ try {
21
+ const response: T =
22
+ await nodeContext.helpers.requestWithAuthentication.call(
23
+ nodeContext,
24
+ LIME_CRM_API_CREDENTIAL_KEY,
25
+ {
26
+ method: method,
27
+ url: url,
28
+ json: true,
29
+ baseURL: await getLimeUrl(nodeContext),
30
+ ...options,
31
+ }
32
+ );
33
+ return {
34
+ success: true,
35
+ data: response,
36
+ };
37
+ } catch (error) {
38
+ return {
39
+ success: false,
40
+ error: error instanceof Error ? error.message : String(error),
41
+ status: error?.cause?.status,
42
+ };
43
+ }
44
+ }
@@ -0,0 +1,21 @@
1
+ import { callLimeApi } from './commons';
2
+ import { IAllExecuteFunctions } from 'n8n-workflow';
3
+ import { LimeCrmData } from '../resources/erpConnector/transform';
4
+ import { NodeResponse } from '../../nodeResponse';
5
+
6
+ const ERP_CONNECTOR_URL = '/limepkg-erp-connector/';
7
+
8
+ export interface CreateOrUpdateObjectsTaskResponse {
9
+ id: string;
10
+ status: string;
11
+ result: Record<string, unknown> | null;
12
+ }
13
+
14
+ export async function startCreateOrUpdateObjectsTask(
15
+ nodeContext: IAllExecuteFunctions,
16
+ data: LimeCrmData
17
+ ): Promise<NodeResponse<CreateOrUpdateObjectsTaskResponse>> {
18
+ return await callLimeApi(nodeContext, 'PUT', ERP_CONNECTOR_URL, {
19
+ body: data,
20
+ });
21
+ }
@@ -0,0 +1,17 @@
1
+ export {
2
+ getSubscription,
3
+ deleteSubscription,
4
+ createSubscription,
5
+ listSubscriptionsWithExistingData,
6
+ } from './webhooks';
7
+ export { getLimeTypesFromApi, getProperties } from './limetypes';
8
+
9
+ export {
10
+ createLimeObject,
11
+ deleteLimeObject,
12
+ updateLimeObject,
13
+ getLimeObject,
14
+ searchLimeObject,
15
+ } from './limeobjects';
16
+ export { startCreateOrUpdateObjectsTask } from './erpConnector';
17
+ export { callLimeApi } from './commons';
@@ -0,0 +1,83 @@
1
+ import { callLimeApi } from './commons';
2
+ import { IAllExecuteFunctions } from 'n8n-workflow';
3
+ import { NodeResponse } from '../../nodeResponse';
4
+
5
+ const LIMEOBJECT_URL = '/api/v1/limeobject/';
6
+
7
+ interface SearchLimeobjectApiResponse {
8
+ _embedded: {
9
+ limeobjects: Array<object>;
10
+ };
11
+ }
12
+
13
+ export async function createLimeObject(
14
+ nodeContext: IAllExecuteFunctions,
15
+ limetype: string,
16
+ data: object
17
+ ): Promise<NodeResponse<unknown>> {
18
+ const url = `${LIMEOBJECT_URL}${limetype}/`;
19
+ return await callLimeApi(nodeContext, 'POST', url, {
20
+ body: data,
21
+ });
22
+ }
23
+
24
+ export async function deleteLimeObject(
25
+ nodeContext: IAllExecuteFunctions,
26
+ limetype: string,
27
+ id: string
28
+ ): Promise<NodeResponse<void>> {
29
+ const url = `${LIMEOBJECT_URL}${limetype}/${id}/`;
30
+ return await callLimeApi(nodeContext, 'DELETE', url);
31
+ }
32
+
33
+ export async function getLimeObject(
34
+ nodeContext: IAllExecuteFunctions,
35
+ limetype: string,
36
+ id: string
37
+ ): Promise<NodeResponse<unknown>> {
38
+ const url = `${LIMEOBJECT_URL}${limetype}/${id}/`;
39
+ return await callLimeApi(nodeContext, 'GET', url);
40
+ }
41
+
42
+ export async function updateLimeObject(
43
+ nodeContext: IAllExecuteFunctions,
44
+ limetype: string,
45
+ id: string,
46
+ data: object
47
+ ): Promise<NodeResponse<unknown>> {
48
+ const url = `${LIMEOBJECT_URL}${limetype}/${id}/`;
49
+ return await callLimeApi(nodeContext, 'PUT', url, {
50
+ body: data,
51
+ });
52
+ }
53
+
54
+ export async function searchLimeObject(
55
+ nodeContext: IAllExecuteFunctions,
56
+ limetype: string,
57
+ searchField: string,
58
+ searchTerm: string,
59
+ limit: number | null,
60
+ sortField: string | null
61
+ ): Promise<NodeResponse<Array<object>>> {
62
+ const url = `${LIMEOBJECT_URL}${limetype}/`;
63
+ const response = await callLimeApi<SearchLimeobjectApiResponse>(
64
+ nodeContext,
65
+ 'GET',
66
+ url,
67
+ {
68
+ qs: {
69
+ ...(searchField && searchTerm && { [searchField]: searchTerm }),
70
+ ...(limit != null && limit > 0 && { _limit: limit }),
71
+ ...(sortField != null && { _sort: sortField }),
72
+ },
73
+ }
74
+ );
75
+
76
+ if (response.success) {
77
+ return {
78
+ success: true,
79
+ data: response.data?._embedded.limeobjects ?? [],
80
+ };
81
+ }
82
+ return response;
83
+ }
@@ -0,0 +1,68 @@
1
+ import { callLimeApi } from '.';
2
+ import { IAllExecuteFunctions } from 'n8n-workflow';
3
+ import { LimeType, LimeTypeProperty } from '../commons';
4
+ import { NodeResponse } from '../../nodeResponse';
5
+
6
+ const LIMETYPE_URL = '/api/v1/limetype/';
7
+
8
+ interface LimeTypesApiResponse {
9
+ _links: {
10
+ limetypes: LimeType[];
11
+ };
12
+ }
13
+
14
+ interface LimeTypePropertiesApiResponse {
15
+ _embedded: {
16
+ properties: LimeTypeProperty[];
17
+ };
18
+ }
19
+
20
+ export async function getLimeTypesFromApi(
21
+ nodeContext: IAllExecuteFunctions
22
+ ): Promise<NodeResponse<LimeType[]>> {
23
+ const response = await callLimeApi<LimeTypesApiResponse>(
24
+ nodeContext,
25
+ 'GET',
26
+ LIMETYPE_URL
27
+ );
28
+ if (response.success) {
29
+ return {
30
+ success: true,
31
+ data: response.data?._links.limetypes ?? [],
32
+ };
33
+ }
34
+ return response;
35
+ }
36
+
37
+ export async function getLimeType(
38
+ nodeContext: IAllExecuteFunctions,
39
+ limeType: string
40
+ ): Promise<NodeResponse<LimeType>> {
41
+ const url = `${LIMETYPE_URL}${limeType}/`;
42
+ return await callLimeApi<LimeType>(nodeContext, 'GET', url);
43
+ }
44
+
45
+ export async function getProperties(
46
+ nodeContext: IAllExecuteFunctions,
47
+ limeType: string
48
+ ): Promise<NodeResponse<LimeTypeProperty[]>> {
49
+ const url = `${LIMETYPE_URL}${limeType}/`;
50
+ const response = await callLimeApi<LimeTypePropertiesApiResponse>(
51
+ nodeContext,
52
+ 'GET',
53
+ url,
54
+ {
55
+ qs: {
56
+ _embed: 'properties',
57
+ },
58
+ }
59
+ );
60
+
61
+ if (response.success) {
62
+ return {
63
+ success: true,
64
+ data: response.data?._embedded.properties ?? [],
65
+ };
66
+ }
67
+ return response;
68
+ }
@@ -0,0 +1,32 @@
1
+ import { IAllExecuteFunctions } from 'n8n-workflow';
2
+ import { callLimeApi } from './commons';
3
+
4
+ const TASK_URL = '/api/v1/task/';
5
+
6
+ interface Task {
7
+ id: string;
8
+ status: 'PENDING' | 'STARTED' | 'SUCCESS' | 'FAILURE' | 'REVOKED' | 'RETRY';
9
+ result: unknown;
10
+ }
11
+
12
+ interface GetTasksApiResponse {
13
+ _embedded: {
14
+ tasks: Task[];
15
+ };
16
+ }
17
+
18
+ export async function getTasks(
19
+ nodeContext: IAllExecuteFunctions,
20
+ taskId: string
21
+ ) {
22
+ return await callLimeApi<GetTasksApiResponse>(
23
+ nodeContext,
24
+ 'GET',
25
+ TASK_URL,
26
+ {
27
+ qs: {
28
+ id: taskId,
29
+ },
30
+ }
31
+ );
32
+ }
@@ -0,0 +1,61 @@
1
+ import { Webhook } from '../commons';
2
+ import { callLimeApi } from '.';
3
+ import { IAllExecuteFunctions } from 'n8n-workflow';
4
+ import { NodeResponse } from '../../nodeResponse';
5
+
6
+ const SUBSCRIPTION_URL = 'api/v1/subscription/';
7
+
8
+ interface ApiResponseWebhook {
9
+ id: string;
10
+ name: string;
11
+ enabled: boolean;
12
+ events: string[];
13
+ target_url: string;
14
+ }
15
+
16
+ export async function getSubscription(
17
+ nodeContext: IAllExecuteFunctions,
18
+ webhook: Webhook
19
+ ): Promise<NodeResponse<ApiResponseWebhook>> {
20
+ return await callLimeApi(
21
+ nodeContext,
22
+ 'GET',
23
+ `${SUBSCRIPTION_URL}${webhook.data.webhookId}`
24
+ );
25
+ }
26
+
27
+ export async function listSubscriptionsWithExistingData(
28
+ nodeContext: IAllExecuteFunctions,
29
+ webhook: Webhook
30
+ ): Promise<NodeResponse<ApiResponseWebhook[]>> {
31
+ return await callLimeApi(nodeContext, 'GET', SUBSCRIPTION_URL, {
32
+ qs: {
33
+ events: webhook.events.join(','),
34
+ target_url: webhook.url,
35
+ enabled: true,
36
+ },
37
+ });
38
+ }
39
+
40
+ export async function createSubscription(
41
+ nodeContext: IAllExecuteFunctions,
42
+ webhook: Webhook
43
+ ): Promise<NodeResponse<ApiResponseWebhook>> {
44
+ return await callLimeApi(nodeContext, 'POST', SUBSCRIPTION_URL, {
45
+ body: {
46
+ events: webhook.events,
47
+ target_url: webhook.url,
48
+ },
49
+ });
50
+ }
51
+
52
+ export async function deleteSubscription(
53
+ nodeContext: IAllExecuteFunctions,
54
+ webhook: Webhook
55
+ ): Promise<NodeResponse<void>> {
56
+ return await callLimeApi(
57
+ nodeContext,
58
+ 'DELETE',
59
+ `${SUBSCRIPTION_URL}${webhook.data.webhookId}/`
60
+ );
61
+ }
@@ -0,0 +1,13 @@
1
+ type SuccessResponse<T> = {
2
+ success: true;
3
+ data: T;
4
+ };
5
+
6
+ type FailureResponse = {
7
+ success: false;
8
+ error: string;
9
+ status?: number;
10
+ metadata?: Record<string, unknown>;
11
+ };
12
+
13
+ export type NodeResponse<T> = SuccessResponse<T> | FailureResponse;
package/package.json CHANGED
@@ -1,15 +1,19 @@
1
1
  {
2
2
  "name": "@limetech/n8n-nodes-lime",
3
- "version": "0.2.9",
3
+ "version": "0.3.1",
4
4
  "description": "n8n node to connect to Lime CRM",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
7
7
  "scripts": {
8
- "build": "tsc && find nodes -name '*.svg' -exec cp {} dist/{} \\;",
8
+ "build": "tsc && mkdir -p dist/nodes/lime-crm/assets && find nodes -name '*.svg' -exec cp {} dist/{} \\;",
9
9
  "dev": "tsc --watch",
10
10
  "dev:reload": "nodemon --watch dist --exec 'cp -R dist/* ~/.n8n/custom/dist/'",
11
11
  "watch": "concurrently \"npm run dev\" \"npm run dev:reload\"",
12
- "format": "prettier --write ."
12
+ "lint": "eslint --max-warnings=0 .",
13
+ "lint:fix": "eslint --max-warnings=0 . --fix",
14
+ "format": "prettier -c .",
15
+ "format:fix": "prettier --write .",
16
+ "test": "jest"
13
17
  },
14
18
  "keywords": [
15
19
  "n8n",
@@ -18,35 +22,51 @@
18
22
  "crm",
19
23
  "n8n-community-node-package"
20
24
  ],
21
- "files": [
22
- "dist"
23
- ],
24
25
  "n8n": {
25
26
  "n8nNodesApiVersion": 1,
26
27
  "credentials": [
27
28
  "dist/credentials/LimeCrmApi.credentials.js",
28
- "dist/credentials/LimeGoApi.credentials.js"
29
+ "dist/credentials/FortnoxApi.credentials.js"
29
30
  ],
30
31
  "nodes": [
31
- "dist/nodes/LimeCrm/LimeCrmNode.node.js",
32
- "dist/nodes/LimeCrm/LimeCrmTrigger/LimeCrmTrigger.node.js",
33
- "dist/nodes/LimeGo/LimeGo.node.js"
32
+ "dist/nodes/lime-crm/LimeCrm.node.js",
33
+ "dist/nodes/fortnox/Fortnox.node.js",
34
+ "dist/nodes/fortnox/FortnoxTrigger.node.js"
34
35
  ]
35
36
  },
36
37
  "devDependencies": {
38
+ "@semantic-release/changelog": "^6.0.3",
39
+ "@semantic-release/commit-analyzer": "^13.0.1",
40
+ "@semantic-release/git": "^10.0.1",
41
+ "@semantic-release/github": "^11.0.4",
42
+ "@semantic-release/release-notes-generator": "^14.0.3",
43
+ "@types/jest": "^30.0.0",
37
44
  "@types/node": "^16.11.10",
38
45
  "@types/request-promise-native": "^1.0.18",
46
+ "@types/ws": "^8.18.1",
47
+ "@typescript-eslint/eslint-plugin": "^8.38.0",
48
+ "@typescript-eslint/parser": "^8.38.0",
39
49
  "concurrently": "^7.0.0",
50
+ "eslint": "^9.32.0",
51
+ "eslint-config-prettier": "^10.1.8",
52
+ "eslint-plugin-n8n-nodes-base": "^1.16.1",
53
+ "eslint-plugin-prettier": "^5.5.3",
54
+ "install": "^0.13.0",
55
+ "jest": "^30.0.5",
40
56
  "nodemon": "^2.0.15",
41
- "prettier": "^2.5.0",
42
- "typescript": "~4.8.0",
43
- "@typescript-eslint/parser": "^7.15.0",
44
- "eslint": "^8.56.0",
45
- "eslint-plugin-n8n-nodes-base": "^1.16.1"
57
+ "npm": "^11.5.2",
58
+ "prettier": "^3.6.2",
59
+ "semantic-release": "^24.2.7",
60
+ "ts-jest": "^29.4.1",
61
+ "typescript": "^5.9.2"
46
62
  },
47
63
  "dependencies": {
64
+ "@limetech/eslint-config": "^3.0.2",
65
+ "@semantic-release/exec": "^7.1.0",
66
+ "currency-codes": "^2.2.0",
48
67
  "request": "^2.88.2",
49
- "request-promise-native": "^1.0.9"
68
+ "request-promise-native": "^1.0.9",
69
+ "ws": "^8.18.3"
50
70
  },
51
71
  "peerDependencies": {
52
72
  "n8n-workflow": "*"
@@ -0,0 +1,182 @@
1
+ import { FortnoxInvoiceData } from '../../nodes/lime-crm/resources/erpConnector/transformers/fortnox';
2
+
3
+ export const invoice = {
4
+ '@url': 'https://api.fortnox.se/3/invoices/1',
5
+ '@urlTaxReductionList':
6
+ 'https://api.fortnox.se/3/taxreductions?filter=invoices&referencenumber=1',
7
+ AccountingMethod: 'ACCRUAL',
8
+ Address1: '',
9
+ Address2: '',
10
+ AdministrationFee: 0,
11
+ AdministrationFeeVAT: 0,
12
+ Balance: 1589,
13
+ BasisTaxReduction: 0,
14
+ Booked: true,
15
+ Cancelled: false,
16
+ City: 'Wadowice',
17
+ Comments: '',
18
+ ContractReference: '0',
19
+ ContributionPercent: 100,
20
+ ContributionValue: 1271,
21
+ CostCenter: '',
22
+ Country: '',
23
+ Credit: 'false',
24
+ CreditInvoiceReference: '0',
25
+ Currency: 'SEK',
26
+ CurrencyRate: 1,
27
+ CurrencyUnit: 1,
28
+ CustomerName: 'Vatican Forces',
29
+ CustomerNumber: '3',
30
+ DeliveryAddress1: '',
31
+ DeliveryAddress2: '',
32
+ DeliveryCity: '',
33
+ DeliveryCountry: '',
34
+ DeliveryDate: null,
35
+ DeliveryName: '',
36
+ DeliveryZipCode: '',
37
+ DocumentNumber: '1',
38
+ DueDate: '2025-09-12',
39
+ EDIInformation: {
40
+ EDIGlobalLocationNumber: '',
41
+ EDIGlobalLocationNumberDelivery: '',
42
+ EDIInvoiceExtra1: '',
43
+ EDIInvoiceExtra2: '',
44
+ EDIOurElectronicReference: '',
45
+ EDIYourElectronicReference: '',
46
+ EDIStatus: '',
47
+ },
48
+ EUQuarterlyReport: false,
49
+ EmailInformation: {
50
+ EmailAddressFrom: null,
51
+ EmailAddressTo: null,
52
+ EmailAddressCC: '',
53
+ EmailAddressBCC: '',
54
+ EmailSubject: 'Faktura {no} bifogas',
55
+ EmailBody: ' ',
56
+ },
57
+ ExternalInvoiceReference1: '',
58
+ ExternalInvoiceReference2: '',
59
+ FinalPayDate: null,
60
+ Freight: 0,
61
+ FreightVAT: 0,
62
+ Gross: 1271,
63
+ HouseWork: false,
64
+ InvoiceDate: '2025-08-13',
65
+ InvoicePeriodEnd: '',
66
+ InvoicePeriodStart: '',
67
+ InvoiceReference: '0',
68
+ InvoiceRows: [
69
+ {
70
+ AccountNumber: 3001,
71
+ ArticleNumber: '107',
72
+ ContributionPercent: '100',
73
+ ContributionValue: '500',
74
+ Cost: 0,
75
+ CostCenter: null,
76
+ DeliveredQuantity: '5',
77
+ Description: 'First article',
78
+ Discount: 0,
79
+ DiscountType: 'PERCENT',
80
+ HouseWork: false,
81
+ HouseWorkHoursToReport: null,
82
+ HouseWorkType: null,
83
+ Price: 100,
84
+ PriceExcludingVAT: 100,
85
+ Project: '',
86
+ RowId: 395,
87
+ StockPointCode: null,
88
+ Total: 500,
89
+ TotalExcludingVAT: 500,
90
+ Unit: 'st',
91
+ VAT: 25,
92
+ },
93
+ {
94
+ AccountNumber: 3001,
95
+ ArticleNumber: '108',
96
+ ContributionPercent: '100',
97
+ ContributionValue: '738',
98
+ Cost: 0,
99
+ CostCenter: null,
100
+ DeliveredQuantity: '6',
101
+ Description: 'Second article',
102
+ Discount: 0,
103
+ DiscountType: 'PERCENT',
104
+ HouseWork: false,
105
+ HouseWorkHoursToReport: null,
106
+ HouseWorkType: null,
107
+ Price: 123,
108
+ PriceExcludingVAT: 123,
109
+ Project: '',
110
+ RowId: 396,
111
+ StockPointCode: null,
112
+ Total: 738,
113
+ TotalExcludingVAT: 738,
114
+ Unit: 'st',
115
+ VAT: 25,
116
+ },
117
+ {
118
+ AccountNumber: 3001,
119
+ ArticleNumber: '109',
120
+ ContributionPercent: '100',
121
+ ContributionValue: '33',
122
+ Cost: 0,
123
+ CostCenter: null,
124
+ DeliveredQuantity: '3',
125
+ Description: 'Third article',
126
+ Discount: 0,
127
+ DiscountType: 'PERCENT',
128
+ HouseWork: false,
129
+ HouseWorkHoursToReport: null,
130
+ HouseWorkType: null,
131
+ Price: 11,
132
+ PriceExcludingVAT: 11,
133
+ Project: '',
134
+ RowId: 397,
135
+ StockPointCode: null,
136
+ Total: 33,
137
+ TotalExcludingVAT: 33,
138
+ Unit: 'st',
139
+ VAT: 25,
140
+ },
141
+ ],
142
+ InvoiceType: 'INVOICE',
143
+ Labels: [],
144
+ Language: 'SV',
145
+ LastRemindDate: null,
146
+ Net: 1271,
147
+ NotCompleted: false,
148
+ NoxFinans: false,
149
+ OCR: '13359',
150
+ OfferReference: '0',
151
+ OrderReference: '0',
152
+ OrganisationNumber: '1298737894',
153
+ OurReference: 'Aspen The Dog',
154
+ OutboundDate: '2025-08-13',
155
+ PaymentWay: '',
156
+ Phone1: '0418459862',
157
+ Phone2: '',
158
+ PriceList: 'A',
159
+ PrintTemplate: 'st',
160
+ Project: '',
161
+ Remarks: '',
162
+ Reminders: 0,
163
+ RoundOff: 0.25,
164
+ Sent: false,
165
+ TaxReduction: null,
166
+ TaxReductionType: 'none',
167
+ TermsOfDelivery: '',
168
+ TermsOfPayment: '30',
169
+ TimeBasisReference: null,
170
+ Total: 1589,
171
+ TotalToPay: 1589,
172
+ TotalVAT: 317.75,
173
+ VATIncluded: false,
174
+ VoucherNumber: 18,
175
+ VoucherSeries: 'B',
176
+ VoucherYear: 8,
177
+ WarehouseReady: true,
178
+ WayOfDelivery: '',
179
+ YourOrderNumber: '',
180
+ YourReference: 'Miki',
181
+ ZipCode: '21114',
182
+ } satisfies FortnoxInvoiceData;