@37signals/basecamp 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/README.md +600 -0
  2. package/dist/auth-strategy.d.ts +36 -0
  3. package/dist/auth-strategy.d.ts.map +1 -0
  4. package/dist/auth-strategy.js +33 -0
  5. package/dist/auth-strategy.js.map +1 -0
  6. package/dist/client.d.ts +224 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +715 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/errors.d.ts +137 -0
  11. package/dist/errors.d.ts.map +1 -0
  12. package/dist/errors.js +269 -0
  13. package/dist/errors.js.map +1 -0
  14. package/dist/generated/metadata.json +2281 -0
  15. package/dist/generated/openapi-stripped.json +21268 -0
  16. package/dist/generated/path-mapping.d.ts +8 -0
  17. package/dist/generated/path-mapping.d.ts.map +1 -0
  18. package/dist/generated/path-mapping.js +192 -0
  19. package/dist/generated/path-mapping.js.map +1 -0
  20. package/dist/generated/path-mapping.ts +199 -0
  21. package/dist/generated/schema.d.ts +14883 -0
  22. package/dist/generated/services/attachments.d.ts +27 -0
  23. package/dist/generated/services/attachments.d.ts.map +1 -0
  24. package/dist/generated/services/attachments.js +49 -0
  25. package/dist/generated/services/attachments.js.map +1 -0
  26. package/dist/generated/services/attachments.ts +59 -0
  27. package/dist/generated/services/boosts.d.ts +114 -0
  28. package/dist/generated/services/boosts.d.ts.map +1 -0
  29. package/dist/generated/services/boosts.js +179 -0
  30. package/dist/generated/services/boosts.js.map +1 -0
  31. package/dist/generated/services/boosts.ts +250 -0
  32. package/dist/generated/services/campfires.d.ts +202 -0
  33. package/dist/generated/services/campfires.d.ts.map +1 -0
  34. package/dist/generated/services/campfires.js +309 -0
  35. package/dist/generated/services/campfires.js.map +1 -0
  36. package/dist/generated/services/campfires.ts +433 -0
  37. package/dist/generated/services/card-columns.d.ts +163 -0
  38. package/dist/generated/services/card-columns.d.ts.map +1 -0
  39. package/dist/generated/services/card-columns.js +264 -0
  40. package/dist/generated/services/card-columns.js.map +1 -0
  41. package/dist/generated/services/card-columns.ts +360 -0
  42. package/dist/generated/services/card-steps.d.ts +105 -0
  43. package/dist/generated/services/card-steps.d.ts.map +1 -0
  44. package/dist/generated/services/card-steps.js +148 -0
  45. package/dist/generated/services/card-steps.js.map +1 -0
  46. package/dist/generated/services/card-steps.ts +221 -0
  47. package/dist/generated/services/card-tables.d.ts +27 -0
  48. package/dist/generated/services/card-tables.d.ts.map +1 -0
  49. package/dist/generated/services/card-tables.js +40 -0
  50. package/dist/generated/services/card-tables.js.map +1 -0
  51. package/dist/generated/services/card-tables.ts +55 -0
  52. package/dist/generated/services/cards.d.ts +118 -0
  53. package/dist/generated/services/cards.d.ts.map +1 -0
  54. package/dist/generated/services/cards.js +166 -0
  55. package/dist/generated/services/cards.js.map +1 -0
  56. package/dist/generated/services/cards.ts +247 -0
  57. package/dist/generated/services/checkins.d.ts +278 -0
  58. package/dist/generated/services/checkins.d.ts.map +1 -0
  59. package/dist/generated/services/checkins.js +420 -0
  60. package/dist/generated/services/checkins.js.map +1 -0
  61. package/dist/generated/services/checkins.ts +600 -0
  62. package/dist/generated/services/client-approvals.d.ts +45 -0
  63. package/dist/generated/services/client-approvals.d.ts.map +1 -0
  64. package/dist/generated/services/client-approvals.js +58 -0
  65. package/dist/generated/services/client-approvals.js.map +1 -0
  66. package/dist/generated/services/client-approvals.ts +89 -0
  67. package/dist/generated/services/client-correspondences.d.ts +45 -0
  68. package/dist/generated/services/client-correspondences.d.ts.map +1 -0
  69. package/dist/generated/services/client-correspondences.js +58 -0
  70. package/dist/generated/services/client-correspondences.js.map +1 -0
  71. package/dist/generated/services/client-correspondences.ts +89 -0
  72. package/dist/generated/services/client-replies.d.ts +47 -0
  73. package/dist/generated/services/client-replies.d.ts.map +1 -0
  74. package/dist/generated/services/client-replies.js +65 -0
  75. package/dist/generated/services/client-replies.js.map +1 -0
  76. package/dist/generated/services/client-replies.ts +95 -0
  77. package/dist/generated/services/client-visibility.d.ts +35 -0
  78. package/dist/generated/services/client-visibility.d.ts.map +1 -0
  79. package/dist/generated/services/client-visibility.js +44 -0
  80. package/dist/generated/services/client-visibility.js.map +1 -0
  81. package/dist/generated/services/client-visibility.ts +68 -0
  82. package/dist/generated/services/comments.d.ts +86 -0
  83. package/dist/generated/services/comments.d.ts.map +1 -0
  84. package/dist/generated/services/comments.js +129 -0
  85. package/dist/generated/services/comments.js.map +1 -0
  86. package/dist/generated/services/comments.ts +185 -0
  87. package/dist/generated/services/documents.d.ts +92 -0
  88. package/dist/generated/services/documents.d.ts.map +1 -0
  89. package/dist/generated/services/documents.js +129 -0
  90. package/dist/generated/services/documents.js.map +1 -0
  91. package/dist/generated/services/documents.ts +191 -0
  92. package/dist/generated/services/events.d.ts +34 -0
  93. package/dist/generated/services/events.d.ts.map +1 -0
  94. package/dist/generated/services/events.js +39 -0
  95. package/dist/generated/services/events.js.map +1 -0
  96. package/dist/generated/services/events.ts +64 -0
  97. package/dist/generated/services/forwards.d.ts +112 -0
  98. package/dist/generated/services/forwards.d.ts.map +1 -0
  99. package/dist/generated/services/forwards.js +172 -0
  100. package/dist/generated/services/forwards.js.map +1 -0
  101. package/dist/generated/services/forwards.ts +241 -0
  102. package/dist/generated/services/index.d.ts +39 -0
  103. package/dist/generated/services/index.d.ts.map +1 -0
  104. package/dist/generated/services/index.js +39 -0
  105. package/dist/generated/services/index.js.map +1 -0
  106. package/dist/generated/services/index.ts +38 -0
  107. package/dist/generated/services/lineup.d.ts +67 -0
  108. package/dist/generated/services/lineup.d.ts.map +1 -0
  109. package/dist/generated/services/lineup.js +99 -0
  110. package/dist/generated/services/lineup.js.map +1 -0
  111. package/dist/generated/services/lineup.ts +143 -0
  112. package/dist/generated/services/message-boards.d.ts +27 -0
  113. package/dist/generated/services/message-boards.d.ts.map +1 -0
  114. package/dist/generated/services/message-boards.js +40 -0
  115. package/dist/generated/services/message-boards.js.map +1 -0
  116. package/dist/generated/services/message-boards.ts +55 -0
  117. package/dist/generated/services/message-types.d.ts +100 -0
  118. package/dist/generated/services/message-types.d.ts.map +1 -0
  119. package/dist/generated/services/message-types.js +144 -0
  120. package/dist/generated/services/message-types.js.map +1 -0
  121. package/dist/generated/services/message-types.ts +210 -0
  122. package/dist/generated/services/messages.d.ts +122 -0
  123. package/dist/generated/services/messages.d.ts.map +1 -0
  124. package/dist/generated/services/messages.js +180 -0
  125. package/dist/generated/services/messages.js.map +1 -0
  126. package/dist/generated/services/messages.ts +258 -0
  127. package/dist/generated/services/people.d.ts +122 -0
  128. package/dist/generated/services/people.d.ts.map +1 -0
  129. package/dist/generated/services/people.js +167 -0
  130. package/dist/generated/services/people.js.map +1 -0
  131. package/dist/generated/services/people.ts +252 -0
  132. package/dist/generated/services/projects.d.ts +109 -0
  133. package/dist/generated/services/projects.d.ts.map +1 -0
  134. package/dist/generated/services/projects.js +153 -0
  135. package/dist/generated/services/projects.js.map +1 -0
  136. package/dist/generated/services/projects.ts +224 -0
  137. package/dist/generated/services/recordings.d.ts +93 -0
  138. package/dist/generated/services/recordings.d.ts.map +1 -0
  139. package/dist/generated/services/recordings.js +138 -0
  140. package/dist/generated/services/recordings.js.map +1 -0
  141. package/dist/generated/services/recordings.ts +191 -0
  142. package/dist/generated/services/reports.d.ts +90 -0
  143. package/dist/generated/services/reports.d.ts.map +1 -0
  144. package/dist/generated/services/reports.js +124 -0
  145. package/dist/generated/services/reports.js.map +1 -0
  146. package/dist/generated/services/reports.ts +187 -0
  147. package/dist/generated/services/schedules.d.ts +162 -0
  148. package/dist/generated/services/schedules.d.ts.map +1 -0
  149. package/dist/generated/services/schedules.js +228 -0
  150. package/dist/generated/services/schedules.js.map +1 -0
  151. package/dist/generated/services/schedules.ts +335 -0
  152. package/dist/generated/services/search.d.ts +45 -0
  153. package/dist/generated/services/search.d.ts.map +1 -0
  154. package/dist/generated/services/search.js +56 -0
  155. package/dist/generated/services/search.js.map +1 -0
  156. package/dist/generated/services/search.ts +89 -0
  157. package/dist/generated/services/subscriptions.d.ts +73 -0
  158. package/dist/generated/services/subscriptions.d.ts.map +1 -0
  159. package/dist/generated/services/subscriptions.js +119 -0
  160. package/dist/generated/services/subscriptions.js.map +1 -0
  161. package/dist/generated/services/subscriptions.ts +160 -0
  162. package/dist/generated/services/templates.d.ts +140 -0
  163. package/dist/generated/services/templates.d.ts.map +1 -0
  164. package/dist/generated/services/templates.js +207 -0
  165. package/dist/generated/services/templates.js.map +1 -0
  166. package/dist/generated/services/templates.ts +294 -0
  167. package/dist/generated/services/timeline.d.ts +31 -0
  168. package/dist/generated/services/timeline.d.ts.map +1 -0
  169. package/dist/generated/services/timeline.js +39 -0
  170. package/dist/generated/services/timeline.js.map +1 -0
  171. package/dist/generated/services/timeline.ts +62 -0
  172. package/dist/generated/services/timesheets.d.ts +145 -0
  173. package/dist/generated/services/timesheets.d.ts.map +1 -0
  174. package/dist/generated/services/timesheets.js +186 -0
  175. package/dist/generated/services/timesheets.js.map +1 -0
  176. package/dist/generated/services/timesheets.ts +289 -0
  177. package/dist/generated/services/todolist-groups.d.ts +74 -0
  178. package/dist/generated/services/todolist-groups.d.ts.map +1 -0
  179. package/dist/generated/services/todolist-groups.js +100 -0
  180. package/dist/generated/services/todolist-groups.js.map +1 -0
  181. package/dist/generated/services/todolist-groups.ts +151 -0
  182. package/dist/generated/services/todolists.d.ts +95 -0
  183. package/dist/generated/services/todolists.d.ts.map +1 -0
  184. package/dist/generated/services/todolists.js +130 -0
  185. package/dist/generated/services/todolists.js.map +1 -0
  186. package/dist/generated/services/todolists.ts +192 -0
  187. package/dist/generated/services/todos.d.ts +175 -0
  188. package/dist/generated/services/todos.d.ts.map +1 -0
  189. package/dist/generated/services/todos.js +255 -0
  190. package/dist/generated/services/todos.js.map +1 -0
  191. package/dist/generated/services/todos.ts +369 -0
  192. package/dist/generated/services/todosets.d.ts +27 -0
  193. package/dist/generated/services/todosets.d.ts.map +1 -0
  194. package/dist/generated/services/todosets.js +40 -0
  195. package/dist/generated/services/todosets.js.map +1 -0
  196. package/dist/generated/services/todosets.ts +55 -0
  197. package/dist/generated/services/tools.d.ts +122 -0
  198. package/dist/generated/services/tools.d.ts.map +1 -0
  199. package/dist/generated/services/tools.js +197 -0
  200. package/dist/generated/services/tools.js.map +1 -0
  201. package/dist/generated/services/tools.ts +267 -0
  202. package/dist/generated/services/uploads.d.ts +109 -0
  203. package/dist/generated/services/uploads.d.ts.map +1 -0
  204. package/dist/generated/services/uploads.js +153 -0
  205. package/dist/generated/services/uploads.js.map +1 -0
  206. package/dist/generated/services/uploads.ts +227 -0
  207. package/dist/generated/services/vaults.d.ts +86 -0
  208. package/dist/generated/services/vaults.d.ts.map +1 -0
  209. package/dist/generated/services/vaults.js +126 -0
  210. package/dist/generated/services/vaults.js.map +1 -0
  211. package/dist/generated/services/vaults.ts +182 -0
  212. package/dist/generated/services/webhooks.d.ts +106 -0
  213. package/dist/generated/services/webhooks.d.ts.map +1 -0
  214. package/dist/generated/services/webhooks.js +157 -0
  215. package/dist/generated/services/webhooks.js.map +1 -0
  216. package/dist/generated/services/webhooks.ts +226 -0
  217. package/dist/hooks/otel.d.ts +136 -0
  218. package/dist/hooks/otel.d.ts.map +1 -0
  219. package/dist/hooks/otel.js +240 -0
  220. package/dist/hooks/otel.js.map +1 -0
  221. package/dist/hooks.d.ts +171 -0
  222. package/dist/hooks.d.ts.map +1 -0
  223. package/dist/hooks.js +196 -0
  224. package/dist/hooks.js.map +1 -0
  225. package/dist/index.d.ts +90 -0
  226. package/dist/index.d.ts.map +1 -0
  227. package/dist/index.js +122 -0
  228. package/dist/index.js.map +1 -0
  229. package/dist/oauth/authorize.d.ts +48 -0
  230. package/dist/oauth/authorize.d.ts.map +1 -0
  231. package/dist/oauth/authorize.js +56 -0
  232. package/dist/oauth/authorize.js.map +1 -0
  233. package/dist/oauth/callback-server.d.ts +56 -0
  234. package/dist/oauth/callback-server.d.ts.map +1 -0
  235. package/dist/oauth/callback-server.js +150 -0
  236. package/dist/oauth/callback-server.js.map +1 -0
  237. package/dist/oauth/discovery.d.ts +54 -0
  238. package/dist/oauth/discovery.d.ts.map +1 -0
  239. package/dist/oauth/discovery.js +116 -0
  240. package/dist/oauth/discovery.js.map +1 -0
  241. package/dist/oauth/exchange.d.ts +96 -0
  242. package/dist/oauth/exchange.d.ts.map +1 -0
  243. package/dist/oauth/exchange.js +324 -0
  244. package/dist/oauth/exchange.js.map +1 -0
  245. package/dist/oauth/identity.d.ts +30 -0
  246. package/dist/oauth/identity.d.ts.map +1 -0
  247. package/dist/oauth/identity.js +82 -0
  248. package/dist/oauth/identity.js.map +1 -0
  249. package/dist/oauth/index.d.ts +50 -0
  250. package/dist/oauth/index.d.ts.map +1 -0
  251. package/dist/oauth/index.js +58 -0
  252. package/dist/oauth/index.js.map +1 -0
  253. package/dist/oauth/interactive-login.d.ts +62 -0
  254. package/dist/oauth/interactive-login.d.ts.map +1 -0
  255. package/dist/oauth/interactive-login.js +106 -0
  256. package/dist/oauth/interactive-login.js.map +1 -0
  257. package/dist/oauth/pkce.d.ts +68 -0
  258. package/dist/oauth/pkce.d.ts.map +1 -0
  259. package/dist/oauth/pkce.js +80 -0
  260. package/dist/oauth/pkce.js.map +1 -0
  261. package/dist/oauth/token-manager.d.ts +92 -0
  262. package/dist/oauth/token-manager.d.ts.map +1 -0
  263. package/dist/oauth/token-manager.js +126 -0
  264. package/dist/oauth/token-manager.js.map +1 -0
  265. package/dist/oauth/token-store.d.ts +45 -0
  266. package/dist/oauth/token-store.d.ts.map +1 -0
  267. package/dist/oauth/token-store.js +105 -0
  268. package/dist/oauth/token-store.js.map +1 -0
  269. package/dist/oauth/types.d.ts +98 -0
  270. package/dist/oauth/types.d.ts.map +1 -0
  271. package/dist/oauth/types.js +8 -0
  272. package/dist/oauth/types.js.map +1 -0
  273. package/dist/pagination-utils.d.ts +27 -0
  274. package/dist/pagination-utils.d.ts.map +1 -0
  275. package/dist/pagination-utils.js +54 -0
  276. package/dist/pagination-utils.js.map +1 -0
  277. package/dist/pagination.d.ts +56 -0
  278. package/dist/pagination.d.ts.map +1 -0
  279. package/dist/pagination.js +57 -0
  280. package/dist/pagination.js.map +1 -0
  281. package/dist/security.d.ts +68 -0
  282. package/dist/security.d.ts.map +1 -0
  283. package/dist/security.js +107 -0
  284. package/dist/security.js.map +1 -0
  285. package/dist/services/authorization.d.ts +124 -0
  286. package/dist/services/authorization.d.ts.map +1 -0
  287. package/dist/services/authorization.js +117 -0
  288. package/dist/services/authorization.js.map +1 -0
  289. package/dist/services/base.d.ts +102 -0
  290. package/dist/services/base.d.ts.map +1 -0
  291. package/dist/services/base.js +230 -0
  292. package/dist/services/base.js.map +1 -0
  293. package/dist/webhooks/adapters/node-http.d.ts +14 -0
  294. package/dist/webhooks/adapters/node-http.d.ts.map +1 -0
  295. package/dist/webhooks/adapters/node-http.js +60 -0
  296. package/dist/webhooks/adapters/node-http.js.map +1 -0
  297. package/dist/webhooks/events.d.ts +52 -0
  298. package/dist/webhooks/events.d.ts.map +1 -0
  299. package/dist/webhooks/events.js +52 -0
  300. package/dist/webhooks/events.js.map +1 -0
  301. package/dist/webhooks/handler.d.ts +62 -0
  302. package/dist/webhooks/handler.d.ts.map +1 -0
  303. package/dist/webhooks/handler.js +226 -0
  304. package/dist/webhooks/handler.js.map +1 -0
  305. package/dist/webhooks/index.d.ts +5 -0
  306. package/dist/webhooks/index.d.ts.map +1 -0
  307. package/dist/webhooks/index.js +5 -0
  308. package/dist/webhooks/index.js.map +1 -0
  309. package/dist/webhooks/verify.d.ts +11 -0
  310. package/dist/webhooks/verify.d.ts.map +1 -0
  311. package/dist/webhooks/verify.js +25 -0
  312. package/dist/webhooks/verify.js.map +1 -0
  313. package/package.json +70 -0
  314. package/src/generated/metadata.json +2281 -0
  315. package/src/generated/openapi-stripped.json +21268 -0
  316. package/src/generated/path-mapping.ts +199 -0
  317. package/src/generated/schema.d.ts +14883 -0
  318. package/src/generated/services/attachments.ts +59 -0
  319. package/src/generated/services/boosts.ts +250 -0
  320. package/src/generated/services/campfires.ts +433 -0
  321. package/src/generated/services/card-columns.ts +360 -0
  322. package/src/generated/services/card-steps.ts +221 -0
  323. package/src/generated/services/card-tables.ts +55 -0
  324. package/src/generated/services/cards.ts +247 -0
  325. package/src/generated/services/checkins.ts +600 -0
  326. package/src/generated/services/client-approvals.ts +89 -0
  327. package/src/generated/services/client-correspondences.ts +89 -0
  328. package/src/generated/services/client-replies.ts +95 -0
  329. package/src/generated/services/client-visibility.ts +68 -0
  330. package/src/generated/services/comments.ts +185 -0
  331. package/src/generated/services/documents.ts +191 -0
  332. package/src/generated/services/events.ts +64 -0
  333. package/src/generated/services/forwards.ts +241 -0
  334. package/src/generated/services/index.ts +38 -0
  335. package/src/generated/services/lineup.ts +143 -0
  336. package/src/generated/services/message-boards.ts +55 -0
  337. package/src/generated/services/message-types.ts +210 -0
  338. package/src/generated/services/messages.ts +258 -0
  339. package/src/generated/services/people.ts +252 -0
  340. package/src/generated/services/projects.ts +224 -0
  341. package/src/generated/services/recordings.ts +191 -0
  342. package/src/generated/services/reports.ts +187 -0
  343. package/src/generated/services/schedules.ts +335 -0
  344. package/src/generated/services/search.ts +89 -0
  345. package/src/generated/services/subscriptions.ts +160 -0
  346. package/src/generated/services/templates.ts +294 -0
  347. package/src/generated/services/timeline.ts +62 -0
  348. package/src/generated/services/timesheets.ts +289 -0
  349. package/src/generated/services/todolist-groups.ts +151 -0
  350. package/src/generated/services/todolists.ts +192 -0
  351. package/src/generated/services/todos.ts +369 -0
  352. package/src/generated/services/todosets.ts +55 -0
  353. package/src/generated/services/tools.ts +267 -0
  354. package/src/generated/services/uploads.ts +227 -0
  355. package/src/generated/services/vaults.ts +182 -0
  356. package/src/generated/services/webhooks.ts +226 -0
@@ -0,0 +1,264 @@
1
+ /**
2
+ * CardColumns service for the Basecamp API.
3
+ *
4
+ * @generated from OpenAPI spec - do not edit directly
5
+ */
6
+ import { BaseService } from "../../services/base.js";
7
+ import { Errors } from "../../errors.js";
8
+ // =============================================================================
9
+ // Service
10
+ // =============================================================================
11
+ /**
12
+ * Service for CardColumns operations.
13
+ */
14
+ export class CardColumnsService extends BaseService {
15
+ /**
16
+ * Get a card column by ID
17
+ * @param columnId - The column ID
18
+ * @returns The CardColumn
19
+ * @throws {BasecampError} If the resource is not found
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * const result = await client.cardColumns.get(123);
24
+ * ```
25
+ */
26
+ async get(columnId) {
27
+ const response = await this.request({
28
+ service: "CardColumns",
29
+ operation: "GetCardColumn",
30
+ resourceType: "card_column",
31
+ isMutation: false,
32
+ resourceId: columnId,
33
+ }, () => this.client.GET("/card_tables/columns/{columnId}", {
34
+ params: {
35
+ path: { columnId },
36
+ },
37
+ }));
38
+ return response;
39
+ }
40
+ /**
41
+ * Update an existing column
42
+ * @param columnId - The column ID
43
+ * @param req - Card_column update parameters
44
+ * @returns The CardColumn
45
+ * @throws {BasecampError} If the resource is not found or fields are invalid
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * const result = await client.cardColumns.update(123, { });
50
+ * ```
51
+ */
52
+ async update(columnId, req) {
53
+ const response = await this.request({
54
+ service: "CardColumns",
55
+ operation: "UpdateCardColumn",
56
+ resourceType: "card_column",
57
+ isMutation: true,
58
+ resourceId: columnId,
59
+ }, () => this.client.PUT("/card_tables/columns/{columnId}", {
60
+ params: {
61
+ path: { columnId },
62
+ },
63
+ body: {
64
+ title: req.title,
65
+ description: req.description,
66
+ },
67
+ }));
68
+ return response;
69
+ }
70
+ /**
71
+ * Set the color of a column
72
+ * @param columnId - The column ID
73
+ * @param req - Card_column_color request parameters
74
+ * @returns The CardColumn
75
+ * @throws {BasecampError} If the request fails
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * const result = await client.cardColumns.setColor(123, { color: "example" });
80
+ * ```
81
+ */
82
+ async setColor(columnId, req) {
83
+ if (!req.color) {
84
+ throw Errors.validation("Color is required");
85
+ }
86
+ const response = await this.request({
87
+ service: "CardColumns",
88
+ operation: "SetCardColumnColor",
89
+ resourceType: "card_column_color",
90
+ isMutation: true,
91
+ resourceId: columnId,
92
+ }, () => this.client.PUT("/card_tables/columns/{columnId}/color.json", {
93
+ params: {
94
+ path: { columnId },
95
+ },
96
+ body: {
97
+ color: req.color,
98
+ },
99
+ }));
100
+ return response;
101
+ }
102
+ /**
103
+ * Enable on-hold section in a column
104
+ * @param columnId - The column ID
105
+ * @returns The CardColumn
106
+ * @throws {BasecampError} If the request fails
107
+ *
108
+ * @example
109
+ * ```ts
110
+ * const result = await client.cardColumns.enableOnHold(123);
111
+ * ```
112
+ */
113
+ async enableOnHold(columnId) {
114
+ const response = await this.request({
115
+ service: "CardColumns",
116
+ operation: "EnableCardColumnOnHold",
117
+ resourceType: "card_column_on_hold",
118
+ isMutation: true,
119
+ resourceId: columnId,
120
+ }, () => this.client.POST("/card_tables/columns/{columnId}/on_hold.json", {
121
+ params: {
122
+ path: { columnId },
123
+ },
124
+ }));
125
+ return response;
126
+ }
127
+ /**
128
+ * Disable on-hold section in a column
129
+ * @param columnId - The column ID
130
+ * @returns The CardColumn
131
+ * @throws {BasecampError} If the request fails
132
+ *
133
+ * @example
134
+ * ```ts
135
+ * const result = await client.cardColumns.disableOnHold(123);
136
+ * ```
137
+ */
138
+ async disableOnHold(columnId) {
139
+ const response = await this.request({
140
+ service: "CardColumns",
141
+ operation: "DisableCardColumnOnHold",
142
+ resourceType: "card_column_on_hold",
143
+ isMutation: true,
144
+ resourceId: columnId,
145
+ }, () => this.client.DELETE("/card_tables/columns/{columnId}/on_hold.json", {
146
+ params: {
147
+ path: { columnId },
148
+ },
149
+ }));
150
+ return response;
151
+ }
152
+ /**
153
+ * Subscribe to a card column (watch for changes)
154
+ * @param columnId - The column ID
155
+ * @returns void
156
+ * @throws {BasecampError} If the request fails
157
+ *
158
+ * @example
159
+ * ```ts
160
+ * await client.cardColumns.subscribeToColumn(123);
161
+ * ```
162
+ */
163
+ async subscribeToColumn(columnId) {
164
+ await this.request({
165
+ service: "CardColumns",
166
+ operation: "SubscribeToCardColumn",
167
+ resourceType: "to_card_column",
168
+ isMutation: true,
169
+ resourceId: columnId,
170
+ }, () => this.client.POST("/card_tables/lists/{columnId}/subscription.json", {
171
+ params: {
172
+ path: { columnId },
173
+ },
174
+ }));
175
+ }
176
+ /**
177
+ * Unsubscribe from a card column (stop watching for changes)
178
+ * @param columnId - The column ID
179
+ * @returns void
180
+ * @throws {BasecampError} If the request fails
181
+ *
182
+ * @example
183
+ * ```ts
184
+ * await client.cardColumns.unsubscribeFromColumn(123);
185
+ * ```
186
+ */
187
+ async unsubscribeFromColumn(columnId) {
188
+ await this.request({
189
+ service: "CardColumns",
190
+ operation: "UnsubscribeFromCardColumn",
191
+ resourceType: "from_card_column",
192
+ isMutation: true,
193
+ resourceId: columnId,
194
+ }, () => this.client.DELETE("/card_tables/lists/{columnId}/subscription.json", {
195
+ params: {
196
+ path: { columnId },
197
+ },
198
+ }));
199
+ }
200
+ /**
201
+ * Create a column in a card table
202
+ * @param cardTableId - The card table ID
203
+ * @param req - Card_column creation parameters
204
+ * @returns The CardColumn
205
+ * @throws {BasecampError} If required fields are missing or invalid
206
+ *
207
+ * @example
208
+ * ```ts
209
+ * const result = await client.cardColumns.create(123, { title: "example" });
210
+ * ```
211
+ */
212
+ async create(cardTableId, req) {
213
+ if (!req.title) {
214
+ throw Errors.validation("Title is required");
215
+ }
216
+ const response = await this.request({
217
+ service: "CardColumns",
218
+ operation: "CreateCardColumn",
219
+ resourceType: "card_column",
220
+ isMutation: true,
221
+ resourceId: cardTableId,
222
+ }, () => this.client.POST("/card_tables/{cardTableId}/columns.json", {
223
+ params: {
224
+ path: { cardTableId },
225
+ },
226
+ body: {
227
+ title: req.title,
228
+ description: req.description,
229
+ },
230
+ }));
231
+ return response;
232
+ }
233
+ /**
234
+ * Move a column within a card table
235
+ * @param cardTableId - The card table ID
236
+ * @param req - Card_column request parameters
237
+ * @returns void
238
+ * @throws {BasecampError} If the request fails
239
+ *
240
+ * @example
241
+ * ```ts
242
+ * await client.cardColumns.move(123, { sourceId: 1, targetId: 1 });
243
+ * ```
244
+ */
245
+ async move(cardTableId, req) {
246
+ await this.request({
247
+ service: "CardColumns",
248
+ operation: "MoveCardColumn",
249
+ resourceType: "card_column",
250
+ isMutation: true,
251
+ resourceId: cardTableId,
252
+ }, () => this.client.POST("/card_tables/{cardTableId}/moves.json", {
253
+ params: {
254
+ path: { cardTableId },
255
+ },
256
+ body: {
257
+ source_id: req.sourceId,
258
+ target_id: req.targetId,
259
+ position: req.position,
260
+ },
261
+ }));
262
+ }
263
+ }
264
+ //# sourceMappingURL=card-columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-columns.js","sourceRoot":"","sources":["../../../src/generated/services/card-columns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,360 @@
1
+ /**
2
+ * CardColumns service for the Basecamp API.
3
+ *
4
+ * @generated from OpenAPI spec - do not edit directly
5
+ */
6
+
7
+ import { BaseService } from "../../services/base.js";
8
+ import type { components } from "../schema.js";
9
+ import { Errors } from "../../errors.js";
10
+
11
+ // =============================================================================
12
+ // Types
13
+ // =============================================================================
14
+
15
+ /** CardColumn entity from the Basecamp API. */
16
+ export type CardColumn = components["schemas"]["CardColumn"];
17
+
18
+ /**
19
+ * Request parameters for update.
20
+ */
21
+ export interface UpdateCardColumnRequest {
22
+ /** Title */
23
+ title?: string;
24
+ /** Rich text description (HTML) */
25
+ description?: string;
26
+ }
27
+
28
+ /**
29
+ * Request parameters for setColor.
30
+ */
31
+ export interface SetColorCardColumnRequest {
32
+ /** Valid colors: white, red, orange, yellow, green, blue, aqua, purple, gray, pink, brown */
33
+ color: string;
34
+ }
35
+
36
+ /**
37
+ * Request parameters for create.
38
+ */
39
+ export interface CreateCardColumnRequest {
40
+ /** Title */
41
+ title: string;
42
+ /** Rich text description (HTML) */
43
+ description?: string;
44
+ }
45
+
46
+ /**
47
+ * Request parameters for move.
48
+ */
49
+ export interface MoveCardColumnRequest {
50
+ /** Source id */
51
+ sourceId: number;
52
+ /** Target id */
53
+ targetId: number;
54
+ /** Position for ordering (1-based) */
55
+ position?: number;
56
+ }
57
+
58
+
59
+ // =============================================================================
60
+ // Service
61
+ // =============================================================================
62
+
63
+ /**
64
+ * Service for CardColumns operations.
65
+ */
66
+ export class CardColumnsService extends BaseService {
67
+
68
+ /**
69
+ * Get a card column by ID
70
+ * @param columnId - The column ID
71
+ * @returns The CardColumn
72
+ * @throws {BasecampError} If the resource is not found
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * const result = await client.cardColumns.get(123);
77
+ * ```
78
+ */
79
+ async get(columnId: number): Promise<CardColumn> {
80
+ const response = await this.request(
81
+ {
82
+ service: "CardColumns",
83
+ operation: "GetCardColumn",
84
+ resourceType: "card_column",
85
+ isMutation: false,
86
+ resourceId: columnId,
87
+ },
88
+ () =>
89
+ this.client.GET("/card_tables/columns/{columnId}", {
90
+ params: {
91
+ path: { columnId },
92
+ },
93
+ })
94
+ );
95
+ return response;
96
+ }
97
+
98
+ /**
99
+ * Update an existing column
100
+ * @param columnId - The column ID
101
+ * @param req - Card_column update parameters
102
+ * @returns The CardColumn
103
+ * @throws {BasecampError} If the resource is not found or fields are invalid
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * const result = await client.cardColumns.update(123, { });
108
+ * ```
109
+ */
110
+ async update(columnId: number, req: UpdateCardColumnRequest): Promise<CardColumn> {
111
+ const response = await this.request(
112
+ {
113
+ service: "CardColumns",
114
+ operation: "UpdateCardColumn",
115
+ resourceType: "card_column",
116
+ isMutation: true,
117
+ resourceId: columnId,
118
+ },
119
+ () =>
120
+ this.client.PUT("/card_tables/columns/{columnId}", {
121
+ params: {
122
+ path: { columnId },
123
+ },
124
+ body: {
125
+ title: req.title,
126
+ description: req.description,
127
+ },
128
+ })
129
+ );
130
+ return response;
131
+ }
132
+
133
+ /**
134
+ * Set the color of a column
135
+ * @param columnId - The column ID
136
+ * @param req - Card_column_color request parameters
137
+ * @returns The CardColumn
138
+ * @throws {BasecampError} If the request fails
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * const result = await client.cardColumns.setColor(123, { color: "example" });
143
+ * ```
144
+ */
145
+ async setColor(columnId: number, req: SetColorCardColumnRequest): Promise<CardColumn> {
146
+ if (!req.color) {
147
+ throw Errors.validation("Color is required");
148
+ }
149
+ const response = await this.request(
150
+ {
151
+ service: "CardColumns",
152
+ operation: "SetCardColumnColor",
153
+ resourceType: "card_column_color",
154
+ isMutation: true,
155
+ resourceId: columnId,
156
+ },
157
+ () =>
158
+ this.client.PUT("/card_tables/columns/{columnId}/color.json", {
159
+ params: {
160
+ path: { columnId },
161
+ },
162
+ body: {
163
+ color: req.color,
164
+ },
165
+ })
166
+ );
167
+ return response;
168
+ }
169
+
170
+ /**
171
+ * Enable on-hold section in a column
172
+ * @param columnId - The column ID
173
+ * @returns The CardColumn
174
+ * @throws {BasecampError} If the request fails
175
+ *
176
+ * @example
177
+ * ```ts
178
+ * const result = await client.cardColumns.enableOnHold(123);
179
+ * ```
180
+ */
181
+ async enableOnHold(columnId: number): Promise<CardColumn> {
182
+ const response = await this.request(
183
+ {
184
+ service: "CardColumns",
185
+ operation: "EnableCardColumnOnHold",
186
+ resourceType: "card_column_on_hold",
187
+ isMutation: true,
188
+ resourceId: columnId,
189
+ },
190
+ () =>
191
+ this.client.POST("/card_tables/columns/{columnId}/on_hold.json", {
192
+ params: {
193
+ path: { columnId },
194
+ },
195
+ })
196
+ );
197
+ return response;
198
+ }
199
+
200
+ /**
201
+ * Disable on-hold section in a column
202
+ * @param columnId - The column ID
203
+ * @returns The CardColumn
204
+ * @throws {BasecampError} If the request fails
205
+ *
206
+ * @example
207
+ * ```ts
208
+ * const result = await client.cardColumns.disableOnHold(123);
209
+ * ```
210
+ */
211
+ async disableOnHold(columnId: number): Promise<CardColumn> {
212
+ const response = await this.request(
213
+ {
214
+ service: "CardColumns",
215
+ operation: "DisableCardColumnOnHold",
216
+ resourceType: "card_column_on_hold",
217
+ isMutation: true,
218
+ resourceId: columnId,
219
+ },
220
+ () =>
221
+ this.client.DELETE("/card_tables/columns/{columnId}/on_hold.json", {
222
+ params: {
223
+ path: { columnId },
224
+ },
225
+ })
226
+ );
227
+ return response;
228
+ }
229
+
230
+ /**
231
+ * Subscribe to a card column (watch for changes)
232
+ * @param columnId - The column ID
233
+ * @returns void
234
+ * @throws {BasecampError} If the request fails
235
+ *
236
+ * @example
237
+ * ```ts
238
+ * await client.cardColumns.subscribeToColumn(123);
239
+ * ```
240
+ */
241
+ async subscribeToColumn(columnId: number): Promise<void> {
242
+ await this.request(
243
+ {
244
+ service: "CardColumns",
245
+ operation: "SubscribeToCardColumn",
246
+ resourceType: "to_card_column",
247
+ isMutation: true,
248
+ resourceId: columnId,
249
+ },
250
+ () =>
251
+ this.client.POST("/card_tables/lists/{columnId}/subscription.json", {
252
+ params: {
253
+ path: { columnId },
254
+ },
255
+ })
256
+ );
257
+ }
258
+
259
+ /**
260
+ * Unsubscribe from a card column (stop watching for changes)
261
+ * @param columnId - The column ID
262
+ * @returns void
263
+ * @throws {BasecampError} If the request fails
264
+ *
265
+ * @example
266
+ * ```ts
267
+ * await client.cardColumns.unsubscribeFromColumn(123);
268
+ * ```
269
+ */
270
+ async unsubscribeFromColumn(columnId: number): Promise<void> {
271
+ await this.request(
272
+ {
273
+ service: "CardColumns",
274
+ operation: "UnsubscribeFromCardColumn",
275
+ resourceType: "from_card_column",
276
+ isMutation: true,
277
+ resourceId: columnId,
278
+ },
279
+ () =>
280
+ this.client.DELETE("/card_tables/lists/{columnId}/subscription.json", {
281
+ params: {
282
+ path: { columnId },
283
+ },
284
+ })
285
+ );
286
+ }
287
+
288
+ /**
289
+ * Create a column in a card table
290
+ * @param cardTableId - The card table ID
291
+ * @param req - Card_column creation parameters
292
+ * @returns The CardColumn
293
+ * @throws {BasecampError} If required fields are missing or invalid
294
+ *
295
+ * @example
296
+ * ```ts
297
+ * const result = await client.cardColumns.create(123, { title: "example" });
298
+ * ```
299
+ */
300
+ async create(cardTableId: number, req: CreateCardColumnRequest): Promise<CardColumn> {
301
+ if (!req.title) {
302
+ throw Errors.validation("Title is required");
303
+ }
304
+ const response = await this.request(
305
+ {
306
+ service: "CardColumns",
307
+ operation: "CreateCardColumn",
308
+ resourceType: "card_column",
309
+ isMutation: true,
310
+ resourceId: cardTableId,
311
+ },
312
+ () =>
313
+ this.client.POST("/card_tables/{cardTableId}/columns.json", {
314
+ params: {
315
+ path: { cardTableId },
316
+ },
317
+ body: {
318
+ title: req.title,
319
+ description: req.description,
320
+ },
321
+ })
322
+ );
323
+ return response;
324
+ }
325
+
326
+ /**
327
+ * Move a column within a card table
328
+ * @param cardTableId - The card table ID
329
+ * @param req - Card_column request parameters
330
+ * @returns void
331
+ * @throws {BasecampError} If the request fails
332
+ *
333
+ * @example
334
+ * ```ts
335
+ * await client.cardColumns.move(123, { sourceId: 1, targetId: 1 });
336
+ * ```
337
+ */
338
+ async move(cardTableId: number, req: MoveCardColumnRequest): Promise<void> {
339
+ await this.request(
340
+ {
341
+ service: "CardColumns",
342
+ operation: "MoveCardColumn",
343
+ resourceType: "card_column",
344
+ isMutation: true,
345
+ resourceId: cardTableId,
346
+ },
347
+ () =>
348
+ this.client.POST("/card_tables/{cardTableId}/moves.json", {
349
+ params: {
350
+ path: { cardTableId },
351
+ },
352
+ body: {
353
+ source_id: req.sourceId,
354
+ target_id: req.targetId,
355
+ position: req.position,
356
+ },
357
+ })
358
+ );
359
+ }
360
+ }