@sinehypernova-0718/n8n-nodes-coolify 0.0.0-stage → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +442 -2
  3. package/dist/credentials/CoolifyApi.credentials.d.ts +10 -0
  4. package/dist/credentials/CoolifyApi.credentials.js +79 -0
  5. package/dist/credentials/CoolifyApi.credentials.js.map +1 -0
  6. package/dist/icons/coolify.svg +1 -0
  7. package/dist/n8n-logo-black-accent.svg +17 -0
  8. package/dist/nodes/Coolify/Coolify.node.d.ts +5 -0
  9. package/dist/nodes/Coolify/Coolify.node.js +124 -0
  10. package/dist/nodes/Coolify/Coolify.node.js.map +1 -0
  11. package/dist/nodes/Coolify/Coolify.node.json +18 -0
  12. package/dist/nodes/Coolify/descriptions/Application/ApplicationDescription.d.ts +2 -0
  13. package/dist/nodes/Coolify/descriptions/Application/ApplicationDescription.js +2118 -0
  14. package/dist/nodes/Coolify/descriptions/Application/ApplicationDescription.js.map +1 -0
  15. package/dist/nodes/Coolify/descriptions/Application/applicationCreateFields.d.ts +4 -0
  16. package/dist/nodes/Coolify/descriptions/Application/applicationCreateFields.js +61 -0
  17. package/dist/nodes/Coolify/descriptions/Application/applicationCreateFields.js.map +1 -0
  18. package/dist/nodes/Coolify/descriptions/Application/applicationFieldProperties.d.ts +8 -0
  19. package/dist/nodes/Coolify/descriptions/Application/applicationFieldProperties.js +125 -0
  20. package/dist/nodes/Coolify/descriptions/Application/applicationFieldProperties.js.map +1 -0
  21. package/dist/nodes/Coolify/descriptions/Application/applicationUpdateFields.d.ts +3 -0
  22. package/dist/nodes/Coolify/descriptions/Application/applicationUpdateFields.js +45 -0
  23. package/dist/nodes/Coolify/descriptions/Application/applicationUpdateFields.js.map +1 -0
  24. package/dist/nodes/Coolify/descriptions/Application/index.d.ts +4 -0
  25. package/dist/nodes/Coolify/descriptions/Application/index.js +14 -0
  26. package/dist/nodes/Coolify/descriptions/Application/index.js.map +1 -0
  27. package/dist/nodes/Coolify/descriptions/Application/storageBackupScheduleFields.d.ts +2 -0
  28. package/dist/nodes/Coolify/descriptions/Application/storageBackupScheduleFields.js +78 -0
  29. package/dist/nodes/Coolify/descriptions/Application/storageBackupScheduleFields.js.map +1 -0
  30. package/dist/nodes/Coolify/descriptions/AuditEvent/AuditEventDescription.d.ts +2 -0
  31. package/dist/nodes/Coolify/descriptions/AuditEvent/AuditEventDescription.js +132 -0
  32. package/dist/nodes/Coolify/descriptions/AuditEvent/AuditEventDescription.js.map +1 -0
  33. package/dist/nodes/Coolify/descriptions/AuditEvent/index.d.ts +1 -0
  34. package/dist/nodes/Coolify/descriptions/AuditEvent/index.js +6 -0
  35. package/dist/nodes/Coolify/descriptions/AuditEvent/index.js.map +1 -0
  36. package/dist/nodes/Coolify/descriptions/CloudInitScript/CloudInitScriptDescription.d.ts +2 -0
  37. package/dist/nodes/Coolify/descriptions/CloudInitScript/CloudInitScriptDescription.js +123 -0
  38. package/dist/nodes/Coolify/descriptions/CloudInitScript/CloudInitScriptDescription.js.map +1 -0
  39. package/dist/nodes/Coolify/descriptions/CloudInitScript/index.d.ts +1 -0
  40. package/dist/nodes/Coolify/descriptions/CloudInitScript/index.js +6 -0
  41. package/dist/nodes/Coolify/descriptions/CloudInitScript/index.js.map +1 -0
  42. package/dist/nodes/Coolify/descriptions/CloudToken/CloudTokenDescription.d.ts +2 -0
  43. package/dist/nodes/Coolify/descriptions/CloudToken/CloudTokenDescription.js +156 -0
  44. package/dist/nodes/Coolify/descriptions/CloudToken/CloudTokenDescription.js.map +1 -0
  45. package/dist/nodes/Coolify/descriptions/CloudToken/index.d.ts +1 -0
  46. package/dist/nodes/Coolify/descriptions/CloudToken/index.js +6 -0
  47. package/dist/nodes/Coolify/descriptions/CloudToken/index.js.map +1 -0
  48. package/dist/nodes/Coolify/descriptions/index.d.ts +4 -0
  49. package/dist/nodes/Coolify/descriptions/index.js +12 -0
  50. package/dist/nodes/Coolify/descriptions/index.js.map +1 -0
  51. package/dist/nodes/Coolify/requests/application/addDestination.d.ts +3 -0
  52. package/dist/nodes/Coolify/requests/application/addDestination.js +18 -0
  53. package/dist/nodes/Coolify/requests/application/addDestination.js.map +1 -0
  54. package/dist/nodes/Coolify/requests/application/applicationFields.d.ts +49 -0
  55. package/dist/nodes/Coolify/requests/application/applicationFields.js +513 -0
  56. package/dist/nodes/Coolify/requests/application/applicationFields.js.map +1 -0
  57. package/dist/nodes/Coolify/requests/application/applicationUpdateFields.d.ts +21 -0
  58. package/dist/nodes/Coolify/requests/application/applicationUpdateFields.js +315 -0
  59. package/dist/nodes/Coolify/requests/application/applicationUpdateFields.js.map +1 -0
  60. package/dist/nodes/Coolify/requests/application/clone.d.ts +3 -0
  61. package/dist/nodes/Coolify/requests/application/clone.js +26 -0
  62. package/dist/nodes/Coolify/requests/application/clone.js.map +1 -0
  63. package/dist/nodes/Coolify/requests/application/createDockerImage.d.ts +3 -0
  64. package/dist/nodes/Coolify/requests/application/createDockerImage.js +18 -0
  65. package/dist/nodes/Coolify/requests/application/createDockerImage.js.map +1 -0
  66. package/dist/nodes/Coolify/requests/application/createDockerfile.d.ts +3 -0
  67. package/dist/nodes/Coolify/requests/application/createDockerfile.js +19 -0
  68. package/dist/nodes/Coolify/requests/application/createDockerfile.js.map +1 -0
  69. package/dist/nodes/Coolify/requests/application/createEnv.d.ts +3 -0
  70. package/dist/nodes/Coolify/requests/application/createEnv.js +32 -0
  71. package/dist/nodes/Coolify/requests/application/createEnv.js.map +1 -0
  72. package/dist/nodes/Coolify/requests/application/createPreviewDeployment.d.ts +3 -0
  73. package/dist/nodes/Coolify/requests/application/createPreviewDeployment.js +53 -0
  74. package/dist/nodes/Coolify/requests/application/createPreviewDeployment.js.map +1 -0
  75. package/dist/nodes/Coolify/requests/application/createPrivateDeployKey.d.ts +3 -0
  76. package/dist/nodes/Coolify/requests/application/createPrivateDeployKey.js +27 -0
  77. package/dist/nodes/Coolify/requests/application/createPrivateDeployKey.js.map +1 -0
  78. package/dist/nodes/Coolify/requests/application/createPrivateGithubApp.d.ts +3 -0
  79. package/dist/nodes/Coolify/requests/application/createPrivateGithubApp.js +27 -0
  80. package/dist/nodes/Coolify/requests/application/createPrivateGithubApp.js.map +1 -0
  81. package/dist/nodes/Coolify/requests/application/createPublic.d.ts +3 -0
  82. package/dist/nodes/Coolify/requests/application/createPublic.js +24 -0
  83. package/dist/nodes/Coolify/requests/application/createPublic.js.map +1 -0
  84. package/dist/nodes/Coolify/requests/application/createStorage.d.ts +3 -0
  85. package/dist/nodes/Coolify/requests/application/createStorage.js +48 -0
  86. package/dist/nodes/Coolify/requests/application/createStorage.js.map +1 -0
  87. package/dist/nodes/Coolify/requests/application/createTag.d.ts +3 -0
  88. package/dist/nodes/Coolify/requests/application/createTag.js +41 -0
  89. package/dist/nodes/Coolify/requests/application/createTag.js.map +1 -0
  90. package/dist/nodes/Coolify/requests/application/delete.d.ts +3 -0
  91. package/dist/nodes/Coolify/requests/application/delete.js +23 -0
  92. package/dist/nodes/Coolify/requests/application/delete.js.map +1 -0
  93. package/dist/nodes/Coolify/requests/application/deleteEnv.d.ts +3 -0
  94. package/dist/nodes/Coolify/requests/application/deleteEnv.js +17 -0
  95. package/dist/nodes/Coolify/requests/application/deleteEnv.js.map +1 -0
  96. package/dist/nodes/Coolify/requests/application/deletePreviewDeployment.d.ts +3 -0
  97. package/dist/nodes/Coolify/requests/application/deletePreviewDeployment.js +17 -0
  98. package/dist/nodes/Coolify/requests/application/deletePreviewDeployment.js.map +1 -0
  99. package/dist/nodes/Coolify/requests/application/deleteStorage.d.ts +3 -0
  100. package/dist/nodes/Coolify/requests/application/deleteStorage.js +19 -0
  101. package/dist/nodes/Coolify/requests/application/deleteStorage.js.map +1 -0
  102. package/dist/nodes/Coolify/requests/application/deleteStorageBackupSchedule.d.ts +3 -0
  103. package/dist/nodes/Coolify/requests/application/deleteStorageBackupSchedule.js +17 -0
  104. package/dist/nodes/Coolify/requests/application/deleteStorageBackupSchedule.js.map +1 -0
  105. package/dist/nodes/Coolify/requests/application/deleteTag.d.ts +3 -0
  106. package/dist/nodes/Coolify/requests/application/deleteTag.js +19 -0
  107. package/dist/nodes/Coolify/requests/application/deleteTag.js.map +1 -0
  108. package/dist/nodes/Coolify/requests/application/get.d.ts +3 -0
  109. package/dist/nodes/Coolify/requests/application/get.js +12 -0
  110. package/dist/nodes/Coolify/requests/application/get.js.map +1 -0
  111. package/dist/nodes/Coolify/requests/application/getLogs.d.ts +4 -0
  112. package/dist/nodes/Coolify/requests/application/getLogs.js +47 -0
  113. package/dist/nodes/Coolify/requests/application/getLogs.js.map +1 -0
  114. package/dist/nodes/Coolify/requests/application/getPreviewDeployment.d.ts +3 -0
  115. package/dist/nodes/Coolify/requests/application/getPreviewDeployment.js +21 -0
  116. package/dist/nodes/Coolify/requests/application/getPreviewDeployment.js.map +1 -0
  117. package/dist/nodes/Coolify/requests/application/getPreviewLogs.d.ts +3 -0
  118. package/dist/nodes/Coolify/requests/application/getPreviewLogs.js +34 -0
  119. package/dist/nodes/Coolify/requests/application/getPreviewLogs.js.map +1 -0
  120. package/dist/nodes/Coolify/requests/application/index.d.ts +45 -0
  121. package/dist/nodes/Coolify/requests/application/index.js +178 -0
  122. package/dist/nodes/Coolify/requests/application/index.js.map +1 -0
  123. package/dist/nodes/Coolify/requests/application/list.d.ts +3 -0
  124. package/dist/nodes/Coolify/requests/application/list.js +15 -0
  125. package/dist/nodes/Coolify/requests/application/list.js.map +1 -0
  126. package/dist/nodes/Coolify/requests/application/listDestinations.d.ts +3 -0
  127. package/dist/nodes/Coolify/requests/application/listDestinations.js +12 -0
  128. package/dist/nodes/Coolify/requests/application/listDestinations.js.map +1 -0
  129. package/dist/nodes/Coolify/requests/application/listEnvs.d.ts +3 -0
  130. package/dist/nodes/Coolify/requests/application/listEnvs.js +12 -0
  131. package/dist/nodes/Coolify/requests/application/listEnvs.js.map +1 -0
  132. package/dist/nodes/Coolify/requests/application/listPreviewDeployments.d.ts +3 -0
  133. package/dist/nodes/Coolify/requests/application/listPreviewDeployments.js +12 -0
  134. package/dist/nodes/Coolify/requests/application/listPreviewDeployments.js.map +1 -0
  135. package/dist/nodes/Coolify/requests/application/listRollbackImages.d.ts +3 -0
  136. package/dist/nodes/Coolify/requests/application/listRollbackImages.js +12 -0
  137. package/dist/nodes/Coolify/requests/application/listRollbackImages.js.map +1 -0
  138. package/dist/nodes/Coolify/requests/application/listStorages.d.ts +3 -0
  139. package/dist/nodes/Coolify/requests/application/listStorages.js +12 -0
  140. package/dist/nodes/Coolify/requests/application/listStorages.js.map +1 -0
  141. package/dist/nodes/Coolify/requests/application/listTags.d.ts +3 -0
  142. package/dist/nodes/Coolify/requests/application/listTags.js +12 -0
  143. package/dist/nodes/Coolify/requests/application/listTags.js.map +1 -0
  144. package/dist/nodes/Coolify/requests/application/migrate.d.ts +3 -0
  145. package/dist/nodes/Coolify/requests/application/migrate.js +21 -0
  146. package/dist/nodes/Coolify/requests/application/migrate.js.map +1 -0
  147. package/dist/nodes/Coolify/requests/application/move.d.ts +3 -0
  148. package/dist/nodes/Coolify/requests/application/move.js +18 -0
  149. package/dist/nodes/Coolify/requests/application/move.js.map +1 -0
  150. package/dist/nodes/Coolify/requests/application/parameters.d.ts +5 -0
  151. package/dist/nodes/Coolify/requests/application/parameters.js +35 -0
  152. package/dist/nodes/Coolify/requests/application/parameters.js.map +1 -0
  153. package/dist/nodes/Coolify/requests/application/removeDestination.d.ts +3 -0
  154. package/dist/nodes/Coolify/requests/application/removeDestination.js +17 -0
  155. package/dist/nodes/Coolify/requests/application/removeDestination.js.map +1 -0
  156. package/dist/nodes/Coolify/requests/application/restart.d.ts +3 -0
  157. package/dist/nodes/Coolify/requests/application/restart.js +12 -0
  158. package/dist/nodes/Coolify/requests/application/restart.js.map +1 -0
  159. package/dist/nodes/Coolify/requests/application/rollback.d.ts +3 -0
  160. package/dist/nodes/Coolify/requests/application/rollback.js +22 -0
  161. package/dist/nodes/Coolify/requests/application/rollback.js.map +1 -0
  162. package/dist/nodes/Coolify/requests/application/runStorageBackup.d.ts +3 -0
  163. package/dist/nodes/Coolify/requests/application/runStorageBackup.js +19 -0
  164. package/dist/nodes/Coolify/requests/application/runStorageBackup.js.map +1 -0
  165. package/dist/nodes/Coolify/requests/application/setStorageBackupSchedule.d.ts +3 -0
  166. package/dist/nodes/Coolify/requests/application/setStorageBackupSchedule.js +72 -0
  167. package/dist/nodes/Coolify/requests/application/setStorageBackupSchedule.js.map +1 -0
  168. package/dist/nodes/Coolify/requests/application/start.d.ts +3 -0
  169. package/dist/nodes/Coolify/requests/application/start.js +23 -0
  170. package/dist/nodes/Coolify/requests/application/start.js.map +1 -0
  171. package/dist/nodes/Coolify/requests/application/stop.d.ts +3 -0
  172. package/dist/nodes/Coolify/requests/application/stop.js +16 -0
  173. package/dist/nodes/Coolify/requests/application/stop.js.map +1 -0
  174. package/dist/nodes/Coolify/requests/application/storageBackupScheduleFields.d.ts +34 -0
  175. package/dist/nodes/Coolify/requests/application/storageBackupScheduleFields.js +204 -0
  176. package/dist/nodes/Coolify/requests/application/storageBackupScheduleFields.js.map +1 -0
  177. package/dist/nodes/Coolify/requests/application/update.d.ts +3 -0
  178. package/dist/nodes/Coolify/requests/application/update.js +23 -0
  179. package/dist/nodes/Coolify/requests/application/update.js.map +1 -0
  180. package/dist/nodes/Coolify/requests/application/updateEnv.d.ts +3 -0
  181. package/dist/nodes/Coolify/requests/application/updateEnv.js +31 -0
  182. package/dist/nodes/Coolify/requests/application/updateEnv.js.map +1 -0
  183. package/dist/nodes/Coolify/requests/application/updateEnvsBulk.d.ts +3 -0
  184. package/dist/nodes/Coolify/requests/application/updateEnvsBulk.js +43 -0
  185. package/dist/nodes/Coolify/requests/application/updateEnvsBulk.js.map +1 -0
  186. package/dist/nodes/Coolify/requests/application/updatePreviewDomains.d.ts +5 -0
  187. package/dist/nodes/Coolify/requests/application/updatePreviewDomains.js +61 -0
  188. package/dist/nodes/Coolify/requests/application/updatePreviewDomains.js.map +1 -0
  189. package/dist/nodes/Coolify/requests/application/updateStorage.d.ts +3 -0
  190. package/dist/nodes/Coolify/requests/application/updateStorage.js +45 -0
  191. package/dist/nodes/Coolify/requests/application/updateStorage.js.map +1 -0
  192. package/dist/nodes/Coolify/requests/auditEvent/index.d.ts +3 -0
  193. package/dist/nodes/Coolify/requests/auditEvent/index.js +10 -0
  194. package/dist/nodes/Coolify/requests/auditEvent/index.js.map +1 -0
  195. package/dist/nodes/Coolify/requests/auditEvent/listAuditEvents.d.ts +3 -0
  196. package/dist/nodes/Coolify/requests/auditEvent/listAuditEvents.js +52 -0
  197. package/dist/nodes/Coolify/requests/auditEvent/listAuditEvents.js.map +1 -0
  198. package/dist/nodes/Coolify/requests/cloudInitScript/cloudInitScriptFields.d.ts +17 -0
  199. package/dist/nodes/Coolify/requests/cloudInitScript/cloudInitScriptFields.js +85 -0
  200. package/dist/nodes/Coolify/requests/cloudInitScript/cloudInitScriptFields.js.map +1 -0
  201. package/dist/nodes/Coolify/requests/cloudInitScript/create.d.ts +3 -0
  202. package/dist/nodes/Coolify/requests/cloudInitScript/create.js +13 -0
  203. package/dist/nodes/Coolify/requests/cloudInitScript/create.js.map +1 -0
  204. package/dist/nodes/Coolify/requests/cloudInitScript/delete.d.ts +3 -0
  205. package/dist/nodes/Coolify/requests/cloudInitScript/delete.js +13 -0
  206. package/dist/nodes/Coolify/requests/cloudInitScript/delete.js.map +1 -0
  207. package/dist/nodes/Coolify/requests/cloudInitScript/get.d.ts +3 -0
  208. package/dist/nodes/Coolify/requests/cloudInitScript/get.js +12 -0
  209. package/dist/nodes/Coolify/requests/cloudInitScript/get.js.map +1 -0
  210. package/dist/nodes/Coolify/requests/cloudInitScript/index.d.ts +9 -0
  211. package/dist/nodes/Coolify/requests/cloudInitScript/index.js +37 -0
  212. package/dist/nodes/Coolify/requests/cloudInitScript/index.js.map +1 -0
  213. package/dist/nodes/Coolify/requests/cloudInitScript/list.d.ts +3 -0
  214. package/dist/nodes/Coolify/requests/cloudInitScript/list.js +10 -0
  215. package/dist/nodes/Coolify/requests/cloudInitScript/list.js.map +1 -0
  216. package/dist/nodes/Coolify/requests/cloudInitScript/parameters.d.ts +2 -0
  217. package/dist/nodes/Coolify/requests/cloudInitScript/parameters.js +13 -0
  218. package/dist/nodes/Coolify/requests/cloudInitScript/parameters.js.map +1 -0
  219. package/dist/nodes/Coolify/requests/cloudInitScript/update.d.ts +3 -0
  220. package/dist/nodes/Coolify/requests/cloudInitScript/update.js +19 -0
  221. package/dist/nodes/Coolify/requests/cloudInitScript/update.js.map +1 -0
  222. package/dist/nodes/Coolify/requests/cloudToken/cloudTokenFields.d.ts +21 -0
  223. package/dist/nodes/Coolify/requests/cloudToken/cloudTokenFields.js +100 -0
  224. package/dist/nodes/Coolify/requests/cloudToken/cloudTokenFields.js.map +1 -0
  225. package/dist/nodes/Coolify/requests/cloudToken/create.d.ts +3 -0
  226. package/dist/nodes/Coolify/requests/cloudToken/create.js +12 -0
  227. package/dist/nodes/Coolify/requests/cloudToken/create.js.map +1 -0
  228. package/dist/nodes/Coolify/requests/cloudToken/delete.d.ts +3 -0
  229. package/dist/nodes/Coolify/requests/cloudToken/delete.js +11 -0
  230. package/dist/nodes/Coolify/requests/cloudToken/delete.js.map +1 -0
  231. package/dist/nodes/Coolify/requests/cloudToken/get.d.ts +3 -0
  232. package/dist/nodes/Coolify/requests/cloudToken/get.js +11 -0
  233. package/dist/nodes/Coolify/requests/cloudToken/get.js.map +1 -0
  234. package/dist/nodes/Coolify/requests/cloudToken/index.d.ts +12 -0
  235. package/dist/nodes/Coolify/requests/cloudToken/index.js +40 -0
  236. package/dist/nodes/Coolify/requests/cloudToken/index.js.map +1 -0
  237. package/dist/nodes/Coolify/requests/cloudToken/list.d.ts +3 -0
  238. package/dist/nodes/Coolify/requests/cloudToken/list.js +10 -0
  239. package/dist/nodes/Coolify/requests/cloudToken/list.js.map +1 -0
  240. package/dist/nodes/Coolify/requests/cloudToken/parameters.d.ts +2 -0
  241. package/dist/nodes/Coolify/requests/cloudToken/parameters.js +13 -0
  242. package/dist/nodes/Coolify/requests/cloudToken/parameters.js.map +1 -0
  243. package/dist/nodes/Coolify/requests/cloudToken/types.d.ts +2 -0
  244. package/dist/nodes/Coolify/requests/cloudToken/types.js +5 -0
  245. package/dist/nodes/Coolify/requests/cloudToken/types.js.map +1 -0
  246. package/dist/nodes/Coolify/requests/cloudToken/update.d.ts +3 -0
  247. package/dist/nodes/Coolify/requests/cloudToken/update.js +15 -0
  248. package/dist/nodes/Coolify/requests/cloudToken/update.js.map +1 -0
  249. package/dist/nodes/Coolify/requests/cloudToken/validate.d.ts +3 -0
  250. package/dist/nodes/Coolify/requests/cloudToken/validate.js +11 -0
  251. package/dist/nodes/Coolify/requests/cloudToken/validate.js.map +1 -0
  252. package/dist/nodes/Coolify/requests/index.d.ts +5 -0
  253. package/dist/nodes/Coolify/requests/index.js +83 -0
  254. package/dist/nodes/Coolify/requests/index.js.map +1 -0
  255. package/dist/nodes/Coolify/requests/types.d.ts +10 -0
  256. package/dist/nodes/Coolify/requests/types.js +3 -0
  257. package/dist/nodes/Coolify/requests/types.js.map +1 -0
  258. package/dist/nodes/Coolify/shared/apiRequest.d.ts +18 -0
  259. package/dist/nodes/Coolify/shared/apiRequest.js +187 -0
  260. package/dist/nodes/Coolify/shared/apiRequest.js.map +1 -0
  261. package/dist/nodes/Coolify/shared/pathSegment.d.ts +1 -0
  262. package/dist/nodes/Coolify/shared/pathSegment.js +7 -0
  263. package/dist/nodes/Coolify/shared/pathSegment.js.map +1 -0
  264. package/dist/nodes/Coolify/shared/rateLimit.d.ts +35 -0
  265. package/dist/nodes/Coolify/shared/rateLimit.js +282 -0
  266. package/dist/nodes/Coolify/shared/rateLimit.js.map +1 -0
  267. package/dist/package.json +77 -0
  268. package/dist/tsconfig.tsbuildinfo +1 -0
  269. package/package.json +76 -5
package/LICENSE.md ADDED
@@ -0,0 +1,19 @@
1
+ Copyright 2022 n8n
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the "Software"), to deal in
5
+ the Software without restriction, including without limitation the rights to
6
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
+ of the Software, and to permit persons to whom the Software is furnished to do
8
+ so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,443 @@
1
- # Temporary Holding Version
1
+ <p align="center">
2
+ <img src="n8n-logo-black-accent.svg" width="200" alt="n8n" />
3
+ </p>
2
4
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
5
+ <h1 align="center">n8n-nodes-coolify</h1>
6
+
7
+ <p align="center">
8
+ A community-built <a href="https://coolify.io/">Coolify</a> integration for <a href="https://n8n.io/">n8n</a>.
9
+ </p>
10
+
11
+ <p align="center">
12
+ <i>Automate Coolify workflows, from application management to preview deployments.</i>
13
+ </p>
14
+
15
+ [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.
16
+
17
+ **@sinehypernova-0718/n8n-nodes-coolify** brings Coolify API operations into n8n workflows, letting you work with Coolify resources through the workflow editor instead of manually constructing API requests.
18
+
19
+ ## ✨ Features
20
+
21
+ - **Coolify API v1 integration** — interact with the Coolify REST API directly from n8n workflows.
22
+ - **API token authentication** — authorize API requests with a Coolify API token sent as a bearer token.
23
+ - **Native n8n interface** — select resources, operations, and parameters through the workflow editor.
24
+ - **Application management** — 42 operations on the `Application` resource, including creation, lifecycle, environment variables, storages, backups, destinations, and tags.
25
+ - **Audit events** — list the team audit events on the `Audit Event` resource, paginated and filterable.
26
+ - **Cloud init scripts** — create, read, update, and delete the reusable cloud init scripts of the team on the `Cloud Init Script` resource.
27
+ - **Cloud tokens** — list, inspect, create, rename, delete, and validate the cloud provider tokens of the team on the `Cloud Token` resource.
28
+ - **Preview deployments** — open, list, inspect, and delete preview deployments for pull requests.
29
+ - **Rate-limit aware transport** — one shared transport that honours the server's rate-limit headers and retries only requests that are safe to repeat.
30
+
31
+ ## 📁 Repository Structure
32
+
33
+ ```text
34
+ n8n-nodes-coolify/
35
+ ├── credentials/
36
+ │ └── CoolifyApi.credentials.ts
37
+ ├── nodes/
38
+ │ └── Coolify/
39
+ │ ├── Coolify.node.ts
40
+ │ ├── Coolify.node.json
41
+ │ ├── descriptions/
42
+ │ │ ├── Application/
43
+ │ │ │ ├── ApplicationDescription.ts
44
+ │ │ │ ├── applicationCreateFields.ts
45
+ │ │ │ ├── applicationFieldProperties.ts
46
+ │ │ │ ├── applicationUpdateFields.ts
47
+ │ │ │ ├── storageBackupScheduleFields.ts
48
+ │ │ │ └── index.ts
49
+ │ │ ├── AuditEvent/
50
+ │ │ ├── CloudInitScript/
51
+ │ │ ├── CloudToken/
52
+ │ │ └── index.ts
53
+ │ ├── requests/
54
+ │ │ ├── application/
55
+ │ │ │ ├── <operation>.ts
56
+ │ │ │ └── index.ts
57
+ │ │ ├── auditEvent/
58
+ │ │ ├── cloudInitScript/
59
+ │ │ ├── cloudToken/
60
+ │ │ ├── types.ts
61
+ │ │ └── index.ts
62
+ │ └── shared/
63
+ │ ├── apiRequest.ts
64
+ │ └── rateLimit.ts
65
+ ├── icons/
66
+ │ └── coolify.svg
67
+ ├── package.json
68
+ ├── README.md
69
+ ├── CHANGELOG.md
70
+ └── LICENSE.md
71
+ ```
72
+
73
+ ### Architecture
74
+
75
+ - **`credentials/`** — defines the Coolify API credential used to authenticate requests.
76
+ - **`descriptions/`** — contains the resource and operation definitions displayed in the n8n editor. Its `index.ts` explicitly exports the descriptions consumed by the main node.
77
+ - **`requests/<resource>/`** — contains the request builders of a resource; the node implements the `application`, `auditEvent`, `cloudInitScript` and `cloudToken` resources.
78
+ - **`requests/<resource>/<operation>.ts`** — keeps individual API request builders in separate operation-specific modules, such as `list.ts`, `get.ts`, `createPublic.ts`, and `update.ts`.
79
+ - **Resource `index.ts` files** — explicitly export the request builders belonging to each resource.
80
+ - **`requests/index.ts`** — re-exports the resource-level barrels, providing a single import entry point for request modules.
81
+ - **`shared/apiRequest.ts`** — the single authenticated transport. It shapes the request, attaches the bearer token, applies the retry policy, and converts failures into n8n errors.
82
+ - **`shared/rateLimit.ts`** — the rate-limit and retry policy, kept free of `n8n-workflow` imports so it can be unit-tested in isolation.
83
+ - **`Coolify.node.ts`** — defines the n8n node and coordinates operation execution, authenticated HTTP requests, retries, and error handling.
84
+
85
+ The architecture separates editor-facing configuration from API request construction and execution. Resource descriptions define the available operations and parameters, while request modules build operation-specific requests. The main node remains responsible for invoking authenticated HTTP requests through n8n's credential-aware helpers and handling execution results.
86
+
87
+ Explicit exports keep imports predictable and avoid unnecessary wildcard exports. The resource-specific modules remain independent, while the barrel files provide convenient entry points without introducing another execution layer.
88
+
89
+ Additional resources can follow the same structure, with their own descriptions and operation-specific request modules. This allows the integration to expand without requiring a redesign of the existing architecture.
90
+
91
+ ## 📦 Installation
92
+
93
+ Install the package through your n8n instance using the community node installation interface.
94
+
95
+ 1. Open your n8n instance.
96
+ 2. Navigate to **Settings → Community Nodes**.
97
+ 3. Select **Install**.
98
+ 4. Enter the package name `@sinehypernova-0718/n8n-nodes-coolify`.
99
+ 5. Review and accept the installation confirmation.
100
+ 6. Once installation completes, open a workflow and search for the Coolify node.
101
+
102
+ For detailed instructions, see the [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).
103
+
104
+ > **Note:** The package name entered during installation must match the name under which this project is published to npm (`@sinehypernova-0718/n8n-nodes-coolify`). Community node installation availability also depends on your n8n deployment configuration and administrator policies.
105
+
106
+ ## ⚙️ Operations
107
+
108
+ The Coolify node exposes the supported Coolify API operations through n8n's resource and operation selectors. The available operations and parameters depend on the installed package version.
109
+
110
+ ### Application
111
+
112
+ The node exposes four resources — **Application**, with 42 operations, **Audit Event**, with the List operation, **Cloud Init Script**, with 5 operations, and **Cloud Token**, with 6 operations. The other Coolify resources (services, databases, servers, projects, deployments) are not exposed yet.
113
+
114
+ Every operation is sent through the shared transport, so the rate limit and retry policy described below applies to all of them: reads are retried when the server reports a transient failure, writes are never repeated automatically.
115
+
116
+ #### Reading applications
117
+
118
+ | Operation | Description |
119
+ | ---------------------- | --------------------------------------------------------------- |
120
+ | `List` | List the applications of the team, optionally filtered by a tag |
121
+ | `Get` | Get a single application by UUID |
122
+ | `List Tags` | List the tags of an application |
123
+ | `List Rollback Images` | List the images an application can be rolled back to |
124
+
125
+ #### Environment variables
126
+
127
+ | Operation | Description |
128
+ | -------------------- | -------------------------------------------------------------- |
129
+ | `List Envs` | List the environment variables of an application |
130
+ | `Create Env` | Create an environment variable on an application |
131
+ | `Update Env` | Update an environment variable of an application |
132
+ | `Update Envs (Bulk)` | Update several environment variables of an application at once |
133
+ | `Delete Env` | Delete an environment variable of an application |
134
+
135
+ > **Note:** `Update Env` and `Update Envs (Bulk)` send the flags `is_preview`, `is_literal`, `is_multiline` and `is_shown_once` with the values the API applies by default, so a flag that is not part of the request is reset. Send every flag that the variable should keep.
136
+
137
+ #### Storages
138
+
139
+ | Operation | Description |
140
+ | ---------------- | ----------------------------------- |
141
+ | `List Storages` | List the storages of an application |
142
+ | `Create Storage` | Create a storage for an application |
143
+ | `Update Storage` | Update a storage of an application |
144
+ | `Delete Storage` | Delete a storage of an application |
145
+
146
+ #### Backups
147
+
148
+ | Operation | Description |
149
+ | -------------------------------- | ------------------------------------------------------------------------------------------------ |
150
+ | `Set Storage Backup Schedule` | Create or replace the backup schedule of a storage |
151
+ | `Run Storage Backup` | Queue an immediate backup of a storage |
152
+ | `Delete Storage Backup Schedule` | Delete the backup schedule of a storage, together with its existing local and S3 backup archives |
153
+
154
+ > **Note:** `Delete Storage Backup Schedule` removes the backup archives that already exist with the schedule, locally as well as in S3.
155
+
156
+ #### Destinations
157
+
158
+ | Operation | Description |
159
+ | -------------------- | -------------------------------------------------- |
160
+ | `List Destinations` | List the destinations of an application |
161
+ | `Add Destination` | Attach an additional destination to an application |
162
+ | `Remove Destination` | Detach a destination from an application |
163
+
164
+ #### Preview deployments
165
+
166
+ | Operation | Description |
167
+ | --------------------------- | ----------------------------------------------------------------------------------------------- |
168
+ | `Create Preview Deployment` | Open a preview deployment for a pull request and queue its deployment |
169
+ | `List Preview Deployments` | List the preview deployments of an application |
170
+ | `Get Preview Deployment` | Get a preview deployment by pull request ID |
171
+ | `Update Preview Domains` | Replace the domains of a preview deployment |
172
+ | `Delete Preview Deployment` | Delete a preview deployment, cancel its running deployments and remove its volumes and networks |
173
+
174
+ > **Note:** `Update Preview Domains` replaces the domains instead of merging them: a domain that is not part of the request is removed, and a Docker Compose service that is not listed loses its domain. Removing every domain is a separate, explicit switch.
175
+
176
+ #### Logs
177
+
178
+ | Operation | Description |
179
+ | ------------------------------ | ---------------------------------------------- |
180
+ | `Get Application Logs` | Get the container logs of an application |
181
+ | `Get Preview Application Logs` | Get the container logs of a preview deployment |
182
+
183
+ > **Note:** both log operations need a token with the `read:sensitive` or the `root` ability.
184
+
185
+ #### Tags
186
+
187
+ | Operation | Description |
188
+ | ------------ | -------------------------------- |
189
+ | `Create Tag` | Add a tag to an application |
190
+ | `Delete Tag` | Remove a tag from an application |
191
+
192
+ #### Creating applications
193
+
194
+ | Operation | Description |
195
+ | ----------------------------------- | -------------------------------------------------------------------- |
196
+ | `Create (Public)` | Create an application from a public Git repository |
197
+ | `Create (Private - GH App)` | Create an application from a private repository through a GitHub App |
198
+ | `Create (Private - Deploy Key)` | Create an application from a private repository through a deploy key |
199
+ | `Create (Dockerfile Without Git)` | Create an application from a Dockerfile |
200
+ | `Create (Docker Image Without Git)` | Create an application from a prebuilt Docker image |
201
+
202
+ > **Note:** the creation operations can queue a deployment right away. That needs a token with the `deploy` ability, and the server needs a destination it can host the application on.
203
+
204
+ #### Lifecycle
205
+
206
+ | Operation | Description |
207
+ | ---------- | ------------------------------------------------------------------------------------------------------ |
208
+ | `Start` | Start an application by UUID |
209
+ | `Stop` | Stop an application by UUID |
210
+ | `Restart` | Restart an application by UUID |
211
+ | `Update` | Update the settings of an application, only the settings that are filled in are changed |
212
+ | `Clone` | Clone an application to another destination of the team |
213
+ | `Migrate` | Migrate an application to another destination, the application is stopped and has to be deployed again |
214
+ | `Move` | Move an application to another environment, the running containers are not affected |
215
+ | `Rollback` | Queue a rollback deployment of an application to a previous image |
216
+ | `Delete` | Delete an application by UUID |
217
+
218
+ > **Note:** `Migrate` stops the application and only transfers the volume data when both servers are managed by Coolify, so the application has to be deployed again after it completes. `Rollback` needs a token with the `deploy` ability. `Delete` removes the configuration and the volumes of the application as well, the switches of the operation control that.
219
+
220
+ ### Audit Event
221
+
222
+ #### Reading audit events
223
+
224
+ | Operation | Description |
225
+ | --------- | ---------------------------------------------------------------------------------------- |
226
+ | `List` | List one page of the audit events of the team, newest first, with pagination and filters |
227
+
228
+ > **Note:** the response is one page in the pagination format of Coolify, not a flat list. Only team admins and owners can view audit events, a token without that access is expected to receive HTTP 403. Actor e-mail, token, metadata, changes, IP address and user agent are returned only for tokens with the `read:sensitive` or the `root` ability.
229
+
230
+ ### Cloud Init Script
231
+
232
+ #### Managing cloud init scripts
233
+
234
+ | Operation | Description |
235
+ | --------- | ---------------------------------------------------------------------------------- |
236
+ | `List` | List the cloud init scripts of the team, newest first |
237
+ | `Get` | Get a cloud init script by UUID |
238
+ | `Create` | Create a cloud init script with a name and its content |
239
+ | `Update` | Update a cloud init script by UUID, only the fields that are filled in are changed |
240
+ | `Delete` | Delete a cloud init script by UUID, the deletion is permanent |
241
+
242
+ > **Note:** the list endpoint is not paginated, it returns every script of the team. Only team admins and owners can use the resource, a token without that access is expected to receive HTTP 403. The content of a script is returned only for a token with the `read:sensitive` or the `root` ability that also satisfies the team authorization policy of Coolify, in practice the caller has to be an admin or owner of the team; a token ability on its own does not make the content visible. `Update` changes only the fields that are filled in, an emptied field keeps the value the script has, the API has no way to clear a field and rejects a blank value with HTTP 422. The API stores the content of a script without its leading and trailing whitespace. `Delete` removes the script permanently.
243
+
244
+ ### Cloud Token
245
+
246
+ #### Managing cloud provider tokens
247
+
248
+ | Operation | Description |
249
+ | ---------- | ----------------------------------------------------------------------- |
250
+ | `List` | List the cloud provider tokens of the team |
251
+ | `Get` | Get a cloud provider token by UUID |
252
+ | `Create` | Create a cloud provider token for a cloud provider |
253
+ | `Update` | Update the name of a cloud provider token by UUID |
254
+ | `Delete` | Delete a cloud provider token by UUID, the deletion is permanent |
255
+ | `Validate` | Validate a cloud provider token against the provider API |
256
+
257
+ > **Note:** only team admins and owners can use the resource, a token without that access is expected to receive HTTP 403. The Coolify API accepts the cloud providers `hetzner`, `digitalocean`, `vultr` and `hostinger`. The token value is a secret: it is validated against the provider before it is stored, and the API does not return it afterwards. `Update` changes only the name, the token value itself cannot be changed. A token that is used by a server cannot be deleted.
258
+
259
+ Operation parameters, filters, and available fields vary by endpoint. Refer to the operation descriptions in the n8n editor and the [Coolify API documentation](https://coolify.io/docs/api/overview) for endpoint-specific requirements.
260
+
261
+ This list describes the resources currently implemented in the integration. Additional resources and operations can be introduced in future releases.
262
+
263
+ ## ⏱️ Rate limits and retries
264
+
265
+ All Coolify API calls go through one shared transport (`nodes/Coolify/shared/apiRequest.ts`) that applies the retry policy of `nodes/Coolify/shared/rateLimit.ts`. The policy follows the [Coolify rate-limit documentation](https://coolify.io/docs/api/rate-limits).
266
+
267
+ - **The limit is never hardcoded.** The documented default is 200 requests per minute, but a self-hosted instance can change it with the `API_RATE_LIMIT` environment variable, so the server's response headers are the only source of truth.
268
+ - **Only requests that are safe to repeat are retried.** Reads (`GET`, `HEAD`, `OPTIONS`) are retried on `408`, `429`, transient `5xx` responses and transport failures. Writes are never retried automatically: a `429` alone is no proof that a write can be repeated, because Coolify also answers `429` when a deployment queue or an upstream provider is busy. A write is only retried when the operation explicitly declares that a repeat is harmless.
269
+ - **The wait comes from the server.** `Retry-After` (seconds) is honoured exactly, `X-RateLimit-Reset` (unix timestamp) is the fallback, and an exponential backoff with random jitter is used when the response carries neither. A server-mandated wait longer than the internal maximum wait of 60 seconds fails the request instead of retrying early.
270
+ - **At most three retries** per request, and never in parallel.
271
+ - Permanent failures (`400`, `401`, `403`, `404`, `409`, `422`) are surfaced immediately, with the Coolify message, the status code and the response body preserved.
272
+
273
+ The retry limits and timeouts are internal constants. There are no node-level options for them.
274
+
275
+ ## 🔐 Credentials
276
+
277
+ The Coolify node authenticates against the Coolify REST API with an API token, sent as a `Bearer` token in the `Authorization` header.
278
+
279
+ ### Prerequisites
280
+
281
+ Before configuring the credential, you need:
282
+
283
+ - A Coolify instance — either [Coolify Cloud](https://coolify.io/pricing) or your own self-hosted installation (see the Compatibility section for the supported Coolify version).
284
+ - An API token created in Coolify under **Keys & Tokens → API Tokens**, scoped to the team you want to work with. The token carries the permissions selected at creation time (`read`, `write`, `root`), so create the least privileged token that covers your workflow. The token needs the **`read`** permission — a deploy-only token cannot be tested, because the credential test reads the team bound to the token.
285
+ - On self-hosted instances, API access must be enabled by an administrator, and the caller must match the IP allowlist when one is configured.
286
+
287
+ ### Configure the credential
288
+
289
+ Create a Coolify API credential in n8n and supply the values required by the credential configuration.
290
+
291
+ | Setting | Value |
292
+ | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
293
+ | Base URL | Base URL of the Coolify API, including the `/api/v1` path. Use `https://app.coolify.io/api/v1` for Coolify Cloud, or the URL of your own instance (for example `https://coolify.example.com/api/v1`). A trailing slash is tolerated; the `/api/v1` suffix is required. |
294
+ | Access Token | The API token created in Coolify. It is sent as `Authorization: Bearer <token>`. |
295
+
296
+ The credential test calls `GET /team` against the configured base URL — the endpoint that returns the team bound to the token — so it verifies the token against the same instance your workflows will use. The test is read-only, and it reports whether a failure was caused by the token (401), by permissions, API access or the IP allowlist (403), or by a base URL that does not point at the API (404).
297
+
298
+ ### Permissions and access
299
+
300
+ The configured token covers the read and write permissions used by the current implementation. Individual operations may still require a specific ability, team access, or an additional API permission.
301
+
302
+ Deployment, rollback, and preview deployment operations need a token with the `deploy` ability, and the log operations need the `read:sensitive` or the `root` ability.
303
+
304
+ Keep your token private. Never commit credentials to the repository or include tokens in issue reports, screenshots, or logs.
305
+
306
+ ## 🧩 Compatibility
307
+
308
+ This package is designed for n8n's community node ecosystem and uses the n8n node API.
309
+
310
+ - **Integration type:** n8n community node.
311
+ - **Implementation language:** TypeScript.
312
+ - **API:** Coolify API v1.
313
+ - **Coolify version:** Depends on the target Coolify instance's API version. The credential test uses `GET /team`, the canonical endpoint for "the team bound to the token" in the [Coolify OpenAPI specification](https://github.com/coollabsio/coolify/blob/main/openapi.yaml); the credential documents this endpoint as available from Coolify 4.3.0. The request contracts of the operations were aligned against the Coolify OpenAPI specification of a recent Coolify 4.x release, and some operations send fields that only recent releases publish, so on an older instance those fields may be rejected. Whether a given endpoint or field is accepted therefore depends on the version of Coolify you run; consult the Coolify API documentation for your instance and do not assume every field is supported by every stable release. The exact minimum Coolify version supported by every operation is not verified in this repository and needs review.
314
+ - **Authentication:** Coolify API token (Bearer), with the `read` permission.
315
+ - **Package distribution:** npm — end users install the published package with the n8n community nodes interface, and npm remains the registry the package is published to.
316
+ - **Development package manager:** pnpm — the repository is developed, built, and published with pnpm, pinned through the `packageManager` field in `package.json` and `pnpm-lock.yaml`.
317
+
318
+ The package declares its n8n node metadata and entry points in `package.json`. Compatibility depends on the n8n version, the available `n8n-workflow` APIs, and the package's dependencies.
319
+
320
+ The `0.1.x` releases are pre-1.0 releases. Operation coverage and compatibility may evolve as the integration develops.
321
+
322
+ ## 🚀 Usage
323
+
324
+ After installing the node and configuring the API credential, you can incorporate Coolify API operations into your n8n workflows.
325
+
326
+ ### Basic workflow setup
327
+
328
+ 1. Create a workflow in n8n.
329
+ 2. Add the Coolify node.
330
+ 3. Select your Coolify API credential.
331
+ 4. Choose the resource you want to work with, such as **Application**.
332
+ 5. Select the required operation.
333
+ 6. Configure its parameters, identifiers, and other required fields.
334
+ 7. Connect the node to the other nodes in your workflow.
335
+ 8. Execute the workflow and inspect the returned data.
336
+
337
+ ### Troubleshooting
338
+
339
+ If an operation fails:
340
+
341
+ - Verify that the Coolify credential is configured with the right base URL and a valid token.
342
+ - Confirm that the token has the permission the operation needs (`read`, `write`, `deploy`, `read:sensitive`, or `root`).
343
+ - Check that the supplied application UUIDs exist and are accessible to the team bound to the token.
344
+ - On self-hosted instances, verify that API access is enabled and that the caller matches the IP allowlist.
345
+ - Verify required fields and supported parameter values.
346
+ - Review the error returned by n8n and consult the relevant Coolify API documentation.
347
+
348
+ For general workflow guidance, see the [n8n Try it out documentation](https://docs.n8n.io/try-it-out/).
349
+
350
+ ## 🛠️ Development
351
+
352
+ ### Requirements
353
+
354
+ - **[Node.js](https://nodejs.org/)** (v22 or higher) and **pnpm**
355
+ - Linux/Mac/WSL: Install via [nvm](https://github.com/nvm-sh/nvm)
356
+ - Windows: Follow [Microsoft's NodeJS guide](https://learn.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows)
357
+ - **[git](https://git-scm.com/downloads)**
358
+ - **[Corepack](https://nodejs.org/api/corepack.html)** (optional) — pnpm 12.4.2 is pinned in `package.json` via the `packageManager` field
359
+
360
+ ```bash
361
+ corepack enable # optional, if you do not have pnpm installed globally
362
+ pnpm install
363
+ ```
364
+
365
+ > [!NOTE]
366
+ > The `@n8n/node-cli` is included as a dev dependency and is installed automatically when you run `pnpm install`. The CLI includes n8n for local development, so you do not need to install n8n globally.
367
+
368
+ ### Available scripts
369
+
370
+ | Script | Description |
371
+ | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
372
+ | `pnpm run dev` | Start n8n with your node and watch for changes (runs `n8n-node dev`) |
373
+ | `pnpm run build` | Compile TypeScript to JavaScript for production (runs `n8n-node build`) |
374
+ | `pnpm run build:watch` | Build in watch mode (auto-rebuild on changes) |
375
+ | `pnpm run lint` | Check your code for errors and style issues (runs `n8n-node lint`) |
376
+ | `pnpm run lint:fix` | Automatically fix linting issues when possible (runs `n8n-node lint --fix`) |
377
+ | `pnpm run release:local` | Create a release locally: bump the version, update the changelog, commit, tag (`vX.Y.Z`), and push — this triggers the publish workflow |
378
+ | `pnpm run release` | The publish entry point used by the GitHub Actions publish workflow: lints, builds, and publishes to npm with provenance |
379
+
380
+ > **Note:** `pnpm run release` is what CI runs. Locally, use `pnpm run release:local` to create the tag, because `@n8n/node-cli` pins release-it's branch check to `main` while this repository develops on `master`. The repository configuration in `.release-it.json` handles the `master` branch, the `vX.Y.Z` tag format, and the changelog generation.
381
+
382
+ ### Release process
383
+
384
+ Releases are published by GitHub Actions, never from a local machine, so that every published version carries an npm provenance attestation (required by n8n for verified community nodes).
385
+
386
+ 1. Make sure `master` is up to date and the working tree is clean.
387
+ 2. Run `pnpm run release:local`. It lints, builds, prompts for a version bump, updates `CHANGELOG.md`, commits, creates a `vX.Y.Z` tag, and pushes it.
388
+ 3. The push of the tag triggers `.github/workflows/publish.yml`, which checks out the tag, verifies that the tag matches `package.json`, checks that the version is not already on npm, and publishes it to npm with provenance.
389
+
390
+ > **Note:** the release creates a GitHub release as well, which needs a `GITHUB_TOKEN` with `repo` scope in your environment (for example `export GITHUB_TOKEN=$(gh auth token)`).
391
+ > Without it, release-it falls back to opening the GitHub release page in the browser.
392
+
393
+ ### Required repository configuration
394
+
395
+ - A repository secret named `NPM_TOKEN` holding an npm granular access token with **read and write** publish permission for `@sinehypernova-0718/n8n-nodes-coolify`.
396
+ Alternatively, configure [npm Trusted Publishing](https://docs.npmjs.com/trusted-publishers) for this repository and the `publish.yml` workflow, and leave `NPM_TOKEN` unset.
397
+ - The default branch must be `master`; CI and the publish workflow are configured for it.
398
+ - On self-hosted Coolify instances, an administrator must enable API access for the token's team.
399
+
400
+ ## 🔗 Resources
401
+
402
+ - [Coolify API documentation](https://coolify.io/docs/api/overview) — API endpoints, request parameters, and responses.
403
+ - [Coolify API authorization](https://coolify.io/docs/api/authorization) — how the API authenticates a request.
404
+ - [Coolify API tokens](https://coolify.io/docs/core/security/credentials/api-tokens) — creating and scoping API tokens.
405
+ - [Coolify rate limits](https://coolify.io/docs/api/rate-limits) — the documented request budget and the response headers it is sent with.
406
+ - [Coolify API — Authenticated Team (`GET /team`)](https://coolify.io/docs/api/endpoints/teams/get-token-team) — the endpoint the credential test uses.
407
+ - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes) — community node discovery and installation.
408
+ - [n8n community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) — installation instructions.
409
+ - [n8n documentation](https://docs.n8n.io/) — workflow creation and node configuration.
410
+ - [GitHub repository](https://github.com/sinehypernova-0718/n8n-nodes-coolify) — source code, issues, and contributions.
411
+
412
+ ## 📝 Version history
413
+
414
+ ### v0.1.2
415
+
416
+ Adds the Cloud Token resource, introducing six operations for managing Coolify cloud provider tokens:
417
+
418
+ - **List** — Retrieve cloud tokens.
419
+ - **Get** — Retrieve a specific cloud token.
420
+ - **Create** — Register a new cloud token.
421
+ - **Update** — Update an existing cloud token.
422
+ - **Delete** — Remove a cloud token.
423
+ - **Validate** — Check whether a cloud token can authenticate with its configured cloud provider.
424
+
425
+ ### v0.1.1
426
+
427
+ Initial pre-1.0 release of the Coolify integration for n8n.
428
+
429
+ Introduces Application, Audit Event, and Cloud Init Script resources.
430
+ Adds Coolify API token authentication for API requests.
431
+ Includes application creation, lifecycle, environment variables, storages, backups, destinations, tags, preview deployments, and logs operations.
432
+ Includes audit event listing with pagination.
433
+ Includes the cloud init script operations.
434
+ Includes rate-limit aware transport and operation-specific request handling where implemented.
435
+ This release establishes the initial integration structure, with further Coolify resources and operations available for future development.
436
+
437
+ ## 📄 License
438
+
439
+ This project is licensed under the [MIT License](LICENSE.md).
440
+
441
+ ---
442
+
443
+ _This is an independent community project and is not an official Coolify or n8n product._
@@ -0,0 +1,10 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, Icon, INodeProperties } from 'n8n-workflow';
2
+ export declare class CoolifyApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ icon: Icon;
6
+ documentationUrl: string;
7
+ properties: INodeProperties[];
8
+ authenticate: IAuthenticateGeneric;
9
+ test: ICredentialTestRequest;
10
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CoolifyApi = void 0;
4
+ class CoolifyApi {
5
+ constructor() {
6
+ this.name = 'coolifyApi';
7
+ this.displayName = 'Coolify API';
8
+ this.icon = { light: 'file:../icons/coolify.svg', dark: 'file:../icons/coolify.svg' };
9
+ this.documentationUrl = 'https://coolify.io/docs/api/authorization';
10
+ this.properties = [
11
+ {
12
+ displayName: 'Base URL',
13
+ name: 'host',
14
+ type: 'string',
15
+ default: 'https://app.coolify.io/api/v1',
16
+ placeholder: 'https://app.coolify.io/api/v1',
17
+ description: 'Base URL of the Coolify API, including the "/api/v1" path. Keep the default for Coolify Cloud, or use the URL of your own instance (for example https://coolify.example.com/api/v1). A trailing slash is tolerated, but the "/api/v1" suffix is required.',
18
+ required: true,
19
+ },
20
+ {
21
+ displayName: 'Access Token',
22
+ name: 'accessToken',
23
+ type: 'string',
24
+ typeOptions: { password: true },
25
+ default: '',
26
+ description: 'API token created in Coolify under "Keys & Tokens". It is sent as a Bearer token and needs the "read" permission.',
27
+ required: true,
28
+ },
29
+ ];
30
+ this.authenticate = {
31
+ type: 'generic',
32
+ properties: {
33
+ headers: {
34
+ Authorization: '=Bearer {{$credentials.accessToken}}',
35
+ Accept: 'application/json',
36
+ },
37
+ },
38
+ };
39
+ this.test = {
40
+ request: {
41
+ baseURL: '={{$credentials.host}}',
42
+ url: '/team',
43
+ method: 'GET',
44
+ },
45
+ rules: [
46
+ {
47
+ type: 'responseCode',
48
+ properties: {
49
+ value: 400,
50
+ message: 'Coolify rejected the request (HTTP 400). Verify the base URL and that the API token was copied in full.',
51
+ },
52
+ },
53
+ {
54
+ type: 'responseCode',
55
+ properties: {
56
+ value: 401,
57
+ message: "Coolify rejected the token (HTTP 401). It is missing, invalid, expired, revoked, or its owner is no longer a member of the token's team.",
58
+ },
59
+ },
60
+ {
61
+ type: 'responseCode',
62
+ properties: {
63
+ value: 403,
64
+ message: 'Coolify denied access (HTTP 403). The token needs the "read" permission, API access must be enabled on the instance, and the calling IP must be allowlisted.',
65
+ },
66
+ },
67
+ {
68
+ type: 'responseCode',
69
+ properties: {
70
+ value: 404,
71
+ message: 'Coolify returned HTTP 404 for GET /team. Verify that the base URL includes /api/v1 and that the Coolify instance supports this endpoint (Coolify 4.3.0 or newer).',
72
+ },
73
+ },
74
+ ],
75
+ };
76
+ }
77
+ }
78
+ exports.CoolifyApi = CoolifyApi;
79
+ //# sourceMappingURL=CoolifyApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoolifyApi.credentials.js","sourceRoot":"","sources":["../../credentials/CoolifyApi.credentials.ts"],"names":[],"mappings":";;;AAQA,MAAa,UAAU;IAAvB;QACC,SAAI,GAAG,YAAY,CAAC;QAEpB,gBAAW,GAAG,aAAa,CAAC;QAK5B,SAAI,GAAS,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;QAEvF,qBAAgB,GAAG,2CAA2C,CAAC;QAE/D,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,+BAA+B;gBACxC,WAAW,EAAE,+BAA+B;gBAC5C,WAAW,EACV,2PAA2P;gBAC5P,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EACV,mHAAmH;gBACpH,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,sCAAsC;oBACrD,MAAM,EAAE,kBAAkB;iBAC1B;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,wBAAwB;gBAIjC,GAAG,EAAE,OAAO;gBACZ,MAAM,EAAE,KAAK;aACb;YACD,KAAK,EAAE;gBACN;oBACC,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACX,KAAK,EAAE,GAAG;wBACV,OAAO,EACN,yGAAyG;qBAC1G;iBACD;gBACD;oBACC,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACX,KAAK,EAAE,GAAG;wBACV,OAAO,EACN,0IAA0I;qBAC3I;iBACD;gBACD;oBACC,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACX,KAAK,EAAE,GAAG;wBACV,OAAO,EACN,8JAA8J;qBAC/J;iBACD;gBACD;oBACC,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACX,KAAK,EAAE,GAAG;wBACV,OAAO,EACN,mKAAmK;qBACpK;iBACD;aACD;SACD,CAAC;IACH,CAAC;CAAA;AAzFD,gCAyFC"}
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 352 352" xmlns="http://www.w3.org/2000/svg"><title>Coolify</title><path d="M64 256v32H32v-32zm0 0V96h32v160ZM96 96V64h224V32h32v64Zm224 192h32v64H96v-32h224z" style="fill:#452e72"/><path d="M64 256H0V64h64Zm0-192V0h256v64Zm0 192h256v64H64Z" style="fill:#864ffc"/></svg>
@@ -0,0 +1,17 @@
1
+ <svg width="480" height="96" viewBox="0 0 480 96" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_589_96)">
3
+ <path d="M48 96C52.5 96 54 94.5 54 90V78C54 60 60 54 78 54H90C108 54 114 60 114 78V90C114 94.5 115.5 96 120 96C124.5 96 126 94.5 126 90V78C126 60 132 54 150 54H162C180 54 186 60 186 78V90C186 94.5 187.5 96 192 96C196.5 96 198 94.5 198 90V78C198 60 204 54 222 54H234C238.5 54 240 52.5 240 48C240 43.5 238.5 42 234 42H222C204 42 198 36 198 18V6C198 1.5 196.5 0 192 0C187.5 0 186 1.5 186 6V18C186 36 180 42 162 42H150C132 42 126 36 126 18V6C126 1.5 124.5 0 120 0C115.5 0 114 1.5 114 6V18C114 36 108 42 90 42H78C60 42 54 36 54 18V6C54 1.5 52.5 0 48 0C43.5 0 42 1.5 42 6V18C42 36 36 42 18 42H6C1.5 42 0 43.5 0 48C0 52.5 1.5 54 6 54H18C36 54 42 60 42 78V90C42 94.5 43.5 96 48 96Z" fill="#191919"/>
4
+ </g>
5
+ <path d="M396 85.5C411.75 85.5 422.25 77.1562 422.25 64.5938C422.25 55.7812 417.562 49.3125 409.312 46.125C416.156 43.125 420 37.5 420 30.0938C420 18.375 410.438 10.5 396 10.5C381.562 10.5 372 18.375 372 30.0938C372 37.5 375.844 43.125 382.688 46.125C374.438 49.3125 369.75 55.7812 369.75 64.5938C369.75 77.1562 380.25 85.5 396 85.5ZM312 84H324V60.2812C324 46.6875 329.531 42.1875 337.688 42.1875C344.719 42.1875 348 45.4688 348 55.2188V84H360V51C360 39 353.625 31.5 340.969 31.5C332.625 31.5 327 34.9688 323.625 40.875V33H312V84ZM396 75C387.656 75 382.5 70.5938 382.5 63.2812C382.5 55.9688 387.656 51.5625 396 51.5625C404.344 51.5625 409.5 55.9688 409.5 63.2812C409.5 70.5938 404.344 75 396 75ZM396 41.625C388.781 41.625 384 37.5 384 31.3125C384 25.125 388.781 21 396 21C403.219 21 408 25.125 408 31.3125C408 37.5 403.219 41.625 396 41.625ZM432 84H444V60.2812C444 46.6875 449.531 42.1875 457.688 42.1875C464.719 42.1875 468 45.4688 468 55.2188V84H480V51C480 39 473.625 31.5 460.969 31.5C452.625 31.5 447 34.9688 443.625 40.875V33H432V84Z" fill="#191919"/>
6
+ <g clip-path="url(#clip1_589_96)">
7
+ <path d="M48 96C52.5 96 54 94.5 54 90V78C54 60 60 54 78 54H90C108 54 114 60 114 78V90C114 94.5 115.5 96 120 96C124.5 96 126 94.5 126 90V78C126 60 132 54 150 54H162C180 54 186 60 186 78V90C186 94.5 187.5 96 192 96C196.5 96 198 94.5 198 90V78C198 60 204 54 222 54H234C238.5 54 240 52.5 240 48C240 43.5 238.5 42 234 42H222C204 42 198 36 198 18V6C198 1.5 196.5 0 192 0C187.5 0 186 1.5 186 6V18C186 36 180 42 162 42H150C132 42 126 36 126 18V6C126 1.5 124.5 0 120 0C115.5 0 114 1.5 114 6V18C114 36 108 42 90 42H78C60 42 54 36 54 18V6C54 1.5 52.5 0 48 0C43.5 0 42 1.5 42 6V18C42 36 36 42 18 42H6C1.5 42 0 43.5 0 48C0 52.5 1.5 54 6 54H18C36 54 42 60 42 78V90C42 94.5 43.5 96 48 96Z" fill="#FF91AC"/>
8
+ </g>
9
+ <defs>
10
+ <clipPath id="clip0_589_96">
11
+ <rect width="240" height="96" fill="white"/>
12
+ </clipPath>
13
+ <clipPath id="clip1_589_96">
14
+ <rect width="240" height="96" fill="white"/>
15
+ </clipPath>
16
+ </defs>
17
+ </svg>
@@ -0,0 +1,5 @@
1
+ import { type IExecuteFunctions, type INodeExecutionData, type INodeType, type INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Coolify implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }