@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,89 @@
1
+ /**
2
+ * ClientCorrespondences 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 { ListResult } from "../../pagination.js";
10
+ import type { PaginationOptions } from "../../pagination.js";
11
+
12
+ // =============================================================================
13
+ // Types
14
+ // =============================================================================
15
+
16
+ /** ClientCorrespondence entity from the Basecamp API. */
17
+ export type ClientCorrespondence = components["schemas"]["ClientCorrespondence"];
18
+
19
+ /**
20
+ * Options for list.
21
+ */
22
+ export interface ListClientCorrespondenceOptions extends PaginationOptions {
23
+ }
24
+
25
+
26
+ // =============================================================================
27
+ // Service
28
+ // =============================================================================
29
+
30
+ /**
31
+ * Service for ClientCorrespondences operations.
32
+ */
33
+ export class ClientCorrespondencesService extends BaseService {
34
+
35
+ /**
36
+ * List all client correspondences in a project
37
+ * @param options - Optional query parameters
38
+ * @returns All ClientCorrespondence across all pages, with .meta.totalCount
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * const result = await client.clientCorrespondences.list();
43
+ * ```
44
+ */
45
+ async list(options?: ListClientCorrespondenceOptions): Promise<ListResult<ClientCorrespondence>> {
46
+ return this.requestPaginated(
47
+ {
48
+ service: "ClientCorrespondences",
49
+ operation: "ListClientCorrespondences",
50
+ resourceType: "client_correspondence",
51
+ isMutation: false,
52
+ },
53
+ () =>
54
+ this.client.GET("/client/correspondences.json", {
55
+ })
56
+ , options
57
+ );
58
+ }
59
+
60
+ /**
61
+ * Get a single client correspondence by id
62
+ * @param correspondenceId - The correspondence ID
63
+ * @returns The ClientCorrespondence
64
+ * @throws {BasecampError} If the resource is not found
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const result = await client.clientCorrespondences.get(123);
69
+ * ```
70
+ */
71
+ async get(correspondenceId: number): Promise<ClientCorrespondence> {
72
+ const response = await this.request(
73
+ {
74
+ service: "ClientCorrespondences",
75
+ operation: "GetClientCorrespondence",
76
+ resourceType: "client_correspondence",
77
+ isMutation: false,
78
+ resourceId: correspondenceId,
79
+ },
80
+ () =>
81
+ this.client.GET("/client/correspondences/{correspondenceId}", {
82
+ params: {
83
+ path: { correspondenceId },
84
+ },
85
+ })
86
+ );
87
+ return response;
88
+ }
89
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * ClientReplies 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 { ListResult } from "../../pagination.js";
10
+ import type { PaginationOptions } from "../../pagination.js";
11
+
12
+ // =============================================================================
13
+ // Types
14
+ // =============================================================================
15
+
16
+ /** ClientReply entity from the Basecamp API. */
17
+ export type ClientReply = components["schemas"]["ClientReply"];
18
+
19
+ /**
20
+ * Options for list.
21
+ */
22
+ export interface ListClientReplyOptions extends PaginationOptions {
23
+ }
24
+
25
+
26
+ // =============================================================================
27
+ // Service
28
+ // =============================================================================
29
+
30
+ /**
31
+ * Service for ClientReplies operations.
32
+ */
33
+ export class ClientRepliesService extends BaseService {
34
+
35
+ /**
36
+ * List all client replies for a recording (correspondence or approval)
37
+ * @param recordingId - The recording ID
38
+ * @param options - Optional query parameters
39
+ * @returns All ClientReply across all pages, with .meta.totalCount
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * const result = await client.clientReplies.list(123);
44
+ * ```
45
+ */
46
+ async list(recordingId: number, options?: ListClientReplyOptions): Promise<ListResult<ClientReply>> {
47
+ return this.requestPaginated(
48
+ {
49
+ service: "ClientReplies",
50
+ operation: "ListClientReplies",
51
+ resourceType: "client_replie",
52
+ isMutation: false,
53
+ resourceId: recordingId,
54
+ },
55
+ () =>
56
+ this.client.GET("/client/recordings/{recordingId}/replies.json", {
57
+ params: {
58
+ path: { recordingId },
59
+ },
60
+ })
61
+ , options
62
+ );
63
+ }
64
+
65
+ /**
66
+ * Get a single client reply by id
67
+ * @param recordingId - The recording ID
68
+ * @param replyId - The reply ID
69
+ * @returns The ClientReply
70
+ * @throws {BasecampError} If the resource is not found
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * const result = await client.clientReplies.get(123, 123);
75
+ * ```
76
+ */
77
+ async get(recordingId: number, replyId: number): Promise<ClientReply> {
78
+ const response = await this.request(
79
+ {
80
+ service: "ClientReplies",
81
+ operation: "GetClientReply",
82
+ resourceType: "client_reply",
83
+ isMutation: false,
84
+ resourceId: recordingId,
85
+ },
86
+ () =>
87
+ this.client.GET("/client/recordings/{recordingId}/replies/{replyId}", {
88
+ params: {
89
+ path: { recordingId, replyId },
90
+ },
91
+ })
92
+ );
93
+ return response;
94
+ }
95
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * ClientVisibility 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
+
10
+ // =============================================================================
11
+ // Types
12
+ // =============================================================================
13
+
14
+ /** Recording entity from the Basecamp API. */
15
+ export type Recording = components["schemas"]["Recording"];
16
+
17
+ /**
18
+ * Request parameters for setVisibility.
19
+ */
20
+ export interface SetVisibilityClientVisibilityRequest {
21
+ /** Visible to clients */
22
+ visibleToClients: boolean;
23
+ }
24
+
25
+
26
+ // =============================================================================
27
+ // Service
28
+ // =============================================================================
29
+
30
+ /**
31
+ * Service for ClientVisibility operations.
32
+ */
33
+ export class ClientVisibilityService extends BaseService {
34
+
35
+ /**
36
+ * Set client visibility for a recording
37
+ * @param recordingId - The recording ID
38
+ * @param req - Client_visibility request parameters
39
+ * @returns The Recording
40
+ * @throws {BasecampError} If the request fails
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * const result = await client.clientVisibility.setVisibility(123, { visibleToClients: true });
45
+ * ```
46
+ */
47
+ async setVisibility(recordingId: number, req: SetVisibilityClientVisibilityRequest): Promise<Recording> {
48
+ const response = await this.request(
49
+ {
50
+ service: "ClientVisibility",
51
+ operation: "SetClientVisibility",
52
+ resourceType: "client_visibility",
53
+ isMutation: true,
54
+ resourceId: recordingId,
55
+ },
56
+ () =>
57
+ this.client.PUT("/recordings/{recordingId}/client_visibility.json", {
58
+ params: {
59
+ path: { recordingId },
60
+ },
61
+ body: {
62
+ visible_to_clients: req.visibleToClients,
63
+ },
64
+ })
65
+ );
66
+ return response;
67
+ }
68
+ }
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Comments 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 { ListResult } from "../../pagination.js";
10
+ import type { PaginationOptions } from "../../pagination.js";
11
+ import { Errors } from "../../errors.js";
12
+
13
+ // =============================================================================
14
+ // Types
15
+ // =============================================================================
16
+
17
+ /** Comment entity from the Basecamp API. */
18
+ export type Comment = components["schemas"]["Comment"];
19
+
20
+ /**
21
+ * Request parameters for update.
22
+ */
23
+ export interface UpdateCommentRequest {
24
+ /** Text content */
25
+ content: string;
26
+ }
27
+
28
+ /**
29
+ * Options for list.
30
+ */
31
+ export interface ListCommentOptions extends PaginationOptions {
32
+ }
33
+
34
+ /**
35
+ * Request parameters for create.
36
+ */
37
+ export interface CreateCommentRequest {
38
+ /** Text content */
39
+ content: string;
40
+ }
41
+
42
+
43
+ // =============================================================================
44
+ // Service
45
+ // =============================================================================
46
+
47
+ /**
48
+ * Service for Comments operations.
49
+ */
50
+ export class CommentsService extends BaseService {
51
+
52
+ /**
53
+ * Get a single comment by id
54
+ * @param commentId - The comment ID
55
+ * @returns The Comment
56
+ * @throws {BasecampError} If the resource is not found
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * const result = await client.comments.get(123);
61
+ * ```
62
+ */
63
+ async get(commentId: number): Promise<Comment> {
64
+ const response = await this.request(
65
+ {
66
+ service: "Comments",
67
+ operation: "GetComment",
68
+ resourceType: "comment",
69
+ isMutation: false,
70
+ resourceId: commentId,
71
+ },
72
+ () =>
73
+ this.client.GET("/comments/{commentId}", {
74
+ params: {
75
+ path: { commentId },
76
+ },
77
+ })
78
+ );
79
+ return response;
80
+ }
81
+
82
+ /**
83
+ * Update an existing comment
84
+ * @param commentId - The comment ID
85
+ * @param req - Comment update parameters
86
+ * @returns The Comment
87
+ * @throws {BasecampError} If the resource is not found or fields are invalid
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * const result = await client.comments.update(123, { content: "Hello world" });
92
+ * ```
93
+ */
94
+ async update(commentId: number, req: UpdateCommentRequest): Promise<Comment> {
95
+ if (!req.content) {
96
+ throw Errors.validation("Content is required");
97
+ }
98
+ const response = await this.request(
99
+ {
100
+ service: "Comments",
101
+ operation: "UpdateComment",
102
+ resourceType: "comment",
103
+ isMutation: true,
104
+ resourceId: commentId,
105
+ },
106
+ () =>
107
+ this.client.PUT("/comments/{commentId}", {
108
+ params: {
109
+ path: { commentId },
110
+ },
111
+ body: {
112
+ content: req.content,
113
+ },
114
+ })
115
+ );
116
+ return response;
117
+ }
118
+
119
+ /**
120
+ * List comments on a recording
121
+ * @param recordingId - The recording ID
122
+ * @param options - Optional query parameters
123
+ * @returns All Comment across all pages, with .meta.totalCount
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * const result = await client.comments.list(123);
128
+ * ```
129
+ */
130
+ async list(recordingId: number, options?: ListCommentOptions): Promise<ListResult<Comment>> {
131
+ return this.requestPaginated(
132
+ {
133
+ service: "Comments",
134
+ operation: "ListComments",
135
+ resourceType: "comment",
136
+ isMutation: false,
137
+ resourceId: recordingId,
138
+ },
139
+ () =>
140
+ this.client.GET("/recordings/{recordingId}/comments.json", {
141
+ params: {
142
+ path: { recordingId },
143
+ },
144
+ })
145
+ , options
146
+ );
147
+ }
148
+
149
+ /**
150
+ * Create a new comment on a recording
151
+ * @param recordingId - The recording ID
152
+ * @param req - Comment creation parameters
153
+ * @returns The Comment
154
+ * @throws {BasecampError} If required fields are missing or invalid
155
+ *
156
+ * @example
157
+ * ```ts
158
+ * const result = await client.comments.create(123, { content: "Hello world" });
159
+ * ```
160
+ */
161
+ async create(recordingId: number, req: CreateCommentRequest): Promise<Comment> {
162
+ if (!req.content) {
163
+ throw Errors.validation("Content is required");
164
+ }
165
+ const response = await this.request(
166
+ {
167
+ service: "Comments",
168
+ operation: "CreateComment",
169
+ resourceType: "comment",
170
+ isMutation: true,
171
+ resourceId: recordingId,
172
+ },
173
+ () =>
174
+ this.client.POST("/recordings/{recordingId}/comments.json", {
175
+ params: {
176
+ path: { recordingId },
177
+ },
178
+ body: {
179
+ content: req.content,
180
+ },
181
+ })
182
+ );
183
+ return response;
184
+ }
185
+ }
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Documents 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 { ListResult } from "../../pagination.js";
10
+ import type { PaginationOptions } from "../../pagination.js";
11
+ import { Errors } from "../../errors.js";
12
+
13
+ // =============================================================================
14
+ // Types
15
+ // =============================================================================
16
+
17
+ /** Document entity from the Basecamp API. */
18
+ export type Document = components["schemas"]["Document"];
19
+
20
+ /**
21
+ * Request parameters for update.
22
+ */
23
+ export interface UpdateDocumentRequest {
24
+ /** Title */
25
+ title?: string;
26
+ /** Text content */
27
+ content?: string;
28
+ }
29
+
30
+ /**
31
+ * Options for list.
32
+ */
33
+ export interface ListDocumentOptions extends PaginationOptions {
34
+ }
35
+
36
+ /**
37
+ * Request parameters for create.
38
+ */
39
+ export interface CreateDocumentRequest {
40
+ /** Title */
41
+ title: string;
42
+ /** Text content */
43
+ content?: string;
44
+ /** Status */
45
+ status?: "active" | "drafted";
46
+ }
47
+
48
+
49
+ // =============================================================================
50
+ // Service
51
+ // =============================================================================
52
+
53
+ /**
54
+ * Service for Documents operations.
55
+ */
56
+ export class DocumentsService extends BaseService {
57
+
58
+ /**
59
+ * Get a single document by id
60
+ * @param documentId - The document ID
61
+ * @returns The Document
62
+ * @throws {BasecampError} If the resource is not found
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const result = await client.documents.get(123);
67
+ * ```
68
+ */
69
+ async get(documentId: number): Promise<Document> {
70
+ const response = await this.request(
71
+ {
72
+ service: "Documents",
73
+ operation: "GetDocument",
74
+ resourceType: "document",
75
+ isMutation: false,
76
+ resourceId: documentId,
77
+ },
78
+ () =>
79
+ this.client.GET("/documents/{documentId}", {
80
+ params: {
81
+ path: { documentId },
82
+ },
83
+ })
84
+ );
85
+ return response;
86
+ }
87
+
88
+ /**
89
+ * Update an existing document
90
+ * @param documentId - The document ID
91
+ * @param req - Document update parameters
92
+ * @returns The Document
93
+ * @throws {BasecampError} If the resource is not found or fields are invalid
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * const result = await client.documents.update(123, { });
98
+ * ```
99
+ */
100
+ async update(documentId: number, req: UpdateDocumentRequest): Promise<Document> {
101
+ const response = await this.request(
102
+ {
103
+ service: "Documents",
104
+ operation: "UpdateDocument",
105
+ resourceType: "document",
106
+ isMutation: true,
107
+ resourceId: documentId,
108
+ },
109
+ () =>
110
+ this.client.PUT("/documents/{documentId}", {
111
+ params: {
112
+ path: { documentId },
113
+ },
114
+ body: {
115
+ title: req.title,
116
+ content: req.content,
117
+ },
118
+ })
119
+ );
120
+ return response;
121
+ }
122
+
123
+ /**
124
+ * List documents in a vault
125
+ * @param vaultId - The vault ID
126
+ * @param options - Optional query parameters
127
+ * @returns All Document across all pages, with .meta.totalCount
128
+ *
129
+ * @example
130
+ * ```ts
131
+ * const result = await client.documents.list(123);
132
+ * ```
133
+ */
134
+ async list(vaultId: number, options?: ListDocumentOptions): Promise<ListResult<Document>> {
135
+ return this.requestPaginated(
136
+ {
137
+ service: "Documents",
138
+ operation: "ListDocuments",
139
+ resourceType: "document",
140
+ isMutation: false,
141
+ resourceId: vaultId,
142
+ },
143
+ () =>
144
+ this.client.GET("/vaults/{vaultId}/documents.json", {
145
+ params: {
146
+ path: { vaultId },
147
+ },
148
+ })
149
+ , options
150
+ );
151
+ }
152
+
153
+ /**
154
+ * Create a new document in a vault
155
+ * @param vaultId - The vault ID
156
+ * @param req - Document creation parameters
157
+ * @returns The Document
158
+ * @throws {BasecampError} If required fields are missing or invalid
159
+ *
160
+ * @example
161
+ * ```ts
162
+ * const result = await client.documents.create(123, { title: "example" });
163
+ * ```
164
+ */
165
+ async create(vaultId: number, req: CreateDocumentRequest): Promise<Document> {
166
+ if (!req.title) {
167
+ throw Errors.validation("Title is required");
168
+ }
169
+ const response = await this.request(
170
+ {
171
+ service: "Documents",
172
+ operation: "CreateDocument",
173
+ resourceType: "document",
174
+ isMutation: true,
175
+ resourceId: vaultId,
176
+ },
177
+ () =>
178
+ this.client.POST("/vaults/{vaultId}/documents.json", {
179
+ params: {
180
+ path: { vaultId },
181
+ },
182
+ body: {
183
+ title: req.title,
184
+ content: req.content,
185
+ status: req.status,
186
+ },
187
+ })
188
+ );
189
+ return response;
190
+ }
191
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Events 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 { ListResult } from "../../pagination.js";
10
+ import type { PaginationOptions } from "../../pagination.js";
11
+
12
+ // =============================================================================
13
+ // Types
14
+ // =============================================================================
15
+
16
+ /** Event entity from the Basecamp API. */
17
+ export type Event = components["schemas"]["Event"];
18
+
19
+ /**
20
+ * Options for list.
21
+ */
22
+ export interface ListEventOptions extends PaginationOptions {
23
+ }
24
+
25
+
26
+ // =============================================================================
27
+ // Service
28
+ // =============================================================================
29
+
30
+ /**
31
+ * Service for Events operations.
32
+ */
33
+ export class EventsService extends BaseService {
34
+
35
+ /**
36
+ * List all events for a recording
37
+ * @param recordingId - The recording ID
38
+ * @param options - Optional query parameters
39
+ * @returns All Event across all pages, with .meta.totalCount
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * const result = await client.events.list(123);
44
+ * ```
45
+ */
46
+ async list(recordingId: number, options?: ListEventOptions): Promise<ListResult<Event>> {
47
+ return this.requestPaginated(
48
+ {
49
+ service: "Events",
50
+ operation: "ListEvents",
51
+ resourceType: "event",
52
+ isMutation: false,
53
+ resourceId: recordingId,
54
+ },
55
+ () =>
56
+ this.client.GET("/recordings/{recordingId}/events.json", {
57
+ params: {
58
+ path: { recordingId },
59
+ },
60
+ })
61
+ , options
62
+ );
63
+ }
64
+ }