@37signals/basecamp 0.11.0 → 0.13.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 (304) hide show
  1. package/README.md +112 -16
  2. package/dist/.build-complete +0 -0
  3. package/dist/client.d.ts +65 -11
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +235 -215
  6. package/dist/client.js.map +1 -1
  7. package/dist/download.d.ts +7 -0
  8. package/dist/download.d.ts.map +1 -1
  9. package/dist/download.js +82 -22
  10. package/dist/download.js.map +1 -1
  11. package/dist/errors.d.ts +19 -1
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js +128 -15
  14. package/dist/errors.js.map +1 -1
  15. package/dist/generated/metadata.d.ts.map +1 -1
  16. package/dist/generated/metadata.js +443 -133
  17. package/dist/generated/metadata.js.map +1 -1
  18. package/dist/generated/metadata.ts +443 -133
  19. package/dist/generated/openapi-stripped.json +8999 -4907
  20. package/dist/generated/path-mapping.d.ts.map +1 -1
  21. package/dist/generated/path-mapping.js +40 -16
  22. package/dist/generated/path-mapping.js.map +1 -1
  23. package/dist/generated/path-mapping.ts +40 -16
  24. package/dist/generated/schema.d.ts +5508 -2346
  25. package/dist/generated/services/bookmarks.d.ts +76 -0
  26. package/dist/generated/services/bookmarks.d.ts.map +1 -0
  27. package/dist/generated/services/bookmarks.js +114 -0
  28. package/dist/generated/services/bookmarks.js.map +1 -0
  29. package/dist/generated/services/bookmarks.ts +158 -0
  30. package/dist/generated/services/boosts.d.ts +10 -0
  31. package/dist/generated/services/boosts.d.ts.map +1 -1
  32. package/dist/generated/services/boosts.js +8 -0
  33. package/dist/generated/services/boosts.js.map +1 -1
  34. package/dist/generated/services/boosts.ts +12 -0
  35. package/dist/generated/services/calendars.d.ts +47 -0
  36. package/dist/generated/services/calendars.d.ts.map +1 -0
  37. package/dist/generated/services/calendars.js +73 -0
  38. package/dist/generated/services/calendars.js.map +1 -0
  39. package/dist/generated/services/calendars.ts +102 -0
  40. package/dist/generated/services/campfires.d.ts +54 -40
  41. package/dist/generated/services/campfires.d.ts.map +1 -1
  42. package/dist/generated/services/campfires.js +82 -65
  43. package/dist/generated/services/campfires.js.map +1 -1
  44. package/dist/generated/services/campfires.ts +107 -85
  45. package/dist/generated/services/cards.d.ts +5 -0
  46. package/dist/generated/services/cards.d.ts.map +1 -1
  47. package/dist/generated/services/cards.js +4 -0
  48. package/dist/generated/services/cards.js.map +1 -1
  49. package/dist/generated/services/cards.ts +6 -0
  50. package/dist/generated/services/checkins.d.ts +14 -0
  51. package/dist/generated/services/checkins.d.ts.map +1 -1
  52. package/dist/generated/services/checkins.js +14 -1
  53. package/dist/generated/services/checkins.js.map +1 -1
  54. package/dist/generated/services/checkins.ts +20 -0
  55. package/dist/generated/services/client-approvals.d.ts +6 -3
  56. package/dist/generated/services/client-approvals.d.ts.map +1 -1
  57. package/dist/generated/services/client-approvals.js +8 -5
  58. package/dist/generated/services/client-approvals.js.map +1 -1
  59. package/dist/generated/services/client-approvals.ts +10 -5
  60. package/dist/generated/services/client-correspondences.d.ts +6 -3
  61. package/dist/generated/services/client-correspondences.d.ts.map +1 -1
  62. package/dist/generated/services/client-correspondences.js +8 -5
  63. package/dist/generated/services/client-correspondences.js.map +1 -1
  64. package/dist/generated/services/client-correspondences.ts +10 -5
  65. package/dist/generated/services/client-replies.d.ts +11 -4
  66. package/dist/generated/services/client-replies.d.ts.map +1 -1
  67. package/dist/generated/services/client-replies.js +16 -8
  68. package/dist/generated/services/client-replies.js.map +1 -1
  69. package/dist/generated/services/client-replies.ts +18 -8
  70. package/dist/generated/services/cloud-files.d.ts +92 -0
  71. package/dist/generated/services/cloud-files.d.ts.map +1 -0
  72. package/dist/generated/services/cloud-files.js +121 -0
  73. package/dist/generated/services/cloud-files.js.map +1 -0
  74. package/dist/generated/services/cloud-files.ts +188 -0
  75. package/dist/generated/services/comments.d.ts +5 -0
  76. package/dist/generated/services/comments.d.ts.map +1 -1
  77. package/dist/generated/services/comments.js +4 -0
  78. package/dist/generated/services/comments.js.map +1 -1
  79. package/dist/generated/services/comments.ts +6 -0
  80. package/dist/generated/services/documents.d.ts +12 -7
  81. package/dist/generated/services/documents.d.ts.map +1 -1
  82. package/dist/generated/services/documents.js +10 -6
  83. package/dist/generated/services/documents.js.map +1 -1
  84. package/dist/generated/services/documents.ts +14 -8
  85. package/dist/generated/services/drafts.d.ts +38 -0
  86. package/dist/generated/services/drafts.d.ts.map +1 -0
  87. package/dist/generated/services/drafts.js +40 -0
  88. package/dist/generated/services/drafts.js.map +1 -0
  89. package/dist/generated/services/drafts.ts +67 -0
  90. package/dist/generated/services/events.d.ts +5 -0
  91. package/dist/generated/services/events.d.ts.map +1 -1
  92. package/dist/generated/services/events.js +4 -0
  93. package/dist/generated/services/events.js.map +1 -1
  94. package/dist/generated/services/events.ts +6 -0
  95. package/dist/generated/services/everything.d.ts +83 -16
  96. package/dist/generated/services/everything.d.ts.map +1 -1
  97. package/dist/generated/services/everything.js +23 -13
  98. package/dist/generated/services/everything.js.map +1 -1
  99. package/dist/generated/services/everything.ts +100 -25
  100. package/dist/generated/services/folders.d.ts +96 -0
  101. package/dist/generated/services/folders.d.ts.map +1 -0
  102. package/dist/generated/services/folders.js +140 -0
  103. package/dist/generated/services/folders.js.map +1 -0
  104. package/dist/generated/services/folders.ts +201 -0
  105. package/dist/generated/services/forwards.d.ts +7 -20
  106. package/dist/generated/services/forwards.d.ts.map +1 -1
  107. package/dist/generated/services/forwards.js +6 -35
  108. package/dist/generated/services/forwards.js.map +1 -1
  109. package/dist/generated/services/forwards.ts +10 -48
  110. package/dist/generated/services/gauges.d.ts +7 -0
  111. package/dist/generated/services/gauges.d.ts.map +1 -1
  112. package/dist/generated/services/gauges.js +5 -1
  113. package/dist/generated/services/gauges.js.map +1 -1
  114. package/dist/generated/services/gauges.ts +9 -1
  115. package/dist/generated/services/google-documents.d.ts +98 -0
  116. package/dist/generated/services/google-documents.d.ts.map +1 -0
  117. package/dist/generated/services/google-documents.js +123 -0
  118. package/dist/generated/services/google-documents.js.map +1 -0
  119. package/dist/generated/services/google-documents.ts +196 -0
  120. package/dist/generated/services/index.d.ts +12 -5
  121. package/dist/generated/services/index.d.ts.map +1 -1
  122. package/dist/generated/services/index.js +12 -5
  123. package/dist/generated/services/index.js.map +1 -1
  124. package/dist/generated/services/index.ts +12 -5
  125. package/dist/generated/services/messages.d.ts +2 -0
  126. package/dist/generated/services/messages.d.ts.map +1 -1
  127. package/dist/generated/services/messages.js +1 -1
  128. package/dist/generated/services/messages.js.map +1 -1
  129. package/dist/generated/services/messages.ts +3 -1
  130. package/dist/generated/services/my-assignments.d.ts +52 -0
  131. package/dist/generated/services/my-assignments.d.ts.map +1 -1
  132. package/dist/generated/services/my-assignments.js +71 -0
  133. package/dist/generated/services/my-assignments.js.map +1 -1
  134. package/dist/generated/services/my-assignments.ts +104 -0
  135. package/dist/generated/services/my-notes.d.ts +45 -0
  136. package/dist/generated/services/my-notes.d.ts.map +1 -0
  137. package/dist/generated/services/my-notes.js +62 -0
  138. package/dist/generated/services/my-notes.js.map +1 -0
  139. package/dist/generated/services/my-notes.ts +92 -0
  140. package/dist/generated/services/my-notifications.d.ts +4 -2
  141. package/dist/generated/services/my-notifications.d.ts.map +1 -1
  142. package/dist/generated/services/my-notifications.js.map +1 -1
  143. package/dist/generated/services/my-notifications.ts +4 -2
  144. package/dist/generated/services/people.d.ts +11 -1
  145. package/dist/generated/services/people.d.ts.map +1 -1
  146. package/dist/generated/services/people.js +13 -2
  147. package/dist/generated/services/people.js.map +1 -1
  148. package/dist/generated/services/people.ts +15 -1
  149. package/dist/generated/services/projects.d.ts +26 -0
  150. package/dist/generated/services/projects.d.ts.map +1 -1
  151. package/dist/generated/services/projects.js +49 -1
  152. package/dist/generated/services/projects.js.map +1 -1
  153. package/dist/generated/services/projects.ts +61 -1
  154. package/dist/generated/services/recordings.d.ts +2 -12
  155. package/dist/generated/services/recordings.d.ts.map +1 -1
  156. package/dist/generated/services/recordings.js +1 -26
  157. package/dist/generated/services/recordings.js.map +1 -1
  158. package/dist/generated/services/recordings.ts +3 -31
  159. package/dist/generated/services/reports.d.ts +8 -12
  160. package/dist/generated/services/reports.d.ts.map +1 -1
  161. package/dist/generated/services/reports.js +11 -5
  162. package/dist/generated/services/reports.js.map +1 -1
  163. package/dist/generated/services/reports.ts +13 -14
  164. package/dist/generated/services/schedules.d.ts +94 -15
  165. package/dist/generated/services/schedules.d.ts.map +1 -1
  166. package/dist/generated/services/schedules.js +19 -8
  167. package/dist/generated/services/schedules.js.map +1 -1
  168. package/dist/generated/services/schedules.ts +107 -17
  169. package/dist/generated/services/search.d.ts +2 -0
  170. package/dist/generated/services/search.d.ts.map +1 -1
  171. package/dist/generated/services/search.js +1 -1
  172. package/dist/generated/services/search.js.map +1 -1
  173. package/dist/generated/services/search.ts +3 -1
  174. package/dist/generated/services/templates.d.ts +2 -0
  175. package/dist/generated/services/templates.d.ts.map +1 -1
  176. package/dist/generated/services/templates.js +1 -1
  177. package/dist/generated/services/templates.js.map +1 -1
  178. package/dist/generated/services/templates.ts +3 -1
  179. package/dist/generated/services/timeline.d.ts +2 -0
  180. package/dist/generated/services/timeline.d.ts.map +1 -1
  181. package/dist/generated/services/timeline.js +1 -0
  182. package/dist/generated/services/timeline.js.map +1 -1
  183. package/dist/generated/services/timeline.ts +3 -0
  184. package/dist/generated/services/timesheets.d.ts +16 -0
  185. package/dist/generated/services/timesheets.d.ts.map +1 -1
  186. package/dist/generated/services/timesheets.js +26 -2
  187. package/dist/generated/services/timesheets.js.map +1 -1
  188. package/dist/generated/services/timesheets.ts +35 -2
  189. package/dist/generated/services/todolist-groups.d.ts +11 -6
  190. package/dist/generated/services/todolist-groups.d.ts.map +1 -1
  191. package/dist/generated/services/todolist-groups.js +7 -3
  192. package/dist/generated/services/todolist-groups.js.map +1 -1
  193. package/dist/generated/services/todolist-groups.ts +13 -7
  194. package/dist/generated/services/todolists.d.ts +15 -13
  195. package/dist/generated/services/todolists.d.ts.map +1 -1
  196. package/dist/generated/services/todolists.js +11 -8
  197. package/dist/generated/services/todolists.js.map +1 -1
  198. package/dist/generated/services/todolists.ts +19 -14
  199. package/dist/generated/services/todos.d.ts +35 -12
  200. package/dist/generated/services/todos.d.ts.map +1 -1
  201. package/dist/generated/services/todos.js +47 -25
  202. package/dist/generated/services/todos.js.map +1 -1
  203. package/dist/generated/services/todos.ts +74 -30
  204. package/dist/generated/services/uploads.d.ts +5 -0
  205. package/dist/generated/services/uploads.d.ts.map +1 -1
  206. package/dist/generated/services/uploads.js +4 -0
  207. package/dist/generated/services/uploads.js.map +1 -1
  208. package/dist/generated/services/uploads.ts +6 -0
  209. package/dist/generated/services/vaults.d.ts +5 -0
  210. package/dist/generated/services/vaults.d.ts.map +1 -1
  211. package/dist/generated/services/vaults.js +4 -0
  212. package/dist/generated/services/vaults.js.map +1 -1
  213. package/dist/generated/services/vaults.ts +6 -0
  214. package/dist/hooks/otel.d.ts +1 -1
  215. package/dist/hooks/otel.js +1 -1
  216. package/dist/index.d.ts +21 -11
  217. package/dist/index.d.ts.map +1 -1
  218. package/dist/index.js +24 -9
  219. package/dist/index.js.map +1 -1
  220. package/dist/oauth/discovery.d.ts.map +1 -1
  221. package/dist/oauth/discovery.js +1 -0
  222. package/dist/oauth/discovery.js.map +1 -1
  223. package/dist/pagination-utils.d.ts +46 -0
  224. package/dist/pagination-utils.d.ts.map +1 -1
  225. package/dist/pagination-utils.js +85 -2
  226. package/dist/pagination-utils.js.map +1 -1
  227. package/dist/pagination.d.ts +12 -1
  228. package/dist/pagination.d.ts.map +1 -1
  229. package/dist/pagination.js +1 -1
  230. package/dist/pagination.js.map +1 -1
  231. package/dist/retry.d.ts +110 -0
  232. package/dist/retry.d.ts.map +1 -0
  233. package/dist/retry.js +253 -0
  234. package/dist/retry.js.map +1 -0
  235. package/dist/services/base.d.ts.map +1 -1
  236. package/dist/services/base.js +59 -5
  237. package/dist/services/base.js.map +1 -1
  238. package/dist/services/cards-extensions.d.ts +26 -21
  239. package/dist/services/cards-extensions.d.ts.map +1 -1
  240. package/dist/services/cards-extensions.js +28 -31
  241. package/dist/services/cards-extensions.js.map +1 -1
  242. package/dist/services/documents-extensions.d.ts +122 -0
  243. package/dist/services/documents-extensions.d.ts.map +1 -0
  244. package/dist/services/documents-extensions.js +125 -0
  245. package/dist/services/documents-extensions.js.map +1 -0
  246. package/dist/services/merge-safe.d.ts +167 -0
  247. package/dist/services/merge-safe.d.ts.map +1 -0
  248. package/dist/services/merge-safe.js +217 -0
  249. package/dist/services/merge-safe.js.map +1 -0
  250. package/dist/services/schedules-extensions.d.ts +266 -0
  251. package/dist/services/schedules-extensions.d.ts.map +1 -0
  252. package/dist/services/schedules-extensions.js +268 -0
  253. package/dist/services/schedules-extensions.js.map +1 -0
  254. package/dist/services/todolists-extensions.d.ts +110 -0
  255. package/dist/services/todolists-extensions.d.ts.map +1 -0
  256. package/dist/services/todolists-extensions.js +262 -0
  257. package/dist/services/todolists-extensions.js.map +1 -0
  258. package/dist/services/todos-extensions.d.ts +12 -1
  259. package/dist/services/todos-extensions.d.ts.map +1 -1
  260. package/dist/services/todos-extensions.js +27 -8
  261. package/dist/services/todos-extensions.js.map +1 -1
  262. package/package.json +5 -4
  263. package/src/generated/metadata.ts +443 -133
  264. package/src/generated/openapi-stripped.json +8999 -4907
  265. package/src/generated/path-mapping.ts +40 -16
  266. package/src/generated/schema.d.ts +5508 -2346
  267. package/src/generated/services/bookmarks.ts +158 -0
  268. package/src/generated/services/boosts.ts +12 -0
  269. package/src/generated/services/calendars.ts +102 -0
  270. package/src/generated/services/campfires.ts +107 -85
  271. package/src/generated/services/cards.ts +6 -0
  272. package/src/generated/services/checkins.ts +20 -0
  273. package/src/generated/services/client-approvals.ts +10 -5
  274. package/src/generated/services/client-correspondences.ts +10 -5
  275. package/src/generated/services/client-replies.ts +18 -8
  276. package/src/generated/services/cloud-files.ts +188 -0
  277. package/src/generated/services/comments.ts +6 -0
  278. package/src/generated/services/documents.ts +14 -8
  279. package/src/generated/services/drafts.ts +67 -0
  280. package/src/generated/services/events.ts +6 -0
  281. package/src/generated/services/everything.ts +100 -25
  282. package/src/generated/services/folders.ts +201 -0
  283. package/src/generated/services/forwards.ts +10 -48
  284. package/src/generated/services/gauges.ts +9 -1
  285. package/src/generated/services/google-documents.ts +196 -0
  286. package/src/generated/services/index.ts +12 -5
  287. package/src/generated/services/messages.ts +3 -1
  288. package/src/generated/services/my-assignments.ts +104 -0
  289. package/src/generated/services/my-notes.ts +92 -0
  290. package/src/generated/services/my-notifications.ts +4 -2
  291. package/src/generated/services/people.ts +15 -1
  292. package/src/generated/services/projects.ts +61 -1
  293. package/src/generated/services/recordings.ts +3 -31
  294. package/src/generated/services/reports.ts +13 -14
  295. package/src/generated/services/schedules.ts +107 -17
  296. package/src/generated/services/search.ts +3 -1
  297. package/src/generated/services/templates.ts +3 -1
  298. package/src/generated/services/timeline.ts +3 -0
  299. package/src/generated/services/timesheets.ts +35 -2
  300. package/src/generated/services/todolist-groups.ts +13 -7
  301. package/src/generated/services/todolists.ts +19 -14
  302. package/src/generated/services/todos.ts +74 -30
  303. package/src/generated/services/uploads.ts +6 -0
  304. package/src/generated/services/vaults.ts +6 -0
@@ -45,6 +45,8 @@ export interface MoveCardRequest {
45
45
  * Options for list.
46
46
  */
47
47
  export interface ListCardOptions extends PaginationOptions {
48
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
49
+ page?: number;
48
50
  }
49
51
 
50
52
  /**
@@ -184,6 +186,9 @@ export class CardsService extends BaseService {
184
186
  * @example
185
187
  * ```ts
186
188
  * const result = await client.cards.list(123);
189
+ *
190
+ * // With options
191
+ * const filtered = await client.cards.list(123, { page: 1 });
187
192
  * ```
188
193
  */
189
194
  async list(columnId: number, options?: ListCardOptions): Promise<ListResult<Card>> {
@@ -199,6 +204,7 @@ export class CardsService extends BaseService {
199
204
  this.client.GET("/card_tables/lists/{columnId}/cards.json", {
200
205
  params: {
201
206
  path: { columnId },
207
+ query: { page: options?.page },
202
208
  },
203
209
  })
204
210
  , options
@@ -27,6 +27,8 @@ export type Person = components["schemas"]["Person"];
27
27
  * Options for reminders.
28
28
  */
29
29
  export interface RemindersCheckinOptions extends PaginationOptions {
30
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
31
+ page?: number;
30
32
  }
31
33
 
32
34
  /**
@@ -43,6 +45,8 @@ export interface UpdateAnswerCheckinRequest {
43
45
  * Options for listQuestions.
44
46
  */
45
47
  export interface ListQuestionsCheckinOptions extends PaginationOptions {
48
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
49
+ page?: number;
46
50
  }
47
51
 
48
52
  /**
@@ -73,6 +77,8 @@ export interface UpdateQuestionCheckinRequest {
73
77
  * Options for listAnswers.
74
78
  */
75
79
  export interface ListAnswersCheckinOptions extends PaginationOptions {
80
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
81
+ page?: number;
76
82
  }
77
83
 
78
84
  /**
@@ -95,6 +101,8 @@ export interface AnswerersCheckinOptions extends PaginationOptions {
95
101
  * Options for byPerson.
96
102
  */
97
103
  export interface ByPersonCheckinOptions extends PaginationOptions {
104
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
105
+ page?: number;
98
106
  }
99
107
 
100
108
  /**
@@ -137,6 +145,9 @@ export class CheckinsService extends BaseService {
137
145
  },
138
146
  () =>
139
147
  this.client.GET("/my/question_reminders.json", {
148
+ params: {
149
+ query: { page: options?.page },
150
+ },
140
151
  })
141
152
  , options
142
153
  );
@@ -251,6 +262,9 @@ export class CheckinsService extends BaseService {
251
262
  * @example
252
263
  * ```ts
253
264
  * const result = await client.checkins.listQuestions(123);
265
+ *
266
+ * // With options
267
+ * const filtered = await client.checkins.listQuestions(123, { page: 1 });
254
268
  * ```
255
269
  */
256
270
  async listQuestions(questionnaireId: number, options?: ListQuestionsCheckinOptions): Promise<ListResult<Question>> {
@@ -266,6 +280,7 @@ export class CheckinsService extends BaseService {
266
280
  this.client.GET("/questionnaires/{questionnaireId}/questions.json", {
267
281
  params: {
268
282
  path: { questionnaireId },
283
+ query: { page: options?.page },
269
284
  },
270
285
  })
271
286
  , options
@@ -389,6 +404,9 @@ export class CheckinsService extends BaseService {
389
404
  * @example
390
405
  * ```ts
391
406
  * const result = await client.checkins.listAnswers(123);
407
+ *
408
+ * // With options
409
+ * const filtered = await client.checkins.listAnswers(123, { page: 1 });
392
410
  * ```
393
411
  */
394
412
  async listAnswers(questionId: number, options?: ListAnswersCheckinOptions): Promise<ListResult<Answer>> {
@@ -404,6 +422,7 @@ export class CheckinsService extends BaseService {
404
422
  this.client.GET("/questions/{questionId}/answers.json", {
405
423
  params: {
406
424
  path: { questionId },
425
+ query: { page: options?.page },
407
426
  },
408
427
  })
409
428
  , options
@@ -506,6 +525,7 @@ export class CheckinsService extends BaseService {
506
525
  this.client.GET("/questions/{questionId}/answers/by/{personId}", {
507
526
  params: {
508
527
  path: { questionId, personId },
528
+ query: { page: options?.page },
509
529
  },
510
530
  })
511
531
  , options
@@ -24,6 +24,8 @@ export interface ListClientApprovalOptions extends PaginationOptions {
24
24
  sort?: "created_at" | "updated_at";
25
25
  /** Filter by direction */
26
26
  direction?: "asc" | "desc";
27
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
28
+ page?: number;
27
29
  }
28
30
 
29
31
 
@@ -38,29 +40,32 @@ export class ClientApprovalsService extends BaseService {
38
40
 
39
41
  /**
40
42
  * List all client approvals in a project
43
+ * @param bucketId - The bucket ID
41
44
  * @param options - Optional query parameters
42
45
  * @returns All ClientApproval across all pages, with .meta.totalCount
43
46
  *
44
47
  * @example
45
48
  * ```ts
46
- * const result = await client.clientApprovals.list();
49
+ * const result = await client.clientApprovals.list(123);
47
50
  *
48
51
  * // With options
49
- * const filtered = await client.clientApprovals.list({ sort: "created_at" });
52
+ * const filtered = await client.clientApprovals.list(123, { sort: "created_at" });
50
53
  * ```
51
54
  */
52
- async list(options?: ListClientApprovalOptions): Promise<ListResult<ClientApproval>> {
55
+ async list(bucketId: number, options?: ListClientApprovalOptions): Promise<ListResult<ClientApproval>> {
53
56
  return this.requestPaginated(
54
57
  {
55
58
  service: "ClientApprovals",
56
59
  operation: "ListClientApprovals",
57
60
  resourceType: "client_approval",
58
61
  isMutation: false,
62
+ projectId: bucketId,
59
63
  },
60
64
  () =>
61
- this.client.GET("/client/approvals.json", {
65
+ this.client.GET("/buckets/{bucketId}/client/approvals.json", {
62
66
  params: {
63
- query: { sort: options?.sort, direction: options?.direction },
67
+ path: { bucketId },
68
+ query: { sort: options?.sort, direction: options?.direction, page: options?.page },
64
69
  },
65
70
  })
66
71
  , options
@@ -24,6 +24,8 @@ export interface ListClientCorrespondenceOptions extends PaginationOptions {
24
24
  sort?: "created_at" | "updated_at";
25
25
  /** Filter by direction */
26
26
  direction?: "asc" | "desc";
27
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
28
+ page?: number;
27
29
  }
28
30
 
29
31
 
@@ -38,29 +40,32 @@ export class ClientCorrespondencesService extends BaseService {
38
40
 
39
41
  /**
40
42
  * List all client correspondences in a project
43
+ * @param bucketId - The bucket ID
41
44
  * @param options - Optional query parameters
42
45
  * @returns All ClientCorrespondence across all pages, with .meta.totalCount
43
46
  *
44
47
  * @example
45
48
  * ```ts
46
- * const result = await client.clientCorrespondences.list();
49
+ * const result = await client.clientCorrespondences.list(123);
47
50
  *
48
51
  * // With options
49
- * const filtered = await client.clientCorrespondences.list({ sort: "created_at" });
52
+ * const filtered = await client.clientCorrespondences.list(123, { sort: "created_at" });
50
53
  * ```
51
54
  */
52
- async list(options?: ListClientCorrespondenceOptions): Promise<ListResult<ClientCorrespondence>> {
55
+ async list(bucketId: number, options?: ListClientCorrespondenceOptions): Promise<ListResult<ClientCorrespondence>> {
53
56
  return this.requestPaginated(
54
57
  {
55
58
  service: "ClientCorrespondences",
56
59
  operation: "ListClientCorrespondences",
57
60
  resourceType: "client_correspondence",
58
61
  isMutation: false,
62
+ projectId: bucketId,
59
63
  },
60
64
  () =>
61
- this.client.GET("/client/correspondences.json", {
65
+ this.client.GET("/buckets/{bucketId}/client/correspondences.json", {
62
66
  params: {
63
- query: { sort: options?.sort, direction: options?.direction },
67
+ path: { bucketId },
68
+ query: { sort: options?.sort, direction: options?.direction, page: options?.page },
64
69
  },
65
70
  })
66
71
  , options
@@ -20,6 +20,8 @@ export type ClientReply = components["schemas"]["ClientReply"];
20
20
  * Options for list.
21
21
  */
22
22
  export interface ListClientReplyOptions extends PaginationOptions {
23
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
24
+ page?: number;
23
25
  }
24
26
 
25
27
 
@@ -34,28 +36,34 @@ export class ClientRepliesService extends BaseService {
34
36
 
35
37
  /**
36
38
  * List all client replies for a recording (correspondence or approval)
39
+ * @param bucketId - The bucket ID
37
40
  * @param recordingId - The recording ID
38
41
  * @param options - Optional query parameters
39
42
  * @returns All ClientReply across all pages, with .meta.totalCount
40
43
  *
41
44
  * @example
42
45
  * ```ts
43
- * const result = await client.clientReplies.list(123);
46
+ * const result = await client.clientReplies.list(123, 123);
47
+ *
48
+ * // With options
49
+ * const filtered = await client.clientReplies.list(123, 123, { page: 1 });
44
50
  * ```
45
51
  */
46
- async list(recordingId: number, options?: ListClientReplyOptions): Promise<ListResult<ClientReply>> {
52
+ async list(bucketId: number, recordingId: number, options?: ListClientReplyOptions): Promise<ListResult<ClientReply>> {
47
53
  return this.requestPaginated(
48
54
  {
49
55
  service: "ClientReplies",
50
56
  operation: "ListClientReplies",
51
57
  resourceType: "client_replie",
52
58
  isMutation: false,
59
+ projectId: bucketId,
53
60
  resourceId: recordingId,
54
61
  },
55
62
  () =>
56
- this.client.GET("/client/recordings/{recordingId}/replies.json", {
63
+ this.client.GET("/buckets/{bucketId}/client/recordings/{recordingId}/replies.json", {
57
64
  params: {
58
- path: { recordingId },
65
+ path: { bucketId, recordingId },
66
+ query: { page: options?.page },
59
67
  },
60
68
  })
61
69
  , options
@@ -64,6 +72,7 @@ export class ClientRepliesService extends BaseService {
64
72
 
65
73
  /**
66
74
  * Get a single client reply by id
75
+ * @param bucketId - The bucket ID
67
76
  * @param recordingId - The recording ID
68
77
  * @param replyId - The reply ID
69
78
  * @returns The ClientReply
@@ -71,22 +80,23 @@ export class ClientRepliesService extends BaseService {
71
80
  *
72
81
  * @example
73
82
  * ```ts
74
- * const result = await client.clientReplies.get(123, 123);
83
+ * const result = await client.clientReplies.get(123, 123, 123);
75
84
  * ```
76
85
  */
77
- async get(recordingId: number, replyId: number): Promise<ClientReply> {
86
+ async get(bucketId: number, recordingId: number, replyId: number): Promise<ClientReply> {
78
87
  const response = await this.request(
79
88
  {
80
89
  service: "ClientReplies",
81
90
  operation: "GetClientReply",
82
91
  resourceType: "client_reply",
83
92
  isMutation: false,
93
+ projectId: bucketId,
84
94
  resourceId: replyId,
85
95
  },
86
96
  () =>
87
- this.client.GET("/client/recordings/{recordingId}/replies/{replyId}", {
97
+ this.client.GET("/buckets/{bucketId}/client/recordings/{recordingId}/replies/{replyId}", {
88
98
  params: {
89
- path: { recordingId, replyId },
99
+ path: { bucketId, recordingId, replyId },
90
100
  },
91
101
  })
92
102
  );
@@ -0,0 +1,188 @@
1
+ /**
2
+ * CloudFiles 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
+ /** CloudFile entity from the Basecamp API. */
16
+ export type CloudFile = components["schemas"]["CloudFile"];
17
+
18
+ /**
19
+ * Request parameters for createCloudFile.
20
+ */
21
+ export interface CreateCloudFileCloudFileRequest {
22
+ /** Url */
23
+ url: string;
24
+ /** Short identifier for the external service — "dropbox", "google_doc",
25
+ "figma", "other", … Derived from the CloudFile::Service subclass name, so it
26
+ is always present. `other` accepts any well-formed HTTPS URL. */
27
+ service: string;
28
+ /** Title */
29
+ title?: string;
30
+ /** Rich text description (HTML) */
31
+ description?: string;
32
+ /** Subscriptions */
33
+ subscriptions?: number[];
34
+ /** Whether the cloud file is visible to the project's clients. Applies only
35
+ when creating directly in the tool's vault — an item created inside a
36
+ folder inherits the folder's visibility and ignores this. A client caller
37
+ always creates client-visible records regardless of what is sent. */
38
+ visibleToClients?: boolean;
39
+ }
40
+
41
+ /**
42
+ * Request parameters for updateCloudFile.
43
+ */
44
+ export interface UpdateCloudFileCloudFileRequest {
45
+ /** Url */
46
+ url: string;
47
+ /** Short identifier for the external service — "dropbox", "google_doc",
48
+ "figma", "other", … Derived from the CloudFile::Service subclass name, so it
49
+ is always present. `other` accepts any well-formed HTTPS URL. */
50
+ service: string;
51
+ /** Title */
52
+ title?: string;
53
+ /** Rich text description (HTML) */
54
+ description?: string;
55
+ /** Subscriptions */
56
+ subscriptions?: number[];
57
+ }
58
+
59
+
60
+ // =============================================================================
61
+ // Service
62
+ // =============================================================================
63
+
64
+ /**
65
+ * Service for CloudFiles operations.
66
+ */
67
+ export class CloudFilesService extends BaseService {
68
+
69
+ /**
70
+ * Create a new cloud file in a vault.
71
+ * @param bucketId - The bucket ID
72
+ * @param vaultId - The vault ID
73
+ * @param req - Cloud_file creation parameters
74
+ * @returns The CloudFile
75
+ * @throws {BasecampError} If required fields are missing or invalid
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * const result = await client.cloudFiles.createCloudFile(123, 123, { url: "example", service: "example" });
80
+ * ```
81
+ */
82
+ async createCloudFile(bucketId: number, vaultId: number, req: CreateCloudFileCloudFileRequest): Promise<CloudFile> {
83
+ if (!req.url) {
84
+ throw Errors.validation("Url is required");
85
+ }
86
+ if (!req.service) {
87
+ throw Errors.validation("Service is required");
88
+ }
89
+ const response = await this.request(
90
+ {
91
+ service: "CloudFiles",
92
+ operation: "CreateCloudFile",
93
+ resourceType: "cloud_file",
94
+ isMutation: true,
95
+ projectId: bucketId,
96
+ resourceId: vaultId,
97
+ },
98
+ () =>
99
+ this.client.POST("/buckets/{bucketId}/vaults/{vaultId}/cloud_files.json", {
100
+ params: {
101
+ path: { bucketId, vaultId },
102
+ },
103
+ body: {
104
+ url: req.url,
105
+ service: req.service,
106
+ title: req.title,
107
+ description: req.description,
108
+ subscriptions: req.subscriptions,
109
+ visible_to_clients: req.visibleToClients,
110
+ },
111
+ })
112
+ );
113
+ return response;
114
+ }
115
+
116
+ /**
117
+ * Get a single cloud file by id
118
+ * @param cloudFileId - The cloud file ID
119
+ * @returns The CloudFile
120
+ *
121
+ * @example
122
+ * ```ts
123
+ * const result = await client.cloudFiles.cloudFile(123);
124
+ * ```
125
+ */
126
+ async cloudFile(cloudFileId: number): Promise<CloudFile> {
127
+ const response = await this.request(
128
+ {
129
+ service: "CloudFiles",
130
+ operation: "GetCloudFile",
131
+ resourceType: "cloud_file",
132
+ isMutation: false,
133
+ resourceId: cloudFileId,
134
+ },
135
+ () =>
136
+ this.client.GET("/cloud_files/{cloudFileId}", {
137
+ params: {
138
+ path: { cloudFileId },
139
+ },
140
+ })
141
+ );
142
+ return response;
143
+ }
144
+
145
+ /**
146
+ * Replace a cloud file with a new complete representation.
147
+ * @param cloudFileId - The cloud file ID
148
+ * @param req - Cloud_file update parameters
149
+ * @returns The CloudFile
150
+ * @throws {BasecampError} If the resource is not found or fields are invalid
151
+ *
152
+ * @example
153
+ * ```ts
154
+ * const result = await client.cloudFiles.updateCloudFile(123, { url: "example", service: "example" });
155
+ * ```
156
+ */
157
+ async updateCloudFile(cloudFileId: number, req: UpdateCloudFileCloudFileRequest): Promise<CloudFile> {
158
+ if (!req.url) {
159
+ throw Errors.validation("Url is required");
160
+ }
161
+ if (!req.service) {
162
+ throw Errors.validation("Service is required");
163
+ }
164
+ const response = await this.request(
165
+ {
166
+ service: "CloudFiles",
167
+ operation: "UpdateCloudFile",
168
+ resourceType: "cloud_file",
169
+ isMutation: true,
170
+ resourceId: cloudFileId,
171
+ },
172
+ () =>
173
+ this.client.PUT("/cloud_files/{cloudFileId}", {
174
+ params: {
175
+ path: { cloudFileId },
176
+ },
177
+ body: {
178
+ url: req.url,
179
+ service: req.service,
180
+ title: req.title,
181
+ description: req.description,
182
+ subscriptions: req.subscriptions,
183
+ },
184
+ })
185
+ );
186
+ return response;
187
+ }
188
+ }
@@ -29,6 +29,8 @@ export interface UpdateCommentRequest {
29
29
  * Options for list.
30
30
  */
31
31
  export interface ListCommentOptions extends PaginationOptions {
32
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
33
+ page?: number;
32
34
  }
33
35
 
34
36
  /**
@@ -125,6 +127,9 @@ export class CommentsService extends BaseService {
125
127
  * @example
126
128
  * ```ts
127
129
  * const result = await client.comments.list(123);
130
+ *
131
+ * // With options
132
+ * const filtered = await client.comments.list(123, { page: 1 });
128
133
  * ```
129
134
  */
130
135
  async list(recordingId: number, options?: ListCommentOptions): Promise<ListResult<Comment>> {
@@ -140,6 +145,7 @@ export class CommentsService extends BaseService {
140
145
  this.client.GET("/recordings/{recordingId}/comments.json", {
141
146
  params: {
142
147
  path: { recordingId },
148
+ query: { page: options?.page },
143
149
  },
144
150
  })
145
151
  , options
@@ -18,9 +18,9 @@ import { Errors } from "../../errors.js";
18
18
  export type Document = components["schemas"]["Document"];
19
19
 
20
20
  /**
21
- * Request parameters for update.
21
+ * Request parameters for replace.
22
22
  */
23
- export interface UpdateDocumentRequest {
23
+ export interface ReplaceDocumentRequest {
24
24
  /** Title */
25
25
  title?: string;
26
26
  /** Text content */
@@ -31,6 +31,8 @@ export interface UpdateDocumentRequest {
31
31
  * Options for list.
32
32
  */
33
33
  export interface ListDocumentOptions extends PaginationOptions {
34
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
35
+ page?: number;
34
36
  }
35
37
 
36
38
  /**
@@ -90,22 +92,22 @@ export class DocumentsService extends BaseService {
90
92
  }
91
93
 
92
94
  /**
93
- * Update an existing document
95
+ * Replace a document with a new complete representation.
94
96
  * @param documentId - The document ID
95
- * @param req - Document update parameters
97
+ * @param req - Document request parameters
96
98
  * @returns The Document
97
- * @throws {BasecampError} If the resource is not found or fields are invalid
99
+ * @throws {BasecampError} If the request fails
98
100
  *
99
101
  * @example
100
102
  * ```ts
101
- * const result = await client.documents.update(123, { });
103
+ * const result = await client.documents.replace(123, { });
102
104
  * ```
103
105
  */
104
- async update(documentId: number, req: UpdateDocumentRequest): Promise<Document> {
106
+ async replace(documentId: number, req: ReplaceDocumentRequest): Promise<Document> {
105
107
  const response = await this.request(
106
108
  {
107
109
  service: "Documents",
108
- operation: "UpdateDocument",
110
+ operation: "ReplaceDocument",
109
111
  resourceType: "document",
110
112
  isMutation: true,
111
113
  resourceId: documentId,
@@ -133,6 +135,9 @@ export class DocumentsService extends BaseService {
133
135
  * @example
134
136
  * ```ts
135
137
  * const result = await client.documents.list(123);
138
+ *
139
+ * // With options
140
+ * const filtered = await client.documents.list(123, { page: 1 });
136
141
  * ```
137
142
  */
138
143
  async list(vaultId: number, options?: ListDocumentOptions): Promise<ListResult<Document>> {
@@ -148,6 +153,7 @@ export class DocumentsService extends BaseService {
148
153
  this.client.GET("/vaults/{vaultId}/documents.json", {
149
154
  params: {
150
155
  path: { vaultId },
156
+ query: { page: options?.page },
151
157
  },
152
158
  })
153
159
  , options
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Drafts 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
+ /** Draft entity from the Basecamp API. */
17
+ export type Draft = components["schemas"]["Draft"];
18
+
19
+ /**
20
+ * Options for listMyDrafts.
21
+ */
22
+ export interface ListMyDraftsDraftOptions extends PaginationOptions {
23
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
24
+ page?: number;
25
+ }
26
+
27
+
28
+ // =============================================================================
29
+ // Service
30
+ // =============================================================================
31
+
32
+ /**
33
+ * Service for Drafts operations.
34
+ */
35
+ export class DraftsService extends BaseService {
36
+
37
+ /**
38
+ * List the current user's drafts across their active projects, most recently
39
+ * @param options - Optional query parameters
40
+ * @returns All Draft across all pages, with .meta.totalCount
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * const result = await client.drafts.listMyDrafts();
45
+ *
46
+ * // With options
47
+ * const filtered = await client.drafts.listMyDrafts({ page: 1 });
48
+ * ```
49
+ */
50
+ async listMyDrafts(options?: ListMyDraftsDraftOptions): Promise<ListResult<Draft>> {
51
+ return this.requestPaginated(
52
+ {
53
+ service: "Drafts",
54
+ operation: "ListMyDrafts",
55
+ resourceType: "my_draft",
56
+ isMutation: false,
57
+ },
58
+ () =>
59
+ this.client.GET("/my/drafts.json", {
60
+ params: {
61
+ query: { page: options?.page },
62
+ },
63
+ })
64
+ , options
65
+ );
66
+ }
67
+ }
@@ -20,6 +20,8 @@ export type Event = components["schemas"]["Event"];
20
20
  * Options for list.
21
21
  */
22
22
  export interface ListEventOptions extends PaginationOptions {
23
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
24
+ page?: number;
23
25
  }
24
26
 
25
27
 
@@ -41,6 +43,9 @@ export class EventsService extends BaseService {
41
43
  * @example
42
44
  * ```ts
43
45
  * const result = await client.events.list(123);
46
+ *
47
+ * // With options
48
+ * const filtered = await client.events.list(123, { page: 1 });
44
49
  * ```
45
50
  */
46
51
  async list(recordingId: number, options?: ListEventOptions): Promise<ListResult<Event>> {
@@ -56,6 +61,7 @@ export class EventsService extends BaseService {
56
61
  this.client.GET("/recordings/{recordingId}/events.json", {
57
62
  params: {
58
63
  path: { recordingId },
64
+ query: { page: options?.page },
59
65
  },
60
66
  })
61
67
  , options