@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,258 @@
1
+ /**
2
+ * Messages 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
+ /** Message entity from the Basecamp API. */
18
+ export type Message = components["schemas"]["Message"];
19
+
20
+ /**
21
+ * Options for list.
22
+ */
23
+ export interface ListMessageOptions extends PaginationOptions {
24
+ }
25
+
26
+ /**
27
+ * Request parameters for create.
28
+ */
29
+ export interface CreateMessageRequest {
30
+ /** Subject line */
31
+ subject: string;
32
+ /** Text content */
33
+ content?: string;
34
+ /** Status */
35
+ status?: "active" | "drafted";
36
+ /** Category id */
37
+ categoryId?: number;
38
+ }
39
+
40
+ /**
41
+ * Request parameters for update.
42
+ */
43
+ export interface UpdateMessageRequest {
44
+ /** Subject line */
45
+ subject?: string;
46
+ /** Text content */
47
+ content?: string;
48
+ /** Status */
49
+ status?: "active" | "drafted";
50
+ /** Category id */
51
+ categoryId?: number;
52
+ }
53
+
54
+
55
+ // =============================================================================
56
+ // Service
57
+ // =============================================================================
58
+
59
+ /**
60
+ * Service for Messages operations.
61
+ */
62
+ export class MessagesService extends BaseService {
63
+
64
+ /**
65
+ * List messages on a message board
66
+ * @param boardId - The board ID
67
+ * @param options - Optional query parameters
68
+ * @returns All Message across all pages, with .meta.totalCount
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const result = await client.messages.list(123);
73
+ * ```
74
+ */
75
+ async list(boardId: number, options?: ListMessageOptions): Promise<ListResult<Message>> {
76
+ return this.requestPaginated(
77
+ {
78
+ service: "Messages",
79
+ operation: "ListMessages",
80
+ resourceType: "message",
81
+ isMutation: false,
82
+ resourceId: boardId,
83
+ },
84
+ () =>
85
+ this.client.GET("/message_boards/{boardId}/messages.json", {
86
+ params: {
87
+ path: { boardId },
88
+ },
89
+ })
90
+ , options
91
+ );
92
+ }
93
+
94
+ /**
95
+ * Create a new message on a message board
96
+ * @param boardId - The board ID
97
+ * @param req - Message creation parameters
98
+ * @returns The Message
99
+ * @throws {BasecampError} If required fields are missing or invalid
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * const result = await client.messages.create(123, { subject: "example" });
104
+ * ```
105
+ */
106
+ async create(boardId: number, req: CreateMessageRequest): Promise<Message> {
107
+ if (!req.subject) {
108
+ throw Errors.validation("Subject is required");
109
+ }
110
+ const response = await this.request(
111
+ {
112
+ service: "Messages",
113
+ operation: "CreateMessage",
114
+ resourceType: "message",
115
+ isMutation: true,
116
+ resourceId: boardId,
117
+ },
118
+ () =>
119
+ this.client.POST("/message_boards/{boardId}/messages.json", {
120
+ params: {
121
+ path: { boardId },
122
+ },
123
+ body: {
124
+ subject: req.subject,
125
+ content: req.content,
126
+ status: req.status,
127
+ category_id: req.categoryId,
128
+ },
129
+ })
130
+ );
131
+ return response;
132
+ }
133
+
134
+ /**
135
+ * Get a single message by id
136
+ * @param messageId - The message ID
137
+ * @returns The Message
138
+ * @throws {BasecampError} If the resource is not found
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * const result = await client.messages.get(123);
143
+ * ```
144
+ */
145
+ async get(messageId: number): Promise<Message> {
146
+ const response = await this.request(
147
+ {
148
+ service: "Messages",
149
+ operation: "GetMessage",
150
+ resourceType: "message",
151
+ isMutation: false,
152
+ resourceId: messageId,
153
+ },
154
+ () =>
155
+ this.client.GET("/messages/{messageId}", {
156
+ params: {
157
+ path: { messageId },
158
+ },
159
+ })
160
+ );
161
+ return response;
162
+ }
163
+
164
+ /**
165
+ * Update an existing message
166
+ * @param messageId - The message ID
167
+ * @param req - Message update parameters
168
+ * @returns The Message
169
+ * @throws {BasecampError} If the resource is not found or fields are invalid
170
+ *
171
+ * @example
172
+ * ```ts
173
+ * const result = await client.messages.update(123, { });
174
+ * ```
175
+ */
176
+ async update(messageId: number, req: UpdateMessageRequest): Promise<Message> {
177
+ const response = await this.request(
178
+ {
179
+ service: "Messages",
180
+ operation: "UpdateMessage",
181
+ resourceType: "message",
182
+ isMutation: true,
183
+ resourceId: messageId,
184
+ },
185
+ () =>
186
+ this.client.PUT("/messages/{messageId}", {
187
+ params: {
188
+ path: { messageId },
189
+ },
190
+ body: {
191
+ subject: req.subject,
192
+ content: req.content,
193
+ status: req.status,
194
+ category_id: req.categoryId,
195
+ },
196
+ })
197
+ );
198
+ return response;
199
+ }
200
+
201
+ /**
202
+ * Pin a message to the top of the message board
203
+ * @param messageId - The message ID
204
+ * @returns void
205
+ * @throws {BasecampError} If the request fails
206
+ *
207
+ * @example
208
+ * ```ts
209
+ * await client.messages.pin(123);
210
+ * ```
211
+ */
212
+ async pin(messageId: number): Promise<void> {
213
+ await this.request(
214
+ {
215
+ service: "Messages",
216
+ operation: "PinMessage",
217
+ resourceType: "message",
218
+ isMutation: true,
219
+ resourceId: messageId,
220
+ },
221
+ () =>
222
+ this.client.POST("/recordings/{messageId}/pin.json", {
223
+ params: {
224
+ path: { messageId },
225
+ },
226
+ })
227
+ );
228
+ }
229
+
230
+ /**
231
+ * Unpin a message from the message board
232
+ * @param messageId - The message ID
233
+ * @returns void
234
+ * @throws {BasecampError} If the request fails
235
+ *
236
+ * @example
237
+ * ```ts
238
+ * await client.messages.unpin(123);
239
+ * ```
240
+ */
241
+ async unpin(messageId: number): Promise<void> {
242
+ await this.request(
243
+ {
244
+ service: "Messages",
245
+ operation: "UnpinMessage",
246
+ resourceType: "message",
247
+ isMutation: true,
248
+ resourceId: messageId,
249
+ },
250
+ () =>
251
+ this.client.DELETE("/recordings/{messageId}/pin.json", {
252
+ params: {
253
+ path: { messageId },
254
+ },
255
+ })
256
+ );
257
+ }
258
+ }
@@ -0,0 +1,252 @@
1
+ /**
2
+ * People 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
+ /** Person entity from the Basecamp API. */
17
+ export type Person = components["schemas"]["Person"];
18
+
19
+ /**
20
+ * Options for listPingable.
21
+ */
22
+ export interface ListPingablePeopleOptions extends PaginationOptions {
23
+ }
24
+
25
+ /**
26
+ * Options for list.
27
+ */
28
+ export interface ListPeopleOptions extends PaginationOptions {
29
+ }
30
+
31
+ /**
32
+ * Options for listForProject.
33
+ */
34
+ export interface ListForProjectPeopleOptions extends PaginationOptions {
35
+ }
36
+
37
+ /**
38
+ * Request parameters for updateProjectAccess.
39
+ */
40
+ export interface UpdateProjectAccessPeopleRequest {
41
+ /** Grant */
42
+ grant?: number[];
43
+ /** Revoke */
44
+ revoke?: number[];
45
+ /** Create */
46
+ create?: components["schemas"]["CreatePersonRequest"][];
47
+ }
48
+
49
+
50
+ // =============================================================================
51
+ // Service
52
+ // =============================================================================
53
+
54
+ /**
55
+ * Service for People operations.
56
+ */
57
+ export class PeopleService extends BaseService {
58
+
59
+ /**
60
+ * List all account users who can be pinged
61
+ * @param options - Optional query parameters
62
+ * @returns All Person across all pages, with .meta.totalCount
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const result = await client.people.listPingable();
67
+ * ```
68
+ */
69
+ async listPingable(options?: ListPingablePeopleOptions): Promise<ListResult<Person>> {
70
+ return this.requestPaginated(
71
+ {
72
+ service: "People",
73
+ operation: "ListPingablePeople",
74
+ resourceType: "pingable_people",
75
+ isMutation: false,
76
+ },
77
+ () =>
78
+ this.client.GET("/circles/people.json", {
79
+ })
80
+ , options
81
+ );
82
+ }
83
+
84
+ /**
85
+ * Get the current authenticated user's profile
86
+ * @returns The Person
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * const result = await client.people.me();
91
+ * ```
92
+ */
93
+ async me(): Promise<Person> {
94
+ const response = await this.request(
95
+ {
96
+ service: "People",
97
+ operation: "GetMyProfile",
98
+ resourceType: "my_profile",
99
+ isMutation: false,
100
+ },
101
+ () =>
102
+ this.client.GET("/my/profile.json", {
103
+ })
104
+ );
105
+ return response;
106
+ }
107
+
108
+ /**
109
+ * List all people visible to the current user
110
+ * @param options - Optional query parameters
111
+ * @returns All Person across all pages, with .meta.totalCount
112
+ *
113
+ * @example
114
+ * ```ts
115
+ * const result = await client.people.list();
116
+ * ```
117
+ */
118
+ async list(options?: ListPeopleOptions): Promise<ListResult<Person>> {
119
+ return this.requestPaginated(
120
+ {
121
+ service: "People",
122
+ operation: "ListPeople",
123
+ resourceType: "people",
124
+ isMutation: false,
125
+ },
126
+ () =>
127
+ this.client.GET("/people.json", {
128
+ })
129
+ , options
130
+ );
131
+ }
132
+
133
+ /**
134
+ * Get a person by ID
135
+ * @param personId - The person ID
136
+ * @returns The Person
137
+ * @throws {BasecampError} If the resource is not found
138
+ *
139
+ * @example
140
+ * ```ts
141
+ * const result = await client.people.get(123);
142
+ * ```
143
+ */
144
+ async get(personId: number): Promise<Person> {
145
+ const response = await this.request(
146
+ {
147
+ service: "People",
148
+ operation: "GetPerson",
149
+ resourceType: "person",
150
+ isMutation: false,
151
+ resourceId: personId,
152
+ },
153
+ () =>
154
+ this.client.GET("/people/{personId}", {
155
+ params: {
156
+ path: { personId },
157
+ },
158
+ })
159
+ );
160
+ return response;
161
+ }
162
+
163
+ /**
164
+ * List all active people on a project
165
+ * @param projectId - The project ID
166
+ * @param options - Optional query parameters
167
+ * @returns All Person across all pages, with .meta.totalCount
168
+ *
169
+ * @example
170
+ * ```ts
171
+ * const result = await client.people.listForProject(123);
172
+ * ```
173
+ */
174
+ async listForProject(projectId: number, options?: ListForProjectPeopleOptions): Promise<ListResult<Person>> {
175
+ return this.requestPaginated(
176
+ {
177
+ service: "People",
178
+ operation: "ListProjectPeople",
179
+ resourceType: "project_people",
180
+ isMutation: false,
181
+ projectId,
182
+ },
183
+ () =>
184
+ this.client.GET("/projects/{projectId}/people.json", {
185
+ params: {
186
+ path: { projectId },
187
+ },
188
+ })
189
+ , options
190
+ );
191
+ }
192
+
193
+ /**
194
+ * Update project access (grant/revoke/create people)
195
+ * @param projectId - The project ID
196
+ * @param req - Project_access update parameters
197
+ * @returns The project_access
198
+ * @throws {BasecampError} If the resource is not found or fields are invalid
199
+ *
200
+ * @example
201
+ * ```ts
202
+ * const result = await client.people.updateProjectAccess(123, { });
203
+ * ```
204
+ */
205
+ async updateProjectAccess(projectId: number, req: UpdateProjectAccessPeopleRequest): Promise<components["schemas"]["UpdateProjectAccessResponseContent"]> {
206
+ const response = await this.request(
207
+ {
208
+ service: "People",
209
+ operation: "UpdateProjectAccess",
210
+ resourceType: "project_access",
211
+ isMutation: true,
212
+ projectId,
213
+ },
214
+ () =>
215
+ this.client.PUT("/projects/{projectId}/people/users.json", {
216
+ params: {
217
+ path: { projectId },
218
+ },
219
+ body: {
220
+ grant: req.grant,
221
+ revoke: req.revoke,
222
+ create: req.create,
223
+ },
224
+ })
225
+ );
226
+ return response;
227
+ }
228
+
229
+ /**
230
+ * List people who can be assigned todos
231
+ * @returns Array of Person
232
+ *
233
+ * @example
234
+ * ```ts
235
+ * const result = await client.people.listAssignable();
236
+ * ```
237
+ */
238
+ async listAssignable(): Promise<Person[]> {
239
+ const response = await this.request(
240
+ {
241
+ service: "People",
242
+ operation: "ListAssignablePeople",
243
+ resourceType: "assignable_people",
244
+ isMutation: false,
245
+ },
246
+ () =>
247
+ this.client.GET("/reports/todos/assigned.json", {
248
+ })
249
+ );
250
+ return response ?? [];
251
+ }
252
+ }