@37signals/basecamp 0.11.0 → 0.12.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/dist/client.d.ts +14 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +200 -162
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +1 -1
- package/dist/generated/metadata.d.ts.map +1 -1
- package/dist/generated/metadata.js +172 -1
- package/dist/generated/metadata.js.map +1 -1
- package/dist/generated/metadata.ts +172 -1
- package/dist/generated/openapi-stripped.json +2074 -134
- package/dist/generated/path-mapping.d.ts.map +1 -1
- package/dist/generated/path-mapping.js +13 -0
- package/dist/generated/path-mapping.js.map +1 -1
- package/dist/generated/path-mapping.ts +13 -0
- package/dist/generated/schema.d.ts +1361 -25
- package/dist/generated/services/bookmarks.d.ts +76 -0
- package/dist/generated/services/bookmarks.d.ts.map +1 -0
- package/dist/generated/services/bookmarks.js +114 -0
- package/dist/generated/services/bookmarks.js.map +1 -0
- package/dist/generated/services/bookmarks.ts +158 -0
- package/dist/generated/services/calendars.d.ts +47 -0
- package/dist/generated/services/calendars.d.ts.map +1 -0
- package/dist/generated/services/calendars.js +73 -0
- package/dist/generated/services/calendars.js.map +1 -0
- package/dist/generated/services/calendars.ts +102 -0
- package/dist/generated/services/drafts.d.ts +38 -0
- package/dist/generated/services/drafts.d.ts.map +1 -0
- package/dist/generated/services/drafts.js +40 -0
- package/dist/generated/services/drafts.js.map +1 -0
- package/dist/generated/services/drafts.ts +67 -0
- package/dist/generated/services/everything.d.ts +69 -2
- package/dist/generated/services/everything.d.ts.map +1 -1
- package/dist/generated/services/everything.js +23 -13
- package/dist/generated/services/everything.js.map +1 -1
- package/dist/generated/services/everything.ts +86 -11
- package/dist/generated/services/index.d.ts +5 -1
- package/dist/generated/services/index.d.ts.map +1 -1
- package/dist/generated/services/index.js +5 -1
- package/dist/generated/services/index.js.map +1 -1
- package/dist/generated/services/index.ts +5 -1
- package/dist/generated/services/my-assignments.d.ts +52 -0
- package/dist/generated/services/my-assignments.d.ts.map +1 -1
- package/dist/generated/services/my-assignments.js +71 -0
- package/dist/generated/services/my-assignments.js.map +1 -1
- package/dist/generated/services/my-assignments.ts +104 -0
- package/dist/generated/services/my-notes.d.ts +45 -0
- package/dist/generated/services/my-notes.d.ts.map +1 -0
- package/dist/generated/services/my-notes.js +62 -0
- package/dist/generated/services/my-notes.js.map +1 -0
- package/dist/generated/services/my-notes.ts +92 -0
- package/dist/generated/services/todos.d.ts +33 -0
- package/dist/generated/services/todos.d.ts.map +1 -1
- package/dist/generated/services/todos.js +46 -0
- package/dist/generated/services/todos.js.map +1 -1
- package/dist/generated/services/todos.ts +71 -0
- package/dist/hooks/otel.d.ts +1 -1
- package/dist/hooks/otel.js +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/oauth/discovery.d.ts.map +1 -1
- package/dist/oauth/discovery.js +1 -0
- package/dist/oauth/discovery.js.map +1 -1
- package/dist/pagination.d.ts +1 -1
- package/dist/pagination.js +1 -1
- package/package.json +1 -1
- package/src/generated/metadata.ts +172 -1
- package/src/generated/openapi-stripped.json +2074 -134
- package/src/generated/path-mapping.ts +13 -0
- package/src/generated/schema.d.ts +1361 -25
- package/src/generated/services/bookmarks.ts +158 -0
- package/src/generated/services/calendars.ts +102 -0
- package/src/generated/services/drafts.ts +67 -0
- package/src/generated/services/everything.ts +86 -11
- package/src/generated/services/index.ts +5 -1
- package/src/generated/services/my-assignments.ts +104 -0
- package/src/generated/services/my-notes.ts +92 -0
- package/src/generated/services/todos.ts +71 -0
|
@@ -21,6 +21,24 @@ due_later_this_week, due_next_week, due_later */
|
|
|
21
21
|
scope?: string;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Request parameters for prioritizeAssignment.
|
|
26
|
+
*/
|
|
27
|
+
export interface PrioritizeAssignmentMyAssignmentRequest {
|
|
28
|
+
/** The recording id to prioritize. */
|
|
29
|
+
id: number;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Request parameters for reorderUpNext.
|
|
34
|
+
*/
|
|
35
|
+
export interface ReorderUpNextMyAssignmentRequest {
|
|
36
|
+
/** The recording id to move, chosen the same way as when prioritizing. */
|
|
37
|
+
sourceId: number;
|
|
38
|
+
/** The 1-based position to move it to. */
|
|
39
|
+
position: number;
|
|
40
|
+
}
|
|
41
|
+
|
|
24
42
|
|
|
25
43
|
// =============================================================================
|
|
26
44
|
// Service
|
|
@@ -106,4 +124,90 @@ export class MyAssignmentsService extends BaseService {
|
|
|
106
124
|
);
|
|
107
125
|
return response ?? [];
|
|
108
126
|
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Add a recording to Up Next — the current user's ordered list of prioritized
|
|
130
|
+
* @param req - Resource request parameters
|
|
131
|
+
* @returns void
|
|
132
|
+
* @throws {BasecampError} If the request fails
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```ts
|
|
136
|
+
* await client.myAssignments.prioritizeAssignment({ id: 1 });
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
async prioritizeAssignment(req: PrioritizeAssignmentMyAssignmentRequest): Promise<void> {
|
|
140
|
+
await this.request(
|
|
141
|
+
{
|
|
142
|
+
service: "MyAssignments",
|
|
143
|
+
operation: "PrioritizeAssignment",
|
|
144
|
+
resourceType: "resource",
|
|
145
|
+
isMutation: true,
|
|
146
|
+
},
|
|
147
|
+
() =>
|
|
148
|
+
this.client.POST("/my/priorities.json", {
|
|
149
|
+
body: {
|
|
150
|
+
id: req.id,
|
|
151
|
+
},
|
|
152
|
+
})
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Remove a recording from Up Next. Exact-target:
|
|
158
|
+
* @param recordingId - The recording ID
|
|
159
|
+
* @returns void
|
|
160
|
+
* @throws {BasecampError} If the request fails
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```ts
|
|
164
|
+
* await client.myAssignments.deprioritizeAssignment(123);
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
async deprioritizeAssignment(recordingId: number): Promise<void> {
|
|
168
|
+
await this.request(
|
|
169
|
+
{
|
|
170
|
+
service: "MyAssignments",
|
|
171
|
+
operation: "DeprioritizeAssignment",
|
|
172
|
+
resourceType: "resource",
|
|
173
|
+
isMutation: true,
|
|
174
|
+
resourceId: recordingId,
|
|
175
|
+
},
|
|
176
|
+
() =>
|
|
177
|
+
this.client.DELETE("/my/priorities/{recordingId}", {
|
|
178
|
+
params: {
|
|
179
|
+
path: { recordingId },
|
|
180
|
+
},
|
|
181
|
+
})
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Move an already-prioritized recording to a new 1-based position in Up Next
|
|
187
|
+
* @param req - Resource request parameters
|
|
188
|
+
* @returns void
|
|
189
|
+
* @throws {BasecampError} If the request fails
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```ts
|
|
193
|
+
* await client.myAssignments.reorderUpNext({ sourceId: 1, position: 1 });
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
async reorderUpNext(req: ReorderUpNextMyAssignmentRequest): Promise<void> {
|
|
197
|
+
await this.request(
|
|
198
|
+
{
|
|
199
|
+
service: "MyAssignments",
|
|
200
|
+
operation: "ReorderUpNext",
|
|
201
|
+
resourceType: "resource",
|
|
202
|
+
isMutation: true,
|
|
203
|
+
},
|
|
204
|
+
() =>
|
|
205
|
+
this.client.POST("/my/priority_moves.json", {
|
|
206
|
+
body: {
|
|
207
|
+
source_id: req.sourceId,
|
|
208
|
+
position: req.position,
|
|
209
|
+
},
|
|
210
|
+
})
|
|
211
|
+
);
|
|
212
|
+
}
|
|
109
213
|
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MyNotes service for the Basecamp API.
|
|
3
|
+
*
|
|
4
|
+
* @generated from OpenAPI spec - do not edit directly
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { BaseService } from "../../services/base.js";
|
|
8
|
+
import type { components } from "../schema.js";
|
|
9
|
+
import { Errors } from "../../errors.js";
|
|
10
|
+
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// Types
|
|
13
|
+
// =============================================================================
|
|
14
|
+
|
|
15
|
+
/** MyNote entity from the Basecamp API. */
|
|
16
|
+
export type MyNote = components["schemas"]["MyNote"];
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Request parameters for updateMyNote.
|
|
20
|
+
*/
|
|
21
|
+
export interface UpdateMyNoteMyNoteRequest {
|
|
22
|
+
/** Note */
|
|
23
|
+
note: components["schemas"]["MyNoteAttributes"];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
// =============================================================================
|
|
28
|
+
// Service
|
|
29
|
+
// =============================================================================
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Service for MyNotes operations.
|
|
33
|
+
*/
|
|
34
|
+
export class MyNotesService extends BaseService {
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Get the authenticated user's note — a per-person notebook singleton at
|
|
38
|
+
* @returns The MyNote
|
|
39
|
+
* @throws {BasecampError} If the resource is not found
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* const result = await client.myNotes.getMyNote();
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
async getMyNote(): Promise<MyNote> {
|
|
47
|
+
const response = await this.request(
|
|
48
|
+
{
|
|
49
|
+
service: "MyNotes",
|
|
50
|
+
operation: "GetMyNote",
|
|
51
|
+
resourceType: "my_note",
|
|
52
|
+
isMutation: false,
|
|
53
|
+
},
|
|
54
|
+
() =>
|
|
55
|
+
this.client.GET("/my/notes.json", {
|
|
56
|
+
})
|
|
57
|
+
);
|
|
58
|
+
return response;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Replace the note's content, recording a new revision server-side. The first
|
|
63
|
+
* @param req - My_note update parameters
|
|
64
|
+
* @returns The MyNote
|
|
65
|
+
* @throws {BasecampError} If the resource is not found or fields are invalid
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* const result = await client.myNotes.updateMyNote({ note: { content: "Hello world" } });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
async updateMyNote(req: UpdateMyNoteMyNoteRequest): Promise<MyNote> {
|
|
73
|
+
if (!req.note) {
|
|
74
|
+
throw Errors.validation("Note is required");
|
|
75
|
+
}
|
|
76
|
+
const response = await this.request(
|
|
77
|
+
{
|
|
78
|
+
service: "MyNotes",
|
|
79
|
+
operation: "UpdateMyNote",
|
|
80
|
+
resourceType: "my_note",
|
|
81
|
+
isMutation: true,
|
|
82
|
+
},
|
|
83
|
+
() =>
|
|
84
|
+
this.client.PUT("/my/notes.json", {
|
|
85
|
+
body: {
|
|
86
|
+
note: req.note,
|
|
87
|
+
},
|
|
88
|
+
})
|
|
89
|
+
);
|
|
90
|
+
return response;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -17,6 +17,26 @@ import { Errors } from "../../errors.js";
|
|
|
17
17
|
/** Todo entity from the Basecamp API. */
|
|
18
18
|
export type Todo = components["schemas"]["Todo"];
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Request parameters for createTodosetTodo.
|
|
22
|
+
*/
|
|
23
|
+
export interface CreateTodosetTodoTodoRequest {
|
|
24
|
+
/** Text content */
|
|
25
|
+
content: string;
|
|
26
|
+
/** Rich text description (HTML) */
|
|
27
|
+
description?: string;
|
|
28
|
+
/** Person IDs to assign to */
|
|
29
|
+
assigneeIds?: number[];
|
|
30
|
+
/** Person IDs to notify on completion */
|
|
31
|
+
completionSubscriberIds?: number[];
|
|
32
|
+
/** Whether to send notifications to relevant people */
|
|
33
|
+
notify?: boolean;
|
|
34
|
+
/** Due date (YYYY-MM-DD) */
|
|
35
|
+
dueOn?: string;
|
|
36
|
+
/** Start date (YYYY-MM-DD) */
|
|
37
|
+
startsOn?: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
20
40
|
/**
|
|
21
41
|
* Options for list.
|
|
22
42
|
*/
|
|
@@ -87,6 +107,57 @@ export interface RepositionTodoRequest {
|
|
|
87
107
|
*/
|
|
88
108
|
export class TodosService extends BaseService {
|
|
89
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Create a to-do directly under a project's to-do set, outside any to-do list.
|
|
112
|
+
* @param bucketId - The bucket ID
|
|
113
|
+
* @param todosetId - The todoset ID
|
|
114
|
+
* @param req - Todo creation parameters
|
|
115
|
+
* @returns The Todo
|
|
116
|
+
* @throws {BasecampError} If required fields are missing or invalid
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```ts
|
|
120
|
+
* const result = await client.todos.createTodosetTodo(123, 123, { content: "Hello world" });
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
async createTodosetTodo(bucketId: number, todosetId: number, req: CreateTodosetTodoTodoRequest): Promise<Todo> {
|
|
124
|
+
if (!req.content) {
|
|
125
|
+
throw Errors.validation("Content is required");
|
|
126
|
+
}
|
|
127
|
+
if (req.dueOn && !/^\d{4}-\d{2}-\d{2}$/.test(req.dueOn)) {
|
|
128
|
+
throw Errors.validation("Due on must be in YYYY-MM-DD format");
|
|
129
|
+
}
|
|
130
|
+
if (req.startsOn && !/^\d{4}-\d{2}-\d{2}$/.test(req.startsOn)) {
|
|
131
|
+
throw Errors.validation("Starts on must be in YYYY-MM-DD format");
|
|
132
|
+
}
|
|
133
|
+
const response = await this.request(
|
|
134
|
+
{
|
|
135
|
+
service: "Todos",
|
|
136
|
+
operation: "CreateTodosetTodo",
|
|
137
|
+
resourceType: "todo",
|
|
138
|
+
isMutation: true,
|
|
139
|
+
projectId: bucketId,
|
|
140
|
+
resourceId: todosetId,
|
|
141
|
+
},
|
|
142
|
+
() =>
|
|
143
|
+
this.client.POST("/buckets/{bucketId}/todosets/{todosetId}/todos.json", {
|
|
144
|
+
params: {
|
|
145
|
+
path: { bucketId, todosetId },
|
|
146
|
+
},
|
|
147
|
+
body: {
|
|
148
|
+
content: req.content,
|
|
149
|
+
description: req.description,
|
|
150
|
+
assignee_ids: req.assigneeIds,
|
|
151
|
+
completion_subscriber_ids: req.completionSubscriberIds,
|
|
152
|
+
notify: req.notify,
|
|
153
|
+
due_on: req.dueOn,
|
|
154
|
+
starts_on: req.startsOn,
|
|
155
|
+
},
|
|
156
|
+
})
|
|
157
|
+
);
|
|
158
|
+
return response;
|
|
159
|
+
}
|
|
160
|
+
|
|
90
161
|
/**
|
|
91
162
|
* List todos in a todolist
|
|
92
163
|
* @param todolistId - The todolist ID
|