@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,241 @@
1
+ /**
2
+ * Forwards 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
+ /** Forward entity from the Basecamp API. */
18
+ export type Forward = components["schemas"]["Forward"];
19
+ /** ForwardReply entity from the Basecamp API. */
20
+ export type ForwardReply = components["schemas"]["ForwardReply"];
21
+ /** Inbox entity from the Basecamp API. */
22
+ export type Inbox = components["schemas"]["Inbox"];
23
+
24
+ /**
25
+ * Options for listReplies.
26
+ */
27
+ export interface ListRepliesForwardOptions extends PaginationOptions {
28
+ }
29
+
30
+ /**
31
+ * Request parameters for createReply.
32
+ */
33
+ export interface CreateReplyForwardRequest {
34
+ /** Text content */
35
+ content: string;
36
+ }
37
+
38
+ /**
39
+ * Options for list.
40
+ */
41
+ export interface ListForwardOptions extends PaginationOptions {
42
+ }
43
+
44
+
45
+ // =============================================================================
46
+ // Service
47
+ // =============================================================================
48
+
49
+ /**
50
+ * Service for Forwards operations.
51
+ */
52
+ export class ForwardsService extends BaseService {
53
+
54
+ /**
55
+ * Get a forward by ID
56
+ * @param forwardId - The forward ID
57
+ * @returns The Forward
58
+ * @throws {BasecampError} If the resource is not found
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * const result = await client.forwards.get(123);
63
+ * ```
64
+ */
65
+ async get(forwardId: number): Promise<Forward> {
66
+ const response = await this.request(
67
+ {
68
+ service: "Forwards",
69
+ operation: "GetForward",
70
+ resourceType: "forward",
71
+ isMutation: false,
72
+ resourceId: forwardId,
73
+ },
74
+ () =>
75
+ this.client.GET("/inbox_forwards/{forwardId}", {
76
+ params: {
77
+ path: { forwardId },
78
+ },
79
+ })
80
+ );
81
+ return response;
82
+ }
83
+
84
+ /**
85
+ * List all replies to a forward
86
+ * @param forwardId - The forward ID
87
+ * @param options - Optional query parameters
88
+ * @returns All ForwardReply across all pages, with .meta.totalCount
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * const result = await client.forwards.listReplies(123);
93
+ * ```
94
+ */
95
+ async listReplies(forwardId: number, options?: ListRepliesForwardOptions): Promise<ListResult<ForwardReply>> {
96
+ return this.requestPaginated(
97
+ {
98
+ service: "Forwards",
99
+ operation: "ListForwardReplies",
100
+ resourceType: "forward_replie",
101
+ isMutation: false,
102
+ resourceId: forwardId,
103
+ },
104
+ () =>
105
+ this.client.GET("/inbox_forwards/{forwardId}/replies.json", {
106
+ params: {
107
+ path: { forwardId },
108
+ },
109
+ })
110
+ , options
111
+ );
112
+ }
113
+
114
+ /**
115
+ * Create a reply to a forward
116
+ * @param forwardId - The forward ID
117
+ * @param req - Forward_reply creation parameters
118
+ * @returns The ForwardReply
119
+ * @throws {BasecampError} If required fields are missing or invalid
120
+ *
121
+ * @example
122
+ * ```ts
123
+ * const result = await client.forwards.createReply(123, { content: "Hello world" });
124
+ * ```
125
+ */
126
+ async createReply(forwardId: number, req: CreateReplyForwardRequest): Promise<ForwardReply> {
127
+ if (!req.content) {
128
+ throw Errors.validation("Content is required");
129
+ }
130
+ const response = await this.request(
131
+ {
132
+ service: "Forwards",
133
+ operation: "CreateForwardReply",
134
+ resourceType: "forward_reply",
135
+ isMutation: true,
136
+ resourceId: forwardId,
137
+ },
138
+ () =>
139
+ this.client.POST("/inbox_forwards/{forwardId}/replies.json", {
140
+ params: {
141
+ path: { forwardId },
142
+ },
143
+ body: {
144
+ content: req.content,
145
+ },
146
+ })
147
+ );
148
+ return response;
149
+ }
150
+
151
+ /**
152
+ * Get a forward reply by ID
153
+ * @param forwardId - The forward ID
154
+ * @param replyId - The reply ID
155
+ * @returns The ForwardReply
156
+ * @throws {BasecampError} If the resource is not found
157
+ *
158
+ * @example
159
+ * ```ts
160
+ * const result = await client.forwards.getReply(123, 123);
161
+ * ```
162
+ */
163
+ async getReply(forwardId: number, replyId: number): Promise<ForwardReply> {
164
+ const response = await this.request(
165
+ {
166
+ service: "Forwards",
167
+ operation: "GetForwardReply",
168
+ resourceType: "forward_reply",
169
+ isMutation: false,
170
+ resourceId: forwardId,
171
+ },
172
+ () =>
173
+ this.client.GET("/inbox_forwards/{forwardId}/replies/{replyId}", {
174
+ params: {
175
+ path: { forwardId, replyId },
176
+ },
177
+ })
178
+ );
179
+ return response;
180
+ }
181
+
182
+ /**
183
+ * Get an inbox by ID
184
+ * @param inboxId - The inbox ID
185
+ * @returns The Inbox
186
+ * @throws {BasecampError} If the resource is not found
187
+ *
188
+ * @example
189
+ * ```ts
190
+ * const result = await client.forwards.getInbox(123);
191
+ * ```
192
+ */
193
+ async getInbox(inboxId: number): Promise<Inbox> {
194
+ const response = await this.request(
195
+ {
196
+ service: "Forwards",
197
+ operation: "GetInbox",
198
+ resourceType: "inbox",
199
+ isMutation: false,
200
+ resourceId: inboxId,
201
+ },
202
+ () =>
203
+ this.client.GET("/inboxes/{inboxId}", {
204
+ params: {
205
+ path: { inboxId },
206
+ },
207
+ })
208
+ );
209
+ return response;
210
+ }
211
+
212
+ /**
213
+ * List all forwards in an inbox
214
+ * @param inboxId - The inbox ID
215
+ * @param options - Optional query parameters
216
+ * @returns All Forward across all pages, with .meta.totalCount
217
+ *
218
+ * @example
219
+ * ```ts
220
+ * const result = await client.forwards.list(123);
221
+ * ```
222
+ */
223
+ async list(inboxId: number, options?: ListForwardOptions): Promise<ListResult<Forward>> {
224
+ return this.requestPaginated(
225
+ {
226
+ service: "Forwards",
227
+ operation: "ListForwards",
228
+ resourceType: "forward",
229
+ isMutation: false,
230
+ resourceId: inboxId,
231
+ },
232
+ () =>
233
+ this.client.GET("/inboxes/{inboxId}/forwards.json", {
234
+ params: {
235
+ path: { inboxId },
236
+ },
237
+ })
238
+ , options
239
+ );
240
+ }
241
+ }
@@ -0,0 +1,38 @@
1
+ export { AttachmentsService } from "./attachments.js";
2
+ export { BoostsService } from "./boosts.js";
3
+ export { WebhooksService } from "./webhooks.js";
4
+ export { CardsService } from "./cards.js";
5
+ export { CardStepsService } from "./card-steps.js";
6
+ export { CardColumnsService } from "./card-columns.js";
7
+ export { CardTablesService } from "./card-tables.js";
8
+ export { MessageTypesService } from "./message-types.js";
9
+ export { CampfiresService } from "./campfires.js";
10
+ export { PeopleService } from "./people.js";
11
+ export { ClientApprovalsService } from "./client-approvals.js";
12
+ export { ClientCorrespondencesService } from "./client-correspondences.js";
13
+ export { ClientRepliesService } from "./client-replies.js";
14
+ export { CommentsService } from "./comments.js";
15
+ export { ToolsService } from "./tools.js";
16
+ export { DocumentsService } from "./documents.js";
17
+ export { ForwardsService } from "./forwards.js";
18
+ export { LineupService } from "./lineup.js";
19
+ export { MessageBoardsService } from "./message-boards.js";
20
+ export { MessagesService } from "./messages.js";
21
+ export { CheckinsService } from "./checkins.js";
22
+ export { ProjectsService } from "./projects.js";
23
+ export { RecordingsService } from "./recordings.js";
24
+ export { TimelineService } from "./timeline.js";
25
+ export { TimesheetsService } from "./timesheets.js";
26
+ export { ClientVisibilityService } from "./client-visibility.js";
27
+ export { EventsService } from "./events.js";
28
+ export { SubscriptionsService } from "./subscriptions.js";
29
+ export { ReportsService } from "./reports.js";
30
+ export { SchedulesService } from "./schedules.js";
31
+ export { SearchService } from "./search.js";
32
+ export { TemplatesService } from "./templates.js";
33
+ export { TodolistGroupsService } from "./todolist-groups.js";
34
+ export { TodolistsService } from "./todolists.js";
35
+ export { TodosService } from "./todos.js";
36
+ export { TodosetsService } from "./todosets.js";
37
+ export { UploadsService } from "./uploads.js";
38
+ export { VaultsService } from "./vaults.js";
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Lineup 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
+
16
+ /**
17
+ * Request parameters for create.
18
+ */
19
+ export interface CreateLineupRequest {
20
+ /** Display name */
21
+ name: string;
22
+ /** Date */
23
+ date: string;
24
+ }
25
+
26
+ /**
27
+ * Request parameters for update.
28
+ */
29
+ export interface UpdateLineupRequest {
30
+ /** Display name */
31
+ name?: string;
32
+ /** Date */
33
+ date?: string;
34
+ }
35
+
36
+
37
+ // =============================================================================
38
+ // Service
39
+ // =============================================================================
40
+
41
+ /**
42
+ * Service for Lineup operations.
43
+ */
44
+ export class LineupService extends BaseService {
45
+
46
+ /**
47
+ * Create a new lineup marker
48
+ * @param req - Lineup_marker creation parameters
49
+ * @returns void
50
+ * @throws {BasecampError} If required fields are missing or invalid
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * await client.lineup.create({ name: "My example", date: "example" });
55
+ * ```
56
+ */
57
+ async create(req: CreateLineupRequest): Promise<void> {
58
+ if (!req.name) {
59
+ throw Errors.validation("Name is required");
60
+ }
61
+ if (!req.date) {
62
+ throw Errors.validation("Date is required");
63
+ }
64
+ await this.request(
65
+ {
66
+ service: "Lineup",
67
+ operation: "CreateLineupMarker",
68
+ resourceType: "lineup_marker",
69
+ isMutation: true,
70
+ },
71
+ () =>
72
+ this.client.POST("/lineup/markers.json", {
73
+ body: {
74
+ name: req.name,
75
+ date: req.date,
76
+ },
77
+ })
78
+ );
79
+ }
80
+
81
+ /**
82
+ * Update an existing lineup marker
83
+ * @param markerId - The marker ID
84
+ * @param req - Lineup_marker update parameters
85
+ * @returns void
86
+ * @throws {BasecampError} If the resource is not found or fields are invalid
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * await client.lineup.update(123, { });
91
+ * ```
92
+ */
93
+ async update(markerId: number, req: UpdateLineupRequest): Promise<void> {
94
+ await this.request(
95
+ {
96
+ service: "Lineup",
97
+ operation: "UpdateLineupMarker",
98
+ resourceType: "lineup_marker",
99
+ isMutation: true,
100
+ resourceId: markerId,
101
+ },
102
+ () =>
103
+ this.client.PUT("/lineup/markers/{markerId}", {
104
+ params: {
105
+ path: { markerId },
106
+ },
107
+ body: {
108
+ name: req.name,
109
+ date: req.date,
110
+ },
111
+ })
112
+ );
113
+ }
114
+
115
+ /**
116
+ * Delete a lineup marker
117
+ * @param markerId - The marker ID
118
+ * @returns void
119
+ * @throws {BasecampError} If the request fails
120
+ *
121
+ * @example
122
+ * ```ts
123
+ * await client.lineup.delete(123);
124
+ * ```
125
+ */
126
+ async delete(markerId: number): Promise<void> {
127
+ await this.request(
128
+ {
129
+ service: "Lineup",
130
+ operation: "DeleteLineupMarker",
131
+ resourceType: "lineup_marker",
132
+ isMutation: true,
133
+ resourceId: markerId,
134
+ },
135
+ () =>
136
+ this.client.DELETE("/lineup/markers/{markerId}", {
137
+ params: {
138
+ path: { markerId },
139
+ },
140
+ })
141
+ );
142
+ }
143
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * MessageBoards 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
+ /** MessageBoard entity from the Basecamp API. */
15
+ export type MessageBoard = components["schemas"]["MessageBoard"];
16
+
17
+ // =============================================================================
18
+ // Service
19
+ // =============================================================================
20
+
21
+ /**
22
+ * Service for MessageBoards operations.
23
+ */
24
+ export class MessageBoardsService extends BaseService {
25
+
26
+ /**
27
+ * Get a message board
28
+ * @param boardId - The board ID
29
+ * @returns The MessageBoard
30
+ * @throws {BasecampError} If the resource is not found
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * const result = await client.messageBoards.get(123);
35
+ * ```
36
+ */
37
+ async get(boardId: number): Promise<MessageBoard> {
38
+ const response = await this.request(
39
+ {
40
+ service: "MessageBoards",
41
+ operation: "GetMessageBoard",
42
+ resourceType: "message_board",
43
+ isMutation: false,
44
+ resourceId: boardId,
45
+ },
46
+ () =>
47
+ this.client.GET("/message_boards/{boardId}", {
48
+ params: {
49
+ path: { boardId },
50
+ },
51
+ })
52
+ );
53
+ return response;
54
+ }
55
+ }
@@ -0,0 +1,210 @@
1
+ /**
2
+ * MessageTypes 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
+ /** MessageType entity from the Basecamp API. */
18
+ export type MessageType = components["schemas"]["MessageType"];
19
+
20
+ /**
21
+ * Options for list.
22
+ */
23
+ export interface ListMessageTypeOptions extends PaginationOptions {
24
+ }
25
+
26
+ /**
27
+ * Request parameters for create.
28
+ */
29
+ export interface CreateMessageTypeRequest {
30
+ /** Display name */
31
+ name: string;
32
+ /** Icon identifier */
33
+ icon: string;
34
+ }
35
+
36
+ /**
37
+ * Request parameters for update.
38
+ */
39
+ export interface UpdateMessageTypeRequest {
40
+ /** Display name */
41
+ name?: string;
42
+ /** Icon identifier */
43
+ icon?: string;
44
+ }
45
+
46
+
47
+ // =============================================================================
48
+ // Service
49
+ // =============================================================================
50
+
51
+ /**
52
+ * Service for MessageTypes operations.
53
+ */
54
+ export class MessageTypesService extends BaseService {
55
+
56
+ /**
57
+ * List message types in a project
58
+ * @param options - Optional query parameters
59
+ * @returns All MessageType across all pages, with .meta.totalCount
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * const result = await client.messageTypes.list();
64
+ * ```
65
+ */
66
+ async list(options?: ListMessageTypeOptions): Promise<ListResult<MessageType>> {
67
+ return this.requestPaginated(
68
+ {
69
+ service: "MessageTypes",
70
+ operation: "ListMessageTypes",
71
+ resourceType: "message_type",
72
+ isMutation: false,
73
+ },
74
+ () =>
75
+ this.client.GET("/categories.json", {
76
+ })
77
+ , options
78
+ );
79
+ }
80
+
81
+ /**
82
+ * Create a new message type in a project
83
+ * @param req - Message_type creation parameters
84
+ * @returns The MessageType
85
+ * @throws {BasecampError} If required fields are missing or invalid
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * const result = await client.messageTypes.create({ name: "My example", icon: "example" });
90
+ * ```
91
+ */
92
+ async create(req: CreateMessageTypeRequest): Promise<MessageType> {
93
+ if (!req.name) {
94
+ throw Errors.validation("Name is required");
95
+ }
96
+ if (!req.icon) {
97
+ throw Errors.validation("Icon is required");
98
+ }
99
+ const response = await this.request(
100
+ {
101
+ service: "MessageTypes",
102
+ operation: "CreateMessageType",
103
+ resourceType: "message_type",
104
+ isMutation: true,
105
+ },
106
+ () =>
107
+ this.client.POST("/categories.json", {
108
+ body: {
109
+ name: req.name,
110
+ icon: req.icon,
111
+ },
112
+ })
113
+ );
114
+ return response;
115
+ }
116
+
117
+ /**
118
+ * Get a single message type by id
119
+ * @param typeId - The type ID
120
+ * @returns The MessageType
121
+ * @throws {BasecampError} If the resource is not found
122
+ *
123
+ * @example
124
+ * ```ts
125
+ * const result = await client.messageTypes.get(123);
126
+ * ```
127
+ */
128
+ async get(typeId: number): Promise<MessageType> {
129
+ const response = await this.request(
130
+ {
131
+ service: "MessageTypes",
132
+ operation: "GetMessageType",
133
+ resourceType: "message_type",
134
+ isMutation: false,
135
+ resourceId: typeId,
136
+ },
137
+ () =>
138
+ this.client.GET("/categories/{typeId}", {
139
+ params: {
140
+ path: { typeId },
141
+ },
142
+ })
143
+ );
144
+ return response;
145
+ }
146
+
147
+ /**
148
+ * Update an existing message type
149
+ * @param typeId - The type ID
150
+ * @param req - Message_type update parameters
151
+ * @returns The MessageType
152
+ * @throws {BasecampError} If the resource is not found or fields are invalid
153
+ *
154
+ * @example
155
+ * ```ts
156
+ * const result = await client.messageTypes.update(123, { });
157
+ * ```
158
+ */
159
+ async update(typeId: number, req: UpdateMessageTypeRequest): Promise<MessageType> {
160
+ const response = await this.request(
161
+ {
162
+ service: "MessageTypes",
163
+ operation: "UpdateMessageType",
164
+ resourceType: "message_type",
165
+ isMutation: true,
166
+ resourceId: typeId,
167
+ },
168
+ () =>
169
+ this.client.PUT("/categories/{typeId}", {
170
+ params: {
171
+ path: { typeId },
172
+ },
173
+ body: {
174
+ name: req.name,
175
+ icon: req.icon,
176
+ },
177
+ })
178
+ );
179
+ return response;
180
+ }
181
+
182
+ /**
183
+ * Delete a message type
184
+ * @param typeId - The type ID
185
+ * @returns void
186
+ * @throws {BasecampError} If the request fails
187
+ *
188
+ * @example
189
+ * ```ts
190
+ * await client.messageTypes.delete(123);
191
+ * ```
192
+ */
193
+ async delete(typeId: number): Promise<void> {
194
+ await this.request(
195
+ {
196
+ service: "MessageTypes",
197
+ operation: "DeleteMessageType",
198
+ resourceType: "message_type",
199
+ isMutation: true,
200
+ resourceId: typeId,
201
+ },
202
+ () =>
203
+ this.client.DELETE("/categories/{typeId}", {
204
+ params: {
205
+ path: { typeId },
206
+ },
207
+ })
208
+ );
209
+ }
210
+ }