@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,369 @@
1
+ /**
2
+ * Todos 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
+ /** Todo entity from the Basecamp API. */
18
+ export type Todo = components["schemas"]["Todo"];
19
+
20
+ /**
21
+ * Options for list.
22
+ */
23
+ export interface ListTodoOptions extends PaginationOptions {
24
+ /** Filter by status */
25
+ status?: "active" | "archived" | "trashed";
26
+ /** Completed */
27
+ completed?: boolean;
28
+ }
29
+
30
+ /**
31
+ * Request parameters for create.
32
+ */
33
+ export interface CreateTodoRequest {
34
+ /** Text content */
35
+ content: string;
36
+ /** Rich text description (HTML) */
37
+ description?: string;
38
+ /** Person IDs to assign to */
39
+ assigneeIds?: number[];
40
+ /** Person IDs to notify on completion */
41
+ completionSubscriberIds?: number[];
42
+ /** Whether to send notifications to relevant people */
43
+ notify?: boolean;
44
+ /** Due date (YYYY-MM-DD) */
45
+ dueOn?: string;
46
+ /** Start date (YYYY-MM-DD) */
47
+ startsOn?: string;
48
+ }
49
+
50
+ /**
51
+ * Request parameters for update.
52
+ */
53
+ export interface UpdateTodoRequest {
54
+ /** Text content */
55
+ content?: string;
56
+ /** Rich text description (HTML) */
57
+ description?: string;
58
+ /** Person IDs to assign to */
59
+ assigneeIds?: number[];
60
+ /** Person IDs to notify on completion */
61
+ completionSubscriberIds?: number[];
62
+ /** Whether to send notifications to relevant people */
63
+ notify?: boolean;
64
+ /** Due date (YYYY-MM-DD) */
65
+ dueOn?: string;
66
+ /** Start date (YYYY-MM-DD) */
67
+ startsOn?: string;
68
+ }
69
+
70
+ /**
71
+ * Request parameters for reposition.
72
+ */
73
+ export interface RepositionTodoRequest {
74
+ /** Position for ordering (1-based) */
75
+ position: number;
76
+ /** Optional todolist ID to move the todo to a different parent */
77
+ parentId?: number;
78
+ }
79
+
80
+
81
+ // =============================================================================
82
+ // Service
83
+ // =============================================================================
84
+
85
+ /**
86
+ * Service for Todos operations.
87
+ */
88
+ export class TodosService extends BaseService {
89
+
90
+ /**
91
+ * List todos in a todolist
92
+ * @param todolistId - The todolist ID
93
+ * @param options - Optional query parameters
94
+ * @returns All Todo across all pages, with .meta.totalCount
95
+ *
96
+ * @example
97
+ * ```ts
98
+ * const result = await client.todos.list(123);
99
+ *
100
+ * // With options
101
+ * const filtered = await client.todos.list(123, { status: "active" });
102
+ * ```
103
+ */
104
+ async list(todolistId: number, options?: ListTodoOptions): Promise<ListResult<Todo>> {
105
+ return this.requestPaginated(
106
+ {
107
+ service: "Todos",
108
+ operation: "ListTodos",
109
+ resourceType: "todo",
110
+ isMutation: false,
111
+ resourceId: todolistId,
112
+ },
113
+ () =>
114
+ this.client.GET("/todolists/{todolistId}/todos.json", {
115
+ params: {
116
+ path: { todolistId },
117
+ query: { status: options?.status, completed: options?.completed },
118
+ },
119
+ })
120
+ , options
121
+ );
122
+ }
123
+
124
+ /**
125
+ * Create a new todo in a todolist
126
+ * @param todolistId - The todolist ID
127
+ * @param req - Todo creation parameters
128
+ * @returns The Todo
129
+ * @throws {BasecampError} If required fields are missing or invalid
130
+ *
131
+ * @example
132
+ * ```ts
133
+ * const result = await client.todos.create(123, { content: "Hello world" });
134
+ * ```
135
+ */
136
+ async create(todolistId: number, req: CreateTodoRequest): Promise<Todo> {
137
+ if (!req.content) {
138
+ throw Errors.validation("Content is required");
139
+ }
140
+ if (req.dueOn && !/^\d{4}-\d{2}-\d{2}$/.test(req.dueOn)) {
141
+ throw Errors.validation("Due on must be in YYYY-MM-DD format");
142
+ }
143
+ if (req.startsOn && !/^\d{4}-\d{2}-\d{2}$/.test(req.startsOn)) {
144
+ throw Errors.validation("Starts on must be in YYYY-MM-DD format");
145
+ }
146
+ const response = await this.request(
147
+ {
148
+ service: "Todos",
149
+ operation: "CreateTodo",
150
+ resourceType: "todo",
151
+ isMutation: true,
152
+ resourceId: todolistId,
153
+ },
154
+ () =>
155
+ this.client.POST("/todolists/{todolistId}/todos.json", {
156
+ params: {
157
+ path: { todolistId },
158
+ },
159
+ body: {
160
+ content: req.content,
161
+ description: req.description,
162
+ assignee_ids: req.assigneeIds,
163
+ completion_subscriber_ids: req.completionSubscriberIds,
164
+ notify: req.notify,
165
+ due_on: req.dueOn,
166
+ starts_on: req.startsOn,
167
+ },
168
+ })
169
+ );
170
+ return response;
171
+ }
172
+
173
+ /**
174
+ * Get a single todo by id
175
+ * @param todoId - The todo ID
176
+ * @returns The Todo
177
+ * @throws {BasecampError} If the resource is not found
178
+ *
179
+ * @example
180
+ * ```ts
181
+ * const result = await client.todos.get(123);
182
+ * ```
183
+ */
184
+ async get(todoId: number): Promise<Todo> {
185
+ const response = await this.request(
186
+ {
187
+ service: "Todos",
188
+ operation: "GetTodo",
189
+ resourceType: "todo",
190
+ isMutation: false,
191
+ resourceId: todoId,
192
+ },
193
+ () =>
194
+ this.client.GET("/todos/{todoId}", {
195
+ params: {
196
+ path: { todoId },
197
+ },
198
+ })
199
+ );
200
+ return response;
201
+ }
202
+
203
+ /**
204
+ * Update an existing todo
205
+ * @param todoId - The todo ID
206
+ * @param req - Todo update parameters
207
+ * @returns The Todo
208
+ * @throws {BasecampError} If the resource is not found or fields are invalid
209
+ *
210
+ * @example
211
+ * ```ts
212
+ * const result = await client.todos.update(123, { });
213
+ * ```
214
+ */
215
+ async update(todoId: number, req: UpdateTodoRequest): Promise<Todo> {
216
+ if (req.dueOn && !/^\d{4}-\d{2}-\d{2}$/.test(req.dueOn)) {
217
+ throw Errors.validation("Due on must be in YYYY-MM-DD format");
218
+ }
219
+ if (req.startsOn && !/^\d{4}-\d{2}-\d{2}$/.test(req.startsOn)) {
220
+ throw Errors.validation("Starts on must be in YYYY-MM-DD format");
221
+ }
222
+ const response = await this.request(
223
+ {
224
+ service: "Todos",
225
+ operation: "UpdateTodo",
226
+ resourceType: "todo",
227
+ isMutation: true,
228
+ resourceId: todoId,
229
+ },
230
+ () =>
231
+ this.client.PUT("/todos/{todoId}", {
232
+ params: {
233
+ path: { todoId },
234
+ },
235
+ body: {
236
+ content: req.content,
237
+ description: req.description,
238
+ assignee_ids: req.assigneeIds,
239
+ completion_subscriber_ids: req.completionSubscriberIds,
240
+ notify: req.notify,
241
+ due_on: req.dueOn,
242
+ starts_on: req.startsOn,
243
+ },
244
+ })
245
+ );
246
+ return response;
247
+ }
248
+
249
+ /**
250
+ * Trash a todo. Trashed items can be recovered.
251
+ * @param todoId - The todo ID
252
+ * @returns void
253
+ * @throws {BasecampError} If the request fails
254
+ *
255
+ * @example
256
+ * ```ts
257
+ * await client.todos.trash(123);
258
+ * ```
259
+ */
260
+ async trash(todoId: number): Promise<void> {
261
+ await this.request(
262
+ {
263
+ service: "Todos",
264
+ operation: "TrashTodo",
265
+ resourceType: "todo",
266
+ isMutation: true,
267
+ resourceId: todoId,
268
+ },
269
+ () =>
270
+ this.client.DELETE("/todos/{todoId}", {
271
+ params: {
272
+ path: { todoId },
273
+ },
274
+ })
275
+ );
276
+ }
277
+
278
+ /**
279
+ * Mark a todo as complete
280
+ * @param todoId - The todo ID
281
+ * @returns void
282
+ * @throws {BasecampError} If the request fails
283
+ *
284
+ * @example
285
+ * ```ts
286
+ * await client.todos.complete(123);
287
+ * ```
288
+ */
289
+ async complete(todoId: number): Promise<void> {
290
+ await this.request(
291
+ {
292
+ service: "Todos",
293
+ operation: "CompleteTodo",
294
+ resourceType: "todo",
295
+ isMutation: true,
296
+ resourceId: todoId,
297
+ },
298
+ () =>
299
+ this.client.POST("/todos/{todoId}/completion.json", {
300
+ params: {
301
+ path: { todoId },
302
+ },
303
+ })
304
+ );
305
+ }
306
+
307
+ /**
308
+ * Mark a todo as incomplete
309
+ * @param todoId - The todo ID
310
+ * @returns void
311
+ * @throws {BasecampError} If the request fails
312
+ *
313
+ * @example
314
+ * ```ts
315
+ * await client.todos.uncomplete(123);
316
+ * ```
317
+ */
318
+ async uncomplete(todoId: number): Promise<void> {
319
+ await this.request(
320
+ {
321
+ service: "Todos",
322
+ operation: "UncompleteTodo",
323
+ resourceType: "todo",
324
+ isMutation: true,
325
+ resourceId: todoId,
326
+ },
327
+ () =>
328
+ this.client.DELETE("/todos/{todoId}/completion.json", {
329
+ params: {
330
+ path: { todoId },
331
+ },
332
+ })
333
+ );
334
+ }
335
+
336
+ /**
337
+ * Reposition a todo within its todolist
338
+ * @param todoId - The todo ID
339
+ * @param req - Todo request parameters
340
+ * @returns void
341
+ * @throws {BasecampError} If the request fails
342
+ *
343
+ * @example
344
+ * ```ts
345
+ * await client.todos.reposition(123, { position: 1 });
346
+ * ```
347
+ */
348
+ async reposition(todoId: number, req: RepositionTodoRequest): Promise<void> {
349
+ await this.request(
350
+ {
351
+ service: "Todos",
352
+ operation: "RepositionTodo",
353
+ resourceType: "todo",
354
+ isMutation: true,
355
+ resourceId: todoId,
356
+ },
357
+ () =>
358
+ this.client.PUT("/todos/{todoId}/position.json", {
359
+ params: {
360
+ path: { todoId },
361
+ },
362
+ body: {
363
+ position: req.position,
364
+ parent_id: req.parentId,
365
+ },
366
+ })
367
+ );
368
+ }
369
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Todosets 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
+ /** Todoset entity from the Basecamp API. */
9
+ export type Todoset = components["schemas"]["Todoset"];
10
+ /**
11
+ * Service for Todosets operations.
12
+ */
13
+ export declare class TodosetsService extends BaseService {
14
+ /**
15
+ * Get a todoset (container for todolists in a project)
16
+ * @param todosetId - The todoset ID
17
+ * @returns The Todoset
18
+ * @throws {BasecampError} If the resource is not found
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const result = await client.todosets.get(123);
23
+ * ```
24
+ */
25
+ get(todosetId: number): Promise<Todoset>;
26
+ }
27
+ //# sourceMappingURL=todosets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todosets.d.ts","sourceRoot":"","sources":["../../../src/generated/services/todosets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM/C,4CAA4C;AAC5C,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;AAMvD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAE9C;;;;;;;;;;OAUG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAkB/C"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Todosets 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 Todosets operations.
12
+ */
13
+ export class TodosetsService extends BaseService {
14
+ /**
15
+ * Get a todoset (container for todolists in a project)
16
+ * @param todosetId - The todoset ID
17
+ * @returns The Todoset
18
+ * @throws {BasecampError} If the resource is not found
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const result = await client.todosets.get(123);
23
+ * ```
24
+ */
25
+ async get(todosetId) {
26
+ const response = await this.request({
27
+ service: "Todosets",
28
+ operation: "GetTodoset",
29
+ resourceType: "todoset",
30
+ isMutation: false,
31
+ resourceId: todosetId,
32
+ }, () => this.client.GET("/todosets/{todosetId}", {
33
+ params: {
34
+ path: { todosetId },
35
+ },
36
+ }));
37
+ return response;
38
+ }
39
+ }
40
+ //# sourceMappingURL=todosets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todosets.js","sourceRoot":"","sources":["../../../src/generated/services/todosets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAUrD,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAE9C;;;;;;;;;;OAUG;IACH,KAAK,CAAC,GAAG,CAAC,SAAiB;QACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC;YACE,OAAO,EAAE,UAAU;YACnB,SAAS,EAAE,YAAY;YACvB,YAAY,EAAE,SAAS;YACvB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,SAAS;SACtB,EACD,GAAG,EAAE,CACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE;YACvC,MAAM,EAAE;gBACN,IAAI,EAAE,EAAE,SAAS,EAAE;aACpB;SACF,CAAC,CACL,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
@@ -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,122 @@
1
+ /**
2
+ * Tools 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
+ /** Tool entity from the Basecamp API. */
9
+ export type Tool = components["schemas"]["Tool"];
10
+ /**
11
+ * Request parameters for clone.
12
+ */
13
+ export interface CloneToolRequest {
14
+ /** Source recording id */
15
+ sourceRecordingId: number;
16
+ }
17
+ /**
18
+ * Request parameters for update.
19
+ */
20
+ export interface UpdateToolRequest {
21
+ /** Title */
22
+ title: string;
23
+ }
24
+ /**
25
+ * Request parameters for reposition.
26
+ */
27
+ export interface RepositionToolRequest {
28
+ /** Position for ordering (1-based) */
29
+ position: number;
30
+ }
31
+ /**
32
+ * Service for Tools operations.
33
+ */
34
+ export declare class ToolsService extends BaseService {
35
+ /**
36
+ * Clone an existing tool to create a new one
37
+ * @param req - Tool request parameters
38
+ * @returns The Tool
39
+ * @throws {BasecampError} If the request fails
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * const result = await client.tools.clone({ sourceRecordingId: 1 });
44
+ * ```
45
+ */
46
+ clone(req: CloneToolRequest): Promise<Tool>;
47
+ /**
48
+ * Get a dock tool by id
49
+ * @param toolId - The tool ID
50
+ * @returns The Tool
51
+ * @throws {BasecampError} If the resource is not found
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * const result = await client.tools.get(123);
56
+ * ```
57
+ */
58
+ get(toolId: number): Promise<Tool>;
59
+ /**
60
+ * Update (rename) an existing tool
61
+ * @param toolId - The tool ID
62
+ * @param req - Tool update parameters
63
+ * @returns The Tool
64
+ * @throws {BasecampError} If the resource is not found or fields are invalid
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const result = await client.tools.update(123, { title: "example" });
69
+ * ```
70
+ */
71
+ update(toolId: number, req: UpdateToolRequest): Promise<Tool>;
72
+ /**
73
+ * Delete a tool (trash it)
74
+ * @param toolId - The tool ID
75
+ * @returns void
76
+ * @throws {BasecampError} If the request fails
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * await client.tools.delete(123);
81
+ * ```
82
+ */
83
+ delete(toolId: number): Promise<void>;
84
+ /**
85
+ * Enable a tool (show it on the project dock)
86
+ * @param toolId - The tool ID
87
+ * @returns void
88
+ * @throws {BasecampError} If the request fails
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * await client.tools.enable(123);
93
+ * ```
94
+ */
95
+ enable(toolId: number): Promise<void>;
96
+ /**
97
+ * Reposition a tool on the project dock
98
+ * @param toolId - The tool ID
99
+ * @param req - Tool request parameters
100
+ * @returns void
101
+ * @throws {BasecampError} If the request fails
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * await client.tools.reposition(123, { position: 1 });
106
+ * ```
107
+ */
108
+ reposition(toolId: number, req: RepositionToolRequest): Promise<void>;
109
+ /**
110
+ * Disable a tool (hide it from the project dock)
111
+ * @param toolId - The tool ID
112
+ * @returns void
113
+ * @throws {BasecampError} If the request fails
114
+ *
115
+ * @example
116
+ * ```ts
117
+ * await client.tools.disable(123);
118
+ * ```
119
+ */
120
+ disable(toolId: number): Promise<void>;
121
+ }
122
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/generated/services/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO/C,yCAAyC;AACzC,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD;;GAEG;AACH,qBAAa,YAAa,SAAQ,WAAW;IAE3C;;;;;;;;;;OAUG;IACG,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjD;;;;;;;;;;OAUG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxC;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBnE;;;;;;;;;;OAUG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3C;;;;;;;;;;OAUG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3C;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3E;;;;;;;;;;OAUG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiB7C"}