@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,122 @@
1
+ /**
2
+ * People service for the Basecamp API.
3
+ *
4
+ * @generated from OpenAPI spec - do not edit directly
5
+ */
6
+ import { BaseService } from "../../services/base.js";
7
+ import type { components } from "../schema.js";
8
+ import { ListResult } from "../../pagination.js";
9
+ import type { PaginationOptions } from "../../pagination.js";
10
+ /** Person entity from the Basecamp API. */
11
+ export type Person = components["schemas"]["Person"];
12
+ /**
13
+ * Options for listPingable.
14
+ */
15
+ export interface ListPingablePeopleOptions extends PaginationOptions {
16
+ }
17
+ /**
18
+ * Options for list.
19
+ */
20
+ export interface ListPeopleOptions extends PaginationOptions {
21
+ }
22
+ /**
23
+ * Options for listForProject.
24
+ */
25
+ export interface ListForProjectPeopleOptions extends PaginationOptions {
26
+ }
27
+ /**
28
+ * Request parameters for updateProjectAccess.
29
+ */
30
+ export interface UpdateProjectAccessPeopleRequest {
31
+ /** Grant */
32
+ grant?: number[];
33
+ /** Revoke */
34
+ revoke?: number[];
35
+ /** Create */
36
+ create?: components["schemas"]["CreatePersonRequest"][];
37
+ }
38
+ /**
39
+ * Service for People operations.
40
+ */
41
+ export declare class PeopleService extends BaseService {
42
+ /**
43
+ * List all account users who can be pinged
44
+ * @param options - Optional query parameters
45
+ * @returns All Person across all pages, with .meta.totalCount
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * const result = await client.people.listPingable();
50
+ * ```
51
+ */
52
+ listPingable(options?: ListPingablePeopleOptions): Promise<ListResult<Person>>;
53
+ /**
54
+ * Get the current authenticated user's profile
55
+ * @returns The Person
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * const result = await client.people.me();
60
+ * ```
61
+ */
62
+ me(): Promise<Person>;
63
+ /**
64
+ * List all people visible to the current user
65
+ * @param options - Optional query parameters
66
+ * @returns All Person across all pages, with .meta.totalCount
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * const result = await client.people.list();
71
+ * ```
72
+ */
73
+ list(options?: ListPeopleOptions): Promise<ListResult<Person>>;
74
+ /**
75
+ * Get a person by ID
76
+ * @param personId - The person ID
77
+ * @returns The Person
78
+ * @throws {BasecampError} If the resource is not found
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * const result = await client.people.get(123);
83
+ * ```
84
+ */
85
+ get(personId: number): Promise<Person>;
86
+ /**
87
+ * List all active people on a project
88
+ * @param projectId - The project ID
89
+ * @param options - Optional query parameters
90
+ * @returns All Person across all pages, with .meta.totalCount
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * const result = await client.people.listForProject(123);
95
+ * ```
96
+ */
97
+ listForProject(projectId: number, options?: ListForProjectPeopleOptions): Promise<ListResult<Person>>;
98
+ /**
99
+ * Update project access (grant/revoke/create people)
100
+ * @param projectId - The project ID
101
+ * @param req - Project_access update parameters
102
+ * @returns The project_access
103
+ * @throws {BasecampError} If the resource is not found or fields are invalid
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * const result = await client.people.updateProjectAccess(123, { });
108
+ * ```
109
+ */
110
+ updateProjectAccess(projectId: number, req: UpdateProjectAccessPeopleRequest): Promise<components["schemas"]["UpdateProjectAccessResponseContent"]>;
111
+ /**
112
+ * List people who can be assigned todos
113
+ * @returns Array of Person
114
+ *
115
+ * @example
116
+ * ```ts
117
+ * const result = await client.people.listAssignable();
118
+ * ```
119
+ */
120
+ listAssignable(): Promise<Person[]>;
121
+ }
122
+ //# sourceMappingURL=people.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../../src/generated/services/people.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAM7D,2CAA2C;AAC3C,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,iBAAiB;CACrE;AAED;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa;IACb,MAAM,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC;CACzD;AAOD;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAE5C;;;;;;;;;OASG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAepF;;;;;;;;OAQG;IACG,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;IAe3B;;;;;;;;;OASG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAepE;;;;;;;;;;OAUG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB5C;;;;;;;;;;OAUG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAmB3G;;;;;;;;;;;OAWG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,gCAAgC,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,oCAAoC,CAAC,CAAC;IAwBzJ;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAc1C"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * People service for the Basecamp API.
3
+ *
4
+ * @generated from OpenAPI spec - do not edit directly
5
+ */
6
+ import { BaseService } from "../../services/base.js";
7
+ // =============================================================================
8
+ // Service
9
+ // =============================================================================
10
+ /**
11
+ * Service for People operations.
12
+ */
13
+ export class PeopleService extends BaseService {
14
+ /**
15
+ * List all account users who can be pinged
16
+ * @param options - Optional query parameters
17
+ * @returns All Person across all pages, with .meta.totalCount
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const result = await client.people.listPingable();
22
+ * ```
23
+ */
24
+ async listPingable(options) {
25
+ return this.requestPaginated({
26
+ service: "People",
27
+ operation: "ListPingablePeople",
28
+ resourceType: "pingable_people",
29
+ isMutation: false,
30
+ }, () => this.client.GET("/circles/people.json", {}), options);
31
+ }
32
+ /**
33
+ * Get the current authenticated user's profile
34
+ * @returns The Person
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * const result = await client.people.me();
39
+ * ```
40
+ */
41
+ async me() {
42
+ const response = await this.request({
43
+ service: "People",
44
+ operation: "GetMyProfile",
45
+ resourceType: "my_profile",
46
+ isMutation: false,
47
+ }, () => this.client.GET("/my/profile.json", {}));
48
+ return response;
49
+ }
50
+ /**
51
+ * List all people visible to the current user
52
+ * @param options - Optional query parameters
53
+ * @returns All Person across all pages, with .meta.totalCount
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const result = await client.people.list();
58
+ * ```
59
+ */
60
+ async list(options) {
61
+ return this.requestPaginated({
62
+ service: "People",
63
+ operation: "ListPeople",
64
+ resourceType: "people",
65
+ isMutation: false,
66
+ }, () => this.client.GET("/people.json", {}), options);
67
+ }
68
+ /**
69
+ * Get a person by ID
70
+ * @param personId - The person ID
71
+ * @returns The Person
72
+ * @throws {BasecampError} If the resource is not found
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * const result = await client.people.get(123);
77
+ * ```
78
+ */
79
+ async get(personId) {
80
+ const response = await this.request({
81
+ service: "People",
82
+ operation: "GetPerson",
83
+ resourceType: "person",
84
+ isMutation: false,
85
+ resourceId: personId,
86
+ }, () => this.client.GET("/people/{personId}", {
87
+ params: {
88
+ path: { personId },
89
+ },
90
+ }));
91
+ return response;
92
+ }
93
+ /**
94
+ * List all active people on a project
95
+ * @param projectId - The project ID
96
+ * @param options - Optional query parameters
97
+ * @returns All Person across all pages, with .meta.totalCount
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * const result = await client.people.listForProject(123);
102
+ * ```
103
+ */
104
+ async listForProject(projectId, options) {
105
+ return this.requestPaginated({
106
+ service: "People",
107
+ operation: "ListProjectPeople",
108
+ resourceType: "project_people",
109
+ isMutation: false,
110
+ projectId,
111
+ }, () => this.client.GET("/projects/{projectId}/people.json", {
112
+ params: {
113
+ path: { projectId },
114
+ },
115
+ }), options);
116
+ }
117
+ /**
118
+ * Update project access (grant/revoke/create people)
119
+ * @param projectId - The project ID
120
+ * @param req - Project_access update parameters
121
+ * @returns The project_access
122
+ * @throws {BasecampError} If the resource is not found or fields are invalid
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * const result = await client.people.updateProjectAccess(123, { });
127
+ * ```
128
+ */
129
+ async updateProjectAccess(projectId, req) {
130
+ const response = await this.request({
131
+ service: "People",
132
+ operation: "UpdateProjectAccess",
133
+ resourceType: "project_access",
134
+ isMutation: true,
135
+ projectId,
136
+ }, () => this.client.PUT("/projects/{projectId}/people/users.json", {
137
+ params: {
138
+ path: { projectId },
139
+ },
140
+ body: {
141
+ grant: req.grant,
142
+ revoke: req.revoke,
143
+ create: req.create,
144
+ },
145
+ }));
146
+ return response;
147
+ }
148
+ /**
149
+ * List people who can be assigned todos
150
+ * @returns Array of Person
151
+ *
152
+ * @example
153
+ * ```ts
154
+ * const result = await client.people.listAssignable();
155
+ * ```
156
+ */
157
+ async listAssignable() {
158
+ const response = await this.request({
159
+ service: "People",
160
+ operation: "ListAssignablePeople",
161
+ resourceType: "assignable_people",
162
+ isMutation: false,
163
+ }, () => this.client.GET("/reports/todos/assigned.json", {}));
164
+ return response ?? [];
165
+ }
166
+ }
167
+ //# sourceMappingURL=people.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.js","sourceRoot":"","sources":["../../../src/generated/services/people.ts"],"names":[],"mappings":"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"}