@37signals/basecamp 0.12.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 (278) hide show
  1. package/README.md +112 -16
  2. package/dist/.build-complete +0 -0
  3. package/dist/client.d.ts +53 -11
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +132 -150
  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 +18 -0
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js +127 -14
  14. package/dist/errors.js.map +1 -1
  15. package/dist/generated/metadata.d.ts.map +1 -1
  16. package/dist/generated/metadata.js +280 -141
  17. package/dist/generated/metadata.js.map +1 -1
  18. package/dist/generated/metadata.ts +280 -141
  19. package/dist/generated/openapi-stripped.json +6435 -4283
  20. package/dist/generated/path-mapping.d.ts.map +1 -1
  21. package/dist/generated/path-mapping.js +27 -16
  22. package/dist/generated/path-mapping.js.map +1 -1
  23. package/dist/generated/path-mapping.ts +27 -16
  24. package/dist/generated/schema.d.ts +4283 -2457
  25. package/dist/generated/services/bookmarks.d.ts +1 -1
  26. package/dist/generated/services/bookmarks.d.ts.map +1 -1
  27. package/dist/generated/services/bookmarks.ts +1 -1
  28. package/dist/generated/services/boosts.d.ts +10 -0
  29. package/dist/generated/services/boosts.d.ts.map +1 -1
  30. package/dist/generated/services/boosts.js +8 -0
  31. package/dist/generated/services/boosts.js.map +1 -1
  32. package/dist/generated/services/boosts.ts +12 -0
  33. package/dist/generated/services/campfires.d.ts +54 -40
  34. package/dist/generated/services/campfires.d.ts.map +1 -1
  35. package/dist/generated/services/campfires.js +82 -65
  36. package/dist/generated/services/campfires.js.map +1 -1
  37. package/dist/generated/services/campfires.ts +107 -85
  38. package/dist/generated/services/cards.d.ts +5 -0
  39. package/dist/generated/services/cards.d.ts.map +1 -1
  40. package/dist/generated/services/cards.js +4 -0
  41. package/dist/generated/services/cards.js.map +1 -1
  42. package/dist/generated/services/cards.ts +6 -0
  43. package/dist/generated/services/checkins.d.ts +14 -0
  44. package/dist/generated/services/checkins.d.ts.map +1 -1
  45. package/dist/generated/services/checkins.js +14 -1
  46. package/dist/generated/services/checkins.js.map +1 -1
  47. package/dist/generated/services/checkins.ts +20 -0
  48. package/dist/generated/services/client-approvals.d.ts +6 -3
  49. package/dist/generated/services/client-approvals.d.ts.map +1 -1
  50. package/dist/generated/services/client-approvals.js +8 -5
  51. package/dist/generated/services/client-approvals.js.map +1 -1
  52. package/dist/generated/services/client-approvals.ts +10 -5
  53. package/dist/generated/services/client-correspondences.d.ts +6 -3
  54. package/dist/generated/services/client-correspondences.d.ts.map +1 -1
  55. package/dist/generated/services/client-correspondences.js +8 -5
  56. package/dist/generated/services/client-correspondences.js.map +1 -1
  57. package/dist/generated/services/client-correspondences.ts +10 -5
  58. package/dist/generated/services/client-replies.d.ts +11 -4
  59. package/dist/generated/services/client-replies.d.ts.map +1 -1
  60. package/dist/generated/services/client-replies.js +16 -8
  61. package/dist/generated/services/client-replies.js.map +1 -1
  62. package/dist/generated/services/client-replies.ts +18 -8
  63. package/dist/generated/services/cloud-files.d.ts +92 -0
  64. package/dist/generated/services/cloud-files.d.ts.map +1 -0
  65. package/dist/generated/services/cloud-files.js +121 -0
  66. package/dist/generated/services/cloud-files.js.map +1 -0
  67. package/dist/generated/services/cloud-files.ts +188 -0
  68. package/dist/generated/services/comments.d.ts +5 -0
  69. package/dist/generated/services/comments.d.ts.map +1 -1
  70. package/dist/generated/services/comments.js +4 -0
  71. package/dist/generated/services/comments.js.map +1 -1
  72. package/dist/generated/services/comments.ts +6 -0
  73. package/dist/generated/services/documents.d.ts +12 -7
  74. package/dist/generated/services/documents.d.ts.map +1 -1
  75. package/dist/generated/services/documents.js +10 -6
  76. package/dist/generated/services/documents.js.map +1 -1
  77. package/dist/generated/services/documents.ts +14 -8
  78. package/dist/generated/services/drafts.d.ts +1 -1
  79. package/dist/generated/services/drafts.d.ts.map +1 -1
  80. package/dist/generated/services/drafts.ts +1 -1
  81. package/dist/generated/services/events.d.ts +5 -0
  82. package/dist/generated/services/events.d.ts.map +1 -1
  83. package/dist/generated/services/events.js +4 -0
  84. package/dist/generated/services/events.js.map +1 -1
  85. package/dist/generated/services/events.ts +6 -0
  86. package/dist/generated/services/everything.d.ts +14 -14
  87. package/dist/generated/services/everything.d.ts.map +1 -1
  88. package/dist/generated/services/everything.ts +14 -14
  89. package/dist/generated/services/folders.d.ts +96 -0
  90. package/dist/generated/services/folders.d.ts.map +1 -0
  91. package/dist/generated/services/folders.js +140 -0
  92. package/dist/generated/services/folders.js.map +1 -0
  93. package/dist/generated/services/folders.ts +201 -0
  94. package/dist/generated/services/forwards.d.ts +7 -20
  95. package/dist/generated/services/forwards.d.ts.map +1 -1
  96. package/dist/generated/services/forwards.js +6 -35
  97. package/dist/generated/services/forwards.js.map +1 -1
  98. package/dist/generated/services/forwards.ts +10 -48
  99. package/dist/generated/services/gauges.d.ts +7 -0
  100. package/dist/generated/services/gauges.d.ts.map +1 -1
  101. package/dist/generated/services/gauges.js +5 -1
  102. package/dist/generated/services/gauges.js.map +1 -1
  103. package/dist/generated/services/gauges.ts +9 -1
  104. package/dist/generated/services/google-documents.d.ts +98 -0
  105. package/dist/generated/services/google-documents.d.ts.map +1 -0
  106. package/dist/generated/services/google-documents.js +123 -0
  107. package/dist/generated/services/google-documents.js.map +1 -0
  108. package/dist/generated/services/google-documents.ts +196 -0
  109. package/dist/generated/services/index.d.ts +7 -4
  110. package/dist/generated/services/index.d.ts.map +1 -1
  111. package/dist/generated/services/index.js +7 -4
  112. package/dist/generated/services/index.js.map +1 -1
  113. package/dist/generated/services/index.ts +7 -4
  114. package/dist/generated/services/messages.d.ts +2 -0
  115. package/dist/generated/services/messages.d.ts.map +1 -1
  116. package/dist/generated/services/messages.js +1 -1
  117. package/dist/generated/services/messages.js.map +1 -1
  118. package/dist/generated/services/messages.ts +3 -1
  119. package/dist/generated/services/my-notes.d.ts +1 -1
  120. package/dist/generated/services/my-notes.js +1 -1
  121. package/dist/generated/services/my-notes.ts +1 -1
  122. package/dist/generated/services/my-notifications.d.ts +4 -2
  123. package/dist/generated/services/my-notifications.d.ts.map +1 -1
  124. package/dist/generated/services/my-notifications.js.map +1 -1
  125. package/dist/generated/services/my-notifications.ts +4 -2
  126. package/dist/generated/services/people.d.ts +11 -1
  127. package/dist/generated/services/people.d.ts.map +1 -1
  128. package/dist/generated/services/people.js +13 -2
  129. package/dist/generated/services/people.js.map +1 -1
  130. package/dist/generated/services/people.ts +15 -1
  131. package/dist/generated/services/projects.d.ts +26 -0
  132. package/dist/generated/services/projects.d.ts.map +1 -1
  133. package/dist/generated/services/projects.js +49 -1
  134. package/dist/generated/services/projects.js.map +1 -1
  135. package/dist/generated/services/projects.ts +61 -1
  136. package/dist/generated/services/recordings.d.ts +2 -12
  137. package/dist/generated/services/recordings.d.ts.map +1 -1
  138. package/dist/generated/services/recordings.js +1 -26
  139. package/dist/generated/services/recordings.js.map +1 -1
  140. package/dist/generated/services/recordings.ts +3 -31
  141. package/dist/generated/services/reports.d.ts +8 -12
  142. package/dist/generated/services/reports.d.ts.map +1 -1
  143. package/dist/generated/services/reports.js +11 -5
  144. package/dist/generated/services/reports.js.map +1 -1
  145. package/dist/generated/services/reports.ts +13 -14
  146. package/dist/generated/services/schedules.d.ts +94 -15
  147. package/dist/generated/services/schedules.d.ts.map +1 -1
  148. package/dist/generated/services/schedules.js +19 -8
  149. package/dist/generated/services/schedules.js.map +1 -1
  150. package/dist/generated/services/schedules.ts +107 -17
  151. package/dist/generated/services/search.d.ts +2 -0
  152. package/dist/generated/services/search.d.ts.map +1 -1
  153. package/dist/generated/services/search.js +1 -1
  154. package/dist/generated/services/search.js.map +1 -1
  155. package/dist/generated/services/search.ts +3 -1
  156. package/dist/generated/services/templates.d.ts +2 -0
  157. package/dist/generated/services/templates.d.ts.map +1 -1
  158. package/dist/generated/services/templates.js +1 -1
  159. package/dist/generated/services/templates.js.map +1 -1
  160. package/dist/generated/services/templates.ts +3 -1
  161. package/dist/generated/services/timeline.d.ts +2 -0
  162. package/dist/generated/services/timeline.d.ts.map +1 -1
  163. package/dist/generated/services/timeline.js +1 -0
  164. package/dist/generated/services/timeline.js.map +1 -1
  165. package/dist/generated/services/timeline.ts +3 -0
  166. package/dist/generated/services/timesheets.d.ts +16 -0
  167. package/dist/generated/services/timesheets.d.ts.map +1 -1
  168. package/dist/generated/services/timesheets.js +26 -2
  169. package/dist/generated/services/timesheets.js.map +1 -1
  170. package/dist/generated/services/timesheets.ts +35 -2
  171. package/dist/generated/services/todolist-groups.d.ts +11 -6
  172. package/dist/generated/services/todolist-groups.d.ts.map +1 -1
  173. package/dist/generated/services/todolist-groups.js +7 -3
  174. package/dist/generated/services/todolist-groups.js.map +1 -1
  175. package/dist/generated/services/todolist-groups.ts +13 -7
  176. package/dist/generated/services/todolists.d.ts +15 -13
  177. package/dist/generated/services/todolists.d.ts.map +1 -1
  178. package/dist/generated/services/todolists.js +11 -8
  179. package/dist/generated/services/todolists.js.map +1 -1
  180. package/dist/generated/services/todolists.ts +19 -14
  181. package/dist/generated/services/todos.d.ts +2 -12
  182. package/dist/generated/services/todos.d.ts.map +1 -1
  183. package/dist/generated/services/todos.js +1 -25
  184. package/dist/generated/services/todos.js.map +1 -1
  185. package/dist/generated/services/todos.ts +3 -30
  186. package/dist/generated/services/uploads.d.ts +5 -0
  187. package/dist/generated/services/uploads.d.ts.map +1 -1
  188. package/dist/generated/services/uploads.js +4 -0
  189. package/dist/generated/services/uploads.js.map +1 -1
  190. package/dist/generated/services/uploads.ts +6 -0
  191. package/dist/generated/services/vaults.d.ts +5 -0
  192. package/dist/generated/services/vaults.d.ts.map +1 -1
  193. package/dist/generated/services/vaults.js +4 -0
  194. package/dist/generated/services/vaults.js.map +1 -1
  195. package/dist/generated/services/vaults.ts +6 -0
  196. package/dist/index.d.ts +15 -9
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +19 -8
  199. package/dist/index.js.map +1 -1
  200. package/dist/pagination-utils.d.ts +46 -0
  201. package/dist/pagination-utils.d.ts.map +1 -1
  202. package/dist/pagination-utils.js +85 -2
  203. package/dist/pagination-utils.js.map +1 -1
  204. package/dist/pagination.d.ts +11 -0
  205. package/dist/pagination.d.ts.map +1 -1
  206. package/dist/pagination.js.map +1 -1
  207. package/dist/retry.d.ts +110 -0
  208. package/dist/retry.d.ts.map +1 -0
  209. package/dist/retry.js +253 -0
  210. package/dist/retry.js.map +1 -0
  211. package/dist/services/base.d.ts.map +1 -1
  212. package/dist/services/base.js +59 -5
  213. package/dist/services/base.js.map +1 -1
  214. package/dist/services/cards-extensions.d.ts +26 -21
  215. package/dist/services/cards-extensions.d.ts.map +1 -1
  216. package/dist/services/cards-extensions.js +28 -31
  217. package/dist/services/cards-extensions.js.map +1 -1
  218. package/dist/services/documents-extensions.d.ts +122 -0
  219. package/dist/services/documents-extensions.d.ts.map +1 -0
  220. package/dist/services/documents-extensions.js +125 -0
  221. package/dist/services/documents-extensions.js.map +1 -0
  222. package/dist/services/merge-safe.d.ts +167 -0
  223. package/dist/services/merge-safe.d.ts.map +1 -0
  224. package/dist/services/merge-safe.js +217 -0
  225. package/dist/services/merge-safe.js.map +1 -0
  226. package/dist/services/schedules-extensions.d.ts +266 -0
  227. package/dist/services/schedules-extensions.d.ts.map +1 -0
  228. package/dist/services/schedules-extensions.js +268 -0
  229. package/dist/services/schedules-extensions.js.map +1 -0
  230. package/dist/services/todolists-extensions.d.ts +110 -0
  231. package/dist/services/todolists-extensions.d.ts.map +1 -0
  232. package/dist/services/todolists-extensions.js +262 -0
  233. package/dist/services/todolists-extensions.js.map +1 -0
  234. package/dist/services/todos-extensions.d.ts +12 -1
  235. package/dist/services/todos-extensions.d.ts.map +1 -1
  236. package/dist/services/todos-extensions.js +27 -8
  237. package/dist/services/todos-extensions.js.map +1 -1
  238. package/package.json +5 -4
  239. package/src/generated/metadata.ts +280 -141
  240. package/src/generated/openapi-stripped.json +6435 -4283
  241. package/src/generated/path-mapping.ts +27 -16
  242. package/src/generated/schema.d.ts +4283 -2457
  243. package/src/generated/services/bookmarks.ts +1 -1
  244. package/src/generated/services/boosts.ts +12 -0
  245. package/src/generated/services/campfires.ts +107 -85
  246. package/src/generated/services/cards.ts +6 -0
  247. package/src/generated/services/checkins.ts +20 -0
  248. package/src/generated/services/client-approvals.ts +10 -5
  249. package/src/generated/services/client-correspondences.ts +10 -5
  250. package/src/generated/services/client-replies.ts +18 -8
  251. package/src/generated/services/cloud-files.ts +188 -0
  252. package/src/generated/services/comments.ts +6 -0
  253. package/src/generated/services/documents.ts +14 -8
  254. package/src/generated/services/drafts.ts +1 -1
  255. package/src/generated/services/events.ts +6 -0
  256. package/src/generated/services/everything.ts +14 -14
  257. package/src/generated/services/folders.ts +201 -0
  258. package/src/generated/services/forwards.ts +10 -48
  259. package/src/generated/services/gauges.ts +9 -1
  260. package/src/generated/services/google-documents.ts +196 -0
  261. package/src/generated/services/index.ts +7 -4
  262. package/src/generated/services/messages.ts +3 -1
  263. package/src/generated/services/my-notes.ts +1 -1
  264. package/src/generated/services/my-notifications.ts +4 -2
  265. package/src/generated/services/people.ts +15 -1
  266. package/src/generated/services/projects.ts +61 -1
  267. package/src/generated/services/recordings.ts +3 -31
  268. package/src/generated/services/reports.ts +13 -14
  269. package/src/generated/services/schedules.ts +107 -17
  270. package/src/generated/services/search.ts +3 -1
  271. package/src/generated/services/templates.ts +3 -1
  272. package/src/generated/services/timeline.ts +3 -0
  273. package/src/generated/services/timesheets.ts +35 -2
  274. package/src/generated/services/todolist-groups.ts +13 -7
  275. package/src/generated/services/todolists.ts +19 -14
  276. package/src/generated/services/todos.ts +3 -30
  277. package/src/generated/services/uploads.ts +6 -0
  278. package/src/generated/services/vaults.ts +6 -0
@@ -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
@@ -20,7 +20,7 @@ export type Draft = components["schemas"]["Draft"];
20
20
  * Options for listMyDrafts.
21
21
  */
22
22
  export interface ListMyDraftsDraftOptions extends PaginationOptions {
23
- /** Page number for paginating through results. Defaults to 1. */
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
24
  page?: number;
25
25
  }
26
26
 
@@ -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
@@ -35,7 +35,7 @@ Assignees on nested steps are not considered. */
35
35
  assigneeIds?: number[];
36
36
  /** Filter by due date: with, without, or overdue. Unrecognized values are ignored. */
37
37
  due?: string;
38
- /** Page number for paginating through results. Defaults to 1. */
38
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
39
39
  page?: number;
40
40
  }
41
41
 
@@ -48,7 +48,7 @@ Assignees on nested steps are not considered. */
48
48
  assigneeIds?: number[];
49
49
  /** Filter by due date: with, without, or overdue. Unrecognized values are ignored. */
50
50
  due?: string;
51
- /** Page number for paginating through results. Defaults to 1. */
51
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
52
52
  page?: number;
53
53
  }
54
54
 
@@ -61,7 +61,7 @@ Assignees on nested steps are not considered. */
61
61
  assigneeIds?: number[];
62
62
  /** Filter by due date: with, without, or overdue. Unrecognized values are ignored. */
63
63
  due?: string;
64
- /** Page number for paginating through results. Defaults to 1. */
64
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
65
65
  page?: number;
66
66
  }
67
67
 
@@ -74,7 +74,7 @@ Assignees on nested steps are not considered. */
74
74
  assigneeIds?: number[];
75
75
  /** Filter by due date: with, without, or overdue. Unrecognized values are ignored. */
76
76
  due?: string;
77
- /** Page number for paginating through results. Defaults to 1. */
77
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
78
78
  page?: number;
79
79
  }
80
80
 
@@ -98,7 +98,7 @@ Assignees on nested steps are not considered. */
98
98
  assigneeIds?: number[];
99
99
  /** Filter by due date: with, without, or overdue. Unrecognized values are ignored. */
100
100
  due?: string;
101
- /** Page number for paginating through results. Defaults to 1. */
101
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
102
102
  page?: number;
103
103
  }
104
104
 
@@ -106,7 +106,7 @@ Assignees on nested steps are not considered. */
106
106
  * Options for everythingCheckins.
107
107
  */
108
108
  export interface EverythingCheckinsEverythingOptions extends PaginationOptions {
109
- /** Page number for paginating through results. Defaults to 1. */
109
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
110
110
  page?: number;
111
111
  }
112
112
 
@@ -114,7 +114,7 @@ export interface EverythingCheckinsEverythingOptions extends PaginationOptions {
114
114
  * Options for everythingComments.
115
115
  */
116
116
  export interface EverythingCommentsEverythingOptions extends PaginationOptions {
117
- /** Page number for paginating through results. Defaults to 1. */
117
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
118
118
  page?: number;
119
119
  }
120
120
 
@@ -126,7 +126,7 @@ export interface EverythingFilesEverythingOptions extends PaginationOptions {
126
126
  kind?: string;
127
127
  /** Restrict to files created by the given people (repeatable). */
128
128
  peopleIds?: number[];
129
- /** Page number for paginating through results. Defaults to 1. */
129
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
130
130
  page?: number;
131
131
  }
132
132
 
@@ -134,7 +134,7 @@ export interface EverythingFilesEverythingOptions extends PaginationOptions {
134
134
  * Options for everythingForwards.
135
135
  */
136
136
  export interface EverythingForwardsEverythingOptions extends PaginationOptions {
137
- /** Page number for paginating through results. Defaults to 1. */
137
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
138
138
  page?: number;
139
139
  }
140
140
 
@@ -142,7 +142,7 @@ export interface EverythingForwardsEverythingOptions extends PaginationOptions {
142
142
  * Options for everythingMessages.
143
143
  */
144
144
  export interface EverythingMessagesEverythingOptions extends PaginationOptions {
145
- /** Page number for paginating through results. Defaults to 1. */
145
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
146
146
  page?: number;
147
147
  }
148
148
 
@@ -155,7 +155,7 @@ Assignees on nested steps are not considered. */
155
155
  assigneeIds?: number[];
156
156
  /** Filter by due date: with, without, or overdue. Unrecognized values are ignored. */
157
157
  due?: string;
158
- /** Page number for paginating through results. Defaults to 1. */
158
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
159
159
  page?: number;
160
160
  }
161
161
 
@@ -168,7 +168,7 @@ Assignees on nested steps are not considered. */
168
168
  assigneeIds?: number[];
169
169
  /** Filter by due date: with, without, or overdue. Unrecognized values are ignored. */
170
170
  due?: string;
171
- /** Page number for paginating through results. Defaults to 1. */
171
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
172
172
  page?: number;
173
173
  }
174
174
 
@@ -181,7 +181,7 @@ Assignees on nested steps are not considered. */
181
181
  assigneeIds?: number[];
182
182
  /** Filter by due date: with, without, or overdue. Unrecognized values are ignored. */
183
183
  due?: string;
184
- /** Page number for paginating through results. Defaults to 1. */
184
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
185
185
  page?: number;
186
186
  }
187
187
 
@@ -205,7 +205,7 @@ Assignees on nested steps are not considered. */
205
205
  assigneeIds?: number[];
206
206
  /** Filter by due date: with, without, or overdue. Unrecognized values are ignored. */
207
207
  due?: string;
208
- /** Page number for paginating through results. Defaults to 1. */
208
+ /** Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8. */
209
209
  page?: number;
210
210
  }
211
211