@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,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
+ }
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Projects 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
+ /** Project entity from the Basecamp API. */
11
+ export type Project = components["schemas"]["Project"];
12
+ /**
13
+ * Options for list.
14
+ */
15
+ export interface ListProjectOptions extends PaginationOptions {
16
+ /** Filter by status */
17
+ status?: "active" | "archived" | "trashed";
18
+ }
19
+ /**
20
+ * Request parameters for create.
21
+ */
22
+ export interface CreateProjectRequest {
23
+ /** Display name */
24
+ name: string;
25
+ /** Rich text description (HTML) */
26
+ description?: string;
27
+ }
28
+ /**
29
+ * Request parameters for update.
30
+ */
31
+ export interface UpdateProjectRequest {
32
+ /** Display name */
33
+ name: string;
34
+ /** Rich text description (HTML) */
35
+ description?: string;
36
+ /** Admissions */
37
+ admissions?: "invite" | "employee" | "team";
38
+ /** Schedule date range settings */
39
+ scheduleAttributes?: components["schemas"]["ScheduleAttributes"];
40
+ }
41
+ /**
42
+ * Service for Projects operations.
43
+ */
44
+ export declare class ProjectsService extends BaseService {
45
+ /**
46
+ * List projects (active by default; optionally archived/trashed)
47
+ * @param options - Optional query parameters
48
+ * @returns All Project across all pages, with .meta.totalCount
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * const result = await client.projects.list();
53
+ *
54
+ * // With options
55
+ * const filtered = await client.projects.list({ status: "active" });
56
+ * ```
57
+ */
58
+ list(options?: ListProjectOptions): Promise<ListResult<Project>>;
59
+ /**
60
+ * Create a new project
61
+ * @param req - Project creation parameters
62
+ * @returns The Project
63
+ * @throws {BasecampError} If required fields are missing or invalid
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * const result = await client.projects.create({ name: "My example" });
68
+ * ```
69
+ */
70
+ create(req: CreateProjectRequest): Promise<Project>;
71
+ /**
72
+ * Get a single project by id
73
+ * @param projectId - The project ID
74
+ * @returns The Project
75
+ * @throws {BasecampError} If the resource is not found
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * const result = await client.projects.get(123);
80
+ * ```
81
+ */
82
+ get(projectId: number): Promise<Project>;
83
+ /**
84
+ * Update an existing project
85
+ * @param projectId - The project ID
86
+ * @param req - Project update parameters
87
+ * @returns The Project
88
+ * @throws {BasecampError} If the resource is not found or fields are invalid
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * const result = await client.projects.update(123, { name: "My example" });
93
+ * ```
94
+ */
95
+ update(projectId: number, req: UpdateProjectRequest): Promise<Project>;
96
+ /**
97
+ * Trash a project. Trashed items can be recovered.
98
+ * @param projectId - The project ID
99
+ * @returns void
100
+ * @throws {BasecampError} If the request fails
101
+ *
102
+ * @example
103
+ * ```ts
104
+ * await client.projects.trash(123);
105
+ * ```
106
+ */
107
+ trash(projectId: number): Promise<void>;
108
+ }
109
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/generated/services/projects.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;AAO7D,4CAA4C;AAC5C,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,uBAAuB;IACvB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB;IACjB,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IAC5C,mCAAmC;IACnC,kBAAkB,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAC;CAClE;AAOD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAE9C;;;;;;;;;;;;OAYG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAkBtE;;;;;;;;;;OAUG;IACG,MAAM,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBzD;;;;;;;;;;OAUG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB9C;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IA4B5E;;;;;;;;;;OAUG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiB9C"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Projects service for the Basecamp API.
3
+ *
4
+ * @generated from OpenAPI spec - do not edit directly
5
+ */
6
+ import { BaseService } from "../../services/base.js";
7
+ import { Errors } from "../../errors.js";
8
+ // =============================================================================
9
+ // Service
10
+ // =============================================================================
11
+ /**
12
+ * Service for Projects operations.
13
+ */
14
+ export class ProjectsService extends BaseService {
15
+ /**
16
+ * List projects (active by default; optionally archived/trashed)
17
+ * @param options - Optional query parameters
18
+ * @returns All Project across all pages, with .meta.totalCount
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const result = await client.projects.list();
23
+ *
24
+ * // With options
25
+ * const filtered = await client.projects.list({ status: "active" });
26
+ * ```
27
+ */
28
+ async list(options) {
29
+ return this.requestPaginated({
30
+ service: "Projects",
31
+ operation: "ListProjects",
32
+ resourceType: "project",
33
+ isMutation: false,
34
+ }, () => this.client.GET("/projects.json", {
35
+ params: {
36
+ query: { status: options?.status },
37
+ },
38
+ }), options);
39
+ }
40
+ /**
41
+ * Create a new project
42
+ * @param req - Project creation parameters
43
+ * @returns The Project
44
+ * @throws {BasecampError} If required fields are missing or invalid
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * const result = await client.projects.create({ name: "My example" });
49
+ * ```
50
+ */
51
+ async create(req) {
52
+ if (!req.name) {
53
+ throw Errors.validation("Name is required");
54
+ }
55
+ const response = await this.request({
56
+ service: "Projects",
57
+ operation: "CreateProject",
58
+ resourceType: "project",
59
+ isMutation: true,
60
+ }, () => this.client.POST("/projects.json", {
61
+ body: {
62
+ name: req.name,
63
+ description: req.description,
64
+ },
65
+ }));
66
+ return response;
67
+ }
68
+ /**
69
+ * Get a single project by id
70
+ * @param projectId - The project ID
71
+ * @returns The Project
72
+ * @throws {BasecampError} If the resource is not found
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * const result = await client.projects.get(123);
77
+ * ```
78
+ */
79
+ async get(projectId) {
80
+ const response = await this.request({
81
+ service: "Projects",
82
+ operation: "GetProject",
83
+ resourceType: "project",
84
+ isMutation: false,
85
+ projectId,
86
+ }, () => this.client.GET("/projects/{projectId}", {
87
+ params: {
88
+ path: { projectId },
89
+ },
90
+ }));
91
+ return response;
92
+ }
93
+ /**
94
+ * Update an existing project
95
+ * @param projectId - The project ID
96
+ * @param req - Project update parameters
97
+ * @returns The Project
98
+ * @throws {BasecampError} If the resource is not found or fields are invalid
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * const result = await client.projects.update(123, { name: "My example" });
103
+ * ```
104
+ */
105
+ async update(projectId, req) {
106
+ if (!req.name) {
107
+ throw Errors.validation("Name is required");
108
+ }
109
+ const response = await this.request({
110
+ service: "Projects",
111
+ operation: "UpdateProject",
112
+ resourceType: "project",
113
+ isMutation: true,
114
+ projectId,
115
+ }, () => this.client.PUT("/projects/{projectId}", {
116
+ params: {
117
+ path: { projectId },
118
+ },
119
+ body: {
120
+ name: req.name,
121
+ description: req.description,
122
+ admissions: req.admissions,
123
+ schedule_attributes: req.scheduleAttributes,
124
+ },
125
+ }));
126
+ return response;
127
+ }
128
+ /**
129
+ * Trash a project. Trashed items can be recovered.
130
+ * @param projectId - The project ID
131
+ * @returns void
132
+ * @throws {BasecampError} If the request fails
133
+ *
134
+ * @example
135
+ * ```ts
136
+ * await client.projects.trash(123);
137
+ * ```
138
+ */
139
+ async trash(projectId) {
140
+ await this.request({
141
+ service: "Projects",
142
+ operation: "TrashProject",
143
+ resourceType: "project",
144
+ isMutation: true,
145
+ projectId,
146
+ }, () => this.client.DELETE("/projects/{projectId}", {
147
+ params: {
148
+ path: { projectId },
149
+ },
150
+ }));
151
+ }
152
+ }
153
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/generated/services/projects.ts"],"names":[],"mappings":"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"}