@37signals/basecamp 0.7.3 → 0.9.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.
- package/README.md +82 -2
- package/dist/client.d.ts +7 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +32 -23
- package/dist/client.js.map +1 -1
- package/dist/download.d.ts.map +1 -1
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +7 -1
- package/dist/errors.js.map +1 -1
- package/dist/generated/metadata.d.ts +32 -0
- package/dist/generated/metadata.d.ts.map +1 -0
- package/dist/generated/metadata.js +2723 -0
- package/dist/generated/metadata.js.map +1 -0
- package/dist/generated/{metadata.json → metadata.ts} +141 -35
- package/dist/generated/openapi-stripped.json +1713 -478
- package/dist/generated/path-mapping.d.ts.map +1 -1
- package/dist/generated/path-mapping.js +10 -5
- package/dist/generated/path-mapping.js.map +1 -1
- package/dist/generated/path-mapping.ts +10 -5
- package/dist/generated/schema.d.ts +1027 -265
- package/dist/generated/services/campfires.d.ts +22 -1
- package/dist/generated/services/campfires.d.ts.map +1 -1
- package/dist/generated/services/campfires.js +33 -1
- package/dist/generated/services/campfires.js.map +1 -1
- package/dist/generated/services/campfires.ts +46 -1
- package/dist/generated/services/card-columns.d.ts +31 -28
- package/dist/generated/services/card-columns.d.ts.map +1 -1
- package/dist/generated/services/card-columns.js +57 -51
- package/dist/generated/services/card-columns.js.map +1 -1
- package/dist/generated/services/card-columns.ts +65 -59
- package/dist/generated/services/checkins.d.ts +3 -1
- package/dist/generated/services/checkins.d.ts.map +1 -1
- package/dist/generated/services/checkins.js +2 -1
- package/dist/generated/services/checkins.js.map +1 -1
- package/dist/generated/services/checkins.ts +4 -1
- package/dist/generated/services/documents.d.ts +2 -0
- package/dist/generated/services/documents.d.ts.map +1 -1
- package/dist/generated/services/documents.js +1 -0
- package/dist/generated/services/documents.js.map +1 -1
- package/dist/generated/services/documents.ts +3 -0
- package/dist/generated/services/gauges.d.ts +2 -2
- package/dist/generated/services/gauges.js +2 -2
- package/dist/generated/services/gauges.ts +2 -2
- package/dist/generated/services/index.d.ts +3 -2
- package/dist/generated/services/index.d.ts.map +1 -1
- package/dist/generated/services/index.js +3 -2
- package/dist/generated/services/index.js.map +1 -1
- package/dist/generated/services/index.ts +3 -2
- package/dist/generated/services/messages.d.ts +2 -0
- package/dist/generated/services/messages.d.ts.map +1 -1
- package/dist/generated/services/messages.js +1 -0
- package/dist/generated/services/messages.js.map +1 -1
- package/dist/generated/services/messages.ts +3 -0
- package/dist/generated/services/people.d.ts +2 -2
- package/dist/generated/services/people.js +2 -2
- package/dist/generated/services/people.ts +2 -2
- package/dist/generated/services/reports.d.ts +1 -1
- package/dist/generated/services/reports.js +1 -1
- package/dist/generated/services/reports.ts +1 -1
- package/dist/generated/services/schedules.d.ts +2 -0
- package/dist/generated/services/schedules.d.ts.map +1 -1
- package/dist/generated/services/schedules.js +1 -0
- package/dist/generated/services/schedules.js.map +1 -1
- package/dist/generated/services/schedules.ts +3 -0
- package/dist/generated/services/search.d.ts +30 -1
- package/dist/generated/services/search.d.ts.map +1 -1
- package/dist/generated/services/search.js +1 -1
- package/dist/generated/services/search.js.map +1 -1
- package/dist/generated/services/search.ts +31 -2
- package/dist/generated/services/templates.d.ts +3 -5
- package/dist/generated/services/templates.d.ts.map +1 -1
- package/dist/generated/services/templates.js +4 -5
- package/dist/generated/services/templates.js.map +1 -1
- package/dist/generated/services/templates.ts +6 -9
- package/dist/generated/services/todolists.d.ts +22 -0
- package/dist/generated/services/todolists.d.ts.map +1 -1
- package/dist/generated/services/todolists.js +31 -0
- package/dist/generated/services/todolists.js.map +1 -1
- package/dist/generated/services/todolists.ts +46 -0
- package/dist/generated/services/todos.d.ts +8 -8
- package/dist/generated/services/todos.d.ts.map +1 -1
- package/dist/generated/services/todos.js +9 -6
- package/dist/generated/services/todos.js.map +1 -1
- package/dist/generated/services/todos.ts +12 -9
- package/dist/generated/services/tools.d.ts +11 -10
- package/dist/generated/services/tools.d.ts.map +1 -1
- package/dist/generated/services/tools.js +16 -8
- package/dist/generated/services/tools.js.map +1 -1
- package/dist/generated/services/tools.ts +21 -13
- package/dist/generated/services/uploads.d.ts +2 -0
- package/dist/generated/services/uploads.d.ts.map +1 -1
- package/dist/generated/services/uploads.js +1 -0
- package/dist/generated/services/uploads.js.map +1 -1
- package/dist/generated/services/uploads.ts +3 -0
- package/dist/generated/services/webhooks.js +2 -2
- package/dist/generated/services/webhooks.js.map +1 -1
- package/dist/generated/services/webhooks.ts +2 -2
- package/dist/generated/services/wormholes.d.ts +70 -0
- package/dist/generated/services/wormholes.d.ts.map +1 -0
- package/dist/generated/services/wormholes.js +103 -0
- package/dist/generated/services/wormholes.js.map +1 -0
- package/dist/generated/services/wormholes.ts +145 -0
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/oauth/discovery.d.ts +105 -23
- package/dist/oauth/discovery.d.ts.map +1 -1
- package/dist/oauth/discovery.js +453 -61
- package/dist/oauth/discovery.js.map +1 -1
- package/dist/oauth/index.d.ts +2 -2
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +1 -1
- package/dist/oauth/index.js.map +1 -1
- package/dist/oauth/interactive-login.d.ts +20 -2
- package/dist/oauth/interactive-login.d.ts.map +1 -1
- package/dist/oauth/interactive-login.js +58 -4
- package/dist/oauth/interactive-login.js.map +1 -1
- package/dist/oauth/types.d.ts +54 -2
- package/dist/oauth/types.d.ts.map +1 -1
- package/dist/security.d.ts +22 -0
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +56 -1
- package/dist/security.js.map +1 -1
- package/dist/services/authorization.d.ts.map +1 -1
- package/dist/services/authorization.js +3 -0
- package/dist/services/authorization.js.map +1 -1
- package/dist/services/base.d.ts.map +1 -1
- package/dist/services/base.js +1 -3
- package/dist/services/base.js.map +1 -1
- package/dist/services/todos-extensions.d.ts +118 -0
- package/dist/services/todos-extensions.d.ts.map +1 -0
- package/dist/services/todos-extensions.js +113 -0
- package/dist/services/todos-extensions.js.map +1 -0
- package/dist/services/uploads-extensions.d.ts +33 -0
- package/dist/services/uploads-extensions.d.ts.map +1 -0
- package/dist/services/uploads-extensions.js +48 -0
- package/dist/services/uploads-extensions.js.map +1 -0
- package/package.json +7 -4
- package/src/generated/{metadata.json → metadata.ts} +141 -35
- package/src/generated/openapi-stripped.json +1713 -478
- package/src/generated/path-mapping.ts +10 -5
- package/src/generated/schema.d.ts +1027 -265
- package/src/generated/services/campfires.ts +46 -1
- package/src/generated/services/card-columns.ts +65 -59
- package/src/generated/services/checkins.ts +4 -1
- package/src/generated/services/documents.ts +3 -0
- package/src/generated/services/gauges.ts +2 -2
- package/src/generated/services/index.ts +3 -2
- package/src/generated/services/messages.ts +3 -0
- package/src/generated/services/people.ts +2 -2
- package/src/generated/services/reports.ts +1 -1
- package/src/generated/services/schedules.ts +3 -0
- package/src/generated/services/search.ts +31 -2
- package/src/generated/services/templates.ts +6 -9
- package/src/generated/services/todolists.ts +46 -0
- package/src/generated/services/todos.ts +12 -9
- package/src/generated/services/tools.ts +21 -13
- package/src/generated/services/uploads.ts +3 -0
- package/src/generated/services/webhooks.ts +2 -2
- package/src/generated/services/wormholes.ts +145 -0
|
@@ -73,6 +73,14 @@ export interface CreateLineCampfireRequest {
|
|
|
73
73
|
contentType?: string;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Request parameters for updateLine.
|
|
78
|
+
*/
|
|
79
|
+
export interface UpdateLineCampfireRequest {
|
|
80
|
+
/** The new line content, interpreted as rich text (HTML) */
|
|
81
|
+
content: string;
|
|
82
|
+
}
|
|
83
|
+
|
|
76
84
|
/**
|
|
77
85
|
* Options for listUploads.
|
|
78
86
|
*/
|
|
@@ -420,7 +428,44 @@ export class CampfiresService extends BaseService {
|
|
|
420
428
|
}
|
|
421
429
|
|
|
422
430
|
/**
|
|
423
|
-
*
|
|
431
|
+
* Update an existing campfire line; the content is always treated as rich text (HTML).
|
|
432
|
+
* @param campfireId - The campfire ID
|
|
433
|
+
* @param lineId - The line ID
|
|
434
|
+
* @param req - Campfire_line update parameters
|
|
435
|
+
* @returns void
|
|
436
|
+
* @throws {BasecampError} If the resource is not found or fields are invalid
|
|
437
|
+
*
|
|
438
|
+
* @example
|
|
439
|
+
* ```ts
|
|
440
|
+
* await client.campfires.updateLine(123, 123, { content: "Hello world" });
|
|
441
|
+
* ```
|
|
442
|
+
*/
|
|
443
|
+
async updateLine(campfireId: number, lineId: number, req: UpdateLineCampfireRequest): Promise<void> {
|
|
444
|
+
if (!req.content) {
|
|
445
|
+
throw Errors.validation("Content is required");
|
|
446
|
+
}
|
|
447
|
+
await this.request(
|
|
448
|
+
{
|
|
449
|
+
service: "Campfires",
|
|
450
|
+
operation: "UpdateCampfireLine",
|
|
451
|
+
resourceType: "campfire_line",
|
|
452
|
+
isMutation: true,
|
|
453
|
+
resourceId: lineId,
|
|
454
|
+
},
|
|
455
|
+
() =>
|
|
456
|
+
this.client.PUT("/chats/{campfireId}/lines/{lineId}", {
|
|
457
|
+
params: {
|
|
458
|
+
path: { campfireId, lineId },
|
|
459
|
+
},
|
|
460
|
+
body: {
|
|
461
|
+
content: req.content,
|
|
462
|
+
},
|
|
463
|
+
})
|
|
464
|
+
);
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Delete a campfire line; allowed for the line's creator or an admin.
|
|
424
469
|
* @param campfireId - The campfire ID
|
|
425
470
|
* @param lineId - The line ID
|
|
426
471
|
* @returns void
|
|
@@ -15,6 +15,14 @@ import { Errors } from "../../errors.js";
|
|
|
15
15
|
/** CardColumn entity from the Basecamp API. */
|
|
16
16
|
export type CardColumn = components["schemas"]["CardColumn"];
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Request parameters for setColor.
|
|
20
|
+
*/
|
|
21
|
+
export interface SetColorCardColumnRequest {
|
|
22
|
+
/** Valid colors: white, red, orange, yellow, green, blue, aqua, purple, gray, pink, brown */
|
|
23
|
+
color: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
18
26
|
/**
|
|
19
27
|
* Request parameters for update.
|
|
20
28
|
*/
|
|
@@ -25,14 +33,6 @@ export interface UpdateCardColumnRequest {
|
|
|
25
33
|
description?: string;
|
|
26
34
|
}
|
|
27
35
|
|
|
28
|
-
/**
|
|
29
|
-
* Request parameters for setColor.
|
|
30
|
-
*/
|
|
31
|
-
export interface SetColorCardColumnRequest {
|
|
32
|
-
/** Valid colors: white, red, orange, yellow, green, blue, aqua, purple, gray, pink, brown */
|
|
33
|
-
color: string;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
36
|
/**
|
|
37
37
|
* Request parameters for create.
|
|
38
38
|
*/
|
|
@@ -66,29 +66,38 @@ export interface MoveCardColumnRequest {
|
|
|
66
66
|
export class CardColumnsService extends BaseService {
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
|
-
*
|
|
69
|
+
* Set the color of a column
|
|
70
|
+
* @param bucketId - The bucket ID
|
|
70
71
|
* @param columnId - The column ID
|
|
72
|
+
* @param req - Card_column_color request parameters
|
|
71
73
|
* @returns The CardColumn
|
|
72
|
-
* @throws {BasecampError} If the
|
|
74
|
+
* @throws {BasecampError} If the request fails
|
|
73
75
|
*
|
|
74
76
|
* @example
|
|
75
77
|
* ```ts
|
|
76
|
-
* const result = await client.cardColumns.
|
|
78
|
+
* const result = await client.cardColumns.setColor(123, 123, { color: "example" });
|
|
77
79
|
* ```
|
|
78
80
|
*/
|
|
79
|
-
async
|
|
81
|
+
async setColor(bucketId: number, columnId: number, req: SetColorCardColumnRequest): Promise<CardColumn> {
|
|
82
|
+
if (!req.color) {
|
|
83
|
+
throw Errors.validation("Color is required");
|
|
84
|
+
}
|
|
80
85
|
const response = await this.request(
|
|
81
86
|
{
|
|
82
87
|
service: "CardColumns",
|
|
83
|
-
operation: "
|
|
84
|
-
resourceType: "
|
|
85
|
-
isMutation:
|
|
88
|
+
operation: "SetCardColumnColor",
|
|
89
|
+
resourceType: "card_column_color",
|
|
90
|
+
isMutation: true,
|
|
91
|
+
projectId: bucketId,
|
|
86
92
|
resourceId: columnId,
|
|
87
93
|
},
|
|
88
94
|
() =>
|
|
89
|
-
this.client.
|
|
95
|
+
this.client.PUT("/buckets/{bucketId}/card_tables/columns/{columnId}/color.json", {
|
|
90
96
|
params: {
|
|
91
|
-
path: { columnId },
|
|
97
|
+
path: { bucketId, columnId },
|
|
98
|
+
},
|
|
99
|
+
body: {
|
|
100
|
+
color: req.color,
|
|
92
101
|
},
|
|
93
102
|
})
|
|
94
103
|
);
|
|
@@ -96,34 +105,31 @@ export class CardColumnsService extends BaseService {
|
|
|
96
105
|
}
|
|
97
106
|
|
|
98
107
|
/**
|
|
99
|
-
*
|
|
108
|
+
* Enable on-hold section in a column
|
|
109
|
+
* @param bucketId - The bucket ID
|
|
100
110
|
* @param columnId - The column ID
|
|
101
|
-
* @param req - Card_column update parameters
|
|
102
111
|
* @returns The CardColumn
|
|
103
|
-
* @throws {BasecampError} If the
|
|
112
|
+
* @throws {BasecampError} If the request fails
|
|
104
113
|
*
|
|
105
114
|
* @example
|
|
106
115
|
* ```ts
|
|
107
|
-
* const result = await client.cardColumns.
|
|
116
|
+
* const result = await client.cardColumns.enableOnHold(123, 123);
|
|
108
117
|
* ```
|
|
109
118
|
*/
|
|
110
|
-
async
|
|
119
|
+
async enableOnHold(bucketId: number, columnId: number): Promise<CardColumn> {
|
|
111
120
|
const response = await this.request(
|
|
112
121
|
{
|
|
113
122
|
service: "CardColumns",
|
|
114
|
-
operation: "
|
|
115
|
-
resourceType: "
|
|
123
|
+
operation: "EnableCardColumnOnHold",
|
|
124
|
+
resourceType: "card_column_on_hold",
|
|
116
125
|
isMutation: true,
|
|
126
|
+
projectId: bucketId,
|
|
117
127
|
resourceId: columnId,
|
|
118
128
|
},
|
|
119
129
|
() =>
|
|
120
|
-
this.client.
|
|
130
|
+
this.client.POST("/buckets/{bucketId}/card_tables/columns/{columnId}/on_hold.json", {
|
|
121
131
|
params: {
|
|
122
|
-
path: { columnId },
|
|
123
|
-
},
|
|
124
|
-
body: {
|
|
125
|
-
title: req.title,
|
|
126
|
-
description: req.description,
|
|
132
|
+
path: { bucketId, columnId },
|
|
127
133
|
},
|
|
128
134
|
})
|
|
129
135
|
);
|
|
@@ -131,36 +137,31 @@ export class CardColumnsService extends BaseService {
|
|
|
131
137
|
}
|
|
132
138
|
|
|
133
139
|
/**
|
|
134
|
-
*
|
|
140
|
+
* Disable on-hold section in a column
|
|
141
|
+
* @param bucketId - The bucket ID
|
|
135
142
|
* @param columnId - The column ID
|
|
136
|
-
* @param req - Card_column_color request parameters
|
|
137
143
|
* @returns The CardColumn
|
|
138
144
|
* @throws {BasecampError} If the request fails
|
|
139
145
|
*
|
|
140
146
|
* @example
|
|
141
147
|
* ```ts
|
|
142
|
-
* const result = await client.cardColumns.
|
|
148
|
+
* const result = await client.cardColumns.disableOnHold(123, 123);
|
|
143
149
|
* ```
|
|
144
150
|
*/
|
|
145
|
-
async
|
|
146
|
-
if (!req.color) {
|
|
147
|
-
throw Errors.validation("Color is required");
|
|
148
|
-
}
|
|
151
|
+
async disableOnHold(bucketId: number, columnId: number): Promise<CardColumn> {
|
|
149
152
|
const response = await this.request(
|
|
150
153
|
{
|
|
151
154
|
service: "CardColumns",
|
|
152
|
-
operation: "
|
|
153
|
-
resourceType: "
|
|
155
|
+
operation: "DisableCardColumnOnHold",
|
|
156
|
+
resourceType: "card_column_on_hold",
|
|
154
157
|
isMutation: true,
|
|
158
|
+
projectId: bucketId,
|
|
155
159
|
resourceId: columnId,
|
|
156
160
|
},
|
|
157
161
|
() =>
|
|
158
|
-
this.client.
|
|
162
|
+
this.client.DELETE("/buckets/{bucketId}/card_tables/columns/{columnId}/on_hold.json", {
|
|
159
163
|
params: {
|
|
160
|
-
path: { columnId },
|
|
161
|
-
},
|
|
162
|
-
body: {
|
|
163
|
-
color: req.color,
|
|
164
|
+
path: { bucketId, columnId },
|
|
164
165
|
},
|
|
165
166
|
})
|
|
166
167
|
);
|
|
@@ -168,27 +169,27 @@ export class CardColumnsService extends BaseService {
|
|
|
168
169
|
}
|
|
169
170
|
|
|
170
171
|
/**
|
|
171
|
-
*
|
|
172
|
+
* Get a card column by ID
|
|
172
173
|
* @param columnId - The column ID
|
|
173
174
|
* @returns The CardColumn
|
|
174
|
-
* @throws {BasecampError} If the
|
|
175
|
+
* @throws {BasecampError} If the resource is not found
|
|
175
176
|
*
|
|
176
177
|
* @example
|
|
177
178
|
* ```ts
|
|
178
|
-
* const result = await client.cardColumns.
|
|
179
|
+
* const result = await client.cardColumns.get(123);
|
|
179
180
|
* ```
|
|
180
181
|
*/
|
|
181
|
-
async
|
|
182
|
+
async get(columnId: number): Promise<CardColumn> {
|
|
182
183
|
const response = await this.request(
|
|
183
184
|
{
|
|
184
185
|
service: "CardColumns",
|
|
185
|
-
operation: "
|
|
186
|
-
resourceType: "
|
|
187
|
-
isMutation:
|
|
186
|
+
operation: "GetCardColumn",
|
|
187
|
+
resourceType: "card_column",
|
|
188
|
+
isMutation: false,
|
|
188
189
|
resourceId: columnId,
|
|
189
190
|
},
|
|
190
191
|
() =>
|
|
191
|
-
this.client.
|
|
192
|
+
this.client.GET("/card_tables/columns/{columnId}", {
|
|
192
193
|
params: {
|
|
193
194
|
path: { columnId },
|
|
194
195
|
},
|
|
@@ -198,30 +199,35 @@ export class CardColumnsService extends BaseService {
|
|
|
198
199
|
}
|
|
199
200
|
|
|
200
201
|
/**
|
|
201
|
-
*
|
|
202
|
+
* Update an existing column
|
|
202
203
|
* @param columnId - The column ID
|
|
204
|
+
* @param req - Card_column update parameters
|
|
203
205
|
* @returns The CardColumn
|
|
204
|
-
* @throws {BasecampError} If the
|
|
206
|
+
* @throws {BasecampError} If the resource is not found or fields are invalid
|
|
205
207
|
*
|
|
206
208
|
* @example
|
|
207
209
|
* ```ts
|
|
208
|
-
* const result = await client.cardColumns.
|
|
210
|
+
* const result = await client.cardColumns.update(123, { });
|
|
209
211
|
* ```
|
|
210
212
|
*/
|
|
211
|
-
async
|
|
213
|
+
async update(columnId: number, req: UpdateCardColumnRequest): Promise<CardColumn> {
|
|
212
214
|
const response = await this.request(
|
|
213
215
|
{
|
|
214
216
|
service: "CardColumns",
|
|
215
|
-
operation: "
|
|
216
|
-
resourceType: "
|
|
217
|
+
operation: "UpdateCardColumn",
|
|
218
|
+
resourceType: "card_column",
|
|
217
219
|
isMutation: true,
|
|
218
220
|
resourceId: columnId,
|
|
219
221
|
},
|
|
220
222
|
() =>
|
|
221
|
-
this.client.
|
|
223
|
+
this.client.PUT("/card_tables/columns/{columnId}", {
|
|
222
224
|
params: {
|
|
223
225
|
path: { columnId },
|
|
224
226
|
},
|
|
227
|
+
body: {
|
|
228
|
+
title: req.title,
|
|
229
|
+
description: req.description,
|
|
230
|
+
},
|
|
225
231
|
})
|
|
226
232
|
);
|
|
227
233
|
return response;
|
|
@@ -53,6 +53,8 @@ export interface CreateQuestionCheckinRequest {
|
|
|
53
53
|
title: string;
|
|
54
54
|
/** Schedule */
|
|
55
55
|
schedule: components["schemas"]["QuestionSchedule"];
|
|
56
|
+
/** Visible to clients */
|
|
57
|
+
visibleToClients?: boolean;
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
/**
|
|
@@ -279,7 +281,7 @@ export class CheckinsService extends BaseService {
|
|
|
279
281
|
*
|
|
280
282
|
* @example
|
|
281
283
|
* ```ts
|
|
282
|
-
* const result = await client.checkins.createQuestion(123, { title: "example", schedule:
|
|
284
|
+
* const result = await client.checkins.createQuestion(123, { title: "example", schedule: { } });
|
|
283
285
|
* ```
|
|
284
286
|
*/
|
|
285
287
|
async createQuestion(questionnaireId: number, req: CreateQuestionCheckinRequest): Promise<Question> {
|
|
@@ -305,6 +307,7 @@ export class CheckinsService extends BaseService {
|
|
|
305
307
|
body: {
|
|
306
308
|
title: req.title,
|
|
307
309
|
schedule: req.schedule,
|
|
310
|
+
visible_to_clients: req.visibleToClients,
|
|
308
311
|
},
|
|
309
312
|
})
|
|
310
313
|
);
|
|
@@ -45,6 +45,8 @@ export interface CreateDocumentRequest {
|
|
|
45
45
|
status?: "active" | "drafted";
|
|
46
46
|
/** Subscriptions */
|
|
47
47
|
subscriptions?: number[];
|
|
48
|
+
/** Visible to clients */
|
|
49
|
+
visibleToClients?: boolean;
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
|
|
@@ -186,6 +188,7 @@ export class DocumentsService extends BaseService {
|
|
|
186
188
|
content: req.content,
|
|
187
189
|
status: req.status,
|
|
188
190
|
subscriptions: req.subscriptions,
|
|
191
|
+
visible_to_clients: req.visibleToClients,
|
|
189
192
|
},
|
|
190
193
|
})
|
|
191
194
|
);
|
|
@@ -169,7 +169,7 @@ export class GaugesService extends BaseService {
|
|
|
169
169
|
*
|
|
170
170
|
* @example
|
|
171
171
|
* ```ts
|
|
172
|
-
* await client.gauges.toggleGauge(123, { gauge:
|
|
172
|
+
* await client.gauges.toggleGauge(123, { gauge: { enabled: true } });
|
|
173
173
|
* ```
|
|
174
174
|
*/
|
|
175
175
|
async toggleGauge(projectId: number, req: ToggleGaugeGaugeRequest): Promise<void> {
|
|
@@ -235,7 +235,7 @@ export class GaugesService extends BaseService {
|
|
|
235
235
|
*
|
|
236
236
|
* @example
|
|
237
237
|
* ```ts
|
|
238
|
-
* const result = await client.gauges.createGaugeNeedle(123, { gaugeNeedle:
|
|
238
|
+
* const result = await client.gauges.createGaugeNeedle(123, { gaugeNeedle: { position: 1 } });
|
|
239
239
|
* ```
|
|
240
240
|
*/
|
|
241
241
|
async createGaugeNeedle(projectId: number, req: CreateGaugeNeedleGaugeRequest): Promise<components["schemas"]["CreateGaugeNeedleResponseContent"]> {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export { AccountService } from "./account.js";
|
|
2
2
|
export { AttachmentsService } from "./attachments.js";
|
|
3
3
|
export { BoostsService } from "./boosts.js";
|
|
4
|
+
export { CardColumnsService } from "./card-columns.js";
|
|
5
|
+
export { WormholesService } from "./wormholes.js";
|
|
6
|
+
export { ToolsService } from "./tools.js";
|
|
4
7
|
export { WebhooksService } from "./webhooks.js";
|
|
5
8
|
export { CardsService } from "./cards.js";
|
|
6
9
|
export { CardStepsService } from "./card-steps.js";
|
|
7
|
-
export { CardColumnsService } from "./card-columns.js";
|
|
8
10
|
export { CardTablesService } from "./card-tables.js";
|
|
9
11
|
export { MessageTypesService } from "./message-types.js";
|
|
10
12
|
export { CampfiresService } from "./campfires.js";
|
|
@@ -13,7 +15,6 @@ export { ClientApprovalsService } from "./client-approvals.js";
|
|
|
13
15
|
export { ClientCorrespondencesService } from "./client-correspondences.js";
|
|
14
16
|
export { ClientRepliesService } from "./client-replies.js";
|
|
15
17
|
export { CommentsService } from "./comments.js";
|
|
16
|
-
export { ToolsService } from "./tools.js";
|
|
17
18
|
export { DocumentsService } from "./documents.js";
|
|
18
19
|
export { GaugesService } from "./gauges.js";
|
|
19
20
|
export { ForwardsService } from "./forwards.js";
|
|
@@ -41,6 +41,8 @@ export interface CreateMessageRequest {
|
|
|
41
41
|
categoryId?: number;
|
|
42
42
|
/** Subscriptions */
|
|
43
43
|
subscriptions?: number[];
|
|
44
|
+
/** Visible to clients */
|
|
45
|
+
visibleToClients?: boolean;
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
/**
|
|
@@ -136,6 +138,7 @@ export class MessagesService extends BaseService {
|
|
|
136
138
|
status: req.status,
|
|
137
139
|
category_id: req.categoryId,
|
|
138
140
|
subscriptions: req.subscriptions,
|
|
141
|
+
visible_to_clients: req.visibleToClients,
|
|
139
142
|
},
|
|
140
143
|
})
|
|
141
144
|
);
|
|
@@ -152,7 +152,7 @@ export class PeopleService extends BaseService {
|
|
|
152
152
|
*
|
|
153
153
|
* @example
|
|
154
154
|
* ```ts
|
|
155
|
-
* const result = await client.people.updateMyPreferences({ person:
|
|
155
|
+
* const result = await client.people.updateMyPreferences({ person: { } });
|
|
156
156
|
* ```
|
|
157
157
|
*/
|
|
158
158
|
async updateMyPreferences(req: UpdateMyPreferencesPeopleRequest): Promise<components["schemas"]["UpdateMyPreferencesResponseContent"]> {
|
|
@@ -328,7 +328,7 @@ export class PeopleService extends BaseService {
|
|
|
328
328
|
*
|
|
329
329
|
* @example
|
|
330
330
|
* ```ts
|
|
331
|
-
* const result = await client.people.enableOutOfOffice(123, { outOfOffice: "example" });
|
|
331
|
+
* const result = await client.people.enableOutOfOffice(123, { outOfOffice: { start_date: "example", end_date: "example" } });
|
|
332
332
|
* ```
|
|
333
333
|
*/
|
|
334
334
|
async enableOutOfOffice(personId: number, req: EnableOutOfOfficePeopleRequest): Promise<components["schemas"]["EnableOutOfOfficeResponseContent"]> {
|
|
@@ -84,7 +84,7 @@ export class ReportsService extends BaseService {
|
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
/**
|
|
87
|
-
* Get upcoming schedule entries within a date window
|
|
87
|
+
* Get upcoming schedule entries and assignable items within a date window.
|
|
88
88
|
* @param options - Optional query parameters
|
|
89
89
|
* @returns The upcoming_schedule
|
|
90
90
|
*
|
|
@@ -75,6 +75,8 @@ export interface CreateEntryScheduleRequest {
|
|
|
75
75
|
notify?: boolean;
|
|
76
76
|
/** Subscriptions */
|
|
77
77
|
subscriptions?: number[];
|
|
78
|
+
/** Visible to clients */
|
|
79
|
+
visibleToClients?: boolean;
|
|
78
80
|
}
|
|
79
81
|
|
|
80
82
|
|
|
@@ -330,6 +332,7 @@ export class SchedulesService extends BaseService {
|
|
|
330
332
|
all_day: req.allDay,
|
|
331
333
|
notify: req.notify,
|
|
332
334
|
subscriptions: req.subscriptions,
|
|
335
|
+
visible_to_clients: req.visibleToClients,
|
|
333
336
|
},
|
|
334
337
|
})
|
|
335
338
|
);
|
|
@@ -18,8 +18,37 @@ import type { PaginationOptions } from "../../pagination.js";
|
|
|
18
18
|
* Options for search.
|
|
19
19
|
*/
|
|
20
20
|
export interface SearchSearchOptions extends PaginationOptions {
|
|
21
|
+
/** Recording types to include. Use `key` values from the metadata
|
|
22
|
+
endpoint's `recording_search_types`. Available since Basecamp 5. */
|
|
23
|
+
typeNames?: string[];
|
|
24
|
+
/** Project IDs to filter by. Available since Basecamp 5. */
|
|
25
|
+
bucketIds?: number[];
|
|
26
|
+
/** Creator person IDs to filter by. Available since Basecamp 5. */
|
|
27
|
+
creatorIds?: number[];
|
|
28
|
+
/** Filter attachments by type. Use `key` values from the metadata
|
|
29
|
+
endpoint's `file_search_types`. */
|
|
30
|
+
fileType?: string;
|
|
31
|
+
/** Set to true to exclude chat results. */
|
|
32
|
+
excludeChat?: boolean;
|
|
33
|
+
/** Filter by since */
|
|
34
|
+
since?: "last_7_days" | "last_30_days" | "last_90_days" | "last_12_months" | "forever";
|
|
21
35
|
/** Filter by sort */
|
|
22
|
-
sort?: "best_match" | "
|
|
36
|
+
sort?: "best_match" | "recency";
|
|
37
|
+
/**
|
|
38
|
+
* Deprecated: prefer type_names[].
|
|
39
|
+
* @deprecated prefer type_names[].
|
|
40
|
+
*/
|
|
41
|
+
type?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Deprecated: prefer bucket_ids[].
|
|
44
|
+
* @deprecated prefer bucket_ids[].
|
|
45
|
+
*/
|
|
46
|
+
bucketId?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Deprecated: prefer creator_ids[].
|
|
49
|
+
* @deprecated prefer creator_ids[].
|
|
50
|
+
*/
|
|
51
|
+
creatorId?: number;
|
|
23
52
|
}
|
|
24
53
|
|
|
25
54
|
|
|
@@ -54,7 +83,7 @@ export class SearchService extends BaseService {
|
|
|
54
83
|
() =>
|
|
55
84
|
this.client.GET("/search.json", {
|
|
56
85
|
params: {
|
|
57
|
-
query: { q: q, sort: options?.sort },
|
|
86
|
+
query: { q: q, "type_names[]": options?.typeNames, "bucket_ids[]": options?.bucketIds, "creator_ids[]": options?.creatorIds, "file_type": options?.fileType, "exclude_chat": options?.excludeChat, since: options?.since, sort: options?.sort, type: options?.type, "bucket_id": options?.bucketId, "creator_id": options?.creatorId },
|
|
58
87
|
},
|
|
59
88
|
})
|
|
60
89
|
, options
|
|
@@ -49,10 +49,8 @@ export interface UpdateTemplateRequest {
|
|
|
49
49
|
* Request parameters for createProject.
|
|
50
50
|
*/
|
|
51
51
|
export interface CreateProjectTemplateRequest {
|
|
52
|
-
/**
|
|
53
|
-
|
|
54
|
-
/** Rich text description (HTML) */
|
|
55
|
-
description?: string;
|
|
52
|
+
/** Project */
|
|
53
|
+
project: components["schemas"]["ProjectConstructionAttributes"];
|
|
56
54
|
}
|
|
57
55
|
|
|
58
56
|
|
|
@@ -232,12 +230,12 @@ export class TemplatesService extends BaseService {
|
|
|
232
230
|
*
|
|
233
231
|
* @example
|
|
234
232
|
* ```ts
|
|
235
|
-
* const result = await client.templates.createProject(123, { name: "My example" });
|
|
233
|
+
* const result = await client.templates.createProject(123, { project: { name: "My example" } });
|
|
236
234
|
* ```
|
|
237
235
|
*/
|
|
238
236
|
async createProject(templateId: number, req: CreateProjectTemplateRequest): Promise<components["schemas"]["CreateProjectFromTemplateResponseContent"]> {
|
|
239
|
-
if (!req.
|
|
240
|
-
throw Errors.validation("
|
|
237
|
+
if (!req.project) {
|
|
238
|
+
throw Errors.validation("Project is required");
|
|
241
239
|
}
|
|
242
240
|
const response = await this.request(
|
|
243
241
|
{
|
|
@@ -253,8 +251,7 @@ export class TemplatesService extends BaseService {
|
|
|
253
251
|
path: { templateId },
|
|
254
252
|
},
|
|
255
253
|
body: {
|
|
256
|
-
|
|
257
|
-
description: req.description,
|
|
254
|
+
project: req.project,
|
|
258
255
|
},
|
|
259
256
|
})
|
|
260
257
|
);
|
|
@@ -27,6 +27,14 @@ export interface UpdateTodolistRequest {
|
|
|
27
27
|
description?: string;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Request parameters for reposition.
|
|
32
|
+
*/
|
|
33
|
+
export interface RepositionTodolistRequest {
|
|
34
|
+
/** Position for ordering (1-based) */
|
|
35
|
+
position: number;
|
|
36
|
+
}
|
|
37
|
+
|
|
30
38
|
/**
|
|
31
39
|
* Options for list.
|
|
32
40
|
*/
|
|
@@ -43,6 +51,8 @@ export interface CreateTodolistRequest {
|
|
|
43
51
|
name: string;
|
|
44
52
|
/** Rich text description (HTML) */
|
|
45
53
|
description?: string;
|
|
54
|
+
/** Visible to clients */
|
|
55
|
+
visibleToClients?: boolean;
|
|
46
56
|
}
|
|
47
57
|
|
|
48
58
|
|
|
@@ -73,6 +83,7 @@ export class TodolistsService extends BaseService {
|
|
|
73
83
|
operation: "GetTodolistOrGroup",
|
|
74
84
|
resourceType: "todolist_or_group",
|
|
75
85
|
isMutation: false,
|
|
86
|
+
resourceId: id,
|
|
76
87
|
},
|
|
77
88
|
() =>
|
|
78
89
|
this.client.GET("/todolists/{id}", {
|
|
@@ -103,6 +114,7 @@ export class TodolistsService extends BaseService {
|
|
|
103
114
|
operation: "UpdateTodolistOrGroup",
|
|
104
115
|
resourceType: "todolist_or_group",
|
|
105
116
|
isMutation: true,
|
|
117
|
+
resourceId: id,
|
|
106
118
|
},
|
|
107
119
|
() =>
|
|
108
120
|
this.client.PUT("/todolists/{id}", {
|
|
@@ -118,6 +130,39 @@ export class TodolistsService extends BaseService {
|
|
|
118
130
|
return response;
|
|
119
131
|
}
|
|
120
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Reposition a to-do list within its to-do set.
|
|
135
|
+
* @param todolistId - The todolist ID
|
|
136
|
+
* @param req - Todolist request parameters
|
|
137
|
+
* @returns void
|
|
138
|
+
* @throws {BasecampError} If the request fails
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts
|
|
142
|
+
* await client.todolists.reposition(123, { position: 1 });
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
async reposition(todolistId: number, req: RepositionTodolistRequest): Promise<void> {
|
|
146
|
+
await this.request(
|
|
147
|
+
{
|
|
148
|
+
service: "Todolists",
|
|
149
|
+
operation: "RepositionTodolist",
|
|
150
|
+
resourceType: "todolist",
|
|
151
|
+
isMutation: true,
|
|
152
|
+
resourceId: todolistId,
|
|
153
|
+
},
|
|
154
|
+
() =>
|
|
155
|
+
this.client.PUT("/todosets/todolists/{todolistId}/position.json", {
|
|
156
|
+
params: {
|
|
157
|
+
path: { todolistId },
|
|
158
|
+
},
|
|
159
|
+
body: {
|
|
160
|
+
position: req.position,
|
|
161
|
+
},
|
|
162
|
+
})
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
|
|
121
166
|
/**
|
|
122
167
|
* List todolists in a todoset
|
|
123
168
|
* @param todosetId - The todoset ID
|
|
@@ -184,6 +229,7 @@ export class TodolistsService extends BaseService {
|
|
|
184
229
|
body: {
|
|
185
230
|
name: req.name,
|
|
186
231
|
description: req.description,
|
|
232
|
+
visible_to_clients: req.visibleToClients,
|
|
187
233
|
},
|
|
188
234
|
})
|
|
189
235
|
);
|
|
@@ -48,11 +48,11 @@ export interface CreateTodoRequest {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
|
-
* Request parameters for
|
|
51
|
+
* Request parameters for replace.
|
|
52
52
|
*/
|
|
53
|
-
export interface
|
|
53
|
+
export interface ReplaceTodoRequest {
|
|
54
54
|
/** Text content */
|
|
55
|
-
content
|
|
55
|
+
content: string;
|
|
56
56
|
/** Rich text description (HTML) */
|
|
57
57
|
description?: string;
|
|
58
58
|
/** Person IDs to assign to */
|
|
@@ -201,18 +201,21 @@ export class TodosService extends BaseService {
|
|
|
201
201
|
}
|
|
202
202
|
|
|
203
203
|
/**
|
|
204
|
-
*
|
|
204
|
+
* Replace a todo with a new complete representation.
|
|
205
205
|
* @param todoId - The todo ID
|
|
206
|
-
* @param req - Todo
|
|
206
|
+
* @param req - Todo request parameters
|
|
207
207
|
* @returns The Todo
|
|
208
|
-
* @throws {BasecampError} If the
|
|
208
|
+
* @throws {BasecampError} If the request fails
|
|
209
209
|
*
|
|
210
210
|
* @example
|
|
211
211
|
* ```ts
|
|
212
|
-
* const result = await client.todos.
|
|
212
|
+
* const result = await client.todos.replace(123, { content: "Hello world" });
|
|
213
213
|
* ```
|
|
214
214
|
*/
|
|
215
|
-
async
|
|
215
|
+
async replace(todoId: number, req: ReplaceTodoRequest): Promise<Todo> {
|
|
216
|
+
if (!req.content) {
|
|
217
|
+
throw Errors.validation("Content is required");
|
|
218
|
+
}
|
|
216
219
|
if (req.dueOn && !/^\d{4}-\d{2}-\d{2}$/.test(req.dueOn)) {
|
|
217
220
|
throw Errors.validation("Due on must be in YYYY-MM-DD format");
|
|
218
221
|
}
|
|
@@ -222,7 +225,7 @@ export class TodosService extends BaseService {
|
|
|
222
225
|
const response = await this.request(
|
|
223
226
|
{
|
|
224
227
|
service: "Todos",
|
|
225
|
-
operation: "
|
|
228
|
+
operation: "ReplaceTodo",
|
|
226
229
|
resourceType: "todo",
|
|
227
230
|
isMutation: true,
|
|
228
231
|
resourceId: todoId,
|