@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,55 @@
1
+ /**
2
+ * Todosets service for the Basecamp API.
3
+ *
4
+ * @generated from OpenAPI spec - do not edit directly
5
+ */
6
+
7
+ import { BaseService } from "../../services/base.js";
8
+ import type { components } from "../schema.js";
9
+
10
+ // =============================================================================
11
+ // Types
12
+ // =============================================================================
13
+
14
+ /** Todoset entity from the Basecamp API. */
15
+ export type Todoset = components["schemas"]["Todoset"];
16
+
17
+ // =============================================================================
18
+ // Service
19
+ // =============================================================================
20
+
21
+ /**
22
+ * Service for Todosets operations.
23
+ */
24
+ export class TodosetsService extends BaseService {
25
+
26
+ /**
27
+ * Get a todoset (container for todolists in a project)
28
+ * @param todosetId - The todoset ID
29
+ * @returns The Todoset
30
+ * @throws {BasecampError} If the resource is not found
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * const result = await client.todosets.get(123);
35
+ * ```
36
+ */
37
+ async get(todosetId: number): Promise<Todoset> {
38
+ const response = await this.request(
39
+ {
40
+ service: "Todosets",
41
+ operation: "GetTodoset",
42
+ resourceType: "todoset",
43
+ isMutation: false,
44
+ resourceId: todosetId,
45
+ },
46
+ () =>
47
+ this.client.GET("/todosets/{todosetId}", {
48
+ params: {
49
+ path: { todosetId },
50
+ },
51
+ })
52
+ );
53
+ return response;
54
+ }
55
+ }
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Tools service for the Basecamp API.
3
+ *
4
+ * @generated from OpenAPI spec - do not edit directly
5
+ */
6
+
7
+ import { BaseService } from "../../services/base.js";
8
+ import type { components } from "../schema.js";
9
+ import { Errors } from "../../errors.js";
10
+
11
+ // =============================================================================
12
+ // Types
13
+ // =============================================================================
14
+
15
+ /** Tool entity from the Basecamp API. */
16
+ export type Tool = components["schemas"]["Tool"];
17
+
18
+ /**
19
+ * Request parameters for clone.
20
+ */
21
+ export interface CloneToolRequest {
22
+ /** Source recording id */
23
+ sourceRecordingId: number;
24
+ }
25
+
26
+ /**
27
+ * Request parameters for update.
28
+ */
29
+ export interface UpdateToolRequest {
30
+ /** Title */
31
+ title: string;
32
+ }
33
+
34
+ /**
35
+ * Request parameters for reposition.
36
+ */
37
+ export interface RepositionToolRequest {
38
+ /** Position for ordering (1-based) */
39
+ position: number;
40
+ }
41
+
42
+
43
+ // =============================================================================
44
+ // Service
45
+ // =============================================================================
46
+
47
+ /**
48
+ * Service for Tools operations.
49
+ */
50
+ export class ToolsService extends BaseService {
51
+
52
+ /**
53
+ * Clone an existing tool to create a new one
54
+ * @param req - Tool request parameters
55
+ * @returns The Tool
56
+ * @throws {BasecampError} If the request fails
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * const result = await client.tools.clone({ sourceRecordingId: 1 });
61
+ * ```
62
+ */
63
+ async clone(req: CloneToolRequest): Promise<Tool> {
64
+ const response = await this.request(
65
+ {
66
+ service: "Tools",
67
+ operation: "CloneTool",
68
+ resourceType: "tool",
69
+ isMutation: true,
70
+ },
71
+ () =>
72
+ this.client.POST("/dock/tools.json", {
73
+ body: {
74
+ source_recording_id: req.sourceRecordingId,
75
+ },
76
+ })
77
+ );
78
+ return response;
79
+ }
80
+
81
+ /**
82
+ * Get a dock tool by id
83
+ * @param toolId - The tool ID
84
+ * @returns The Tool
85
+ * @throws {BasecampError} If the resource is not found
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * const result = await client.tools.get(123);
90
+ * ```
91
+ */
92
+ async get(toolId: number): Promise<Tool> {
93
+ const response = await this.request(
94
+ {
95
+ service: "Tools",
96
+ operation: "GetTool",
97
+ resourceType: "tool",
98
+ isMutation: false,
99
+ resourceId: toolId,
100
+ },
101
+ () =>
102
+ this.client.GET("/dock/tools/{toolId}", {
103
+ params: {
104
+ path: { toolId },
105
+ },
106
+ })
107
+ );
108
+ return response;
109
+ }
110
+
111
+ /**
112
+ * Update (rename) an existing tool
113
+ * @param toolId - The tool ID
114
+ * @param req - Tool update parameters
115
+ * @returns The Tool
116
+ * @throws {BasecampError} If the resource is not found or fields are invalid
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * const result = await client.tools.update(123, { title: "example" });
121
+ * ```
122
+ */
123
+ async update(toolId: number, req: UpdateToolRequest): Promise<Tool> {
124
+ if (!req.title) {
125
+ throw Errors.validation("Title is required");
126
+ }
127
+ const response = await this.request(
128
+ {
129
+ service: "Tools",
130
+ operation: "UpdateTool",
131
+ resourceType: "tool",
132
+ isMutation: true,
133
+ resourceId: toolId,
134
+ },
135
+ () =>
136
+ this.client.PUT("/dock/tools/{toolId}", {
137
+ params: {
138
+ path: { toolId },
139
+ },
140
+ body: {
141
+ title: req.title,
142
+ },
143
+ })
144
+ );
145
+ return response;
146
+ }
147
+
148
+ /**
149
+ * Delete a tool (trash it)
150
+ * @param toolId - The tool ID
151
+ * @returns void
152
+ * @throws {BasecampError} If the request fails
153
+ *
154
+ * @example
155
+ * ```ts
156
+ * await client.tools.delete(123);
157
+ * ```
158
+ */
159
+ async delete(toolId: number): Promise<void> {
160
+ await this.request(
161
+ {
162
+ service: "Tools",
163
+ operation: "DeleteTool",
164
+ resourceType: "tool",
165
+ isMutation: true,
166
+ resourceId: toolId,
167
+ },
168
+ () =>
169
+ this.client.DELETE("/dock/tools/{toolId}", {
170
+ params: {
171
+ path: { toolId },
172
+ },
173
+ })
174
+ );
175
+ }
176
+
177
+ /**
178
+ * Enable a tool (show it on the project dock)
179
+ * @param toolId - The tool ID
180
+ * @returns void
181
+ * @throws {BasecampError} If the request fails
182
+ *
183
+ * @example
184
+ * ```ts
185
+ * await client.tools.enable(123);
186
+ * ```
187
+ */
188
+ async enable(toolId: number): Promise<void> {
189
+ await this.request(
190
+ {
191
+ service: "Tools",
192
+ operation: "EnableTool",
193
+ resourceType: "tool",
194
+ isMutation: true,
195
+ resourceId: toolId,
196
+ },
197
+ () =>
198
+ this.client.POST("/recordings/{toolId}/position.json", {
199
+ params: {
200
+ path: { toolId },
201
+ },
202
+ })
203
+ );
204
+ }
205
+
206
+ /**
207
+ * Reposition a tool on the project dock
208
+ * @param toolId - The tool ID
209
+ * @param req - Tool request parameters
210
+ * @returns void
211
+ * @throws {BasecampError} If the request fails
212
+ *
213
+ * @example
214
+ * ```ts
215
+ * await client.tools.reposition(123, { position: 1 });
216
+ * ```
217
+ */
218
+ async reposition(toolId: number, req: RepositionToolRequest): Promise<void> {
219
+ await this.request(
220
+ {
221
+ service: "Tools",
222
+ operation: "RepositionTool",
223
+ resourceType: "tool",
224
+ isMutation: true,
225
+ resourceId: toolId,
226
+ },
227
+ () =>
228
+ this.client.PUT("/recordings/{toolId}/position.json", {
229
+ params: {
230
+ path: { toolId },
231
+ },
232
+ body: {
233
+ position: req.position,
234
+ },
235
+ })
236
+ );
237
+ }
238
+
239
+ /**
240
+ * Disable a tool (hide it from the project dock)
241
+ * @param toolId - The tool ID
242
+ * @returns void
243
+ * @throws {BasecampError} If the request fails
244
+ *
245
+ * @example
246
+ * ```ts
247
+ * await client.tools.disable(123);
248
+ * ```
249
+ */
250
+ async disable(toolId: number): Promise<void> {
251
+ await this.request(
252
+ {
253
+ service: "Tools",
254
+ operation: "DisableTool",
255
+ resourceType: "tool",
256
+ isMutation: true,
257
+ resourceId: toolId,
258
+ },
259
+ () =>
260
+ this.client.DELETE("/recordings/{toolId}/position.json", {
261
+ params: {
262
+ path: { toolId },
263
+ },
264
+ })
265
+ );
266
+ }
267
+ }
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Uploads 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
+ /** Upload entity from the Basecamp API. */
18
+ export type Upload = components["schemas"]["Upload"];
19
+
20
+ /**
21
+ * Request parameters for update.
22
+ */
23
+ export interface UpdateUploadRequest {
24
+ /** Rich text description (HTML) */
25
+ description?: string;
26
+ /** Base name */
27
+ baseName?: string;
28
+ }
29
+
30
+ /**
31
+ * Options for listVersions.
32
+ */
33
+ export interface ListVersionsUploadOptions extends PaginationOptions {
34
+ }
35
+
36
+ /**
37
+ * Options for list.
38
+ */
39
+ export interface ListUploadOptions extends PaginationOptions {
40
+ }
41
+
42
+ /**
43
+ * Request parameters for create.
44
+ */
45
+ export interface CreateUploadRequest {
46
+ /** Attachable sgid */
47
+ attachableSgid: string;
48
+ /** Rich text description (HTML) */
49
+ description?: string;
50
+ /** Base name */
51
+ baseName?: string;
52
+ }
53
+
54
+
55
+ // =============================================================================
56
+ // Service
57
+ // =============================================================================
58
+
59
+ /**
60
+ * Service for Uploads operations.
61
+ */
62
+ export class UploadsService extends BaseService {
63
+
64
+ /**
65
+ * Get a single upload by id
66
+ * @param uploadId - The upload ID
67
+ * @returns The Upload
68
+ * @throws {BasecampError} If the resource is not found
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const result = await client.uploads.get(123);
73
+ * ```
74
+ */
75
+ async get(uploadId: number): Promise<Upload> {
76
+ const response = await this.request(
77
+ {
78
+ service: "Uploads",
79
+ operation: "GetUpload",
80
+ resourceType: "upload",
81
+ isMutation: false,
82
+ resourceId: uploadId,
83
+ },
84
+ () =>
85
+ this.client.GET("/uploads/{uploadId}", {
86
+ params: {
87
+ path: { uploadId },
88
+ },
89
+ })
90
+ );
91
+ return response;
92
+ }
93
+
94
+ /**
95
+ * Update an existing upload
96
+ * @param uploadId - The upload ID
97
+ * @param req - Upload update parameters
98
+ * @returns The Upload
99
+ * @throws {BasecampError} If the resource is not found or fields are invalid
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * const result = await client.uploads.update(123, { });
104
+ * ```
105
+ */
106
+ async update(uploadId: number, req: UpdateUploadRequest): Promise<Upload> {
107
+ const response = await this.request(
108
+ {
109
+ service: "Uploads",
110
+ operation: "UpdateUpload",
111
+ resourceType: "upload",
112
+ isMutation: true,
113
+ resourceId: uploadId,
114
+ },
115
+ () =>
116
+ this.client.PUT("/uploads/{uploadId}", {
117
+ params: {
118
+ path: { uploadId },
119
+ },
120
+ body: {
121
+ description: req.description,
122
+ base_name: req.baseName,
123
+ },
124
+ })
125
+ );
126
+ return response;
127
+ }
128
+
129
+ /**
130
+ * List versions of an upload
131
+ * @param uploadId - The upload ID
132
+ * @param options - Optional query parameters
133
+ * @returns All Upload across all pages, with .meta.totalCount
134
+ *
135
+ * @example
136
+ * ```ts
137
+ * const result = await client.uploads.listVersions(123);
138
+ * ```
139
+ */
140
+ async listVersions(uploadId: number, options?: ListVersionsUploadOptions): Promise<ListResult<Upload>> {
141
+ return this.requestPaginated(
142
+ {
143
+ service: "Uploads",
144
+ operation: "ListUploadVersions",
145
+ resourceType: "upload_version",
146
+ isMutation: false,
147
+ resourceId: uploadId,
148
+ },
149
+ () =>
150
+ this.client.GET("/uploads/{uploadId}/versions.json", {
151
+ params: {
152
+ path: { uploadId },
153
+ },
154
+ })
155
+ , options
156
+ );
157
+ }
158
+
159
+ /**
160
+ * List uploads in a vault
161
+ * @param vaultId - The vault ID
162
+ * @param options - Optional query parameters
163
+ * @returns All Upload across all pages, with .meta.totalCount
164
+ *
165
+ * @example
166
+ * ```ts
167
+ * const result = await client.uploads.list(123);
168
+ * ```
169
+ */
170
+ async list(vaultId: number, options?: ListUploadOptions): Promise<ListResult<Upload>> {
171
+ return this.requestPaginated(
172
+ {
173
+ service: "Uploads",
174
+ operation: "ListUploads",
175
+ resourceType: "upload",
176
+ isMutation: false,
177
+ resourceId: vaultId,
178
+ },
179
+ () =>
180
+ this.client.GET("/vaults/{vaultId}/uploads.json", {
181
+ params: {
182
+ path: { vaultId },
183
+ },
184
+ })
185
+ , options
186
+ );
187
+ }
188
+
189
+ /**
190
+ * Create a new upload in a vault
191
+ * @param vaultId - The vault ID
192
+ * @param req - Upload creation parameters
193
+ * @returns The Upload
194
+ * @throws {BasecampError} If required fields are missing or invalid
195
+ *
196
+ * @example
197
+ * ```ts
198
+ * const result = await client.uploads.create(123, { attachableSgid: "example" });
199
+ * ```
200
+ */
201
+ async create(vaultId: number, req: CreateUploadRequest): Promise<Upload> {
202
+ if (!req.attachableSgid) {
203
+ throw Errors.validation("Attachable sgid is required");
204
+ }
205
+ const response = await this.request(
206
+ {
207
+ service: "Uploads",
208
+ operation: "CreateUpload",
209
+ resourceType: "upload",
210
+ isMutation: true,
211
+ resourceId: vaultId,
212
+ },
213
+ () =>
214
+ this.client.POST("/vaults/{vaultId}/uploads.json", {
215
+ params: {
216
+ path: { vaultId },
217
+ },
218
+ body: {
219
+ attachable_sgid: req.attachableSgid,
220
+ description: req.description,
221
+ base_name: req.baseName,
222
+ },
223
+ })
224
+ );
225
+ return response;
226
+ }
227
+ }