@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,207 @@
1
+ /**
2
+ * Templates 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 Templates operations.
13
+ */
14
+ export class TemplatesService extends BaseService {
15
+ /**
16
+ * List all templates visible to the current user
17
+ * @param options - Optional query parameters
18
+ * @returns All Template across all pages, with .meta.totalCount
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const result = await client.templates.list();
23
+ *
24
+ * // With options
25
+ * const filtered = await client.templates.list({ status: "active" });
26
+ * ```
27
+ */
28
+ async list(options) {
29
+ return this.requestPaginated({
30
+ service: "Templates",
31
+ operation: "ListTemplates",
32
+ resourceType: "template",
33
+ isMutation: false,
34
+ }, () => this.client.GET("/templates.json", {
35
+ params: {
36
+ query: { status: options?.status },
37
+ },
38
+ }), options);
39
+ }
40
+ /**
41
+ * Create a new template
42
+ * @param req - Template creation parameters
43
+ * @returns The Template
44
+ * @throws {BasecampError} If required fields are missing or invalid
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * const result = await client.templates.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: "Templates",
57
+ operation: "CreateTemplate",
58
+ resourceType: "template",
59
+ isMutation: true,
60
+ }, () => this.client.POST("/templates.json", {
61
+ body: {
62
+ name: req.name,
63
+ description: req.description,
64
+ },
65
+ }));
66
+ return response;
67
+ }
68
+ /**
69
+ * Get a single template by id
70
+ * @param templateId - The template ID
71
+ * @returns The Template
72
+ * @throws {BasecampError} If the resource is not found
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * const result = await client.templates.get(123);
77
+ * ```
78
+ */
79
+ async get(templateId) {
80
+ const response = await this.request({
81
+ service: "Templates",
82
+ operation: "GetTemplate",
83
+ resourceType: "template",
84
+ isMutation: false,
85
+ resourceId: templateId,
86
+ }, () => this.client.GET("/templates/{templateId}", {
87
+ params: {
88
+ path: { templateId },
89
+ },
90
+ }));
91
+ return response;
92
+ }
93
+ /**
94
+ * Update an existing template
95
+ * @param templateId - The template ID
96
+ * @param req - Template update parameters
97
+ * @returns The Template
98
+ * @throws {BasecampError} If the resource is not found or fields are invalid
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * const result = await client.templates.update(123, { });
103
+ * ```
104
+ */
105
+ async update(templateId, req) {
106
+ const response = await this.request({
107
+ service: "Templates",
108
+ operation: "UpdateTemplate",
109
+ resourceType: "template",
110
+ isMutation: true,
111
+ resourceId: templateId,
112
+ }, () => this.client.PUT("/templates/{templateId}", {
113
+ params: {
114
+ path: { templateId },
115
+ },
116
+ body: {
117
+ name: req.name,
118
+ description: req.description,
119
+ },
120
+ }));
121
+ return response;
122
+ }
123
+ /**
124
+ * Delete a template (trash it)
125
+ * @param templateId - The template ID
126
+ * @returns void
127
+ * @throws {BasecampError} If the request fails
128
+ *
129
+ * @example
130
+ * ```ts
131
+ * await client.templates.delete(123);
132
+ * ```
133
+ */
134
+ async delete(templateId) {
135
+ await this.request({
136
+ service: "Templates",
137
+ operation: "DeleteTemplate",
138
+ resourceType: "template",
139
+ isMutation: true,
140
+ resourceId: templateId,
141
+ }, () => this.client.DELETE("/templates/{templateId}", {
142
+ params: {
143
+ path: { templateId },
144
+ },
145
+ }));
146
+ }
147
+ /**
148
+ * Create a project from a template (asynchronous)
149
+ * @param templateId - The template ID
150
+ * @param req - Project_from_template creation parameters
151
+ * @returns The project_from_template
152
+ * @throws {BasecampError} If required fields are missing or invalid
153
+ *
154
+ * @example
155
+ * ```ts
156
+ * const result = await client.templates.createProject(123, { name: "My example" });
157
+ * ```
158
+ */
159
+ async createProject(templateId, req) {
160
+ if (!req.name) {
161
+ throw Errors.validation("Name is required");
162
+ }
163
+ const response = await this.request({
164
+ service: "Templates",
165
+ operation: "CreateProjectFromTemplate",
166
+ resourceType: "project_from_template",
167
+ isMutation: true,
168
+ resourceId: templateId,
169
+ }, () => this.client.POST("/templates/{templateId}/project_constructions.json", {
170
+ params: {
171
+ path: { templateId },
172
+ },
173
+ body: {
174
+ name: req.name,
175
+ description: req.description,
176
+ },
177
+ }));
178
+ return response;
179
+ }
180
+ /**
181
+ * Get the status of a project construction
182
+ * @param templateId - The template ID
183
+ * @param constructionId - The construction ID
184
+ * @returns The project_construction
185
+ * @throws {BasecampError} If the resource is not found
186
+ *
187
+ * @example
188
+ * ```ts
189
+ * const result = await client.templates.getConstruction(123, 123);
190
+ * ```
191
+ */
192
+ async getConstruction(templateId, constructionId) {
193
+ const response = await this.request({
194
+ service: "Templates",
195
+ operation: "GetProjectConstruction",
196
+ resourceType: "project_construction",
197
+ isMutation: false,
198
+ resourceId: templateId,
199
+ }, () => this.client.GET("/templates/{templateId}/project_constructions/{constructionId}", {
200
+ params: {
201
+ path: { templateId, constructionId },
202
+ },
203
+ }));
204
+ return response;
205
+ }
206
+ }
207
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/generated/services/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,294 @@
1
+ /**
2
+ * Templates 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
+ /** Template entity from the Basecamp API. */
18
+ export type Template = components["schemas"]["Template"];
19
+
20
+ /**
21
+ * Options for list.
22
+ */
23
+ export interface ListTemplateOptions extends PaginationOptions {
24
+ /** Filter by status */
25
+ status?: "active" | "archived" | "trashed";
26
+ }
27
+
28
+ /**
29
+ * Request parameters for create.
30
+ */
31
+ export interface CreateTemplateRequest {
32
+ /** Display name */
33
+ name: string;
34
+ /** Rich text description (HTML) */
35
+ description?: string;
36
+ }
37
+
38
+ /**
39
+ * Request parameters for update.
40
+ */
41
+ export interface UpdateTemplateRequest {
42
+ /** Display name */
43
+ name?: string;
44
+ /** Rich text description (HTML) */
45
+ description?: string;
46
+ }
47
+
48
+ /**
49
+ * Request parameters for createProject.
50
+ */
51
+ export interface CreateProjectTemplateRequest {
52
+ /** Display name */
53
+ name: string;
54
+ /** Rich text description (HTML) */
55
+ description?: string;
56
+ }
57
+
58
+
59
+ // =============================================================================
60
+ // Service
61
+ // =============================================================================
62
+
63
+ /**
64
+ * Service for Templates operations.
65
+ */
66
+ export class TemplatesService extends BaseService {
67
+
68
+ /**
69
+ * List all templates visible to the current user
70
+ * @param options - Optional query parameters
71
+ * @returns All Template across all pages, with .meta.totalCount
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * const result = await client.templates.list();
76
+ *
77
+ * // With options
78
+ * const filtered = await client.templates.list({ status: "active" });
79
+ * ```
80
+ */
81
+ async list(options?: ListTemplateOptions): Promise<ListResult<Template>> {
82
+ return this.requestPaginated(
83
+ {
84
+ service: "Templates",
85
+ operation: "ListTemplates",
86
+ resourceType: "template",
87
+ isMutation: false,
88
+ },
89
+ () =>
90
+ this.client.GET("/templates.json", {
91
+ params: {
92
+ query: { status: options?.status },
93
+ },
94
+ })
95
+ , options
96
+ );
97
+ }
98
+
99
+ /**
100
+ * Create a new template
101
+ * @param req - Template creation parameters
102
+ * @returns The Template
103
+ * @throws {BasecampError} If required fields are missing or invalid
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * const result = await client.templates.create({ name: "My example" });
108
+ * ```
109
+ */
110
+ async create(req: CreateTemplateRequest): Promise<Template> {
111
+ if (!req.name) {
112
+ throw Errors.validation("Name is required");
113
+ }
114
+ const response = await this.request(
115
+ {
116
+ service: "Templates",
117
+ operation: "CreateTemplate",
118
+ resourceType: "template",
119
+ isMutation: true,
120
+ },
121
+ () =>
122
+ this.client.POST("/templates.json", {
123
+ body: {
124
+ name: req.name,
125
+ description: req.description,
126
+ },
127
+ })
128
+ );
129
+ return response;
130
+ }
131
+
132
+ /**
133
+ * Get a single template by id
134
+ * @param templateId - The template ID
135
+ * @returns The Template
136
+ * @throws {BasecampError} If the resource is not found
137
+ *
138
+ * @example
139
+ * ```ts
140
+ * const result = await client.templates.get(123);
141
+ * ```
142
+ */
143
+ async get(templateId: number): Promise<Template> {
144
+ const response = await this.request(
145
+ {
146
+ service: "Templates",
147
+ operation: "GetTemplate",
148
+ resourceType: "template",
149
+ isMutation: false,
150
+ resourceId: templateId,
151
+ },
152
+ () =>
153
+ this.client.GET("/templates/{templateId}", {
154
+ params: {
155
+ path: { templateId },
156
+ },
157
+ })
158
+ );
159
+ return response;
160
+ }
161
+
162
+ /**
163
+ * Update an existing template
164
+ * @param templateId - The template ID
165
+ * @param req - Template update parameters
166
+ * @returns The Template
167
+ * @throws {BasecampError} If the resource is not found or fields are invalid
168
+ *
169
+ * @example
170
+ * ```ts
171
+ * const result = await client.templates.update(123, { });
172
+ * ```
173
+ */
174
+ async update(templateId: number, req: UpdateTemplateRequest): Promise<Template> {
175
+ const response = await this.request(
176
+ {
177
+ service: "Templates",
178
+ operation: "UpdateTemplate",
179
+ resourceType: "template",
180
+ isMutation: true,
181
+ resourceId: templateId,
182
+ },
183
+ () =>
184
+ this.client.PUT("/templates/{templateId}", {
185
+ params: {
186
+ path: { templateId },
187
+ },
188
+ body: {
189
+ name: req.name,
190
+ description: req.description,
191
+ },
192
+ })
193
+ );
194
+ return response;
195
+ }
196
+
197
+ /**
198
+ * Delete a template (trash it)
199
+ * @param templateId - The template ID
200
+ * @returns void
201
+ * @throws {BasecampError} If the request fails
202
+ *
203
+ * @example
204
+ * ```ts
205
+ * await client.templates.delete(123);
206
+ * ```
207
+ */
208
+ async delete(templateId: number): Promise<void> {
209
+ await this.request(
210
+ {
211
+ service: "Templates",
212
+ operation: "DeleteTemplate",
213
+ resourceType: "template",
214
+ isMutation: true,
215
+ resourceId: templateId,
216
+ },
217
+ () =>
218
+ this.client.DELETE("/templates/{templateId}", {
219
+ params: {
220
+ path: { templateId },
221
+ },
222
+ })
223
+ );
224
+ }
225
+
226
+ /**
227
+ * Create a project from a template (asynchronous)
228
+ * @param templateId - The template ID
229
+ * @param req - Project_from_template creation parameters
230
+ * @returns The project_from_template
231
+ * @throws {BasecampError} If required fields are missing or invalid
232
+ *
233
+ * @example
234
+ * ```ts
235
+ * const result = await client.templates.createProject(123, { name: "My example" });
236
+ * ```
237
+ */
238
+ async createProject(templateId: number, req: CreateProjectTemplateRequest): Promise<components["schemas"]["CreateProjectFromTemplateResponseContent"]> {
239
+ if (!req.name) {
240
+ throw Errors.validation("Name is required");
241
+ }
242
+ const response = await this.request(
243
+ {
244
+ service: "Templates",
245
+ operation: "CreateProjectFromTemplate",
246
+ resourceType: "project_from_template",
247
+ isMutation: true,
248
+ resourceId: templateId,
249
+ },
250
+ () =>
251
+ this.client.POST("/templates/{templateId}/project_constructions.json", {
252
+ params: {
253
+ path: { templateId },
254
+ },
255
+ body: {
256
+ name: req.name,
257
+ description: req.description,
258
+ },
259
+ })
260
+ );
261
+ return response;
262
+ }
263
+
264
+ /**
265
+ * Get the status of a project construction
266
+ * @param templateId - The template ID
267
+ * @param constructionId - The construction ID
268
+ * @returns The project_construction
269
+ * @throws {BasecampError} If the resource is not found
270
+ *
271
+ * @example
272
+ * ```ts
273
+ * const result = await client.templates.getConstruction(123, 123);
274
+ * ```
275
+ */
276
+ async getConstruction(templateId: number, constructionId: number): Promise<components["schemas"]["GetProjectConstructionResponseContent"]> {
277
+ const response = await this.request(
278
+ {
279
+ service: "Templates",
280
+ operation: "GetProjectConstruction",
281
+ resourceType: "project_construction",
282
+ isMutation: false,
283
+ resourceId: templateId,
284
+ },
285
+ () =>
286
+ this.client.GET("/templates/{templateId}/project_constructions/{constructionId}", {
287
+ params: {
288
+ path: { templateId, constructionId },
289
+ },
290
+ })
291
+ );
292
+ return response;
293
+ }
294
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Timeline 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 type { PaginationOptions } from "../../pagination.js";
9
+ /**
10
+ * Options for projectTimeline.
11
+ */
12
+ export interface ProjectTimelineTimelineOptions extends PaginationOptions {
13
+ }
14
+ /**
15
+ * Service for Timeline operations.
16
+ */
17
+ export declare class TimelineService extends BaseService {
18
+ /**
19
+ * Get project timeline
20
+ * @param projectId - The project ID
21
+ * @param options - Optional query parameters
22
+ * @returns All results across all pages, with .meta.totalCount
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const result = await client.timeline.projectTimeline(123);
27
+ * ```
28
+ */
29
+ projectTimeline(projectId: number, options?: ProjectTimelineTimelineOptions): Promise<components["schemas"]["GetProjectTimelineResponseContent"]>;
30
+ }
31
+ //# sourceMappingURL=timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../src/generated/services/timeline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAO7D;;GAEG;AACH,MAAM,WAAW,8BAA+B,SAAQ,iBAAiB;CACxE;AAOD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAE9C;;;;;;;;;;OAUG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,8BAA8B,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,mCAAmC,CAAC,CAAC;CAkBxJ"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Timeline 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 Timeline operations.
12
+ */
13
+ export class TimelineService extends BaseService {
14
+ /**
15
+ * Get project timeline
16
+ * @param projectId - The project ID
17
+ * @param options - Optional query parameters
18
+ * @returns All results across all pages, with .meta.totalCount
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const result = await client.timeline.projectTimeline(123);
23
+ * ```
24
+ */
25
+ async projectTimeline(projectId, options) {
26
+ return this.requestPaginated({
27
+ service: "Timeline",
28
+ operation: "GetProjectTimeline",
29
+ resourceType: "project_timeline",
30
+ isMutation: false,
31
+ projectId,
32
+ }, () => this.client.GET("/projects/{projectId}/timeline.json", {
33
+ params: {
34
+ path: { projectId },
35
+ },
36
+ }), options);
37
+ }
38
+ }
39
+ //# sourceMappingURL=timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../../src/generated/services/timeline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAiBrD,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAE9C;;;;;;;;;;OAUG;IACH,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,OAAwC;QAC/E,OAAO,IAAI,CAAC,gBAAgB,CAC1B;YACE,OAAO,EAAE,UAAU;YACnB,SAAS,EAAE,oBAAoB;YAC/B,YAAY,EAAE,kBAAkB;YAChC,UAAU,EAAE,KAAK;YACjB,SAAS;SACV,EACD,GAAG,EAAE,CACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qCAAqC,EAAE;YACrD,MAAM,EAAE;gBACN,IAAI,EAAE,EAAE,SAAS,EAAE;aACpB;SACF,CAAC,EACF,OAAO,CACV,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Timeline 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
+
17
+ /**
18
+ * Options for projectTimeline.
19
+ */
20
+ export interface ProjectTimelineTimelineOptions extends PaginationOptions {
21
+ }
22
+
23
+
24
+ // =============================================================================
25
+ // Service
26
+ // =============================================================================
27
+
28
+ /**
29
+ * Service for Timeline operations.
30
+ */
31
+ export class TimelineService extends BaseService {
32
+
33
+ /**
34
+ * Get project timeline
35
+ * @param projectId - The project ID
36
+ * @param options - Optional query parameters
37
+ * @returns All results across all pages, with .meta.totalCount
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * const result = await client.timeline.projectTimeline(123);
42
+ * ```
43
+ */
44
+ async projectTimeline(projectId: number, options?: ProjectTimelineTimelineOptions): Promise<components["schemas"]["GetProjectTimelineResponseContent"]> {
45
+ return this.requestPaginated(
46
+ {
47
+ service: "Timeline",
48
+ operation: "GetProjectTimeline",
49
+ resourceType: "project_timeline",
50
+ isMutation: false,
51
+ projectId,
52
+ },
53
+ () =>
54
+ this.client.GET("/projects/{projectId}/timeline.json", {
55
+ params: {
56
+ path: { projectId },
57
+ },
58
+ })
59
+ , options
60
+ );
61
+ }
62
+ }