@hasna/connectors 0.3.16 → 0.4.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 (512) hide show
  1. package/bin/index.js +246 -1
  2. package/bin/mcp.js +246 -1
  3. package/bin/serve.js +245 -0
  4. package/connectors/connect-airtable/.env.example +11 -0
  5. package/connectors/connect-airtable/CLAUDE.md +121 -0
  6. package/connectors/connect-airtable/README.md +193 -0
  7. package/connectors/connect-airtable/package.json +50 -0
  8. package/connectors/connect-airtable/src/api/client.ts +139 -0
  9. package/connectors/connect-airtable/src/api/index.ts +405 -0
  10. package/connectors/connect-airtable/src/cli/index.ts +637 -0
  11. package/connectors/connect-airtable/src/index.ts +20 -0
  12. package/connectors/connect-airtable/src/types/index.ts +349 -0
  13. package/connectors/connect-airtable/src/utils/config.ts +197 -0
  14. package/connectors/connect-airtable/tsconfig.json +16 -0
  15. package/connectors/connect-amplitude/.env.example +11 -0
  16. package/connectors/connect-amplitude/CLAUDE.md +121 -0
  17. package/connectors/connect-amplitude/README.md +193 -0
  18. package/connectors/connect-amplitude/package.json +51 -0
  19. package/connectors/connect-amplitude/src/api/client.ts +144 -0
  20. package/connectors/connect-amplitude/src/api/index.ts +215 -0
  21. package/connectors/connect-amplitude/src/cli/index.ts +532 -0
  22. package/connectors/connect-amplitude/src/index.ts +22 -0
  23. package/connectors/connect-amplitude/src/types/index.ts +329 -0
  24. package/connectors/connect-amplitude/src/utils/config.ts +208 -0
  25. package/connectors/connect-amplitude/tsconfig.json +16 -0
  26. package/connectors/connect-asana/.env.example +11 -0
  27. package/connectors/connect-asana/CLAUDE.md +128 -0
  28. package/connectors/connect-asana/README.md +193 -0
  29. package/connectors/connect-asana/package.json +52 -0
  30. package/connectors/connect-asana/src/api/client.ts +119 -0
  31. package/connectors/connect-asana/src/api/index.ts +319 -0
  32. package/connectors/connect-asana/src/cli/index.ts +731 -0
  33. package/connectors/connect-asana/src/index.ts +19 -0
  34. package/connectors/connect-asana/src/types/index.ts +270 -0
  35. package/connectors/connect-asana/src/utils/config.ts +171 -0
  36. package/connectors/connect-asana/src/utils/output.ts +119 -0
  37. package/connectors/connect-asana/tsconfig.json +16 -0
  38. package/connectors/connect-calendly/.env.example +11 -0
  39. package/connectors/connect-calendly/CLAUDE.md +272 -0
  40. package/connectors/connect-calendly/README.md +193 -0
  41. package/connectors/connect-calendly/package.json +51 -0
  42. package/connectors/connect-calendly/scripts/release.ts +179 -0
  43. package/connectors/connect-calendly/src/api/client.ts +213 -0
  44. package/connectors/connect-calendly/src/api/example.ts +48 -0
  45. package/connectors/connect-calendly/src/api/index.ts +51 -0
  46. package/connectors/connect-calendly/src/cli/index.ts +254 -0
  47. package/connectors/connect-calendly/src/index.ts +103 -0
  48. package/connectors/connect-calendly/src/types/index.ts +237 -0
  49. package/connectors/connect-calendly/src/utils/auth.ts +274 -0
  50. package/connectors/connect-calendly/src/utils/bulk.ts +212 -0
  51. package/connectors/connect-calendly/src/utils/config.ts +326 -0
  52. package/connectors/connect-calendly/src/utils/output.ts +175 -0
  53. package/connectors/connect-calendly/src/utils/settings.ts +114 -0
  54. package/connectors/connect-calendly/src/utils/storage.ts +198 -0
  55. package/connectors/connect-calendly/tsconfig.json +16 -0
  56. package/connectors/connect-clickup/.env.example +11 -0
  57. package/connectors/connect-clickup/CLAUDE.md +128 -0
  58. package/connectors/connect-clickup/README.md +193 -0
  59. package/connectors/connect-clickup/package.json +52 -0
  60. package/connectors/connect-clickup/src/api/client.ts +116 -0
  61. package/connectors/connect-clickup/src/api/index.ts +400 -0
  62. package/connectors/connect-clickup/src/cli/index.ts +625 -0
  63. package/connectors/connect-clickup/src/index.ts +19 -0
  64. package/connectors/connect-clickup/src/types/index.ts +591 -0
  65. package/connectors/connect-clickup/src/utils/config.ts +157 -0
  66. package/connectors/connect-clickup/src/utils/output.ts +119 -0
  67. package/connectors/connect-clickup/tsconfig.json +16 -0
  68. package/connectors/connect-confluence/.env.example +11 -0
  69. package/connectors/connect-confluence/CLAUDE.md +272 -0
  70. package/connectors/connect-confluence/README.md +193 -0
  71. package/connectors/connect-confluence/package.json +53 -0
  72. package/connectors/connect-confluence/scripts/release.ts +179 -0
  73. package/connectors/connect-confluence/src/api/client.ts +213 -0
  74. package/connectors/connect-confluence/src/api/example.ts +48 -0
  75. package/connectors/connect-confluence/src/api/index.ts +51 -0
  76. package/connectors/connect-confluence/src/cli/index.ts +254 -0
  77. package/connectors/connect-confluence/src/index.ts +103 -0
  78. package/connectors/connect-confluence/src/types/index.ts +237 -0
  79. package/connectors/connect-confluence/src/utils/auth.ts +274 -0
  80. package/connectors/connect-confluence/src/utils/bulk.ts +212 -0
  81. package/connectors/connect-confluence/src/utils/config.ts +326 -0
  82. package/connectors/connect-confluence/src/utils/output.ts +175 -0
  83. package/connectors/connect-confluence/src/utils/settings.ts +114 -0
  84. package/connectors/connect-confluence/src/utils/storage.ts +198 -0
  85. package/connectors/connect-confluence/tsconfig.json +16 -0
  86. package/connectors/connect-convertkit/.env.example +11 -0
  87. package/connectors/connect-convertkit/CLAUDE.md +272 -0
  88. package/connectors/connect-convertkit/README.md +193 -0
  89. package/connectors/connect-convertkit/package.json +51 -0
  90. package/connectors/connect-convertkit/scripts/release.ts +179 -0
  91. package/connectors/connect-convertkit/src/api/client.ts +213 -0
  92. package/connectors/connect-convertkit/src/api/example.ts +48 -0
  93. package/connectors/connect-convertkit/src/api/index.ts +51 -0
  94. package/connectors/connect-convertkit/src/cli/index.ts +254 -0
  95. package/connectors/connect-convertkit/src/index.ts +103 -0
  96. package/connectors/connect-convertkit/src/types/index.ts +237 -0
  97. package/connectors/connect-convertkit/src/utils/auth.ts +274 -0
  98. package/connectors/connect-convertkit/src/utils/bulk.ts +212 -0
  99. package/connectors/connect-convertkit/src/utils/config.ts +326 -0
  100. package/connectors/connect-convertkit/src/utils/output.ts +175 -0
  101. package/connectors/connect-convertkit/src/utils/settings.ts +114 -0
  102. package/connectors/connect-convertkit/src/utils/storage.ts +198 -0
  103. package/connectors/connect-convertkit/tsconfig.json +16 -0
  104. package/connectors/connect-crisp/.env.example +11 -0
  105. package/connectors/connect-crisp/CLAUDE.md +272 -0
  106. package/connectors/connect-crisp/README.md +193 -0
  107. package/connectors/connect-crisp/package.json +51 -0
  108. package/connectors/connect-crisp/scripts/release.ts +179 -0
  109. package/connectors/connect-crisp/src/api/client.ts +213 -0
  110. package/connectors/connect-crisp/src/api/example.ts +48 -0
  111. package/connectors/connect-crisp/src/api/index.ts +51 -0
  112. package/connectors/connect-crisp/src/cli/index.ts +254 -0
  113. package/connectors/connect-crisp/src/index.ts +103 -0
  114. package/connectors/connect-crisp/src/types/index.ts +237 -0
  115. package/connectors/connect-crisp/src/utils/auth.ts +274 -0
  116. package/connectors/connect-crisp/src/utils/bulk.ts +212 -0
  117. package/connectors/connect-crisp/src/utils/config.ts +326 -0
  118. package/connectors/connect-crisp/src/utils/output.ts +175 -0
  119. package/connectors/connect-crisp/src/utils/settings.ts +114 -0
  120. package/connectors/connect-crisp/src/utils/storage.ts +198 -0
  121. package/connectors/connect-crisp/tsconfig.json +16 -0
  122. package/connectors/connect-docusign/.env.example +11 -0
  123. package/connectors/connect-docusign/CLAUDE.md +128 -0
  124. package/connectors/connect-docusign/README.md +193 -0
  125. package/connectors/connect-docusign/package.json +52 -0
  126. package/connectors/connect-docusign/src/api/client.ts +133 -0
  127. package/connectors/connect-docusign/src/api/index.ts +178 -0
  128. package/connectors/connect-docusign/src/cli/index.ts +381 -0
  129. package/connectors/connect-docusign/src/index.ts +23 -0
  130. package/connectors/connect-docusign/src/types/index.ts +208 -0
  131. package/connectors/connect-docusign/src/utils/config.ts +125 -0
  132. package/connectors/connect-docusign/src/utils/output.ts +119 -0
  133. package/connectors/connect-docusign/tsconfig.json +16 -0
  134. package/connectors/connect-drift/.env.example +11 -0
  135. package/connectors/connect-drift/CLAUDE.md +272 -0
  136. package/connectors/connect-drift/README.md +193 -0
  137. package/connectors/connect-drift/package.json +51 -0
  138. package/connectors/connect-drift/scripts/release.ts +179 -0
  139. package/connectors/connect-drift/src/api/client.ts +213 -0
  140. package/connectors/connect-drift/src/api/example.ts +48 -0
  141. package/connectors/connect-drift/src/api/index.ts +51 -0
  142. package/connectors/connect-drift/src/cli/index.ts +254 -0
  143. package/connectors/connect-drift/src/index.ts +103 -0
  144. package/connectors/connect-drift/src/types/index.ts +237 -0
  145. package/connectors/connect-drift/src/utils/auth.ts +274 -0
  146. package/connectors/connect-drift/src/utils/bulk.ts +212 -0
  147. package/connectors/connect-drift/src/utils/config.ts +326 -0
  148. package/connectors/connect-drift/src/utils/output.ts +175 -0
  149. package/connectors/connect-drift/src/utils/settings.ts +114 -0
  150. package/connectors/connect-drift/src/utils/storage.ts +198 -0
  151. package/connectors/connect-drift/tsconfig.json +16 -0
  152. package/connectors/connect-freshdesk/.env.example +11 -0
  153. package/connectors/connect-freshdesk/CLAUDE.md +272 -0
  154. package/connectors/connect-freshdesk/README.md +193 -0
  155. package/connectors/connect-freshdesk/package.json +51 -0
  156. package/connectors/connect-freshdesk/scripts/release.ts +179 -0
  157. package/connectors/connect-freshdesk/src/api/client.ts +213 -0
  158. package/connectors/connect-freshdesk/src/api/example.ts +48 -0
  159. package/connectors/connect-freshdesk/src/api/index.ts +51 -0
  160. package/connectors/connect-freshdesk/src/cli/index.ts +254 -0
  161. package/connectors/connect-freshdesk/src/index.ts +103 -0
  162. package/connectors/connect-freshdesk/src/types/index.ts +237 -0
  163. package/connectors/connect-freshdesk/src/utils/auth.ts +274 -0
  164. package/connectors/connect-freshdesk/src/utils/bulk.ts +212 -0
  165. package/connectors/connect-freshdesk/src/utils/config.ts +326 -0
  166. package/connectors/connect-freshdesk/src/utils/output.ts +175 -0
  167. package/connectors/connect-freshdesk/src/utils/settings.ts +114 -0
  168. package/connectors/connect-freshdesk/src/utils/storage.ts +198 -0
  169. package/connectors/connect-freshdesk/tsconfig.json +16 -0
  170. package/connectors/connect-gumroad/.env.example +11 -0
  171. package/connectors/connect-gumroad/CLAUDE.md +272 -0
  172. package/connectors/connect-gumroad/README.md +193 -0
  173. package/connectors/connect-gumroad/package.json +51 -0
  174. package/connectors/connect-gumroad/scripts/release.ts +179 -0
  175. package/connectors/connect-gumroad/src/api/client.ts +213 -0
  176. package/connectors/connect-gumroad/src/api/example.ts +48 -0
  177. package/connectors/connect-gumroad/src/api/index.ts +51 -0
  178. package/connectors/connect-gumroad/src/cli/index.ts +254 -0
  179. package/connectors/connect-gumroad/src/index.ts +103 -0
  180. package/connectors/connect-gumroad/src/types/index.ts +237 -0
  181. package/connectors/connect-gumroad/src/utils/auth.ts +274 -0
  182. package/connectors/connect-gumroad/src/utils/bulk.ts +212 -0
  183. package/connectors/connect-gumroad/src/utils/config.ts +326 -0
  184. package/connectors/connect-gumroad/src/utils/output.ts +175 -0
  185. package/connectors/connect-gumroad/src/utils/settings.ts +114 -0
  186. package/connectors/connect-gumroad/src/utils/storage.ts +198 -0
  187. package/connectors/connect-gumroad/tsconfig.json +16 -0
  188. package/connectors/connect-hubspot/.env.example +11 -0
  189. package/connectors/connect-hubspot/CLAUDE.md +128 -0
  190. package/connectors/connect-hubspot/README.md +193 -0
  191. package/connectors/connect-hubspot/package.json +52 -0
  192. package/connectors/connect-hubspot/src/api/client.ts +136 -0
  193. package/connectors/connect-hubspot/src/api/index.ts +379 -0
  194. package/connectors/connect-hubspot/src/cli/index.ts +589 -0
  195. package/connectors/connect-hubspot/src/index.ts +21 -0
  196. package/connectors/connect-hubspot/src/types/index.ts +285 -0
  197. package/connectors/connect-hubspot/src/utils/config.ts +205 -0
  198. package/connectors/connect-hubspot/src/utils/output.ts +119 -0
  199. package/connectors/connect-hubspot/tsconfig.json +16 -0
  200. package/connectors/connect-intercom/.env.example +11 -0
  201. package/connectors/connect-intercom/CLAUDE.md +131 -0
  202. package/connectors/connect-intercom/README.md +193 -0
  203. package/connectors/connect-intercom/package.json +52 -0
  204. package/connectors/connect-intercom/src/api/client.ts +132 -0
  205. package/connectors/connect-intercom/src/api/index.ts +366 -0
  206. package/connectors/connect-intercom/src/cli/index.ts +831 -0
  207. package/connectors/connect-intercom/src/index.ts +21 -0
  208. package/connectors/connect-intercom/src/types/index.ts +650 -0
  209. package/connectors/connect-intercom/src/utils/config.ts +157 -0
  210. package/connectors/connect-intercom/src/utils/output.ts +119 -0
  211. package/connectors/connect-intercom/tsconfig.json +16 -0
  212. package/connectors/connect-jira/.env.example +11 -0
  213. package/connectors/connect-jira/CLAUDE.md +128 -0
  214. package/connectors/connect-jira/README.md +193 -0
  215. package/connectors/connect-jira/package.json +53 -0
  216. package/connectors/connect-jira/src/api/client.ts +131 -0
  217. package/connectors/connect-jira/src/api/index.ts +266 -0
  218. package/connectors/connect-jira/src/cli/index.ts +653 -0
  219. package/connectors/connect-jira/src/index.ts +23 -0
  220. package/connectors/connect-jira/src/types/index.ts +448 -0
  221. package/connectors/connect-jira/src/utils/config.ts +179 -0
  222. package/connectors/connect-jira/src/utils/output.ts +119 -0
  223. package/connectors/connect-jira/tsconfig.json +16 -0
  224. package/connectors/connect-lemonsqueezy/.env.example +11 -0
  225. package/connectors/connect-lemonsqueezy/CLAUDE.md +128 -0
  226. package/connectors/connect-lemonsqueezy/README.md +193 -0
  227. package/connectors/connect-lemonsqueezy/package.json +52 -0
  228. package/connectors/connect-lemonsqueezy/src/api/client.ts +133 -0
  229. package/connectors/connect-lemonsqueezy/src/api/index.ts +502 -0
  230. package/connectors/connect-lemonsqueezy/src/cli/index.ts +723 -0
  231. package/connectors/connect-lemonsqueezy/src/index.ts +21 -0
  232. package/connectors/connect-lemonsqueezy/src/types/index.ts +353 -0
  233. package/connectors/connect-lemonsqueezy/src/utils/config.ts +205 -0
  234. package/connectors/connect-lemonsqueezy/src/utils/output.ts +119 -0
  235. package/connectors/connect-lemonsqueezy/tsconfig.json +16 -0
  236. package/connectors/connect-linear/CLAUDE.md +88 -0
  237. package/connectors/connect-linear/README.md +201 -0
  238. package/connectors/connect-linear/package.json +45 -0
  239. package/connectors/connect-linear/src/api/client.ts +62 -0
  240. package/connectors/connect-linear/src/api/index.ts +46 -0
  241. package/connectors/connect-linear/src/api/issues.ts +247 -0
  242. package/connectors/connect-linear/src/api/projects.ts +179 -0
  243. package/connectors/connect-linear/src/api/teams.ts +125 -0
  244. package/connectors/connect-linear/src/api/users.ts +112 -0
  245. package/connectors/connect-linear/src/cli/index.ts +560 -0
  246. package/connectors/connect-linear/src/index.ts +27 -0
  247. package/connectors/connect-linear/src/types/index.ts +275 -0
  248. package/connectors/connect-linear/src/utils/config.ts +249 -0
  249. package/connectors/connect-linear/src/utils/output.ts +119 -0
  250. package/connectors/connect-linear/tsconfig.json +16 -0
  251. package/connectors/connect-linkedin/.env.example +11 -0
  252. package/connectors/connect-linkedin/CLAUDE.md +124 -0
  253. package/connectors/connect-linkedin/README.md +193 -0
  254. package/connectors/connect-linkedin/package.json +52 -0
  255. package/connectors/connect-linkedin/src/api/client.ts +132 -0
  256. package/connectors/connect-linkedin/src/api/index.ts +313 -0
  257. package/connectors/connect-linkedin/src/cli/index.ts +548 -0
  258. package/connectors/connect-linkedin/src/index.ts +21 -0
  259. package/connectors/connect-linkedin/src/types/index.ts +472 -0
  260. package/connectors/connect-linkedin/src/utils/config.ts +157 -0
  261. package/connectors/connect-linkedin/src/utils/output.ts +119 -0
  262. package/connectors/connect-linkedin/tsconfig.json +16 -0
  263. package/connectors/connect-mailchimp/.env.example +11 -0
  264. package/connectors/connect-mailchimp/CLAUDE.md +127 -0
  265. package/connectors/connect-mailchimp/README.md +193 -0
  266. package/connectors/connect-mailchimp/package.json +52 -0
  267. package/connectors/connect-mailchimp/src/api/client.ts +162 -0
  268. package/connectors/connect-mailchimp/src/api/index.ts +580 -0
  269. package/connectors/connect-mailchimp/src/cli/index.ts +822 -0
  270. package/connectors/connect-mailchimp/src/index.ts +23 -0
  271. package/connectors/connect-mailchimp/src/types/index.ts +585 -0
  272. package/connectors/connect-mailchimp/src/utils/config.ts +208 -0
  273. package/connectors/connect-mailchimp/src/utils/output.ts +119 -0
  274. package/connectors/connect-mailchimp/tsconfig.json +16 -0
  275. package/connectors/connect-mongodb/.env.example +11 -0
  276. package/connectors/connect-mongodb/CLAUDE.md +272 -0
  277. package/connectors/connect-mongodb/README.md +193 -0
  278. package/connectors/connect-mongodb/package.json +51 -0
  279. package/connectors/connect-mongodb/scripts/release.ts +179 -0
  280. package/connectors/connect-mongodb/src/api/client.ts +213 -0
  281. package/connectors/connect-mongodb/src/api/example.ts +48 -0
  282. package/connectors/connect-mongodb/src/api/index.ts +51 -0
  283. package/connectors/connect-mongodb/src/cli/index.ts +254 -0
  284. package/connectors/connect-mongodb/src/index.ts +103 -0
  285. package/connectors/connect-mongodb/src/types/index.ts +237 -0
  286. package/connectors/connect-mongodb/src/utils/auth.ts +274 -0
  287. package/connectors/connect-mongodb/src/utils/bulk.ts +212 -0
  288. package/connectors/connect-mongodb/src/utils/config.ts +326 -0
  289. package/connectors/connect-mongodb/src/utils/output.ts +175 -0
  290. package/connectors/connect-mongodb/src/utils/settings.ts +114 -0
  291. package/connectors/connect-mongodb/src/utils/storage.ts +198 -0
  292. package/connectors/connect-mongodb/tsconfig.json +16 -0
  293. package/connectors/connect-netlify/.env.example +11 -0
  294. package/connectors/connect-netlify/CLAUDE.md +170 -0
  295. package/connectors/connect-netlify/README.md +193 -0
  296. package/connectors/connect-netlify/package.json +53 -0
  297. package/connectors/connect-netlify/src/api/client.ts +132 -0
  298. package/connectors/connect-netlify/src/api/index.ts +533 -0
  299. package/connectors/connect-netlify/src/cli/index.ts +985 -0
  300. package/connectors/connect-netlify/src/index.ts +22 -0
  301. package/connectors/connect-netlify/src/types/index.ts +423 -0
  302. package/connectors/connect-netlify/src/utils/config.ts +171 -0
  303. package/connectors/connect-netlify/src/utils/output.ts +119 -0
  304. package/connectors/connect-netlify/tsconfig.json +16 -0
  305. package/connectors/connect-paypal/.env.example +11 -0
  306. package/connectors/connect-paypal/CLAUDE.md +128 -0
  307. package/connectors/connect-paypal/README.md +193 -0
  308. package/connectors/connect-paypal/package.json +51 -0
  309. package/connectors/connect-paypal/src/api/client.ts +182 -0
  310. package/connectors/connect-paypal/src/api/index.ts +235 -0
  311. package/connectors/connect-paypal/src/cli/index.ts +559 -0
  312. package/connectors/connect-paypal/src/index.ts +23 -0
  313. package/connectors/connect-paypal/src/types/index.ts +377 -0
  314. package/connectors/connect-paypal/src/utils/config.ts +125 -0
  315. package/connectors/connect-paypal/src/utils/output.ts +119 -0
  316. package/connectors/connect-paypal/tsconfig.json +16 -0
  317. package/connectors/connect-pinterest/.env.example +11 -0
  318. package/connectors/connect-pinterest/CLAUDE.md +115 -0
  319. package/connectors/connect-pinterest/README.md +193 -0
  320. package/connectors/connect-pinterest/package.json +52 -0
  321. package/connectors/connect-pinterest/src/api/client.ts +125 -0
  322. package/connectors/connect-pinterest/src/api/index.ts +203 -0
  323. package/connectors/connect-pinterest/src/cli/index.ts +653 -0
  324. package/connectors/connect-pinterest/src/index.ts +21 -0
  325. package/connectors/connect-pinterest/src/types/index.ts +268 -0
  326. package/connectors/connect-pinterest/src/utils/config.ts +157 -0
  327. package/connectors/connect-pinterest/src/utils/output.ts +119 -0
  328. package/connectors/connect-pinterest/tsconfig.json +16 -0
  329. package/connectors/connect-posthog/.env.example +11 -0
  330. package/connectors/connect-posthog/CLAUDE.md +272 -0
  331. package/connectors/connect-posthog/README.md +193 -0
  332. package/connectors/connect-posthog/package.json +51 -0
  333. package/connectors/connect-posthog/scripts/release.ts +179 -0
  334. package/connectors/connect-posthog/src/api/client.ts +213 -0
  335. package/connectors/connect-posthog/src/api/example.ts +48 -0
  336. package/connectors/connect-posthog/src/api/index.ts +51 -0
  337. package/connectors/connect-posthog/src/cli/index.ts +254 -0
  338. package/connectors/connect-posthog/src/index.ts +103 -0
  339. package/connectors/connect-posthog/src/types/index.ts +237 -0
  340. package/connectors/connect-posthog/src/utils/auth.ts +274 -0
  341. package/connectors/connect-posthog/src/utils/bulk.ts +212 -0
  342. package/connectors/connect-posthog/src/utils/config.ts +326 -0
  343. package/connectors/connect-posthog/src/utils/output.ts +175 -0
  344. package/connectors/connect-posthog/src/utils/settings.ts +114 -0
  345. package/connectors/connect-posthog/src/utils/storage.ts +198 -0
  346. package/connectors/connect-posthog/tsconfig.json +16 -0
  347. package/connectors/connect-salesforce/.env.example +11 -0
  348. package/connectors/connect-salesforce/CLAUDE.md +128 -0
  349. package/connectors/connect-salesforce/README.md +193 -0
  350. package/connectors/connect-salesforce/package.json +53 -0
  351. package/connectors/connect-salesforce/src/api/client.ts +150 -0
  352. package/connectors/connect-salesforce/src/api/index.ts +367 -0
  353. package/connectors/connect-salesforce/src/cli/index.ts +594 -0
  354. package/connectors/connect-salesforce/src/index.ts +21 -0
  355. package/connectors/connect-salesforce/src/types/index.ts +292 -0
  356. package/connectors/connect-salesforce/src/utils/config.ts +208 -0
  357. package/connectors/connect-salesforce/src/utils/output.ts +119 -0
  358. package/connectors/connect-salesforce/tsconfig.json +16 -0
  359. package/connectors/connect-segment/.env.example +11 -0
  360. package/connectors/connect-segment/CLAUDE.md +272 -0
  361. package/connectors/connect-segment/README.md +193 -0
  362. package/connectors/connect-segment/package.json +51 -0
  363. package/connectors/connect-segment/scripts/release.ts +179 -0
  364. package/connectors/connect-segment/src/api/client.ts +213 -0
  365. package/connectors/connect-segment/src/api/example.ts +48 -0
  366. package/connectors/connect-segment/src/api/index.ts +51 -0
  367. package/connectors/connect-segment/src/cli/index.ts +254 -0
  368. package/connectors/connect-segment/src/index.ts +103 -0
  369. package/connectors/connect-segment/src/types/index.ts +237 -0
  370. package/connectors/connect-segment/src/utils/auth.ts +274 -0
  371. package/connectors/connect-segment/src/utils/bulk.ts +212 -0
  372. package/connectors/connect-segment/src/utils/config.ts +326 -0
  373. package/connectors/connect-segment/src/utils/output.ts +175 -0
  374. package/connectors/connect-segment/src/utils/settings.ts +114 -0
  375. package/connectors/connect-segment/src/utils/storage.ts +198 -0
  376. package/connectors/connect-segment/tsconfig.json +16 -0
  377. package/connectors/connect-sendgrid/.env.example +11 -0
  378. package/connectors/connect-sendgrid/CLAUDE.md +125 -0
  379. package/connectors/connect-sendgrid/README.md +193 -0
  380. package/connectors/connect-sendgrid/package.json +53 -0
  381. package/connectors/connect-sendgrid/src/api/client.ts +137 -0
  382. package/connectors/connect-sendgrid/src/api/index.ts +588 -0
  383. package/connectors/connect-sendgrid/src/cli/index.ts +764 -0
  384. package/connectors/connect-sendgrid/src/index.ts +21 -0
  385. package/connectors/connect-sendgrid/src/types/index.ts +403 -0
  386. package/connectors/connect-sendgrid/src/utils/config.ts +197 -0
  387. package/connectors/connect-sendgrid/src/utils/output.ts +119 -0
  388. package/connectors/connect-sendgrid/tsconfig.json +16 -0
  389. package/connectors/connect-slack/.env.example +7 -0
  390. package/connectors/connect-slack/CLAUDE.md +69 -0
  391. package/connectors/connect-slack/README.md +150 -0
  392. package/connectors/connect-slack/package.json +44 -0
  393. package/connectors/connect-slack/src/api/channels.ts +112 -0
  394. package/connectors/connect-slack/src/api/client.ts +97 -0
  395. package/connectors/connect-slack/src/api/index.ts +42 -0
  396. package/connectors/connect-slack/src/api/messages.ts +127 -0
  397. package/connectors/connect-slack/src/api/users.ts +110 -0
  398. package/connectors/connect-slack/src/cli/index.ts +494 -0
  399. package/connectors/connect-slack/src/index.ts +21 -0
  400. package/connectors/connect-slack/src/types/index.ts +263 -0
  401. package/connectors/connect-slack/src/utils/config.ts +297 -0
  402. package/connectors/connect-slack/src/utils/output.ts +119 -0
  403. package/connectors/connect-slack/tsconfig.json +16 -0
  404. package/connectors/connect-supabase/.env.example +11 -0
  405. package/connectors/connect-supabase/CLAUDE.md +132 -0
  406. package/connectors/connect-supabase/README.md +193 -0
  407. package/connectors/connect-supabase/package.json +52 -0
  408. package/connectors/connect-supabase/src/api/client.ts +231 -0
  409. package/connectors/connect-supabase/src/api/index.ts +439 -0
  410. package/connectors/connect-supabase/src/cli/index.ts +691 -0
  411. package/connectors/connect-supabase/src/index.ts +24 -0
  412. package/connectors/connect-supabase/src/types/index.ts +215 -0
  413. package/connectors/connect-supabase/src/utils/config.ts +219 -0
  414. package/connectors/connect-supabase/tsconfig.json +16 -0
  415. package/connectors/connect-telegram/.env.example +2 -0
  416. package/connectors/connect-telegram/package.json +49 -0
  417. package/connectors/connect-todoist/.env.example +11 -0
  418. package/connectors/connect-todoist/CLAUDE.md +104 -0
  419. package/connectors/connect-todoist/README.md +193 -0
  420. package/connectors/connect-todoist/package.json +52 -0
  421. package/connectors/connect-todoist/src/api/client.ts +117 -0
  422. package/connectors/connect-todoist/src/api/index.ts +188 -0
  423. package/connectors/connect-todoist/src/cli/index.ts +990 -0
  424. package/connectors/connect-todoist/src/index.ts +21 -0
  425. package/connectors/connect-todoist/src/types/index.ts +240 -0
  426. package/connectors/connect-todoist/src/utils/config.ts +157 -0
  427. package/connectors/connect-todoist/src/utils/output.ts +119 -0
  428. package/connectors/connect-todoist/tsconfig.json +16 -0
  429. package/connectors/connect-trello/.env.example +11 -0
  430. package/connectors/connect-trello/CLAUDE.md +128 -0
  431. package/connectors/connect-trello/README.md +193 -0
  432. package/connectors/connect-trello/package.json +53 -0
  433. package/connectors/connect-trello/src/api/client.ts +128 -0
  434. package/connectors/connect-trello/src/api/index.ts +278 -0
  435. package/connectors/connect-trello/src/cli/index.ts +737 -0
  436. package/connectors/connect-trello/src/index.ts +21 -0
  437. package/connectors/connect-trello/src/types/index.ts +314 -0
  438. package/connectors/connect-trello/src/utils/config.ts +182 -0
  439. package/connectors/connect-trello/src/utils/output.ts +119 -0
  440. package/connectors/connect-trello/tsconfig.json +16 -0
  441. package/connectors/connect-vercel/.env.example +11 -0
  442. package/connectors/connect-vercel/CLAUDE.md +142 -0
  443. package/connectors/connect-vercel/README.md +193 -0
  444. package/connectors/connect-vercel/package.json +52 -0
  445. package/connectors/connect-vercel/src/api/client.ts +139 -0
  446. package/connectors/connect-vercel/src/api/index.ts +384 -0
  447. package/connectors/connect-vercel/src/cli/index.ts +740 -0
  448. package/connectors/connect-vercel/src/index.ts +24 -0
  449. package/connectors/connect-vercel/src/types/index.ts +350 -0
  450. package/connectors/connect-vercel/src/utils/config.ts +182 -0
  451. package/connectors/connect-vercel/src/utils/output.ts +119 -0
  452. package/connectors/connect-vercel/tsconfig.json +16 -0
  453. package/connectors/connect-whatsapp/.env.example +11 -0
  454. package/connectors/connect-whatsapp/CLAUDE.md +113 -0
  455. package/connectors/connect-whatsapp/README.md +193 -0
  456. package/connectors/connect-whatsapp/package.json +53 -0
  457. package/connectors/connect-whatsapp/src/api/client.ts +133 -0
  458. package/connectors/connect-whatsapp/src/api/index.ts +365 -0
  459. package/connectors/connect-whatsapp/src/cli/index.ts +686 -0
  460. package/connectors/connect-whatsapp/src/index.ts +25 -0
  461. package/connectors/connect-whatsapp/src/types/index.ts +502 -0
  462. package/connectors/connect-whatsapp/src/utils/config.ts +179 -0
  463. package/connectors/connect-whatsapp/src/utils/output.ts +119 -0
  464. package/connectors/connect-whatsapp/tsconfig.json +16 -0
  465. package/connectors/connect-zendesk/.env.example +10 -0
  466. package/connectors/connect-zendesk/.github/workflows/deploy.yml +51 -0
  467. package/connectors/connect-zendesk/CLAUDE.md +78 -0
  468. package/connectors/connect-zendesk/Makefile +129 -0
  469. package/connectors/connect-zendesk/README.md +295 -0
  470. package/connectors/connect-zendesk/SCAFFOLD.md +178 -0
  471. package/connectors/connect-zendesk/nginx-connector.conf +218 -0
  472. package/connectors/connect-zendesk/nginx.conf +61 -0
  473. package/connectors/connect-zendesk/package.json +71 -0
  474. package/connectors/connect-zendesk/scripts/init.sh +62 -0
  475. package/connectors/connect-zendesk/scripts/publish.ts +210 -0
  476. package/connectors/connect-zendesk/server/index.js +142 -0
  477. package/connectors/connect-zendesk/src/api/automations.ts +95 -0
  478. package/connectors/connect-zendesk/src/api/brands.ts +80 -0
  479. package/connectors/connect-zendesk/src/api/bulk.ts +838 -0
  480. package/connectors/connect-zendesk/src/api/client.test.ts +315 -0
  481. package/connectors/connect-zendesk/src/api/client.ts +173 -0
  482. package/connectors/connect-zendesk/src/api/example.ts +59 -0
  483. package/connectors/connect-zendesk/src/api/groups.ts +60 -0
  484. package/connectors/connect-zendesk/src/api/index.test.ts +111 -0
  485. package/connectors/connect-zendesk/src/api/index.ts +131 -0
  486. package/connectors/connect-zendesk/src/api/macros.ts +124 -0
  487. package/connectors/connect-zendesk/src/api/organizations.ts +85 -0
  488. package/connectors/connect-zendesk/src/api/slas.ts +80 -0
  489. package/connectors/connect-zendesk/src/api/ticket-fields.ts +98 -0
  490. package/connectors/connect-zendesk/src/api/tickets.test.ts +215 -0
  491. package/connectors/connect-zendesk/src/api/tickets.ts +103 -0
  492. package/connectors/connect-zendesk/src/api/triggers.test.ts +204 -0
  493. package/connectors/connect-zendesk/src/api/triggers.ts +125 -0
  494. package/connectors/connect-zendesk/src/api/users.test.ts +180 -0
  495. package/connectors/connect-zendesk/src/api/users.ts +108 -0
  496. package/connectors/connect-zendesk/src/api/views.test.ts +223 -0
  497. package/connectors/connect-zendesk/src/api/views.ts +145 -0
  498. package/connectors/connect-zendesk/src/api/webhooks.test.ts +208 -0
  499. package/connectors/connect-zendesk/src/api/webhooks.ts +118 -0
  500. package/connectors/connect-zendesk/src/cli/index.ts +1478 -0
  501. package/connectors/connect-zendesk/src/index.ts +36 -0
  502. package/connectors/connect-zendesk/src/server/index.ts +204 -0
  503. package/connectors/connect-zendesk/src/types/index.ts +910 -0
  504. package/connectors/connect-zendesk/src/utils/config.test.ts +193 -0
  505. package/connectors/connect-zendesk/src/utils/config.ts +526 -0
  506. package/connectors/connect-zendesk/src/utils/export.ts +338 -0
  507. package/connectors/connect-zendesk/src/utils/logger.ts +105 -0
  508. package/connectors/connect-zendesk/src/utils/output.test.ts +137 -0
  509. package/connectors/connect-zendesk/src/utils/output.ts +119 -0
  510. package/connectors/connect-zendesk/tsconfig.json +31 -0
  511. package/dist/index.js +245 -0
  512. package/package.json +1 -1
@@ -0,0 +1,116 @@
1
+ import type { ClickUpConfig } from '../types';
2
+ import { ClickUpApiError } from '../types';
3
+
4
+ const DEFAULT_BASE_URL = 'https://api.clickup.com/api/v2';
5
+
6
+ export interface RequestOptions {
7
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
8
+ params?: Record<string, string | number | boolean | undefined>;
9
+ body?: Record<string, unknown> | unknown[] | string;
10
+ headers?: Record<string, string>;
11
+ }
12
+
13
+ export class ClickUpClient {
14
+ private readonly apiKey: string;
15
+ private readonly baseUrl: string;
16
+
17
+ constructor(config: ClickUpConfig) {
18
+ if (!config.apiKey) {
19
+ throw new Error('API key is required');
20
+ }
21
+ this.apiKey = config.apiKey;
22
+ this.baseUrl = config.baseUrl || DEFAULT_BASE_URL;
23
+ }
24
+
25
+ private buildUrl(path: string, params?: Record<string, string | number | boolean | undefined>): string {
26
+ const url = new URL(`${this.baseUrl}${path}`);
27
+
28
+ if (params) {
29
+ Object.entries(params).forEach(([key, value]) => {
30
+ if (value !== undefined && value !== null && value !== '') {
31
+ url.searchParams.append(key, String(value));
32
+ }
33
+ });
34
+ }
35
+
36
+ return url.toString();
37
+ }
38
+
39
+ async request<T>(path: string, options: RequestOptions = {}): Promise<T> {
40
+ const { method = 'GET', params, body, headers = {} } = options;
41
+
42
+ const url = this.buildUrl(path, params);
43
+
44
+ const requestHeaders: Record<string, string> = {
45
+ 'Authorization': this.apiKey,
46
+ 'Accept': 'application/json',
47
+ ...headers,
48
+ };
49
+
50
+ if (body && ['POST', 'PUT', 'PATCH'].includes(method)) {
51
+ requestHeaders['Content-Type'] = 'application/json';
52
+ }
53
+
54
+ const fetchOptions: RequestInit = {
55
+ method,
56
+ headers: requestHeaders,
57
+ };
58
+
59
+ if (body && ['POST', 'PUT', 'PATCH'].includes(method)) {
60
+ fetchOptions.body = typeof body === 'string' ? body : JSON.stringify(body);
61
+ }
62
+
63
+ const response = await fetch(url, fetchOptions);
64
+
65
+ if (response.status === 204) {
66
+ return {} as T;
67
+ }
68
+
69
+ let data: unknown;
70
+ const contentType = response.headers.get('content-type') || '';
71
+
72
+ if (contentType.includes('application/json')) {
73
+ const text = await response.text();
74
+ if (text) {
75
+ try {
76
+ data = JSON.parse(text);
77
+ } catch {
78
+ data = text;
79
+ }
80
+ }
81
+ } else {
82
+ data = await response.text();
83
+ }
84
+
85
+ if (!response.ok) {
86
+ const errorData = data as { err?: string; ECODE?: string } | null;
87
+ const errorMessage = errorData?.err || response.statusText;
88
+ throw new ClickUpApiError(errorMessage, response.status, errorData?.ECODE);
89
+ }
90
+
91
+ return data as T;
92
+ }
93
+
94
+ async get<T>(path: string, params?: Record<string, string | number | boolean | undefined>): Promise<T> {
95
+ return this.request<T>(path, { method: 'GET', params });
96
+ }
97
+
98
+ async post<T>(path: string, body?: Record<string, unknown> | unknown[] | string | object, params?: Record<string, string | number | boolean | undefined>): Promise<T> {
99
+ return this.request<T>(path, { method: 'POST', body: body as Record<string, unknown>, params });
100
+ }
101
+
102
+ async put<T>(path: string, body?: Record<string, unknown> | object, params?: Record<string, string | number | boolean | undefined>): Promise<T> {
103
+ return this.request<T>(path, { method: 'PUT', body: body as Record<string, unknown>, params });
104
+ }
105
+
106
+ async delete<T>(path: string, params?: Record<string, string | number | boolean | undefined>): Promise<T> {
107
+ return this.request<T>(path, { method: 'DELETE', params });
108
+ }
109
+
110
+ getApiKeyPreview(): string {
111
+ if (this.apiKey.length > 10) {
112
+ return `${this.apiKey.substring(0, 6)}...${this.apiKey.substring(this.apiKey.length - 4)}`;
113
+ }
114
+ return '***';
115
+ }
116
+ }
@@ -0,0 +1,400 @@
1
+ // ClickUp Connector
2
+ // Workspaces, spaces, folders, lists, and tasks management
3
+
4
+ import { ClickUpClient } from './client';
5
+ import type {
6
+ ClickUpConfig,
7
+ User,
8
+ Workspace,
9
+ Space,
10
+ Folder,
11
+ List,
12
+ Task,
13
+ Comment,
14
+ Tag,
15
+ Checklist,
16
+ TimeEntry,
17
+ Goal,
18
+ Webhook,
19
+ CreateSpaceInput,
20
+ CreateFolderInput,
21
+ CreateListInput,
22
+ CreateTaskInput,
23
+ UpdateTaskInput,
24
+ CreateCommentInput,
25
+ CreateChecklistInput,
26
+ CreateChecklistItemInput,
27
+ CreateWebhookInput,
28
+ TasksResponse,
29
+ } from '../types';
30
+
31
+ export { ClickUpClient } from './client';
32
+
33
+ export class ClickUp {
34
+ private client: ClickUpClient;
35
+
36
+ constructor(config: ClickUpConfig) {
37
+ this.client = new ClickUpClient(config);
38
+ }
39
+
40
+ // ============================================
41
+ // User Operations
42
+ // ============================================
43
+
44
+ async getAuthorizedUser(): Promise<User> {
45
+ const result = await this.client.get<{ user: User }>('/user');
46
+ return result.user;
47
+ }
48
+
49
+ // ============================================
50
+ // Workspace (Team) Operations
51
+ // ============================================
52
+
53
+ async listWorkspaces(): Promise<Workspace[]> {
54
+ const result = await this.client.get<{ teams: Workspace[] }>('/team');
55
+ return result.teams;
56
+ }
57
+
58
+ // ============================================
59
+ // Space Operations
60
+ // ============================================
61
+
62
+ async listSpaces(teamId: string, options?: { archived?: boolean }): Promise<Space[]> {
63
+ const result = await this.client.get<{ spaces: Space[] }>(`/team/${teamId}/space`, {
64
+ archived: options?.archived,
65
+ });
66
+ return result.spaces;
67
+ }
68
+
69
+ async getSpace(spaceId: string): Promise<Space> {
70
+ return this.client.get<Space>(`/space/${spaceId}`);
71
+ }
72
+
73
+ async createSpace(teamId: string, input: CreateSpaceInput): Promise<Space> {
74
+ return this.client.post<Space>(`/team/${teamId}/space`, input);
75
+ }
76
+
77
+ async updateSpace(spaceId: string, input: Partial<CreateSpaceInput>): Promise<Space> {
78
+ return this.client.put<Space>(`/space/${spaceId}`, input);
79
+ }
80
+
81
+ async deleteSpace(spaceId: string): Promise<void> {
82
+ await this.client.delete(`/space/${spaceId}`);
83
+ }
84
+
85
+ // ============================================
86
+ // Folder Operations
87
+ // ============================================
88
+
89
+ async listFolders(spaceId: string, options?: { archived?: boolean }): Promise<Folder[]> {
90
+ const result = await this.client.get<{ folders: Folder[] }>(`/space/${spaceId}/folder`, {
91
+ archived: options?.archived,
92
+ });
93
+ return result.folders;
94
+ }
95
+
96
+ async getFolder(folderId: string): Promise<Folder> {
97
+ return this.client.get<Folder>(`/folder/${folderId}`);
98
+ }
99
+
100
+ async createFolder(spaceId: string, input: CreateFolderInput): Promise<Folder> {
101
+ return this.client.post<Folder>(`/space/${spaceId}/folder`, input);
102
+ }
103
+
104
+ async updateFolder(folderId: string, input: CreateFolderInput): Promise<Folder> {
105
+ return this.client.put<Folder>(`/folder/${folderId}`, input);
106
+ }
107
+
108
+ async deleteFolder(folderId: string): Promise<void> {
109
+ await this.client.delete(`/folder/${folderId}`);
110
+ }
111
+
112
+ // ============================================
113
+ // List Operations
114
+ // ============================================
115
+
116
+ async listLists(folderId: string, options?: { archived?: boolean }): Promise<List[]> {
117
+ const result = await this.client.get<{ lists: List[] }>(`/folder/${folderId}/list`, {
118
+ archived: options?.archived,
119
+ });
120
+ return result.lists;
121
+ }
122
+
123
+ async listFolderlessLists(spaceId: string, options?: { archived?: boolean }): Promise<List[]> {
124
+ const result = await this.client.get<{ lists: List[] }>(`/space/${spaceId}/list`, {
125
+ archived: options?.archived,
126
+ });
127
+ return result.lists;
128
+ }
129
+
130
+ async getList(listId: string): Promise<List> {
131
+ return this.client.get<List>(`/list/${listId}`);
132
+ }
133
+
134
+ async createList(folderId: string, input: CreateListInput): Promise<List> {
135
+ return this.client.post<List>(`/folder/${folderId}/list`, input);
136
+ }
137
+
138
+ async createFolderlessList(spaceId: string, input: CreateListInput): Promise<List> {
139
+ return this.client.post<List>(`/space/${spaceId}/list`, input);
140
+ }
141
+
142
+ async updateList(listId: string, input: Partial<CreateListInput>): Promise<List> {
143
+ return this.client.put<List>(`/list/${listId}`, input);
144
+ }
145
+
146
+ async deleteList(listId: string): Promise<void> {
147
+ await this.client.delete(`/list/${listId}`);
148
+ }
149
+
150
+ // ============================================
151
+ // Task Operations
152
+ // ============================================
153
+
154
+ async listTasks(listId: string, options?: {
155
+ archived?: boolean;
156
+ page?: number;
157
+ order_by?: string;
158
+ reverse?: boolean;
159
+ subtasks?: boolean;
160
+ statuses?: string[];
161
+ include_closed?: boolean;
162
+ assignees?: string[];
163
+ due_date_gt?: number;
164
+ due_date_lt?: number;
165
+ date_created_gt?: number;
166
+ date_created_lt?: number;
167
+ date_updated_gt?: number;
168
+ date_updated_lt?: number;
169
+ }): Promise<TasksResponse> {
170
+ return this.client.get<TasksResponse>(`/list/${listId}/task`, options);
171
+ }
172
+
173
+ async getTask(taskId: string, options?: {
174
+ custom_task_ids?: boolean;
175
+ team_id?: string;
176
+ include_subtasks?: boolean;
177
+ }): Promise<Task> {
178
+ return this.client.get<Task>(`/task/${taskId}`, options);
179
+ }
180
+
181
+ async createTask(listId: string, input: CreateTaskInput): Promise<Task> {
182
+ return this.client.post<Task>(`/list/${listId}/task`, input);
183
+ }
184
+
185
+ async updateTask(taskId: string, input: UpdateTaskInput, options?: {
186
+ custom_task_ids?: boolean;
187
+ team_id?: string;
188
+ }): Promise<Task> {
189
+ return this.client.put<Task>(`/task/${taskId}`, input, options);
190
+ }
191
+
192
+ async deleteTask(taskId: string, options?: {
193
+ custom_task_ids?: boolean;
194
+ team_id?: string;
195
+ }): Promise<void> {
196
+ await this.client.delete(`/task/${taskId}`, options);
197
+ }
198
+
199
+ // ============================================
200
+ // Comment Operations
201
+ // ============================================
202
+
203
+ async listTaskComments(taskId: string, options?: {
204
+ custom_task_ids?: boolean;
205
+ team_id?: string;
206
+ start?: number;
207
+ start_id?: string;
208
+ }): Promise<Comment[]> {
209
+ const result = await this.client.get<{ comments: Comment[] }>(`/task/${taskId}/comment`, options);
210
+ return result.comments;
211
+ }
212
+
213
+ async createTaskComment(taskId: string, input: CreateCommentInput, options?: {
214
+ custom_task_ids?: boolean;
215
+ team_id?: string;
216
+ }): Promise<Comment> {
217
+ return this.client.post<Comment>(`/task/${taskId}/comment`, input, options);
218
+ }
219
+
220
+ async listListComments(listId: string): Promise<Comment[]> {
221
+ const result = await this.client.get<{ comments: Comment[] }>(`/list/${listId}/comment`);
222
+ return result.comments;
223
+ }
224
+
225
+ async createListComment(listId: string, input: CreateCommentInput): Promise<Comment> {
226
+ return this.client.post<Comment>(`/list/${listId}/comment`, input);
227
+ }
228
+
229
+ async updateComment(commentId: string, input: { comment_text: string; assignee?: number; resolved?: boolean }): Promise<Comment> {
230
+ return this.client.put<Comment>(`/comment/${commentId}`, input);
231
+ }
232
+
233
+ async deleteComment(commentId: string): Promise<void> {
234
+ await this.client.delete(`/comment/${commentId}`);
235
+ }
236
+
237
+ // ============================================
238
+ // Tag Operations
239
+ // ============================================
240
+
241
+ async listSpaceTags(spaceId: string): Promise<Tag[]> {
242
+ const result = await this.client.get<{ tags: Tag[] }>(`/space/${spaceId}/tag`);
243
+ return result.tags;
244
+ }
245
+
246
+ async createSpaceTag(spaceId: string, tag: { name: string; tag_fg?: string; tag_bg?: string }): Promise<Tag> {
247
+ return this.client.post<Tag>(`/space/${spaceId}/tag`, { tag });
248
+ }
249
+
250
+ async addTagToTask(taskId: string, tagName: string, options?: {
251
+ custom_task_ids?: boolean;
252
+ team_id?: string;
253
+ }): Promise<void> {
254
+ await this.client.post(`/task/${taskId}/tag/${tagName}`, {}, options);
255
+ }
256
+
257
+ async removeTagFromTask(taskId: string, tagName: string, options?: {
258
+ custom_task_ids?: boolean;
259
+ team_id?: string;
260
+ }): Promise<void> {
261
+ await this.client.delete(`/task/${taskId}/tag/${tagName}`, options);
262
+ }
263
+
264
+ // ============================================
265
+ // Checklist Operations
266
+ // ============================================
267
+
268
+ async createChecklist(taskId: string, input: CreateChecklistInput, options?: {
269
+ custom_task_ids?: boolean;
270
+ team_id?: string;
271
+ }): Promise<Checklist> {
272
+ const result = await this.client.post<{ checklist: Checklist }>(`/task/${taskId}/checklist`, input, options);
273
+ return result.checklist;
274
+ }
275
+
276
+ async updateChecklist(checklistId: string, input: { name?: string; position?: number }): Promise<Checklist> {
277
+ const result = await this.client.put<{ checklist: Checklist }>(`/checklist/${checklistId}`, input);
278
+ return result.checklist;
279
+ }
280
+
281
+ async deleteChecklist(checklistId: string): Promise<void> {
282
+ await this.client.delete(`/checklist/${checklistId}`);
283
+ }
284
+
285
+ async createChecklistItem(checklistId: string, input: CreateChecklistItemInput): Promise<Checklist> {
286
+ const result = await this.client.post<{ checklist: Checklist }>(`/checklist/${checklistId}/checklist_item`, input);
287
+ return result.checklist;
288
+ }
289
+
290
+ async updateChecklistItem(checklistId: string, checklistItemId: string, input: {
291
+ name?: string;
292
+ assignee?: number | null;
293
+ resolved?: boolean;
294
+ parent?: string | null;
295
+ }): Promise<Checklist> {
296
+ const result = await this.client.put<{ checklist: Checklist }>(`/checklist/${checklistId}/checklist_item/${checklistItemId}`, input);
297
+ return result.checklist;
298
+ }
299
+
300
+ async deleteChecklistItem(checklistId: string, checklistItemId: string): Promise<void> {
301
+ await this.client.delete(`/checklist/${checklistId}/checklist_item/${checklistItemId}`);
302
+ }
303
+
304
+ // ============================================
305
+ // Time Entry Operations
306
+ // ============================================
307
+
308
+ async listTimeEntries(teamId: string, options?: {
309
+ start_date?: number;
310
+ end_date?: number;
311
+ assignee?: number;
312
+ include_task_tags?: boolean;
313
+ include_location_names?: boolean;
314
+ space_id?: string;
315
+ folder_id?: string;
316
+ list_id?: string;
317
+ task_id?: string;
318
+ }): Promise<TimeEntry[]> {
319
+ const result = await this.client.get<{ data: TimeEntry[] }>(`/team/${teamId}/time_entries`, options);
320
+ return result.data;
321
+ }
322
+
323
+ async getTimeEntry(teamId: string, timerId: string): Promise<TimeEntry> {
324
+ const result = await this.client.get<{ data: TimeEntry }>(`/team/${teamId}/time_entries/${timerId}`);
325
+ return result.data;
326
+ }
327
+
328
+ // ============================================
329
+ // Goal Operations
330
+ // ============================================
331
+
332
+ async listGoals(teamId: string, options?: { include_completed?: boolean }): Promise<Goal[]> {
333
+ const result = await this.client.get<{ goals: Goal[] }>(`/team/${teamId}/goal`, options);
334
+ return result.goals;
335
+ }
336
+
337
+ async getGoal(goalId: string): Promise<Goal> {
338
+ const result = await this.client.get<{ goal: Goal }>(`/goal/${goalId}`);
339
+ return result.goal;
340
+ }
341
+
342
+ async createGoal(teamId: string, input: {
343
+ name: string;
344
+ due_date: number;
345
+ description?: string;
346
+ multiple_owners?: boolean;
347
+ owners?: number[];
348
+ color?: string;
349
+ }): Promise<Goal> {
350
+ const result = await this.client.post<{ goal: Goal }>(`/team/${teamId}/goal`, input);
351
+ return result.goal;
352
+ }
353
+
354
+ async updateGoal(goalId: string, input: {
355
+ name?: string;
356
+ due_date?: number;
357
+ description?: string;
358
+ color?: string;
359
+ add_owners?: number[];
360
+ rem_owners?: number[];
361
+ }): Promise<Goal> {
362
+ const result = await this.client.put<{ goal: Goal }>(`/goal/${goalId}`, input);
363
+ return result.goal;
364
+ }
365
+
366
+ async deleteGoal(goalId: string): Promise<void> {
367
+ await this.client.delete(`/goal/${goalId}`);
368
+ }
369
+
370
+ // ============================================
371
+ // Webhook Operations
372
+ // ============================================
373
+
374
+ async listWebhooks(teamId: string): Promise<Webhook[]> {
375
+ const result = await this.client.get<{ webhooks: Webhook[] }>(`/team/${teamId}/webhook`);
376
+ return result.webhooks;
377
+ }
378
+
379
+ async createWebhook(teamId: string, input: CreateWebhookInput): Promise<Webhook> {
380
+ const result = await this.client.post<{ webhook: Webhook }>(`/team/${teamId}/webhook`, input);
381
+ return result.webhook;
382
+ }
383
+
384
+ async updateWebhook(webhookId: string, input: Partial<CreateWebhookInput>): Promise<Webhook> {
385
+ const result = await this.client.put<{ webhook: Webhook }>(`/webhook/${webhookId}`, input);
386
+ return result.webhook;
387
+ }
388
+
389
+ async deleteWebhook(webhookId: string): Promise<void> {
390
+ await this.client.delete(`/webhook/${webhookId}`);
391
+ }
392
+
393
+ // ============================================
394
+ // Utility Methods
395
+ // ============================================
396
+
397
+ getClient(): ClickUpClient {
398
+ return this.client;
399
+ }
400
+ }