@37signals/basecamp 0.20.0 → 0.22.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 (179) hide show
  1. package/README.md +1 -0
  2. package/dist/client.d.ts +5 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +5 -2
  5. package/dist/client.js.map +1 -1
  6. package/dist/generated/metadata.d.ts.map +1 -1
  7. package/dist/generated/metadata.js +176 -2
  8. package/dist/generated/metadata.js.map +1 -1
  9. package/dist/generated/metadata.ts +176 -2
  10. package/dist/generated/openapi-stripped.json +2882 -1276
  11. package/dist/generated/path-mapping.d.ts.map +1 -1
  12. package/dist/generated/path-mapping.js +15 -1
  13. package/dist/generated/path-mapping.js.map +1 -1
  14. package/dist/generated/path-mapping.ts +15 -1
  15. package/dist/generated/person-id-sites.d.ts.map +1 -1
  16. package/dist/generated/person-id-sites.js +61 -2
  17. package/dist/generated/person-id-sites.js.map +1 -1
  18. package/dist/generated/person-id-sites.ts +61 -2
  19. package/dist/generated/schema.d.ts +1406 -92
  20. package/dist/generated/services/bookmarks.d.ts +1 -1
  21. package/dist/generated/services/bookmarks.js +1 -1
  22. package/dist/generated/services/bookmarks.ts +1 -1
  23. package/dist/generated/services/boosts.d.ts +2 -2
  24. package/dist/generated/services/boosts.js +2 -2
  25. package/dist/generated/services/boosts.ts +2 -2
  26. package/dist/generated/services/campfires.d.ts +4 -4
  27. package/dist/generated/services/campfires.js +4 -4
  28. package/dist/generated/services/campfires.ts +4 -4
  29. package/dist/generated/services/card-steps.d.ts +15 -11
  30. package/dist/generated/services/card-steps.d.ts.map +1 -1
  31. package/dist/generated/services/card-steps.js +4 -4
  32. package/dist/generated/services/card-steps.js.map +1 -1
  33. package/dist/generated/services/card-steps.ts +15 -11
  34. package/dist/generated/services/cards.d.ts +1 -1
  35. package/dist/generated/services/cards.js +1 -1
  36. package/dist/generated/services/cards.ts +1 -1
  37. package/dist/generated/services/checkins.d.ts +9 -8
  38. package/dist/generated/services/checkins.d.ts.map +1 -1
  39. package/dist/generated/services/checkins.js +6 -6
  40. package/dist/generated/services/checkins.js.map +1 -1
  41. package/dist/generated/services/checkins.ts +11 -10
  42. package/dist/generated/services/client-approvals.d.ts +1 -1
  43. package/dist/generated/services/client-approvals.js +1 -1
  44. package/dist/generated/services/client-approvals.ts +1 -1
  45. package/dist/generated/services/client-correspondences.d.ts +1 -1
  46. package/dist/generated/services/client-correspondences.js +1 -1
  47. package/dist/generated/services/client-correspondences.ts +1 -1
  48. package/dist/generated/services/client-replies.d.ts +1 -1
  49. package/dist/generated/services/client-replies.js +1 -1
  50. package/dist/generated/services/client-replies.ts +1 -1
  51. package/dist/generated/services/comments.d.ts +1 -1
  52. package/dist/generated/services/comments.js +1 -1
  53. package/dist/generated/services/comments.ts +1 -1
  54. package/dist/generated/services/documents.d.ts +1 -1
  55. package/dist/generated/services/documents.js +1 -1
  56. package/dist/generated/services/documents.ts +1 -1
  57. package/dist/generated/services/drafts.d.ts +1 -1
  58. package/dist/generated/services/drafts.js +1 -1
  59. package/dist/generated/services/drafts.ts +1 -1
  60. package/dist/generated/services/events.d.ts +1 -1
  61. package/dist/generated/services/events.js +1 -1
  62. package/dist/generated/services/events.ts +1 -1
  63. package/dist/generated/services/everything.d.ts +14 -14
  64. package/dist/generated/services/everything.js +14 -14
  65. package/dist/generated/services/everything.ts +14 -14
  66. package/dist/generated/services/forwards.d.ts +2 -2
  67. package/dist/generated/services/forwards.js +2 -2
  68. package/dist/generated/services/forwards.ts +2 -2
  69. package/dist/generated/services/index.d.ts +2 -1
  70. package/dist/generated/services/index.d.ts.map +1 -1
  71. package/dist/generated/services/index.js +2 -1
  72. package/dist/generated/services/index.js.map +1 -1
  73. package/dist/generated/services/index.ts +2 -1
  74. package/dist/generated/services/message-types.d.ts +1 -1
  75. package/dist/generated/services/message-types.js +1 -1
  76. package/dist/generated/services/message-types.ts +1 -1
  77. package/dist/generated/services/messages.d.ts +1 -1
  78. package/dist/generated/services/messages.js +1 -1
  79. package/dist/generated/services/messages.ts +1 -1
  80. package/dist/generated/services/my-notifications.d.ts +3 -2
  81. package/dist/generated/services/my-notifications.d.ts.map +1 -1
  82. package/dist/generated/services/my-notifications.js +1 -1
  83. package/dist/generated/services/my-notifications.js.map +1 -1
  84. package/dist/generated/services/my-notifications.ts +3 -2
  85. package/dist/generated/services/people.d.ts +3 -3
  86. package/dist/generated/services/people.js +3 -3
  87. package/dist/generated/services/people.ts +3 -3
  88. package/dist/generated/services/projects.d.ts +1 -1
  89. package/dist/generated/services/projects.js +1 -1
  90. package/dist/generated/services/projects.ts +1 -1
  91. package/dist/generated/services/recordings.d.ts +27 -3
  92. package/dist/generated/services/recordings.d.ts.map +1 -1
  93. package/dist/generated/services/recordings.js +32 -3
  94. package/dist/generated/services/recordings.js.map +1 -1
  95. package/dist/generated/services/recordings.ts +49 -3
  96. package/dist/generated/services/reports.d.ts +1 -1
  97. package/dist/generated/services/reports.js +1 -1
  98. package/dist/generated/services/reports.ts +1 -1
  99. package/dist/generated/services/schedules.d.ts +1 -1
  100. package/dist/generated/services/schedules.js +1 -1
  101. package/dist/generated/services/schedules.ts +1 -1
  102. package/dist/generated/services/subtasks.d.ts +157 -0
  103. package/dist/generated/services/subtasks.d.ts.map +1 -0
  104. package/dist/generated/services/subtasks.js +240 -0
  105. package/dist/generated/services/subtasks.js.map +1 -0
  106. package/dist/generated/services/subtasks.ts +336 -0
  107. package/dist/generated/services/templates.d.ts +114 -10
  108. package/dist/generated/services/templates.d.ts.map +1 -1
  109. package/dist/generated/services/templates.js +147 -10
  110. package/dist/generated/services/templates.js.map +1 -1
  111. package/dist/generated/services/templates.ts +220 -13
  112. package/dist/generated/services/timeline.d.ts +1 -1
  113. package/dist/generated/services/timeline.js +1 -1
  114. package/dist/generated/services/timeline.ts +1 -1
  115. package/dist/generated/services/timesheets.d.ts +3 -3
  116. package/dist/generated/services/timesheets.js +3 -3
  117. package/dist/generated/services/timesheets.ts +3 -3
  118. package/dist/generated/services/todolist-groups.d.ts +1 -1
  119. package/dist/generated/services/todolist-groups.js +1 -1
  120. package/dist/generated/services/todolist-groups.ts +1 -1
  121. package/dist/generated/services/todolists.d.ts +1 -1
  122. package/dist/generated/services/todolists.js +1 -1
  123. package/dist/generated/services/todolists.ts +1 -1
  124. package/dist/generated/services/todos.d.ts +1 -1
  125. package/dist/generated/services/todos.js +1 -1
  126. package/dist/generated/services/todos.ts +1 -1
  127. package/dist/generated/services/uploads.d.ts +2 -2
  128. package/dist/generated/services/uploads.js +2 -2
  129. package/dist/generated/services/uploads.ts +2 -2
  130. package/dist/generated/services/vaults.d.ts +1 -1
  131. package/dist/generated/services/vaults.js +1 -1
  132. package/dist/generated/services/vaults.ts +1 -1
  133. package/dist/generated/services/webhooks.d.ts +1 -1
  134. package/dist/generated/services/webhooks.js +1 -1
  135. package/dist/generated/services/webhooks.ts +1 -1
  136. package/dist/index.d.ts +3 -2
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +3 -0
  139. package/dist/index.js.map +1 -1
  140. package/package.json +3 -3
  141. package/src/generated/metadata.ts +176 -2
  142. package/src/generated/openapi-stripped.json +2882 -1276
  143. package/src/generated/path-mapping.ts +15 -1
  144. package/src/generated/person-id-sites.ts +61 -2
  145. package/src/generated/schema.d.ts +1406 -92
  146. package/src/generated/services/bookmarks.ts +1 -1
  147. package/src/generated/services/boosts.ts +2 -2
  148. package/src/generated/services/campfires.ts +4 -4
  149. package/src/generated/services/card-steps.ts +15 -11
  150. package/src/generated/services/cards.ts +1 -1
  151. package/src/generated/services/checkins.ts +11 -10
  152. package/src/generated/services/client-approvals.ts +1 -1
  153. package/src/generated/services/client-correspondences.ts +1 -1
  154. package/src/generated/services/client-replies.ts +1 -1
  155. package/src/generated/services/comments.ts +1 -1
  156. package/src/generated/services/documents.ts +1 -1
  157. package/src/generated/services/drafts.ts +1 -1
  158. package/src/generated/services/events.ts +1 -1
  159. package/src/generated/services/everything.ts +14 -14
  160. package/src/generated/services/forwards.ts +2 -2
  161. package/src/generated/services/index.ts +2 -1
  162. package/src/generated/services/message-types.ts +1 -1
  163. package/src/generated/services/messages.ts +1 -1
  164. package/src/generated/services/my-notifications.ts +3 -2
  165. package/src/generated/services/people.ts +3 -3
  166. package/src/generated/services/projects.ts +1 -1
  167. package/src/generated/services/recordings.ts +49 -3
  168. package/src/generated/services/reports.ts +1 -1
  169. package/src/generated/services/schedules.ts +1 -1
  170. package/src/generated/services/subtasks.ts +336 -0
  171. package/src/generated/services/templates.ts +220 -13
  172. package/src/generated/services/timeline.ts +1 -1
  173. package/src/generated/services/timesheets.ts +3 -3
  174. package/src/generated/services/todolist-groups.ts +1 -1
  175. package/src/generated/services/todolists.ts +1 -1
  176. package/src/generated/services/todos.ts +1 -1
  177. package/src/generated/services/uploads.ts +2 -2
  178. package/src/generated/services/vaults.ts +1 -1
  179. package/src/generated/services/webhooks.ts +1 -1
@@ -13,33 +13,122 @@ import { Errors } from "../../errors.js";
13
13
  */
14
14
  export class TemplatesService extends BaseService {
15
15
  /**
16
- * Get the account's to-do list template library
17
- * @returns The template_library
16
+ * Templatify a to-do list or card table
17
+ * @param bucketId - The bucket ID
18
+ * @param recordingId - The to-do list or card table to templatify. Anything else is a 403.
19
+ * @param req - Templatification creation parameters
20
+ * @returns The templatification
21
+ * @throws {BasecampError} If required fields are missing or invalid
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const result = await client.templates.createTemplatification(123, 123, { });
26
+ * ```
27
+ */
28
+ async createTemplatification(bucketId, recordingId, req) {
29
+ const response = await this.request({
30
+ service: "Templates",
31
+ operation: "CreateTemplatification",
32
+ resourceType: "templatification",
33
+ isMutation: true,
34
+ projectId: bucketId,
35
+ resourceId: recordingId,
36
+ }, () => this.client.POST("/buckets/{bucketId}/recordings/{recordingId}/templatifications.json", {
37
+ params: {
38
+ path: { bucketId, recordingId },
39
+ },
40
+ body: {
41
+ template_name: req.templateName,
42
+ copy_comments: req.copyComments,
43
+ copy_assignments: req.copyAssignments,
44
+ move_cards_to_triage: req.moveCardsToTriage,
45
+ },
46
+ }));
47
+ return response;
48
+ }
49
+ /**
50
+ * Get a templatification
51
+ * @param bucketId - The bucket ID
52
+ * @param recordingId - The recording ID
53
+ * @param templatificationId - The templatification ID
54
+ * @returns The templatification
55
+ * @throws {BasecampError} If the resource is not found
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * const result = await client.templates.getTemplatification(123, 123, 123);
60
+ * ```
61
+ */
62
+ async getTemplatification(bucketId, recordingId, templatificationId) {
63
+ const response = await this.request({
64
+ service: "Templates",
65
+ operation: "GetTemplatification",
66
+ resourceType: "templatification",
67
+ isMutation: false,
68
+ projectId: bucketId,
69
+ resourceId: templatificationId,
70
+ }, () => this.client.GET("/buckets/{bucketId}/recordings/{recordingId}/templatifications/{templatificationId}", {
71
+ params: {
72
+ path: { bucketId, recordingId, templatificationId },
73
+ },
74
+ }));
75
+ return response;
76
+ }
77
+ /**
78
+ * Get the account's card table templates
79
+ * @returns The template_library_card_table
18
80
  * @throws {BasecampError} If the resource is not found
19
81
  *
20
82
  * @example
21
83
  * ```ts
22
- * const result = await client.templates.getLibrary();
84
+ * const result = await client.templates.getLibraryCardTables();
23
85
  * ```
24
86
  */
25
- async getLibrary() {
87
+ async getLibraryCardTables() {
26
88
  const response = await this.request({
27
89
  service: "Templates",
28
- operation: "GetTemplateLibrary",
29
- resourceType: "template_library",
90
+ operation: "GetTemplateLibraryCardTables",
91
+ resourceType: "template_library_card_table",
30
92
  isMutation: false,
31
- }, () => this.client.GET("/template_library.json", {}));
93
+ }, () => this.client.GET("/template_library/card_tables.json", {}));
32
94
  return response;
33
95
  }
34
96
  /**
35
- * Start copying a to-do list template into a project
97
+ * Create a card table template with the default columns
98
+ * @param req - Template_library_card_table creation parameters
99
+ * @returns The CardTable
100
+ * @throws {BasecampError} If required fields are missing or invalid
101
+ *
102
+ * @example
103
+ * ```ts
104
+ * const result = await client.templates.createLibraryCardTable({ name: "My example" });
105
+ * ```
106
+ */
107
+ async createLibraryCardTable(req) {
108
+ if (!req.name) {
109
+ throw Errors.validation("Name is required");
110
+ }
111
+ const response = await this.request({
112
+ service: "Templates",
113
+ operation: "CreateTemplateLibraryCardTable",
114
+ resourceType: "template_library_card_table",
115
+ isMutation: true,
116
+ }, () => this.client.POST("/template_library/card_tables.json", {
117
+ body: {
118
+ name: req.name,
119
+ },
120
+ }));
121
+ return response;
122
+ }
123
+ /**
124
+ * Start copying a to-do list or card table template into a project
36
125
  * @param req - Template_library_copy creation parameters
37
126
  * @returns The template_library_copy
38
127
  * @throws {BasecampError} If required fields are missing or invalid
39
128
  *
40
129
  * @example
41
130
  * ```ts
42
- * const result = await client.templates.createLibraryCopy({ templateRecordingId: 1, destinationParentId: 1 });
131
+ * const result = await client.templates.createLibraryCopy({ templateRecordingId: 1 });
43
132
  * ```
44
133
  */
45
134
  async createLibraryCopy(req) {
@@ -51,6 +140,7 @@ export class TemplatesService extends BaseService {
51
140
  }, () => this.client.POST("/template_library/copies.json", {
52
141
  body: {
53
142
  template_recording_id: req.templateRecordingId,
143
+ destination_project_id: req.destinationProjectId,
54
144
  destination_parent_id: req.destinationParentId,
55
145
  adding_people_confirmed: req.addingPeopleConfirmed,
56
146
  },
@@ -82,10 +172,57 @@ export class TemplatesService extends BaseService {
82
172
  }));
83
173
  return response;
84
174
  }
175
+ /**
176
+ * Get the account's to-do list templates
177
+ * @returns The template_library_todolist
178
+ * @throws {BasecampError} If the resource is not found
179
+ *
180
+ * @example
181
+ * ```ts
182
+ * const result = await client.templates.getLibraryTodolists();
183
+ * ```
184
+ */
185
+ async getLibraryTodolists() {
186
+ const response = await this.request({
187
+ service: "Templates",
188
+ operation: "GetTemplateLibraryTodolists",
189
+ resourceType: "template_library_todolist",
190
+ isMutation: false,
191
+ }, () => this.client.GET("/template_library/todolists.json", {}));
192
+ return response;
193
+ }
194
+ /**
195
+ * Create an empty to-do list template
196
+ * @param req - Template_library_todolist creation parameters
197
+ * @returns The Todolist
198
+ * @throws {BasecampError} If required fields are missing or invalid
199
+ *
200
+ * @example
201
+ * ```ts
202
+ * const result = await client.templates.createLibraryTodolist({ name: "My example" });
203
+ * ```
204
+ */
205
+ async createLibraryTodolist(req) {
206
+ if (!req.name) {
207
+ throw Errors.validation("Name is required");
208
+ }
209
+ const response = await this.request({
210
+ service: "Templates",
211
+ operation: "CreateTemplateLibraryTodolist",
212
+ resourceType: "template_library_todolist",
213
+ isMutation: true,
214
+ }, () => this.client.POST("/template_library/todolists.json", {
215
+ body: {
216
+ name: req.name,
217
+ description: req.description,
218
+ },
219
+ }));
220
+ return response;
221
+ }
85
222
  /**
86
223
  * List all templates visible to the current user
87
224
  * @param options - Optional query parameters
88
- * @returns All Template across all pages, with .meta.totalCount
225
+ * @returns Every Template across all pages, with .meta.totalCount
89
226
  *
90
227
  * @example
91
228
  * ```ts
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/generated/services/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/generated/services/templates.ts"],"names":[],"mappings":"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"}
@@ -14,21 +14,65 @@ import { Errors } from "../../errors.js";
14
14
  // Types
15
15
  // =============================================================================
16
16
 
17
+ /** CardTable entity from the Basecamp API. */
18
+ export type CardTable = components["schemas"]["CardTable"];
19
+ /** Todolist entity from the Basecamp API. */
20
+ export type Todolist = components["schemas"]["Todolist"];
17
21
  /** Template entity from the Basecamp API. */
18
22
  export type Template = components["schemas"]["Template"];
19
23
 
24
+ /**
25
+ * Request parameters for createTemplatification.
26
+ */
27
+ export interface CreateTemplatificationTemplateRequest {
28
+ /** What to call the template. Defaults to the source recording's own title. */
29
+ templateName?: string;
30
+ /** Carry the comments across. */
31
+ copyComments?: boolean;
32
+ /** Carry assignees and the people involved across, adding them to the library
33
+ if they are not already there. */
34
+ copyAssignments?: boolean;
35
+ /** Gather the cards into Triage. Card tables only, and ignored otherwise. */
36
+ moveCardsToTriage?: boolean;
37
+ }
38
+
39
+ /**
40
+ * Request parameters for createLibraryCardTable.
41
+ */
42
+ export interface CreateLibraryCardTableTemplateRequest {
43
+ /** The template's name. Write-only: the response carries it as `title`. */
44
+ name: string;
45
+ }
46
+
20
47
  /**
21
48
  * Request parameters for createLibraryCopy.
22
49
  */
23
50
  export interface CreateLibraryCopyTemplateRequest {
24
- /** Template recording id */
51
+ /** The to-do list or card table in the library to copy. */
25
52
  templateRecordingId: number;
26
- /** Destination parent id */
27
- destinationParentId: number;
53
+ /** The destination project. Basecamp resolves the container from the
54
+ template's kind, so a caller naming a project needs to know nothing about
55
+ docks or to-do sets. Supply this or destination_parent_id; if both are
56
+ sent, destination_parent_id wins. */
57
+ destinationProjectId?: number;
58
+ /** The container to copy into, for a caller that already holds one: the
59
+ project's to-do set for a to-do list template, or its dock for a card
60
+ table. A caller who may not edit it gets 404, not 403. */
61
+ destinationParentId?: number;
28
62
  /** Confirm granting destination-project access to people referenced by the template. */
29
63
  addingPeopleConfirmed?: boolean;
30
64
  }
31
65
 
66
+ /**
67
+ * Request parameters for createLibraryTodolist.
68
+ */
69
+ export interface CreateLibraryTodolistTemplateRequest {
70
+ /** What to call the template. */
71
+ name: string;
72
+ /** Rich text describing the template. */
73
+ description?: string;
74
+ }
75
+
32
76
  /**
33
77
  * Options for list.
34
78
  */
@@ -78,39 +122,143 @@ export interface CreateProjectTemplateRequest {
78
122
  export class TemplatesService extends BaseService {
79
123
 
80
124
  /**
81
- * Get the account's to-do list template library
82
- * @returns The template_library
125
+ * Templatify a to-do list or card table
126
+ * @param bucketId - The bucket ID
127
+ * @param recordingId - The to-do list or card table to templatify. Anything else is a 403.
128
+ * @param req - Templatification creation parameters
129
+ * @returns The templatification
130
+ * @throws {BasecampError} If required fields are missing or invalid
131
+ *
132
+ * @example
133
+ * ```ts
134
+ * const result = await client.templates.createTemplatification(123, 123, { });
135
+ * ```
136
+ */
137
+ async createTemplatification(bucketId: number, recordingId: number, req: CreateTemplatificationTemplateRequest): Promise<components["schemas"]["CreateTemplatificationResponseContent"]> {
138
+ const response = await this.request(
139
+ {
140
+ service: "Templates",
141
+ operation: "CreateTemplatification",
142
+ resourceType: "templatification",
143
+ isMutation: true,
144
+ projectId: bucketId,
145
+ resourceId: recordingId,
146
+ },
147
+ () =>
148
+ this.client.POST("/buckets/{bucketId}/recordings/{recordingId}/templatifications.json", {
149
+ params: {
150
+ path: { bucketId, recordingId },
151
+ },
152
+ body: {
153
+ template_name: req.templateName,
154
+ copy_comments: req.copyComments,
155
+ copy_assignments: req.copyAssignments,
156
+ move_cards_to_triage: req.moveCardsToTriage,
157
+ },
158
+ })
159
+ );
160
+ return response;
161
+ }
162
+
163
+ /**
164
+ * Get a templatification
165
+ * @param bucketId - The bucket ID
166
+ * @param recordingId - The recording ID
167
+ * @param templatificationId - The templatification ID
168
+ * @returns The templatification
83
169
  * @throws {BasecampError} If the resource is not found
84
170
  *
85
171
  * @example
86
172
  * ```ts
87
- * const result = await client.templates.getLibrary();
173
+ * const result = await client.templates.getTemplatification(123, 123, 123);
88
174
  * ```
89
175
  */
90
- async getLibrary(): Promise<components["schemas"]["GetTemplateLibraryResponseContent"]> {
176
+ async getTemplatification(bucketId: number, recordingId: number, templatificationId: number): Promise<components["schemas"]["GetTemplatificationResponseContent"]> {
91
177
  const response = await this.request(
92
178
  {
93
179
  service: "Templates",
94
- operation: "GetTemplateLibrary",
95
- resourceType: "template_library",
180
+ operation: "GetTemplatification",
181
+ resourceType: "templatification",
96
182
  isMutation: false,
183
+ projectId: bucketId,
184
+ resourceId: templatificationId,
185
+ },
186
+ () =>
187
+ this.client.GET("/buckets/{bucketId}/recordings/{recordingId}/templatifications/{templatificationId}", {
188
+ params: {
189
+ path: { bucketId, recordingId, templatificationId },
190
+ },
191
+ })
192
+ );
193
+ return response;
194
+ }
195
+
196
+ /**
197
+ * Get the account's card table templates
198
+ * @returns The template_library_card_table
199
+ * @throws {BasecampError} If the resource is not found
200
+ *
201
+ * @example
202
+ * ```ts
203
+ * const result = await client.templates.getLibraryCardTables();
204
+ * ```
205
+ */
206
+ async getLibraryCardTables(): Promise<components["schemas"]["GetTemplateLibraryCardTablesResponseContent"]> {
207
+ const response = await this.request(
208
+ {
209
+ service: "Templates",
210
+ operation: "GetTemplateLibraryCardTables",
211
+ resourceType: "template_library_card_table",
212
+ isMutation: false,
213
+ },
214
+ () =>
215
+ this.client.GET("/template_library/card_tables.json", {
216
+ })
217
+ );
218
+ return response;
219
+ }
220
+
221
+ /**
222
+ * Create a card table template with the default columns
223
+ * @param req - Template_library_card_table creation parameters
224
+ * @returns The CardTable
225
+ * @throws {BasecampError} If required fields are missing or invalid
226
+ *
227
+ * @example
228
+ * ```ts
229
+ * const result = await client.templates.createLibraryCardTable({ name: "My example" });
230
+ * ```
231
+ */
232
+ async createLibraryCardTable(req: CreateLibraryCardTableTemplateRequest): Promise<CardTable> {
233
+ if (!req.name) {
234
+ throw Errors.validation("Name is required");
235
+ }
236
+ const response = await this.request(
237
+ {
238
+ service: "Templates",
239
+ operation: "CreateTemplateLibraryCardTable",
240
+ resourceType: "template_library_card_table",
241
+ isMutation: true,
97
242
  },
98
243
  () =>
99
- this.client.GET("/template_library.json", {
244
+ this.client.POST("/template_library/card_tables.json", {
245
+ body: {
246
+ name: req.name,
247
+ },
100
248
  })
101
249
  );
102
250
  return response;
103
251
  }
104
252
 
105
253
  /**
106
- * Start copying a to-do list template into a project
254
+ * Start copying a to-do list or card table template into a project
107
255
  * @param req - Template_library_copy creation parameters
108
256
  * @returns The template_library_copy
109
257
  * @throws {BasecampError} If required fields are missing or invalid
110
258
  *
111
259
  * @example
112
260
  * ```ts
113
- * const result = await client.templates.createLibraryCopy({ templateRecordingId: 1, destinationParentId: 1 });
261
+ * const result = await client.templates.createLibraryCopy({ templateRecordingId: 1 });
114
262
  * ```
115
263
  */
116
264
  async createLibraryCopy(req: CreateLibraryCopyTemplateRequest): Promise<components["schemas"]["CreateTemplateLibraryCopyResponseContent"]> {
@@ -125,6 +273,7 @@ export class TemplatesService extends BaseService {
125
273
  this.client.POST("/template_library/copies.json", {
126
274
  body: {
127
275
  template_recording_id: req.templateRecordingId,
276
+ destination_project_id: req.destinationProjectId,
128
277
  destination_parent_id: req.destinationParentId,
129
278
  adding_people_confirmed: req.addingPeopleConfirmed,
130
279
  },
@@ -163,10 +312,68 @@ export class TemplatesService extends BaseService {
163
312
  return response;
164
313
  }
165
314
 
315
+ /**
316
+ * Get the account's to-do list templates
317
+ * @returns The template_library_todolist
318
+ * @throws {BasecampError} If the resource is not found
319
+ *
320
+ * @example
321
+ * ```ts
322
+ * const result = await client.templates.getLibraryTodolists();
323
+ * ```
324
+ */
325
+ async getLibraryTodolists(): Promise<components["schemas"]["GetTemplateLibraryTodolistsResponseContent"]> {
326
+ const response = await this.request(
327
+ {
328
+ service: "Templates",
329
+ operation: "GetTemplateLibraryTodolists",
330
+ resourceType: "template_library_todolist",
331
+ isMutation: false,
332
+ },
333
+ () =>
334
+ this.client.GET("/template_library/todolists.json", {
335
+ })
336
+ );
337
+ return response;
338
+ }
339
+
340
+ /**
341
+ * Create an empty to-do list template
342
+ * @param req - Template_library_todolist creation parameters
343
+ * @returns The Todolist
344
+ * @throws {BasecampError} If required fields are missing or invalid
345
+ *
346
+ * @example
347
+ * ```ts
348
+ * const result = await client.templates.createLibraryTodolist({ name: "My example" });
349
+ * ```
350
+ */
351
+ async createLibraryTodolist(req: CreateLibraryTodolistTemplateRequest): Promise<Todolist> {
352
+ if (!req.name) {
353
+ throw Errors.validation("Name is required");
354
+ }
355
+ const response = await this.request(
356
+ {
357
+ service: "Templates",
358
+ operation: "CreateTemplateLibraryTodolist",
359
+ resourceType: "template_library_todolist",
360
+ isMutation: true,
361
+ },
362
+ () =>
363
+ this.client.POST("/template_library/todolists.json", {
364
+ body: {
365
+ name: req.name,
366
+ description: req.description,
367
+ },
368
+ })
369
+ );
370
+ return response;
371
+ }
372
+
166
373
  /**
167
374
  * List all templates visible to the current user
168
375
  * @param options - Optional query parameters
169
- * @returns All Template across all pages, with .meta.totalCount
376
+ * @returns Every Template across all pages, with .meta.totalCount
170
377
  *
171
378
  * @example
172
379
  * ```ts
@@ -24,7 +24,7 @@ export declare class TimelineService extends BaseService {
24
24
  * Get project timeline
25
25
  * @param projectId - The project ID
26
26
  * @param options - Optional query parameters
27
- * @returns All TimelineEvent across all pages, with .meta.totalCount
27
+ * @returns Every TimelineEvent across all pages, with .meta.totalCount
28
28
  *
29
29
  * @example
30
30
  * ```ts
@@ -15,7 +15,7 @@ export class TimelineService extends BaseService {
15
15
  * Get project timeline
16
16
  * @param projectId - The project ID
17
17
  * @param options - Optional query parameters
18
- * @returns All TimelineEvent across all pages, with .meta.totalCount
18
+ * @returns Every TimelineEvent across all pages, with .meta.totalCount
19
19
  *
20
20
  * @example
21
21
  * ```ts
@@ -38,7 +38,7 @@ export class TimelineService extends BaseService {
38
38
  * Get project timeline
39
39
  * @param projectId - The project ID
40
40
  * @param options - Optional query parameters
41
- * @returns All TimelineEvent across all pages, with .meta.totalCount
41
+ * @returns Every TimelineEvent across all pages, with .meta.totalCount
42
42
  *
43
43
  * @example
44
44
  * ```ts
@@ -80,7 +80,7 @@ export declare class TimesheetsService extends BaseService {
80
80
  * Get timesheet for a specific project
81
81
  * @param projectId - The project ID
82
82
  * @param options - Optional query parameters
83
- * @returns All TimesheetEntry across all pages, with .meta.totalCount
83
+ * @returns Every TimesheetEntry across all pages, with .meta.totalCount
84
84
  *
85
85
  * @example
86
86
  * ```ts
@@ -92,7 +92,7 @@ export declare class TimesheetsService extends BaseService {
92
92
  * Get timesheet for a specific recording
93
93
  * @param recordingId - The recording ID
94
94
  * @param options - Optional query parameters
95
- * @returns All TimesheetEntry across all pages, with .meta.totalCount
95
+ * @returns Every TimesheetEntry across all pages, with .meta.totalCount
96
96
  *
97
97
  * @example
98
98
  * ```ts
@@ -150,7 +150,7 @@ export declare class TimesheetsService extends BaseService {
150
150
  */
151
151
  update(entryId: number, req: UpdateTimesheetRequest): Promise<TimesheetEntry>;
152
152
  /**
153
- * Permanently delete a timesheet entry; answers 403 when the caller may not archive or trash it.
153
+ * Permanently delete a timesheet entry, which never appears in the trash and cannot be restored; this is the only way to remove one, since bc3 answers 403 to TrashRecording and ArchiveRecording for every timesheet entry, and it answers 403 when the caller may not remove the entry.
154
154
  * @param entryId - The entry ID
155
155
  * @returns void
156
156
  * @throws {BasecampError} If the request fails
@@ -16,7 +16,7 @@ export class TimesheetsService extends BaseService {
16
16
  * Get timesheet for a specific project
17
17
  * @param projectId - The project ID
18
18
  * @param options - Optional query parameters
19
- * @returns All TimesheetEntry across all pages, with .meta.totalCount
19
+ * @returns Every TimesheetEntry across all pages, with .meta.totalCount
20
20
  *
21
21
  * @example
22
22
  * ```ts
@@ -41,7 +41,7 @@ export class TimesheetsService extends BaseService {
41
41
  * Get timesheet for a specific recording
42
42
  * @param recordingId - The recording ID
43
43
  * @param options - Optional query parameters
44
- * @returns All TimesheetEntry across all pages, with .meta.totalCount
44
+ * @returns Every TimesheetEntry across all pages, with .meta.totalCount
45
45
  *
46
46
  * @example
47
47
  * ```ts
@@ -181,7 +181,7 @@ export class TimesheetsService extends BaseService {
181
181
  return response;
182
182
  }
183
183
  /**
184
- * Permanently delete a timesheet entry; answers 403 when the caller may not archive or trash it.
184
+ * Permanently delete a timesheet entry, which never appears in the trash and cannot be restored; this is the only way to remove one, since bc3 answers 403 to TrashRecording and ArchiveRecording for every timesheet entry, and it answers 403 when the caller may not remove the entry.
185
185
  * @param entryId - The entry ID
186
186
  * @returns void
187
187
  * @throws {BasecampError} If the request fails
@@ -99,7 +99,7 @@ export class TimesheetsService extends BaseService {
99
99
  * Get timesheet for a specific project
100
100
  * @param projectId - The project ID
101
101
  * @param options - Optional query parameters
102
- * @returns All TimesheetEntry across all pages, with .meta.totalCount
102
+ * @returns Every TimesheetEntry across all pages, with .meta.totalCount
103
103
  *
104
104
  * @example
105
105
  * ```ts
@@ -130,7 +130,7 @@ export class TimesheetsService extends BaseService {
130
130
  * Get timesheet for a specific recording
131
131
  * @param recordingId - The recording ID
132
132
  * @param options - Optional query parameters
133
- * @returns All TimesheetEntry across all pages, with .meta.totalCount
133
+ * @returns Every TimesheetEntry across all pages, with .meta.totalCount
134
134
  *
135
135
  * @example
136
136
  * ```ts
@@ -296,7 +296,7 @@ export class TimesheetsService extends BaseService {
296
296
  }
297
297
 
298
298
  /**
299
- * Permanently delete a timesheet entry; answers 403 when the caller may not archive or trash it.
299
+ * Permanently delete a timesheet entry, which never appears in the trash and cannot be restored; this is the only way to remove one, since bc3 answers 403 to TrashRecording and ArchiveRecording for every timesheet entry, and it answers 403 when the caller may not remove the entry.
300
300
  * @param entryId - The entry ID
301
301
  * @returns void
302
302
  * @throws {BasecampError} If the request fails
@@ -51,7 +51,7 @@ export declare class TodolistGroupsService extends BaseService {
51
51
  * List groups in a todolist
52
52
  * @param todolistId - The todolist ID
53
53
  * @param options - Optional query parameters
54
- * @returns All Todolist across all pages, with .meta.totalCount
54
+ * @returns Every Todolist across all pages, with .meta.totalCount
55
55
  *
56
56
  * @example
57
57
  * ```ts
@@ -44,7 +44,7 @@ export class TodolistGroupsService extends BaseService {
44
44
  * List groups in a todolist
45
45
  * @param todolistId - The todolist ID
46
46
  * @param options - Optional query parameters
47
- * @returns All Todolist across all pages, with .meta.totalCount
47
+ * @returns Every Todolist across all pages, with .meta.totalCount
48
48
  *
49
49
  * @example
50
50
  * ```ts
@@ -88,7 +88,7 @@ export class TodolistGroupsService extends BaseService {
88
88
  * List groups in a todolist
89
89
  * @param todolistId - The todolist ID
90
90
  * @param options - Optional query parameters
91
- * @returns All Todolist across all pages, with .meta.totalCount
91
+ * @returns Every Todolist across all pages, with .meta.totalCount
92
92
  *
93
93
  * @example
94
94
  * ```ts