@37signals/basecamp 0.8.0 → 0.10.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 +3 -2
- package/dist/client.d.ts +9 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +35 -13
- package/dist/client.js.map +1 -1
- package/dist/generated/metadata.d.ts.map +1 -1
- package/dist/generated/metadata.js +343 -12
- package/dist/generated/metadata.js.map +1 -1
- package/dist/generated/metadata.ts +343 -12
- package/dist/generated/openapi-stripped.json +7127 -3763
- package/dist/generated/path-mapping.d.ts.map +1 -1
- package/dist/generated/path-mapping.js +27 -5
- package/dist/generated/path-mapping.js.map +1 -1
- package/dist/generated/path-mapping.ts +27 -5
- package/dist/generated/schema.d.ts +2911 -503
- package/dist/generated/services/boosts.d.ts +13 -10
- package/dist/generated/services/boosts.d.ts.map +1 -1
- package/dist/generated/services/boosts.js +5 -5
- package/dist/generated/services/boosts.js.map +1 -1
- package/dist/generated/services/boosts.ts +12 -10
- package/dist/generated/services/card-columns.d.ts.map +1 -1
- package/dist/generated/services/card-columns.js +3 -0
- package/dist/generated/services/card-columns.js.map +1 -1
- package/dist/generated/services/card-columns.ts +3 -0
- package/dist/generated/services/cards.d.ts +4 -4
- package/dist/generated/services/cards.d.ts.map +1 -1
- package/dist/generated/services/cards.js +2 -2
- package/dist/generated/services/cards.js.map +1 -1
- package/dist/generated/services/cards.ts +4 -4
- 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/everything.d.ts +323 -0
- package/dist/generated/services/everything.d.ts.map +1 -0
- package/dist/generated/services/everything.js +381 -0
- package/dist/generated/services/everything.js.map +1 -0
- package/dist/generated/services/everything.ts +632 -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 -1
- package/dist/generated/services/index.d.ts.map +1 -1
- package/dist/generated/services/index.js +3 -1
- package/dist/generated/services/index.js.map +1 -1
- package/dist/generated/services/index.ts +3 -1
- package/dist/generated/services/message-types.d.ts +15 -10
- package/dist/generated/services/message-types.d.ts.map +1 -1
- package/dist/generated/services/message-types.js +35 -18
- package/dist/generated/services/message-types.js.map +1 -1
- package/dist/generated/services/message-types.ts +34 -18
- 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/my-notifications.d.ts +27 -0
- package/dist/generated/services/my-notifications.d.ts.map +1 -1
- package/dist/generated/services/my-notifications.js +23 -1
- package/dist/generated/services/my-notifications.js.map +1 -1
- package/dist/generated/services/my-notifications.ts +46 -1
- 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/recordings.d.ts +2 -2
- package/dist/generated/services/recordings.d.ts.map +1 -1
- package/dist/generated/services/recordings.js +1 -1
- package/dist/generated/services/recordings.js.map +1 -1
- package/dist/generated/services/recordings.ts +2 -2
- package/dist/generated/services/schedules.d.ts +11 -1
- 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 +12 -1
- 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/tools.d.ts +2 -0
- package/dist/generated/services/tools.d.ts.map +1 -1
- package/dist/generated/services/tools.js +2 -1
- package/dist/generated/services/tools.js.map +1 -1
- package/dist/generated/services/tools.ts +4 -1
- 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 +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/services/cards-extensions.d.ts +76 -0
- package/dist/services/cards-extensions.d.ts.map +1 -0
- package/dist/services/cards-extensions.js +67 -0
- package/dist/services/cards-extensions.js.map +1 -0
- package/package.json +2 -2
- package/src/generated/metadata.ts +343 -12
- package/src/generated/openapi-stripped.json +7127 -3763
- package/src/generated/path-mapping.ts +27 -5
- package/src/generated/schema.d.ts +2911 -503
- package/src/generated/services/boosts.ts +12 -10
- package/src/generated/services/card-columns.ts +3 -0
- package/src/generated/services/cards.ts +4 -4
- package/src/generated/services/checkins.ts +4 -1
- package/src/generated/services/documents.ts +3 -0
- package/src/generated/services/everything.ts +632 -0
- package/src/generated/services/gauges.ts +2 -2
- package/src/generated/services/index.ts +3 -1
- package/src/generated/services/message-types.ts +34 -18
- package/src/generated/services/messages.ts +3 -0
- package/src/generated/services/my-notifications.ts +46 -1
- package/src/generated/services/people.ts +2 -2
- package/src/generated/services/recordings.ts +2 -2
- package/src/generated/services/schedules.ts +12 -1
- 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/tools.ts +4 -1
- package/src/generated/services/uploads.ts +3 -0
- package/src/generated/services/webhooks.ts +2 -2
- package/src/generated/services/wormholes.ts +145 -0
|
@@ -55,24 +55,29 @@ export class MessageTypesService extends BaseService {
|
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
57
|
* List message types in a project
|
|
58
|
+
* @param bucketId - The bucket ID
|
|
58
59
|
* @param options - Optional query parameters
|
|
59
60
|
* @returns All MessageType across all pages, with .meta.totalCount
|
|
60
61
|
*
|
|
61
62
|
* @example
|
|
62
63
|
* ```ts
|
|
63
|
-
* const result = await client.messageTypes.list();
|
|
64
|
+
* const result = await client.messageTypes.list(123);
|
|
64
65
|
* ```
|
|
65
66
|
*/
|
|
66
|
-
async list(options?: ListMessageTypeOptions): Promise<ListResult<MessageType>> {
|
|
67
|
+
async list(bucketId: number, options?: ListMessageTypeOptions): Promise<ListResult<MessageType>> {
|
|
67
68
|
return this.requestPaginated(
|
|
68
69
|
{
|
|
69
70
|
service: "MessageTypes",
|
|
70
71
|
operation: "ListMessageTypes",
|
|
71
72
|
resourceType: "message_type",
|
|
72
73
|
isMutation: false,
|
|
74
|
+
projectId: bucketId,
|
|
73
75
|
},
|
|
74
76
|
() =>
|
|
75
|
-
this.client.GET("/categories.json", {
|
|
77
|
+
this.client.GET("/buckets/{bucketId}/categories.json", {
|
|
78
|
+
params: {
|
|
79
|
+
path: { bucketId },
|
|
80
|
+
},
|
|
76
81
|
})
|
|
77
82
|
, options
|
|
78
83
|
);
|
|
@@ -80,16 +85,17 @@ export class MessageTypesService extends BaseService {
|
|
|
80
85
|
|
|
81
86
|
/**
|
|
82
87
|
* Create a new message type in a project
|
|
88
|
+
* @param bucketId - The bucket ID
|
|
83
89
|
* @param req - Message_type creation parameters
|
|
84
90
|
* @returns The MessageType
|
|
85
91
|
* @throws {BasecampError} If required fields are missing or invalid
|
|
86
92
|
*
|
|
87
93
|
* @example
|
|
88
94
|
* ```ts
|
|
89
|
-
* const result = await client.messageTypes.create({ name: "My example", icon: "example" });
|
|
95
|
+
* const result = await client.messageTypes.create(123, { name: "My example", icon: "example" });
|
|
90
96
|
* ```
|
|
91
97
|
*/
|
|
92
|
-
async create(req: CreateMessageTypeRequest): Promise<MessageType> {
|
|
98
|
+
async create(bucketId: number, req: CreateMessageTypeRequest): Promise<MessageType> {
|
|
93
99
|
if (!req.name) {
|
|
94
100
|
throw Errors.validation("Name is required");
|
|
95
101
|
}
|
|
@@ -102,9 +108,13 @@ export class MessageTypesService extends BaseService {
|
|
|
102
108
|
operation: "CreateMessageType",
|
|
103
109
|
resourceType: "message_type",
|
|
104
110
|
isMutation: true,
|
|
111
|
+
projectId: bucketId,
|
|
105
112
|
},
|
|
106
113
|
() =>
|
|
107
|
-
this.client.POST("/categories.json", {
|
|
114
|
+
this.client.POST("/buckets/{bucketId}/categories.json", {
|
|
115
|
+
params: {
|
|
116
|
+
path: { bucketId },
|
|
117
|
+
},
|
|
108
118
|
body: {
|
|
109
119
|
name: req.name,
|
|
110
120
|
icon: req.icon,
|
|
@@ -116,28 +126,30 @@ export class MessageTypesService extends BaseService {
|
|
|
116
126
|
|
|
117
127
|
/**
|
|
118
128
|
* Get a single message type by id
|
|
129
|
+
* @param bucketId - The bucket ID
|
|
119
130
|
* @param typeId - The type ID
|
|
120
131
|
* @returns The MessageType
|
|
121
132
|
* @throws {BasecampError} If the resource is not found
|
|
122
133
|
*
|
|
123
134
|
* @example
|
|
124
135
|
* ```ts
|
|
125
|
-
* const result = await client.messageTypes.get(123);
|
|
136
|
+
* const result = await client.messageTypes.get(123, 123);
|
|
126
137
|
* ```
|
|
127
138
|
*/
|
|
128
|
-
async get(typeId: number): Promise<MessageType> {
|
|
139
|
+
async get(bucketId: number, typeId: number): Promise<MessageType> {
|
|
129
140
|
const response = await this.request(
|
|
130
141
|
{
|
|
131
142
|
service: "MessageTypes",
|
|
132
143
|
operation: "GetMessageType",
|
|
133
144
|
resourceType: "message_type",
|
|
134
145
|
isMutation: false,
|
|
146
|
+
projectId: bucketId,
|
|
135
147
|
resourceId: typeId,
|
|
136
148
|
},
|
|
137
149
|
() =>
|
|
138
|
-
this.client.GET("/categories/{typeId}", {
|
|
150
|
+
this.client.GET("/buckets/{bucketId}/categories/{typeId}", {
|
|
139
151
|
params: {
|
|
140
|
-
path: { typeId },
|
|
152
|
+
path: { bucketId, typeId },
|
|
141
153
|
},
|
|
142
154
|
})
|
|
143
155
|
);
|
|
@@ -146,6 +158,7 @@ export class MessageTypesService extends BaseService {
|
|
|
146
158
|
|
|
147
159
|
/**
|
|
148
160
|
* Update an existing message type
|
|
161
|
+
* @param bucketId - The bucket ID
|
|
149
162
|
* @param typeId - The type ID
|
|
150
163
|
* @param req - Message_type update parameters
|
|
151
164
|
* @returns The MessageType
|
|
@@ -153,22 +166,23 @@ export class MessageTypesService extends BaseService {
|
|
|
153
166
|
*
|
|
154
167
|
* @example
|
|
155
168
|
* ```ts
|
|
156
|
-
* const result = await client.messageTypes.update(123, { });
|
|
169
|
+
* const result = await client.messageTypes.update(123, 123, { });
|
|
157
170
|
* ```
|
|
158
171
|
*/
|
|
159
|
-
async update(typeId: number, req: UpdateMessageTypeRequest): Promise<MessageType> {
|
|
172
|
+
async update(bucketId: number, typeId: number, req: UpdateMessageTypeRequest): Promise<MessageType> {
|
|
160
173
|
const response = await this.request(
|
|
161
174
|
{
|
|
162
175
|
service: "MessageTypes",
|
|
163
176
|
operation: "UpdateMessageType",
|
|
164
177
|
resourceType: "message_type",
|
|
165
178
|
isMutation: true,
|
|
179
|
+
projectId: bucketId,
|
|
166
180
|
resourceId: typeId,
|
|
167
181
|
},
|
|
168
182
|
() =>
|
|
169
|
-
this.client.PUT("/categories/{typeId}", {
|
|
183
|
+
this.client.PUT("/buckets/{bucketId}/categories/{typeId}", {
|
|
170
184
|
params: {
|
|
171
|
-
path: { typeId },
|
|
185
|
+
path: { bucketId, typeId },
|
|
172
186
|
},
|
|
173
187
|
body: {
|
|
174
188
|
name: req.name,
|
|
@@ -181,28 +195,30 @@ export class MessageTypesService extends BaseService {
|
|
|
181
195
|
|
|
182
196
|
/**
|
|
183
197
|
* Delete a message type
|
|
198
|
+
* @param bucketId - The bucket ID
|
|
184
199
|
* @param typeId - The type ID
|
|
185
200
|
* @returns void
|
|
186
201
|
* @throws {BasecampError} If the request fails
|
|
187
202
|
*
|
|
188
203
|
* @example
|
|
189
204
|
* ```ts
|
|
190
|
-
* await client.messageTypes.delete(123);
|
|
205
|
+
* await client.messageTypes.delete(123, 123);
|
|
191
206
|
* ```
|
|
192
207
|
*/
|
|
193
|
-
async delete(typeId: number): Promise<void> {
|
|
208
|
+
async delete(bucketId: number, typeId: number): Promise<void> {
|
|
194
209
|
await this.request(
|
|
195
210
|
{
|
|
196
211
|
service: "MessageTypes",
|
|
197
212
|
operation: "DeleteMessageType",
|
|
198
213
|
resourceType: "message_type",
|
|
199
214
|
isMutation: true,
|
|
215
|
+
projectId: bucketId,
|
|
200
216
|
resourceId: typeId,
|
|
201
217
|
},
|
|
202
218
|
() =>
|
|
203
|
-
this.client.DELETE("/categories/{typeId}", {
|
|
219
|
+
this.client.DELETE("/buckets/{bucketId}/categories/{typeId}", {
|
|
204
220
|
params: {
|
|
205
|
-
path: { typeId },
|
|
221
|
+
path: { bucketId, typeId },
|
|
206
222
|
},
|
|
207
223
|
})
|
|
208
224
|
);
|
|
@@ -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
|
);
|
|
@@ -6,12 +6,16 @@
|
|
|
6
6
|
|
|
7
7
|
import { BaseService } from "../../services/base.js";
|
|
8
8
|
import type { components } from "../schema.js";
|
|
9
|
+
import { ListResult } from "../../pagination.js";
|
|
10
|
+
import type { PaginationOptions } from "../../pagination.js";
|
|
9
11
|
import { Errors } from "../../errors.js";
|
|
10
12
|
|
|
11
13
|
// =============================================================================
|
|
12
14
|
// Types
|
|
13
15
|
// =============================================================================
|
|
14
16
|
|
|
17
|
+
/** Notification entity from the Basecamp API. */
|
|
18
|
+
export type Notification = components["schemas"]["Notification"];
|
|
15
19
|
|
|
16
20
|
/**
|
|
17
21
|
* Options for myNotifications.
|
|
@@ -19,6 +23,19 @@ import { Errors } from "../../errors.js";
|
|
|
19
23
|
export interface MyNotificationsMyNotificationOptions {
|
|
20
24
|
/** Page number for paginating through read items. Defaults to 1. */
|
|
21
25
|
page?: number;
|
|
26
|
+
/** Set to true to cap `bubble_ups` at 2 current bubble-ups and omit the
|
|
27
|
+
`scheduled_bubble_ups` key entirely. Defaults to false. Use the dedicated
|
|
28
|
+
bubble-ups endpoint (GetBubbleUps) to page through all current and
|
|
29
|
+
scheduled bubble-ups. */
|
|
30
|
+
limitBubbleUps?: boolean;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Options for bubbleUps.
|
|
35
|
+
*/
|
|
36
|
+
export interface BubbleUpsMyNotificationOptions extends PaginationOptions {
|
|
37
|
+
/** Page number. Defaults to 1. */
|
|
38
|
+
page?: number;
|
|
22
39
|
}
|
|
23
40
|
|
|
24
41
|
/**
|
|
@@ -60,13 +77,41 @@ export class MyNotificationsService extends BaseService {
|
|
|
60
77
|
() =>
|
|
61
78
|
this.client.GET("/my/readings.json", {
|
|
62
79
|
params: {
|
|
63
|
-
query: { page: options?.page },
|
|
80
|
+
query: { page: options?.page, "limit_bubble_ups": options?.limitBubbleUps },
|
|
64
81
|
},
|
|
65
82
|
})
|
|
66
83
|
);
|
|
67
84
|
return response;
|
|
68
85
|
}
|
|
69
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Get the current user's current and scheduled bubble-ups (paginated, 50 per page).
|
|
89
|
+
* @param options - Optional query parameters
|
|
90
|
+
* @returns All Notification across all pages, with .meta.totalCount
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```ts
|
|
94
|
+
* const result = await client.myNotifications.bubbleUps();
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
async bubbleUps(options?: BubbleUpsMyNotificationOptions): Promise<ListResult<Notification>> {
|
|
98
|
+
return this.requestPaginated(
|
|
99
|
+
{
|
|
100
|
+
service: "MyNotifications",
|
|
101
|
+
operation: "GetBubbleUps",
|
|
102
|
+
resourceType: "bubble_up",
|
|
103
|
+
isMutation: false,
|
|
104
|
+
},
|
|
105
|
+
() =>
|
|
106
|
+
this.client.GET("/my/readings/bubble_ups.json", {
|
|
107
|
+
params: {
|
|
108
|
+
query: { page: options?.page },
|
|
109
|
+
},
|
|
110
|
+
})
|
|
111
|
+
, options
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
70
115
|
/**
|
|
71
116
|
* Mark specified items as read
|
|
72
117
|
* @param req - Resource request parameters
|
|
@@ -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"]> {
|
|
@@ -42,7 +42,7 @@ export class RecordingsService extends BaseService {
|
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* List recordings of a given type across projects
|
|
45
|
-
* @param type - Comment|Document|Kanban::Card|Kanban::Step|Message|Question::Answer|Schedule::Entry|Todo|Todolist|Upload|Vault
|
|
45
|
+
* @param type - Comment|Document|Door|Kanban::Card|Kanban::Step|Message|Question::Answer|Schedule::Entry|Todo|Todolist|Upload|Vault
|
|
46
46
|
* @param options - Optional query parameters
|
|
47
47
|
* @returns All Recording across all pages, with .meta.totalCount
|
|
48
48
|
*
|
|
@@ -54,7 +54,7 @@ export class RecordingsService extends BaseService {
|
|
|
54
54
|
* const filtered = await client.recordings.list("type", { bucket: [123] });
|
|
55
55
|
* ```
|
|
56
56
|
*/
|
|
57
|
-
async list(type: "Comment" | "Document" | "Kanban::Card" | "Kanban::Step" | "Message" | "Question::Answer" | "Schedule::Entry" | "Todo" | "Todolist" | "Upload" | "Vault", options?: ListRecordingOptions): Promise<ListResult<Recording>> {
|
|
57
|
+
async list(type: "Comment" | "Document" | "Door" | "Kanban::Card" | "Kanban::Step" | "Message" | "Question::Answer" | "Schedule::Entry" | "Todo" | "Todolist" | "Upload" | "Vault", options?: ListRecordingOptions): Promise<ListResult<Recording>> {
|
|
58
58
|
return this.requestPaginated(
|
|
59
59
|
{
|
|
60
60
|
service: "Recordings",
|
|
@@ -31,7 +31,15 @@ export interface UpdateEntryScheduleRequest {
|
|
|
31
31
|
endsAt?: string;
|
|
32
32
|
/** Rich text description (HTML) */
|
|
33
33
|
description?: string;
|
|
34
|
-
/**
|
|
34
|
+
/** Replaces the entry's participants.
|
|
35
|
+
|
|
36
|
+
Omitting this member preserves the current participants; sending an empty
|
|
37
|
+
array clears them. That guarantee is BC3-side and recent: until
|
|
38
|
+
basecamp/bc3#12425, `Schedules::EntriesController#update` called
|
|
39
|
+
`replace_participants` unconditionally, so any update omitting the key —
|
|
40
|
+
including the shape in BC3's own "Update a schedule entry" doc example —
|
|
41
|
+
silently removed every participant and notified each one. The controller
|
|
42
|
+
now guards on the request actually addressing participants. */
|
|
35
43
|
participantIds?: number[];
|
|
36
44
|
/** All day */
|
|
37
45
|
allDay?: boolean;
|
|
@@ -75,6 +83,8 @@ export interface CreateEntryScheduleRequest {
|
|
|
75
83
|
notify?: boolean;
|
|
76
84
|
/** Subscriptions */
|
|
77
85
|
subscriptions?: number[];
|
|
86
|
+
/** Visible to clients */
|
|
87
|
+
visibleToClients?: boolean;
|
|
78
88
|
}
|
|
79
89
|
|
|
80
90
|
|
|
@@ -330,6 +340,7 @@ export class SchedulesService extends BaseService {
|
|
|
330
340
|
all_day: req.allDay,
|
|
331
341
|
notify: req.notify,
|
|
332
342
|
subscriptions: req.subscriptions,
|
|
343
|
+
visible_to_clients: req.visibleToClients,
|
|
333
344
|
},
|
|
334
345
|
})
|
|
335
346
|
);
|
|
@@ -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
|
);
|
|
@@ -23,6 +23,8 @@ export interface CreateToolRequest {
|
|
|
23
23
|
toolType: string;
|
|
24
24
|
/** Title for the new tool. When omitted, Basecamp assigns the next available default title for the tool type. */
|
|
25
25
|
title?: string;
|
|
26
|
+
/** Create the tool already visible to clients. Honored only for tool types that manage their own client visibility (Chat::Transcript, Kanban::Board), which otherwise start hidden; every other tool type ignores it and inherits the project default. */
|
|
27
|
+
visibleToClients?: boolean;
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
/**
|
|
@@ -73,7 +75,7 @@ export class ToolsService extends BaseService {
|
|
|
73
75
|
operation: "CreateTool",
|
|
74
76
|
resourceType: "tool",
|
|
75
77
|
isMutation: true,
|
|
76
|
-
|
|
78
|
+
projectId: bucketId,
|
|
77
79
|
},
|
|
78
80
|
() =>
|
|
79
81
|
this.client.POST("/buckets/{bucketId}/dock/tools.json", {
|
|
@@ -83,6 +85,7 @@ export class ToolsService extends BaseService {
|
|
|
83
85
|
body: {
|
|
84
86
|
tool_type: req.toolType,
|
|
85
87
|
title: req.title,
|
|
88
|
+
visible_to_clients: req.visibleToClients,
|
|
86
89
|
},
|
|
87
90
|
})
|
|
88
91
|
);
|
|
@@ -51,6 +51,8 @@ export interface CreateUploadRequest {
|
|
|
51
51
|
baseName?: string;
|
|
52
52
|
/** Subscriptions */
|
|
53
53
|
subscriptions?: number[];
|
|
54
|
+
/** Visible to clients */
|
|
55
|
+
visibleToClients?: boolean;
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
|
|
@@ -222,6 +224,7 @@ export class UploadsService extends BaseService {
|
|
|
222
224
|
description: req.description,
|
|
223
225
|
base_name: req.baseName,
|
|
224
226
|
subscriptions: req.subscriptions,
|
|
227
|
+
visible_to_clients: req.visibleToClients,
|
|
225
228
|
},
|
|
226
229
|
})
|
|
227
230
|
);
|
|
@@ -75,7 +75,7 @@ export class WebhooksService extends BaseService {
|
|
|
75
75
|
operation: "ListWebhooks",
|
|
76
76
|
resourceType: "webhook",
|
|
77
77
|
isMutation: false,
|
|
78
|
-
|
|
78
|
+
projectId: bucketId,
|
|
79
79
|
},
|
|
80
80
|
() =>
|
|
81
81
|
this.client.GET("/buckets/{bucketId}/webhooks.json", {
|
|
@@ -112,7 +112,7 @@ export class WebhooksService extends BaseService {
|
|
|
112
112
|
operation: "CreateWebhook",
|
|
113
113
|
resourceType: "webhook",
|
|
114
114
|
isMutation: true,
|
|
115
|
-
|
|
115
|
+
projectId: bucketId,
|
|
116
116
|
},
|
|
117
117
|
() =>
|
|
118
118
|
this.client.POST("/buckets/{bucketId}/webhooks.json", {
|