@37signals/basecamp 0.5.0 → 0.7.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 (137) hide show
  1. package/dist/client.d.ts +22 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +37 -1
  4. package/dist/client.js.map +1 -1
  5. package/dist/download.d.ts +40 -0
  6. package/dist/download.d.ts.map +1 -0
  7. package/dist/download.js +182 -0
  8. package/dist/download.js.map +1 -0
  9. package/dist/generated/metadata.json +330 -1
  10. package/dist/generated/openapi-stripped.json +5261 -1905
  11. package/dist/generated/path-mapping.d.ts.map +1 -1
  12. package/dist/generated/path-mapping.js +28 -2
  13. package/dist/generated/path-mapping.js.map +1 -1
  14. package/dist/generated/path-mapping.ts +29 -3
  15. package/dist/generated/schema.d.ts +2578 -333
  16. package/dist/generated/services/account.d.ts +66 -0
  17. package/dist/generated/services/account.d.ts.map +1 -0
  18. package/dist/generated/services/account.js +101 -0
  19. package/dist/generated/services/account.js.map +1 -0
  20. package/dist/generated/services/account.ts +144 -0
  21. package/dist/generated/services/automation.d.ts +25 -0
  22. package/dist/generated/services/automation.d.ts.map +1 -0
  23. package/dist/generated/services/automation.js +33 -0
  24. package/dist/generated/services/automation.js.map +1 -0
  25. package/dist/generated/services/automation.ts +49 -0
  26. package/dist/generated/services/boosts.js +2 -2
  27. package/dist/generated/services/boosts.js.map +1 -1
  28. package/dist/generated/services/boosts.ts +2 -2
  29. package/dist/generated/services/campfires.d.ts +14 -0
  30. package/dist/generated/services/campfires.d.ts.map +1 -1
  31. package/dist/generated/services/campfires.js +13 -5
  32. package/dist/generated/services/campfires.js.map +1 -1
  33. package/dist/generated/services/campfires.ts +21 -5
  34. package/dist/generated/services/card-steps.d.ts +12 -0
  35. package/dist/generated/services/card-steps.d.ts.map +1 -1
  36. package/dist/generated/services/card-steps.js +25 -0
  37. package/dist/generated/services/card-steps.js.map +1 -1
  38. package/dist/generated/services/card-steps.ts +30 -0
  39. package/dist/generated/services/cards.d.ts +2 -0
  40. package/dist/generated/services/cards.d.ts.map +1 -1
  41. package/dist/generated/services/cards.js +1 -0
  42. package/dist/generated/services/cards.js.map +1 -1
  43. package/dist/generated/services/cards.ts +3 -0
  44. package/dist/generated/services/checkins.js +1 -1
  45. package/dist/generated/services/checkins.js.map +1 -1
  46. package/dist/generated/services/checkins.ts +1 -1
  47. package/dist/generated/services/client-approvals.d.ts +7 -0
  48. package/dist/generated/services/client-approvals.d.ts.map +1 -1
  49. package/dist/generated/services/client-approvals.js +8 -1
  50. package/dist/generated/services/client-approvals.js.map +1 -1
  51. package/dist/generated/services/client-approvals.ts +10 -0
  52. package/dist/generated/services/client-correspondences.d.ts +7 -0
  53. package/dist/generated/services/client-correspondences.d.ts.map +1 -1
  54. package/dist/generated/services/client-correspondences.js +8 -1
  55. package/dist/generated/services/client-correspondences.js.map +1 -1
  56. package/dist/generated/services/client-correspondences.ts +10 -0
  57. package/dist/generated/services/client-replies.js +1 -1
  58. package/dist/generated/services/client-replies.js.map +1 -1
  59. package/dist/generated/services/client-replies.ts +1 -1
  60. package/dist/generated/services/forwards.d.ts +7 -0
  61. package/dist/generated/services/forwards.d.ts.map +1 -1
  62. package/dist/generated/services/forwards.js +5 -1
  63. package/dist/generated/services/forwards.js.map +1 -1
  64. package/dist/generated/services/forwards.ts +9 -1
  65. package/dist/generated/services/gauges.d.ts +140 -0
  66. package/dist/generated/services/gauges.d.ts.map +1 -0
  67. package/dist/generated/services/gauges.js +207 -0
  68. package/dist/generated/services/gauges.js.map +1 -0
  69. package/dist/generated/services/gauges.ts +298 -0
  70. package/dist/generated/services/hill-charts.d.ts +47 -0
  71. package/dist/generated/services/hill-charts.d.ts.map +1 -0
  72. package/dist/generated/services/hill-charts.js +70 -0
  73. package/dist/generated/services/hill-charts.js.map +1 -0
  74. package/dist/generated/services/hill-charts.ts +99 -0
  75. package/dist/generated/services/index.d.ts +6 -0
  76. package/dist/generated/services/index.d.ts.map +1 -1
  77. package/dist/generated/services/index.js +6 -0
  78. package/dist/generated/services/index.js.map +1 -1
  79. package/dist/generated/services/index.ts +6 -0
  80. package/dist/generated/services/my-assignments.d.ts +52 -0
  81. package/dist/generated/services/my-assignments.d.ts.map +1 -0
  82. package/dist/generated/services/my-assignments.js +74 -0
  83. package/dist/generated/services/my-assignments.js.map +1 -0
  84. package/dist/generated/services/my-assignments.ts +109 -0
  85. package/dist/generated/services/my-notifications.d.ts +50 -0
  86. package/dist/generated/services/my-notifications.d.ts.map +1 -0
  87. package/dist/generated/services/my-notifications.js +65 -0
  88. package/dist/generated/services/my-notifications.js.map +1 -0
  89. package/dist/generated/services/my-notifications.ts +100 -0
  90. package/dist/generated/services/people.d.ts +105 -0
  91. package/dist/generated/services/people.d.ts.map +1 -1
  92. package/dist/generated/services/people.js +156 -0
  93. package/dist/generated/services/people.js.map +1 -1
  94. package/dist/generated/services/people.ts +225 -0
  95. package/dist/generated/services/search.d.ts +1 -1
  96. package/dist/generated/services/search.ts +1 -1
  97. package/dist/generated/services/templates.js +1 -1
  98. package/dist/generated/services/templates.js.map +1 -1
  99. package/dist/generated/services/templates.ts +1 -1
  100. package/dist/generated/services/tools.d.ts +2 -0
  101. package/dist/generated/services/tools.d.ts.map +1 -1
  102. package/dist/generated/services/tools.js +1 -0
  103. package/dist/generated/services/tools.js.map +1 -1
  104. package/dist/generated/services/tools.ts +3 -0
  105. package/dist/index.d.ts +7 -0
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +13 -0
  108. package/dist/index.js.map +1 -1
  109. package/dist/services/base.d.ts +19 -1
  110. package/dist/services/base.d.ts.map +1 -1
  111. package/dist/services/base.js +110 -1
  112. package/dist/services/base.js.map +1 -1
  113. package/package.json +1 -1
  114. package/src/generated/metadata.json +330 -1
  115. package/src/generated/openapi-stripped.json +5261 -1905
  116. package/src/generated/path-mapping.ts +29 -3
  117. package/src/generated/schema.d.ts +2578 -333
  118. package/src/generated/services/account.ts +144 -0
  119. package/src/generated/services/automation.ts +49 -0
  120. package/src/generated/services/boosts.ts +2 -2
  121. package/src/generated/services/campfires.ts +21 -5
  122. package/src/generated/services/card-steps.ts +30 -0
  123. package/src/generated/services/cards.ts +3 -0
  124. package/src/generated/services/checkins.ts +1 -1
  125. package/src/generated/services/client-approvals.ts +10 -0
  126. package/src/generated/services/client-correspondences.ts +10 -0
  127. package/src/generated/services/client-replies.ts +1 -1
  128. package/src/generated/services/forwards.ts +9 -1
  129. package/src/generated/services/gauges.ts +298 -0
  130. package/src/generated/services/hill-charts.ts +99 -0
  131. package/src/generated/services/index.ts +6 -0
  132. package/src/generated/services/my-assignments.ts +109 -0
  133. package/src/generated/services/my-notifications.ts +100 -0
  134. package/src/generated/services/people.ts +225 -0
  135. package/src/generated/services/search.ts +1 -1
  136. package/src/generated/services/templates.ts +1 -1
  137. package/src/generated/services/tools.ts +3 -0
@@ -8,6 +8,7 @@ import { BaseService } from "../../services/base.js";
8
8
  import type { components } from "../schema.js";
9
9
  import { ListResult } from "../../pagination.js";
10
10
  import type { PaginationOptions } from "../../pagination.js";
11
+ import { Errors } from "../../errors.js";
11
12
 
12
13
  // =============================================================================
13
14
  // Types
@@ -22,12 +23,50 @@ export type Person = components["schemas"]["Person"];
22
23
  export interface ListPingablePeopleOptions extends PaginationOptions {
23
24
  }
24
25
 
26
+ /**
27
+ * Request parameters for updateMyPreferences.
28
+ */
29
+ export interface UpdateMyPreferencesPeopleRequest {
30
+ /** Person */
31
+ person: components["schemas"]["PreferencesPayload"];
32
+ }
33
+
34
+ /**
35
+ * Request parameters for updateMyProfile.
36
+ */
37
+ export interface UpdateMyProfilePeopleRequest {
38
+ /** Display name */
39
+ name?: string;
40
+ /** Email address */
41
+ emailAddress?: string;
42
+ /** Title */
43
+ title?: string;
44
+ /** Bio */
45
+ bio?: string;
46
+ /** Location */
47
+ location?: string;
48
+ /** Time zone name */
49
+ timeZoneName?: string;
50
+ /** First week day */
51
+ firstWeekDay?: components["schemas"]["FirstWeekDay"];
52
+ /** Time format */
53
+ timeFormat?: string;
54
+ }
55
+
25
56
  /**
26
57
  * Options for list.
27
58
  */
28
59
  export interface ListPeopleOptions extends PaginationOptions {
29
60
  }
30
61
 
62
+ /**
63
+ * Request parameters for enableOutOfOffice.
64
+ */
65
+ export interface EnableOutOfOfficePeopleRequest {
66
+ /** Out of office */
67
+ outOfOffice: components["schemas"]["OutOfOfficePayload"];
68
+ }
69
+
31
70
  /**
32
71
  * Options for listForProject.
33
72
  */
@@ -81,6 +120,62 @@ export class PeopleService extends BaseService {
81
120
  );
82
121
  }
83
122
 
123
+ /**
124
+ * Get the current user's preferences
125
+ * @returns The my_preference
126
+ *
127
+ * @example
128
+ * ```ts
129
+ * const result = await client.people.myPreferences();
130
+ * ```
131
+ */
132
+ async myPreferences(): Promise<components["schemas"]["GetMyPreferencesResponseContent"]> {
133
+ const response = await this.request(
134
+ {
135
+ service: "People",
136
+ operation: "GetMyPreferences",
137
+ resourceType: "my_preference",
138
+ isMutation: false,
139
+ },
140
+ () =>
141
+ this.client.GET("/my/preferences.json", {
142
+ })
143
+ );
144
+ return response;
145
+ }
146
+
147
+ /**
148
+ * Update the current user's preferences
149
+ * @param req - My_preference update parameters
150
+ * @returns The my_preference
151
+ * @throws {BasecampError} If the resource is not found or fields are invalid
152
+ *
153
+ * @example
154
+ * ```ts
155
+ * const result = await client.people.updateMyPreferences({ person: "example" });
156
+ * ```
157
+ */
158
+ async updateMyPreferences(req: UpdateMyPreferencesPeopleRequest): Promise<components["schemas"]["UpdateMyPreferencesResponseContent"]> {
159
+ if (!req.person) {
160
+ throw Errors.validation("Person is required");
161
+ }
162
+ const response = await this.request(
163
+ {
164
+ service: "People",
165
+ operation: "UpdateMyPreferences",
166
+ resourceType: "my_preference",
167
+ isMutation: true,
168
+ },
169
+ () =>
170
+ this.client.PUT("/my/preferences.json", {
171
+ body: {
172
+ person: req.person,
173
+ },
174
+ })
175
+ );
176
+ return response;
177
+ }
178
+
84
179
  /**
85
180
  * Get the current authenticated user's profile
86
181
  * @returns The Person
@@ -105,6 +200,41 @@ export class PeopleService extends BaseService {
105
200
  return response;
106
201
  }
107
202
 
203
+ /**
204
+ * Update the current authenticated user's profile
205
+ * @param req - My_profile update parameters
206
+ * @returns void
207
+ * @throws {BasecampError} If the resource is not found or fields are invalid
208
+ *
209
+ * @example
210
+ * ```ts
211
+ * await client.people.updateMyProfile({ });
212
+ * ```
213
+ */
214
+ async updateMyProfile(req: UpdateMyProfilePeopleRequest): Promise<void> {
215
+ await this.request(
216
+ {
217
+ service: "People",
218
+ operation: "UpdateMyProfile",
219
+ resourceType: "my_profile",
220
+ isMutation: true,
221
+ },
222
+ () =>
223
+ this.client.PUT("/my/profile.json", {
224
+ body: {
225
+ name: req.name,
226
+ email_address: req.emailAddress,
227
+ title: req.title,
228
+ bio: req.bio,
229
+ location: req.location,
230
+ time_zone_name: req.timeZoneName,
231
+ first_week_day: req.firstWeekDay,
232
+ time_format: req.timeFormat,
233
+ },
234
+ })
235
+ );
236
+ }
237
+
108
238
  /**
109
239
  * List all people visible to the current user
110
240
  * @param options - Optional query parameters
@@ -160,6 +290,101 @@ export class PeopleService extends BaseService {
160
290
  return response;
161
291
  }
162
292
 
293
+ /**
294
+ * Get the out of office status for a person
295
+ * @param personId - The person ID
296
+ * @returns The out_of_office
297
+ *
298
+ * @example
299
+ * ```ts
300
+ * const result = await client.people.outOfOffice(123);
301
+ * ```
302
+ */
303
+ async outOfOffice(personId: number): Promise<components["schemas"]["GetOutOfOfficeResponseContent"]> {
304
+ const response = await this.request(
305
+ {
306
+ service: "People",
307
+ operation: "GetOutOfOffice",
308
+ resourceType: "out_of_office",
309
+ isMutation: false,
310
+ resourceId: personId,
311
+ },
312
+ () =>
313
+ this.client.GET("/people/{personId}/out_of_office.json", {
314
+ params: {
315
+ path: { personId },
316
+ },
317
+ })
318
+ );
319
+ return response;
320
+ }
321
+
322
+ /**
323
+ * Enable or replace out of office for a person.
324
+ * @param personId - The person ID
325
+ * @param req - Out_of_office request parameters
326
+ * @returns The out_of_office
327
+ * @throws {BasecampError} If the request fails
328
+ *
329
+ * @example
330
+ * ```ts
331
+ * const result = await client.people.enableOutOfOffice(123, { outOfOffice: "example" });
332
+ * ```
333
+ */
334
+ async enableOutOfOffice(personId: number, req: EnableOutOfOfficePeopleRequest): Promise<components["schemas"]["EnableOutOfOfficeResponseContent"]> {
335
+ if (!req.outOfOffice) {
336
+ throw Errors.validation("Out of office is required");
337
+ }
338
+ const response = await this.request(
339
+ {
340
+ service: "People",
341
+ operation: "EnableOutOfOffice",
342
+ resourceType: "out_of_office",
343
+ isMutation: true,
344
+ resourceId: personId,
345
+ },
346
+ () =>
347
+ this.client.POST("/people/{personId}/out_of_office.json", {
348
+ params: {
349
+ path: { personId },
350
+ },
351
+ body: {
352
+ out_of_office: req.outOfOffice,
353
+ },
354
+ })
355
+ );
356
+ return response;
357
+ }
358
+
359
+ /**
360
+ * Disable out of office for a person.
361
+ * @param personId - The person ID
362
+ * @returns void
363
+ * @throws {BasecampError} If the request fails
364
+ *
365
+ * @example
366
+ * ```ts
367
+ * await client.people.disableOutOfOffice(123);
368
+ * ```
369
+ */
370
+ async disableOutOfOffice(personId: number): Promise<void> {
371
+ await this.request(
372
+ {
373
+ service: "People",
374
+ operation: "DisableOutOfOffice",
375
+ resourceType: "out_of_office",
376
+ isMutation: true,
377
+ resourceId: personId,
378
+ },
379
+ () =>
380
+ this.client.DELETE("/people/{personId}/out_of_office.json", {
381
+ params: {
382
+ path: { personId },
383
+ },
384
+ })
385
+ );
386
+ }
387
+
163
388
  /**
164
389
  * List all active people on a project
165
390
  * @param projectId - The project ID
@@ -19,7 +19,7 @@ import type { PaginationOptions } from "../../pagination.js";
19
19
  */
20
20
  export interface SearchSearchOptions extends PaginationOptions {
21
21
  /** Filter by sort */
22
- sort?: "created_at" | "updated_at";
22
+ sort?: "best_match" | "created_at";
23
23
  }
24
24
 
25
25
 
@@ -280,7 +280,7 @@ export class TemplatesService extends BaseService {
280
280
  operation: "GetProjectConstruction",
281
281
  resourceType: "project_construction",
282
282
  isMutation: false,
283
- resourceId: templateId,
283
+ resourceId: constructionId,
284
284
  },
285
285
  () =>
286
286
  this.client.GET("/templates/{templateId}/project_constructions/{constructionId}", {
@@ -21,6 +21,8 @@ export type Tool = components["schemas"]["Tool"];
21
21
  export interface CloneToolRequest {
22
22
  /** Source recording id */
23
23
  sourceRecordingId: number;
24
+ /** Title */
25
+ title?: string;
24
26
  }
25
27
 
26
28
  /**
@@ -72,6 +74,7 @@ export class ToolsService extends BaseService {
72
74
  this.client.POST("/dock/tools.json", {
73
75
  body: {
74
76
  source_recording_id: req.sourceRecordingId,
77
+ title: req.title,
75
78
  },
76
79
  })
77
80
  );